@mk-kit/mcp 0.50.0 → 0.52.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/data/api.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "@mk-kit/ui",
3
- "version": "0.50.0",
3
+ "version": "0.52.0",
4
4
  "site": "https://mk-kit.dev",
5
5
  "entries": [
6
6
  {
@@ -445,15 +445,6 @@
445
445
  "(src: string): string"
446
446
  ]
447
447
  },
448
- {
449
- "name": "mkInjectFieldTouched",
450
- "description": "Touched-gate for a control's `invalid` input under Signal Forms.\n\nWhen a control is bound with the `[formField]` directive, Angular writes the\nfield's `invalid()` state straight into the control's `invalid` input — from\nthe first render, before the user has reached the field. mk-kit controls\npass that input through this gate so the invalid visual (and `aria-invalid`)\nonly shows once the field is touched or dirty, matching how `mk-form-field`\nreveals its message and how `submit()` (which marks every field touched)\nsurfaces the remaining problems.\n\nReturns a signal that is always `true` for a control that is not bound with\n`[formField]`, so a standalone `[invalid]=\"true\"` keeps working as before.\nCall it in a field initializer (an injection context):\n\n```ts\nprivate readonly fieldTouched = mkInjectFieldTouched();\nprotected readonly isInvalid = computed(\n () => (this.invalid() && this.fieldTouched()) || (this.field?.hasError() ?? false),\n);\n```\n\nThe binding is looked up lazily, on first read: the `FormField` directive\nitself injects the element's `NG_VALUE_ACCESSOR` (the control) while it is\ncreated, so resolving it from the control's constructor would be circular.",
451
- "file": "projects/mk-kit/core/forms/signal-field.ts",
452
- "kind": "function",
453
- "signatures": [
454
- "(): Signal<boolean>"
455
- ]
456
- },
457
448
  {
458
449
  "name": "mkIsQueryGroup",
459
450
  "description": "True for a group node (as opposed to a rule).",
@@ -3382,6 +3373,21 @@
3382
3373
  }
3383
3374
  ]
3384
3375
  },
3376
+ {
3377
+ "name": "core/signal-forms",
3378
+ "import": "@mk-kit/ui/core/signal-forms",
3379
+ "exports": [
3380
+ {
3381
+ "name": "mkInjectFieldTouched",
3382
+ "description": "Touched-gate for a control's `invalid` input under Signal Forms.\n\nWhen a control is bound with the `[formField]` directive, Angular writes the\nfield's `invalid()` state straight into the control's `invalid` input — from\nthe first render, before the user has reached the field. mk-kit controls\npass that input through this gate so the invalid visual (and `aria-invalid`)\nonly shows once the field is touched or dirty, matching how `mk-form-field`\nreveals its message and how `submit()` (which marks every field touched)\nsurfaces the remaining problems.\n\nReturns a signal that is always `true` for a control that is not bound with\n`[formField]`, so a standalone `[invalid]=\"true\"` keeps working as before.\nCall it in a field initializer (an injection context):\n\n```ts\nprivate readonly fieldTouched = mkInjectFieldTouched();\nprotected readonly isInvalid = computed(\n () => (this.invalid() && this.fieldTouched()) || (this.field?.hasError() ?? false),\n);\n```\n\nThe binding is looked up lazily, on first read: the `FormField` directive\nitself injects the element's `NG_VALUE_ACCESSOR` (the control) while it is\ncreated, so resolving it from the control's constructor would be circular.",
3383
+ "file": "projects/mk-kit/core/signal-forms/signal-field.ts",
3384
+ "kind": "function",
3385
+ "signatures": [
3386
+ "(): Signal<boolean>"
3387
+ ]
3388
+ }
3389
+ ]
3390
+ },
3385
3391
  {
3386
3392
  "name": "icon",
3387
3393
  "import": "@mk-kit/ui/icon",
@@ -18295,22 +18301,6 @@
18295
18301
  "queries": [],
18296
18302
  "docs": "/components/popovers"
18297
18303
  },
