@mk-kit/mcp 0.51.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.51.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",
@@ -1,4 +1,4 @@
1
- # @mk-kit/ui 0.51.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';`
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.51.0. 169 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.51.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",