18298
- {
18299
- "name": "MkPromptDialog",
18300
- "description": "Internal component backing `MkDialogService.prompt`. Renders a single text\nfield and resolves the overlay ref with the entered string on confirm, or\n`null` on cancel / Escape / backdrop. Submitting the form (Enter) confirms.",
18301
- "file": "projects/mk-kit/feedback/dialog/prompt-dialog.ts",
18302
- "kind": "component",
18303
- "selector": "mk-prompt-dialog",
18304
- "selectors": [
18305
- "mk-prompt-dialog"
18306
- ],
18307
- "inputs": [],
18308
- "outputs": [],
18309
- "methods": [],
18310
- "properties": [],
18311
- "queries": [],
18312
- "docs": "/components/dialogs"
18313
- },
18314
18304
  {
18315
18305
  "name": "MkResult",
18316
18306
  "description": "Result — a centred, full-page status state: a success confirmation, an error,\nan empty 404/403/500 page. Renders a large status icon (chosen from\n`status`), a title, a muted subtitle, projected body content, and a row of\naction buttons at the bottom.\n\nSlots: `[mkResultIcon]` (custom icon, overrides the built-in glyph),\n`[mkResultTitle]` (custom heading, used when `resultTitle` is unset), default\ncontent (extra body), `[mkResultActions]` (buttons).\n\n```html\n<mk-result status=\"success\" resultTitle=\"Payment complete\"\n subtitle=\"Your order is on its way.\">\n <button mkButton mkResultActions>Back home</button>\n</mk-result>\n```",
@@ -23195,7 +23185,7 @@
23195
23185
  {
23196
23186
  "name": "get",
23197
23187
  "signature": "<T extends MkHarness>(type: MkHarnessType<T>, filters?: MkHarnessFilters): Promise<T>",
23198
- "description": "First matching harness; throws when there is none."
23188
+ "description": "First matching harness; throws when there is none. Retries for a short\nwhile first: overlays such as `MkDialogService.prompt()` render after a\nlazy chunk resolves, so the host may appear a few ticks after the call.\n`has()` / `getOrNull()` stay immediate so absence can be asserted."
23199
23189
  },
23200
23190
  {
23201
23191
  "name": "getOrNull",
@@ -1,4 +1,4 @@
1
- # @mk-kit/ui 0.50.0 — full API reference
1
+ # @mk-kit/ui 0.52.0 — full API reference
2
2
 
3
3
  Generated from the library sources. Browsable version: https://mk-kit.dev/api · JSON: https://mk-kit.dev/api.json · Guides: https://mk-kit.dev/llms.txt
4
4
 
@@ -12,7 +12,7 @@ Every component and directive below is standalone — import the class from its
12
12
 
13
13
  ## @mk-kit/ui/core
14
14
 
15
- 81 exports. `import { … } from '@mk-kit/ui/core';`
15
+ 80 exports. `import { … } from '@mk-kit/ui/core';`
16
16
 
17
17
  ### MkAnchoredPanel (directive)
18
18
 
@@ -346,39 +346,6 @@ still highlighted token-by-token (the editor validates separately).
346
346
  function mkHighlightJson(src: string): string
347
347
  ```
348
348
 
349
- ### mkInjectFieldTouched (function)
350
-
351
- Import: `import { mkInjectFieldTouched } from '@mk-kit/ui/core';`
352
-
353
- Touched-gate for a control's `invalid` input under Signal Forms.
354
-
355
- When a control is bound with the `[formField]` directive, Angular writes the
356
- field's `invalid()` state straight into the control's `invalid` input — from
357
- the first render, before the user has reached the field. mk-kit controls
358
- pass that input through this gate so the invalid visual (and `aria-invalid`)
359
- only shows once the field is touched or dirty, matching how `mk-form-field`
360
- reveals its message and how `submit()` (which marks every field touched)
361
- surfaces the remaining problems.
362
-
363
- Returns a signal that is always `true` for a control that is not bound with
364
- `[formField]`, so a standalone `[invalid]="true"` keeps working as before.
365
- Call it in a field initializer (an injection context):
366
-
367
- ```ts
368
- private readonly fieldTouched = mkInjectFieldTouched();
369
- protected readonly isInvalid = computed(
370
- () => (this.invalid() && this.fieldTouched()) || (this.field?.hasError() ?? false),
371
- );
372
- ```
373
-
374
- The binding is looked up lazily, on first read: the `FormField` directive
375
- itself injects the element's `NG_VALUE_ACCESSOR` (the control) while it is
376
- created, so resolving it from the control's constructor would be circular.
377
-
378
- ```ts
379
- function mkInjectFieldTouched(): Signal<boolean>
380
- ```
381
-
382
349
  ### mkIsQueryGroup (function)
383
350
 
384
351
  Import: `import { mkIsQueryGroup } from '@mk-kit/ui/core';`
@@ -1605,6 +1572,43 @@ Visual treatment for tinted/interactive surfaces.
1605
1572
  type MkVariant = 'solid' | 'soft' | 'outline' | 'ghost' | 'link';
1606
1573
  ```
1607
1574
 
1575
+ ## @mk-kit/ui/core/signal-forms
1576
+
1577
+ 1 exports. `import { … } from '@mk-kit/ui/core/signal-forms';`
1578
+
1579
+ ### mkInjectFieldTouched (function)
1580
+
1581
+ Import: `import { mkInjectFieldTouched } from '@mk-kit/ui/core/signal-forms';`
1582
+
1583
+ Touched-gate for a control's `invalid` input under Signal Forms.
1584
+
1585
+ When a control is bound with the `[formField]` directive, Angular writes the
1586
+ field's `invalid()` state straight into the control's `invalid` input — from
1587
+ the first render, before the user has reached the field. mk-kit controls
1588
+ pass that input through this gate so the invalid visual (and `aria-invalid`)
1589
+ only shows once the field is touched or dirty, matching how `mk-form-field`
1590
+ reveals its message and how `submit()` (which marks every field touched)
1591
+ surfaces the remaining problems.
1592
+
1593
+ Returns a signal that is always `true` for a control that is not bound with
1594
+ `[formField]`, so a standalone `[invalid]="true"` keeps working as before.
1595
+ Call it in a field initializer (an injection context):
1596
+
1597
+ ```ts
1598
+ private readonly fieldTouched = mkInjectFieldTouched();
1599
+ protected readonly isInvalid = computed(
1600
+ () => (this.invalid() && this.fieldTouched()) || (this.field?.hasError() ?? false),
1601
+ );
1602
+ ```
1603
+
1604
+ The binding is looked up lazily, on first read: the `FormField` directive
1605
+ itself injects the element's `NG_VALUE_ACCESSOR` (the control) while it is
1606
+ created, so resolving it from the control's constructor would be circular.
1607
+
1608
+ ```ts
1609
+ function mkInjectFieldTouched(): Signal<boolean>
1610
+ ```
1611
+
1608
1612
  ## @mk-kit/ui/icon
1609
1613
 
1610
1614
  8 exports. `import { … } from '@mk-kit/ui/icon';`
@@ -11667,7 +11671,7 @@ type MkTagVariant = 'solid' | 'soft' | 'outline';
11667
11671
 
11668
11672
  ## @mk-kit/ui/feedback
11669
11673
 
11670
- 56 exports. `import { … } from '@mk-kit/ui/feedback';`
11674
+ 55 exports. `import { … } from '@mk-kit/ui/feedback';`
11671
11675
 
11672
11676
  ### MkAlert (component)
11673
11677
 
@@ -12112,18 +12116,6 @@ Properties:
12112
12116
  | `panelId` | `string` | Stable id for `aria-controls` on the trigger. |
12113
12117
  | `opened` | `Signal<boolean>` | Whether the popover is open. |
12114
12118
 
12115
- ### MkPromptDialog (component)
12116
-
12117
- Selector: `mk-prompt-dialog`
12118
-
12119
- Docs: https://mk-kit.dev/components/dialogs
12120
-
12121
- Import: `import { MkPromptDialog } from '@mk-kit/ui/feedback';`
12122
-
12123
- Internal component backing `MkDialogService.prompt`. Renders a single text
12124
- field and resolves the overlay ref with the entered string on confirm, or
12125
- `null` on cancel / Escape / backdrop. Submitting the form (Enter) confirms.
12126
-
12127
12119
  ### MkResult (component)
12128
12120
 
12129
12121
  Selector: `mk-result`
@@ -15702,7 +15694,7 @@ Methods:
15702
15694
  | `rootElement(): MkTestElement` | Wrap the root element itself. |
15703
15695
  | `element(selector: string): MkTestElement` | |
15704
15696
  | `elements(selector: string): MkTestElement[]` | |
15705
- | `get<T extends MkHarness>(type: MkHarnessType<T>, filters?: MkHarnessFilters): Promise<T>` | First matching harness; throws when there is none. |
15697
+ | `get<T extends MkHarness>(type: MkHarnessType<T>, filters?: MkHarnessFilters): Promise<T>` | First matching harness; throws when there is none. Retries for a short while first: overlays such as `MkDialogService.prompt()` render after a lazy chunk resolves, so the host may appear a few ticks after the call. `has()` / `getOrNull()` stay immediate so absence can be asserted. |
15706
15698
  | `getOrNull<T extends MkHarness>(type: MkHarnessType<T>, filters?: MkHarnessFilters): Promise<T \| null>` | |
15707
15699
  | `has<T extends MkHarness>(type: MkHarnessType<T>, filters?: MkHarnessFilters): Promise<boolean>` | |
15708
15700
  | `getAll<T extends MkHarness>(type: MkHarnessType<T>, filters?: MkHarnessFilters): Promise<T[]>` | |
package/data/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  # mk-kit
2
2
 
3
- > Themable, accessible Angular 22 component library for admin dashboards and UIs. Signals-based, WCAG 2.1 AA, controlled entirely through CSS variables with light/dark out of the box. — `@mk-kit/ui` 0.50.0. 170 components, 41 directives, 16 services and 144 helper functions across 29 tree-shakeable entry points. MIT licensed, zero runtime dependencies beyond Angular. Standalone components, signals, OnPush, zoneless-ready, SSR-safe, RTL and i18n via `provideMkI18n`.
3
+ > Themable, accessible Angular 22 component library for admin dashboards and UIs. Signals-based, WCAG 2.1 AA, controlled entirely through CSS variables with light/dark out of the box. — `@mk-kit/ui` 0.52.0. 169 components, 41 directives, 16 services and 144 helper functions across 30 tree-shakeable entry points. MIT licensed, zero runtime dependencies beyond Angular. Standalone components, signals, OnPush, zoneless-ready, SSR-safe, RTL and i18n via `provideMkI18n`.
4
4
 
5
5
  Install with `ng add @mk-kit/ui` (or `npm i @mk-kit/ui` + import `@mk-kit/ui/styles/mk-kit.css`). Import from the group entry points (`@mk-kit/ui/forms`, `@mk-kit/ui/table`, …) so each lazy chunk only carries what it uses; the root `@mk-kit/ui` entry re-exports everything. Every component is standalone: add the class to a component's `imports`. Theme with `--mk-*` CSS custom properties; `MkThemeService` switches light/dark/system and density.
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mk-kit/mcp",
3
- "version": "0.50.0",
3
+ "version": "0.52.0",
4
4
  "description": "MCP server for @mk-kit/ui — lets AI coding assistants look up every component, directive, service and helper of the mk-kit Angular library (inputs, outputs, methods, import paths, docs links).",
5
5
  "license": "MIT",
6
6
  "type": "module",