@kubex/zinc 1.1.118 → 1.1.120

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.
@@ -3651,6 +3651,11 @@
3651
3651
  "description": "Endpoint listing the Includes this document may embed, as\n`{\"items\":[{id,title,description,scope,keywords,languages,url}]}`. Labels the\nchips rendered for `include::` directives and feeds the include picker.",
3652
3652
  "values": []
3653
3653
  },
3654
+ {
3655
+ "name": "link-url",
3656
+ "description": "Endpoint the article link picker searches, as\n`{\"items\":[{ref,kind,title,context,status}]}`. Queried with `?q=<term>` as\nthe author types and with `?refs=a,b` to resolve the references a body\nalready carries.",
3657
+ "values": []
3658
+ },
3654
3659
  {
3655
3660
  "name": "allow-raw",
3656
3661
  "description": "Adds a toolbar toggle that swaps the block view for the full remarkd source.",
@@ -5179,55 +5184,6 @@
5179
5184
  }
5180
5185
  ]
5181
5186
  },
5182
- {
5183
- "name": "zn-translation-group",
5184
- "description": "Puts several zn-translations fields behind one language select, so a whole form's worth of copy is\ntranslated a language at a time.\n---\n\n\n### **Events:**\n - **zn-language-change** - Emitted when the active language changes. Detail: `{ language: string }`.\n\n### **Slots:**\n - _default_ - The `zn-translations` fields the select drives.\n- **actions** - Buttons for the bottom of the panel, on the white body rather than the grey footer. They sit on the right, as zinc's form action rows do; `align=\"start\"` moves one to the left. Write them in the order they should be read — the sides are set by CSS ordering, so markup order is what a keyboard follows.\n- **footer** - Content displayed in the grey panel footer.\n\n### **CSS Properties:**\n - **--zn-panel-basis** - The flex-basis of the panel. Can be set using the basis-px attribute. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **form-group** - The form group holding the caption, the language select and the fields.\n- **actions** - The row of buttons at the bottom of the body.\n- **language-field** - The select that chooses the language every child is editing, in the group's chip slot.\n- **language-select** - The select itself.",
5185
- "attributes": [
5186
- {
5187
- "name": "label",
5188
- "description": "The form group's label. An alias for the inherited `caption`, which wins where both are set.",
5189
- "values": []
5190
- },
5191
- {
5192
- "name": "help-text",
5193
- "description": "Sits under the label, above the language select, as help text does in any other form group.",
5194
- "values": []
5195
- },
5196
- {
5197
- "name": "inline",
5198
- "description": "Drops the panel chrome — border, background and padding — so the group reads as a section of the surrounding form\nrather than a panel of its own. For groups nested inside another panel, where the fields would otherwise sit\nindented behind a second border.",
5199
- "values": []
5200
- },
5201
- {
5202
- "name": "language-label",
5203
- "description": "The select's accessible name. Not shown — the caption is what names the section on screen — but read out by a\nscreen reader, which has nothing else to go on once the visible label is gone.",
5204
- "values": []
5205
- },
5206
- {
5207
- "name": "languages",
5208
- "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to. Set on every\nchild, so they do not need their own copy.",
5209
- "values": [{ "name": "Record<string" }, { "name": "string>" }]
5210
- },
5211
- { "name": "basis-px", "values": [] },
5212
- { "name": "caption", "values": [] },
5213
- { "name": "icon", "values": [] },
5214
- { "name": "tabbed", "values": [] },
5215
- { "name": "header-borderless", "values": [] },
5216
- { "name": "cosmic", "values": [] },
5217
- { "name": "flush", "values": [] },
5218
- { "name": "flush-x", "values": [] },
5219
- { "name": "flush-y", "values": [] },
5220
- { "name": "flush-footer", "values": [] },
5221
- { "name": "transparent", "values": [] },
5222
- { "name": "shadow", "values": [] }
5223
- ],
5224
- "references": [
5225
- {
5226
- "name": "Documentation",
5227
- "url": "https://zinc.style/components/translation-group"
5228
- }
5229
- ]
5230
- },
5231
5187
  {
5232
5188
  "name": "zn-translations",
5233
5189
  "description": "Collects one piece of text in several languages, one language at a time.\n---\n\n\n### **Events:**\n - **zn-change** - Emitted when a translation's value changes.\n- **zn-input** - Emitted when a translation receives input.\n\n### **Methods:**\n - **setActiveLanguage(language: _string_)** - Sets the active language externally. Used by zn-translation-group. Browsing to a language does not create a key\nfor it — an untouched language stays absent from `values` so it is not submitted as an empty translation.\n- **getActiveLanguage(): _string_** - Returns the currently active language.\n- **addLanguageKey(languageCode: _string_)** - Adds a language key to this component's values if not already present. Used by zn-translation-group.\n- **getValueLanguages(): _string[]_** - Returns all language codes that have values.\n- **hasTranslation(language: _string_): _boolean_** - Whether the language carries a translation of its own, rather than falling back to English.\n\n### **Slots:**\n - **label** - The field's label. Alternatively, use the `label` attribute.\n- **help-text** - Text describing how to fill the field in, shown below it and shared by every language. Alternatively, use the `help-text` attribute.\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, the language select, the field and the help text.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The wrapper around the field being edited.\n- **form-control-help-text** - The help text's wrapper.\n- **language-select** - The select that chooses the language being edited.",
@@ -5339,6 +5295,55 @@
5339
5295
  }
5340
5296
  ]
5341
5297
  },
5298
+ {
5299
+ "name": "zn-translation-group",
5300
+ "description": "Puts several zn-translations fields behind one language select, so a whole form's worth of copy is\ntranslated a language at a time.\n---\n\n\n### **Events:**\n - **zn-language-change** - Emitted when the active language changes. Detail: `{ language: string }`.\n\n### **Slots:**\n - _default_ - The `zn-translations` fields the select drives.\n- **actions** - Buttons for the bottom of the panel, on the white body rather than the grey footer. They sit on the right, as zinc's form action rows do; `align=\"start\"` moves one to the left. Write them in the order they should be read — the sides are set by CSS ordering, so markup order is what a keyboard follows.\n- **footer** - Content displayed in the grey panel footer.\n\n### **CSS Properties:**\n - **--zn-panel-basis** - The flex-basis of the panel. Can be set using the basis-px attribute. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **form-group** - The form group holding the caption, the language select and the fields.\n- **actions** - The row of buttons at the bottom of the body.\n- **language-field** - The select that chooses the language every child is editing, in the group's chip slot.\n- **language-select** - The select itself.",
5301
+ "attributes": [
5302
+ {
5303
+ "name": "label",
5304
+ "description": "The form group's label. An alias for the inherited `caption`, which wins where both are set.",
5305
+ "values": []
5306
+ },
5307
+ {
5308
+ "name": "help-text",
5309
+ "description": "Sits under the label, above the language select, as help text does in any other form group.",
5310
+ "values": []
5311
+ },
5312
+ {
5313
+ "name": "inline",
5314
+ "description": "Drops the panel chrome — border, background and padding — so the group reads as a section of the surrounding form\nrather than a panel of its own. For groups nested inside another panel, where the fields would otherwise sit\nindented behind a second border.",
5315
+ "values": []
5316
+ },
5317
+ {
5318
+ "name": "language-label",
5319
+ "description": "The select's accessible name. Not shown — the caption is what names the section on screen — but read out by a\nscreen reader, which has nothing else to go on once the visible label is gone.",
5320
+ "values": []
5321
+ },
5322
+ {
5323
+ "name": "languages",
5324
+ "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to. Set on every\nchild, so they do not need their own copy.",
5325
+ "values": [{ "name": "Record<string" }, { "name": "string>" }]
5326
+ },
5327
+ { "name": "basis-px", "values": [] },
5328
+ { "name": "caption", "values": [] },
5329
+ { "name": "icon", "values": [] },
5330
+ { "name": "tabbed", "values": [] },
5331
+ { "name": "header-borderless", "values": [] },
5332
+ { "name": "cosmic", "values": [] },
5333
+ { "name": "flush", "values": [] },
5334
+ { "name": "flush-x", "values": [] },
5335
+ { "name": "flush-y", "values": [] },
5336
+ { "name": "flush-footer", "values": [] },
5337
+ { "name": "transparent", "values": [] },
5338
+ { "name": "shadow", "values": [] }
5339
+ ],
5340
+ "references": [
5341
+ {
5342
+ "name": "Documentation",
5343
+ "url": "https://zinc.style/components/translation-group"
5344
+ }
5345
+ ]
5346
+ },
5342
5347
  {
5343
5348
  "name": "zn-vertical-stepper",
5344
5349
  "description": "Vertical steppers display a sequence of steps in a vertical layout with descriptions and optional icons.\n---\n\n\n### **Slots:**\n - **icon** - Optional slot for adding an icon or indicator before the step content.\n\n### **CSS Parts:**\n - **vs** - The main container for the vertical stepper.\n- **vs__left** - The left section containing the icon and connecting line.\n- **vs__icon** - The icon container.\n- **vs__line** - The vertical connecting line between steps.\n- **vs__right** - The right section containing caption and description text.\n- **vs__caption** - The caption/title text element.\n- **vs__description** - The description text element.",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@kubex/zinc",
4
- "version": "1.1.118",
4
+ "version": "1.1.120",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -8476,6 +8476,11 @@
8476
8476
  "description": "Endpoint listing the Includes this document may embed, as\n`{\"items\":[{id,title,description,scope,keywords,languages,url}]}`. Labels the\nchips rendered for `include::` directives and feeds the include picker.",
8477
8477
  "value": { "type": "string", "default": "''" }
8478
8478
  },
8479
+ {
8480
+ "name": "link-url",
8481
+ "description": "Endpoint the article link picker searches, as\n`{\"items\":[{ref,kind,title,context,status}]}`. Queried with `?q=<term>` as\nthe author types and with `?refs=a,b` to resolve the references a body\nalready carries.",
8482
+ "value": { "type": "string", "default": "''" }
8483
+ },
8479
8484
  {
8480
8485
  "name": "allow-raw",
8481
8486
  "description": "Adds a toolbar toggle that swaps the block view for the full remarkd source.",
@@ -8544,6 +8549,11 @@
8544
8549
  "description": "Endpoint listing the Includes this document may embed, as\n`{\"items\":[{id,title,description,scope,keywords,languages,url}]}`. Labels the\nchips rendered for `include::` directives and feeds the include picker.",
8545
8550
  "type": "string"
8546
8551
  },
8552
+ {
8553
+ "name": "linkUrl",
8554
+ "description": "Endpoint the article link picker searches, as\n`{\"items\":[{ref,kind,title,context,status}]}`. Queried with `?q=<term>` as\nthe author types and with `?refs=a,b` to resolve the references a body\nalready carries.",
8555
+ "type": "string"
8556
+ },
8547
8557
  {
8548
8558
  "name": "allowRaw",
8549
8559
  "description": "Adds a toolbar toggle that swaps the block view for the full remarkd source.",
@@ -12209,120 +12219,6 @@
12209
12219
  ]
12210
12220
  }
12211
12221
  },
12212
- {
12213
- "name": "zn-translation-group",
12214
- "description": "Puts several zn-translations fields behind one language select, so a whole form's worth of copy is\ntranslated a language at a time.\n---\n\n\n### **Events:**\n - **zn-language-change** - Emitted when the active language changes. Detail: `{ language: string }`.\n\n### **Slots:**\n - _default_ - The `zn-translations` fields the select drives.\n- **actions** - Buttons for the bottom of the panel, on the white body rather than the grey footer. They sit on the right, as zinc's form action rows do; `align=\"start\"` moves one to the left. Write them in the order they should be read — the sides are set by CSS ordering, so markup order is what a keyboard follows.\n- **footer** - Content displayed in the grey panel footer.\n\n### **CSS Properties:**\n - **--zn-panel-basis** - The flex-basis of the panel. Can be set using the basis-px attribute. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **form-group** - The form group holding the caption, the language select and the fields.\n- **actions** - The row of buttons at the bottom of the body.\n- **language-field** - The select that chooses the language every child is editing, in the group's chip slot.\n- **language-select** - The select itself.",
12215
- "doc-url": "",
12216
- "attributes": [
12217
- {
12218
- "name": "label",
12219
- "description": "The form group's label. An alias for the inherited `caption`, which wins where both are set.",
12220
- "value": { "type": "string", "default": "''" }
12221
- },
12222
- {
12223
- "name": "help-text",
12224
- "description": "Sits under the label, above the language select, as help text does in any other form group.",
12225
- "value": { "type": "string", "default": "''" }
12226
- },
12227
- {
12228
- "name": "inline",
12229
- "description": "Drops the panel chrome — border, background and padding — so the group reads as a section of the surrounding form\nrather than a panel of its own. For groups nested inside another panel, where the fields would otherwise sit\nindented behind a second border.",
12230
- "value": { "type": "boolean", "default": "false" }
12231
- },
12232
- {
12233
- "name": "language-label",
12234
- "description": "The select's accessible name. Not shown — the caption is what names the section on screen — but read out by a\nscreen reader, which has nothing else to go on once the visible label is gone.",
12235
- "value": { "type": "string", "default": "'Edit Languages'" }
12236
- },
12237
- {
12238
- "name": "languages",
12239
- "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to. Set on every\nchild, so they do not need their own copy.",
12240
- "value": {
12241
- "type": "Record<string, string>",
12242
- "default": "{ 'en': 'EN' }"
12243
- }
12244
- },
12245
- { "name": "basis-px", "value": { "type": "number" } },
12246
- { "name": "caption", "value": { "type": "string" } },
12247
- { "name": "icon", "value": { "type": "string" } },
12248
- { "name": "tabbed", "value": { "type": "boolean" } },
12249
- { "name": "header-borderless", "value": { "type": "boolean" } },
12250
- { "name": "cosmic", "value": { "type": "boolean" } },
12251
- { "name": "flush", "value": { "type": "boolean" } },
12252
- { "name": "flush-x", "value": { "type": "boolean" } },
12253
- { "name": "flush-y", "value": { "type": "boolean" } },
12254
- { "name": "flush-footer", "value": { "type": "boolean" } },
12255
- { "name": "transparent", "value": { "type": "boolean" } },
12256
- { "name": "shadow", "value": { "type": "boolean" } }
12257
- ],
12258
- "slots": [
12259
- {
12260
- "name": "",
12261
- "description": "The `zn-translations` fields the select drives."
12262
- },
12263
- {
12264
- "name": "actions",
12265
- "description": "Buttons for the bottom of the panel, on the white body rather than the grey footer. They sit on the right, as zinc's form action rows do; `align=\"start\"` moves one to the left. Write them in the order they should be read — the sides are set by CSS ordering, so markup order is what a keyboard follows."
12266
- },
12267
- {
12268
- "name": "footer",
12269
- "description": "Content displayed in the grey panel footer."
12270
- }
12271
- ],
12272
- "events": [
12273
- {
12274
- "name": "zn-language-change",
12275
- "description": "Emitted when the active language changes. Detail: `{ language: string }`."
12276
- }
12277
- ],
12278
- "js": {
12279
- "properties": [
12280
- {
12281
- "name": "label",
12282
- "description": "The form group's label. An alias for the inherited `caption`, which wins where both are set.",
12283
- "type": "string"
12284
- },
12285
- {
12286
- "name": "helpText",
12287
- "description": "Sits under the label, above the language select, as help text does in any other form group.",
12288
- "type": "string"
12289
- },
12290
- {
12291
- "name": "inline",
12292
- "description": "Drops the panel chrome — border, background and padding — so the group reads as a section of the surrounding form\nrather than a panel of its own. For groups nested inside another panel, where the fields would otherwise sit\nindented behind a second border.",
12293
- "type": "boolean"
12294
- },
12295
- {
12296
- "name": "languageLabel",
12297
- "description": "The select's accessible name. Not shown — the caption is what names the section on screen — but read out by a\nscreen reader, which has nothing else to go on once the visible label is gone.",
12298
- "type": "string"
12299
- },
12300
- {
12301
- "name": "languages",
12302
- "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to. Set on every\nchild, so they do not need their own copy.",
12303
- "type": "Record<string, string>"
12304
- },
12305
- { "name": "basis", "type": "number" },
12306
- { "name": "caption", "type": "string" },
12307
- { "name": "icon", "type": "string" },
12308
- { "name": "tabbed", "type": "boolean" },
12309
- { "name": "headerBorderless", "type": "boolean" },
12310
- { "name": "cosmic", "type": "boolean" },
12311
- { "name": "flush", "type": "boolean" },
12312
- { "name": "flushX", "type": "boolean" },
12313
- { "name": "flushY", "type": "boolean" },
12314
- { "name": "flushFooter", "type": "boolean" },
12315
- { "name": "transparent", "type": "boolean" },
12316
- { "name": "shadow", "type": "boolean" }
12317
- ],
12318
- "events": [
12319
- {
12320
- "name": "zn-language-change",
12321
- "description": "Emitted when the active language changes. Detail: `{ language: string }`."
12322
- }
12323
- ]
12324
- }
12325
- },
12326
12222
  {
12327
12223
  "name": "zn-translations",
12328
12224
  "description": "Collects one piece of text in several languages, one language at a time.\n---\n\n\n### **Events:**\n - **zn-change** - Emitted when a translation's value changes.\n- **zn-input** - Emitted when a translation receives input.\n\n### **Methods:**\n - **setActiveLanguage(language: _string_)** - Sets the active language externally. Used by zn-translation-group. Browsing to a language does not create a key\nfor it — an untouched language stays absent from `values` so it is not submitted as an empty translation.\n- **getActiveLanguage(): _string_** - Returns the currently active language.\n- **addLanguageKey(languageCode: _string_)** - Adds a language key to this component's values if not already present. Used by zn-translation-group.\n- **getValueLanguages(): _string[]_** - Returns all language codes that have values.\n- **hasTranslation(language: _string_): _boolean_** - Whether the language carries a translation of its own, rather than falling back to English.\n\n### **Slots:**\n - **label** - The field's label. Alternatively, use the `label` attribute.\n- **help-text** - Text describing how to fill the field in, shown below it and shared by every language. Alternatively, use the `help-text` attribute.\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, the language select, the field and the help text.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The wrapper around the field being edited.\n- **form-control-help-text** - The help text's wrapper.\n- **language-select** - The select that chooses the language being edited.",
@@ -12572,6 +12468,120 @@
12572
12468
  ]
12573
12469
  }
12574
12470
  },
12471
+ {
12472
+ "name": "zn-translation-group",
12473
+ "description": "Puts several zn-translations fields behind one language select, so a whole form's worth of copy is\ntranslated a language at a time.\n---\n\n\n### **Events:**\n - **zn-language-change** - Emitted when the active language changes. Detail: `{ language: string }`.\n\n### **Slots:**\n - _default_ - The `zn-translations` fields the select drives.\n- **actions** - Buttons for the bottom of the panel, on the white body rather than the grey footer. They sit on the right, as zinc's form action rows do; `align=\"start\"` moves one to the left. Write them in the order they should be read — the sides are set by CSS ordering, so markup order is what a keyboard follows.\n- **footer** - Content displayed in the grey panel footer.\n\n### **CSS Properties:**\n - **--zn-panel-basis** - The flex-basis of the panel. Can be set using the basis-px attribute. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **form-group** - The form group holding the caption, the language select and the fields.\n- **actions** - The row of buttons at the bottom of the body.\n- **language-field** - The select that chooses the language every child is editing, in the group's chip slot.\n- **language-select** - The select itself.",
12474
+ "doc-url": "",
12475
+ "attributes": [
12476
+ {
12477
+ "name": "label",
12478
+ "description": "The form group's label. An alias for the inherited `caption`, which wins where both are set.",
12479
+ "value": { "type": "string", "default": "''" }
12480
+ },
12481
+ {
12482
+ "name": "help-text",
12483
+ "description": "Sits under the label, above the language select, as help text does in any other form group.",
12484
+ "value": { "type": "string", "default": "''" }
12485
+ },
12486
+ {
12487
+ "name": "inline",
12488
+ "description": "Drops the panel chrome — border, background and padding — so the group reads as a section of the surrounding form\nrather than a panel of its own. For groups nested inside another panel, where the fields would otherwise sit\nindented behind a second border.",
12489
+ "value": { "type": "boolean", "default": "false" }
12490
+ },
12491
+ {
12492
+ "name": "language-label",
12493
+ "description": "The select's accessible name. Not shown — the caption is what names the section on screen — but read out by a\nscreen reader, which has nothing else to go on once the visible label is gone.",
12494
+ "value": { "type": "string", "default": "'Edit Languages'" }
12495
+ },
12496
+ {
12497
+ "name": "languages",
12498
+ "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to. Set on every\nchild, so they do not need their own copy.",
12499
+ "value": {
12500
+ "type": "Record<string, string>",
12501
+ "default": "{ 'en': 'EN' }"
12502
+ }
12503
+ },
12504
+ { "name": "basis-px", "value": { "type": "number" } },
12505
+ { "name": "caption", "value": { "type": "string" } },
12506
+ { "name": "icon", "value": { "type": "string" } },
12507
+ { "name": "tabbed", "value": { "type": "boolean" } },
12508
+ { "name": "header-borderless", "value": { "type": "boolean" } },
12509
+ { "name": "cosmic", "value": { "type": "boolean" } },
12510
+ { "name": "flush", "value": { "type": "boolean" } },
12511
+ { "name": "flush-x", "value": { "type": "boolean" } },
12512
+ { "name": "flush-y", "value": { "type": "boolean" } },
12513
+ { "name": "flush-footer", "value": { "type": "boolean" } },
12514
+ { "name": "transparent", "value": { "type": "boolean" } },
12515
+ { "name": "shadow", "value": { "type": "boolean" } }
12516
+ ],
12517
+ "slots": [
12518
+ {
12519
+ "name": "",
12520
+ "description": "The `zn-translations` fields the select drives."
12521
+ },
12522
+ {
12523
+ "name": "actions",
12524
+ "description": "Buttons for the bottom of the panel, on the white body rather than the grey footer. They sit on the right, as zinc's form action rows do; `align=\"start\"` moves one to the left. Write them in the order they should be read — the sides are set by CSS ordering, so markup order is what a keyboard follows."
12525
+ },
12526
+ {
12527
+ "name": "footer",
12528
+ "description": "Content displayed in the grey panel footer."
12529
+ }
12530
+ ],
12531
+ "events": [
12532
+ {
12533
+ "name": "zn-language-change",
12534
+ "description": "Emitted when the active language changes. Detail: `{ language: string }`."
12535
+ }
12536
+ ],
12537
+ "js": {
12538
+ "properties": [
12539
+ {
12540
+ "name": "label",
12541
+ "description": "The form group's label. An alias for the inherited `caption`, which wins where both are set.",
12542
+ "type": "string"
12543
+ },
12544
+ {
12545
+ "name": "helpText",
12546
+ "description": "Sits under the label, above the language select, as help text does in any other form group.",
12547
+ "type": "string"
12548
+ },
12549
+ {
12550
+ "name": "inline",
12551
+ "description": "Drops the panel chrome — border, background and padding — so the group reads as a section of the surrounding form\nrather than a panel of its own. For groups nested inside another panel, where the fields would otherwise sit\nindented behind a second border.",
12552
+ "type": "boolean"
12553
+ },
12554
+ {
12555
+ "name": "languageLabel",
12556
+ "description": "The select's accessible name. Not shown — the caption is what names the section on screen — but read out by a\nscreen reader, which has nothing else to go on once the visible label is gone.",
12557
+ "type": "string"
12558
+ },
12559
+ {
12560
+ "name": "languages",
12561
+ "description": "The languages on offer, as language code to display name — `{\"en\": \"English\", \"fr\": \"French\"}`. Writing the code\nas the name (`{\"en\": \"EN\"}`) is also accepted. `en` is the language every other one falls back to. Set on every\nchild, so they do not need their own copy.",
12562
+ "type": "Record<string, string>"
12563
+ },
12564
+ { "name": "basis", "type": "number" },
12565
+ { "name": "caption", "type": "string" },
12566
+ { "name": "icon", "type": "string" },
12567
+ { "name": "tabbed", "type": "boolean" },
12568
+ { "name": "headerBorderless", "type": "boolean" },
12569
+ { "name": "cosmic", "type": "boolean" },
12570
+ { "name": "flush", "type": "boolean" },
12571
+ { "name": "flushX", "type": "boolean" },
12572
+ { "name": "flushY", "type": "boolean" },
12573
+ { "name": "flushFooter", "type": "boolean" },
12574
+ { "name": "transparent", "type": "boolean" },
12575
+ { "name": "shadow", "type": "boolean" }
12576
+ ],
12577
+ "events": [
12578
+ {
12579
+ "name": "zn-language-change",
12580
+ "description": "Emitted when the active language changes. Detail: `{ language: string }`."
12581
+ }
12582
+ ]
12583
+ }
12584
+ },
12575
12585
  {
12576
12586
  "name": "zn-vertical-stepper",
12577
12587
  "description": "Vertical steppers display a sequence of steps in a vertical layout with descriptions and optional icons.\n---\n\n\n### **Slots:**\n - **icon** - Optional slot for adding an icon or indicator before the step content.\n\n### **CSS Parts:**\n - **vs** - The main container for the vertical stepper.\n- **vs__left** - The left section containing the icon and connecting line.\n- **vs__icon** - The icon container.\n- **vs__line** - The vertical connecting line between steps.\n- **vs__right** - The right section containing caption and description text.\n- **vs__caption** - The caption/title text element.\n- **vs__description** - The description text element.",
package/dist/zn.d.ts CHANGED
@@ -7322,8 +7322,10 @@ declare module "components/form-group/form-group.component" {
7322
7322
  forceCols: boolean;
7323
7323
  layout: string;
7324
7324
  pad: boolean;
7325
- /** The scroller the label is tracked against by hand; null while native sticky is enough. */
7325
+ /** The scroller the label is moved against by hand; null while native sticky is enough. */
7326
7326
  private tracked;
7327
+ /** Set while the compositor is running the movement off a scroll timeline instead. */
7328
+ private animation;
7327
7329
  private stickyTop;
7328
7330
  private frame;
7329
7331
  private rebind;
@@ -7338,13 +7340,24 @@ declare module "components/form-group/form-group.component" {
7338
7340
  /**
7339
7341
  * Native sticky only follows the nearest scroll container. Where that container isn't the one
7340
7342
  * the user actually scrolls — a `zn-panel` body sized to its content inside a scrolling
7341
- * slideout, say — the label never moves, so it gets translated by hand instead.
7343
+ * slideout, say — the label never moves, so it is moved against the real scroller instead.
7342
7344
  */
7343
- private findScroller;
7344
- private trackScroller;
7345
+ private bind;
7346
+ /**
7347
+ * The label's whole journey, as the scroll positions it turns at: still until the fieldset's top reaches the sticky
7348
+ * line, then a pixel for every pixel of scroll until it has crossed the fieldset. `fill: both` holds it at either
7349
+ * end, which is the clamp the scroll handler applies by hand.
7350
+ */
7351
+ private scrollLinkedTravel;
7352
+ /** Drops everything this component has put on the label or on the scroller. */
7353
+ private detach;
7345
7354
  /** The document scrolls through the window, every other scroller reports its own events. */
7346
7355
  private scrollTarget;
7356
+ /** Where the scroller's own top edge sits, which for the document is the top of the viewport. */
7357
+ private visibleTop;
7358
+ private get fieldset();
7347
7359
  private readonly onScroll;
7360
+ private readonly onScrollEnd;
7348
7361
  private readonly onViewportResize;
7349
7362
  private positionLabel;
7350
7363
  /** The box native sticky would anchor to, whether or not it can be scrolled. */
@@ -9730,7 +9743,7 @@ declare module "components/remarkd-editor/actions" {
9730
9743
  /** Where the caret lands within `prefix`. Defaults to the end. */
9731
9744
  caretOffset?: number;
9732
9745
  /** Actions that open their own picker instead of inserting text. */
9733
- opens?: 'image' | 'include';
9746
+ opens?: 'image' | 'include' | 'link';
9734
9747
  }
9735
9748
  /** Toolbar order, most-used first — the last groups are the first to collapse. */
9736
9749
  export const ACTION_GROUPS: {
@@ -9846,6 +9859,16 @@ declare module "components/remarkd-editor/remarkd-editor.component" {
9846
9859
  private includeLoadFailed;
9847
9860
  private includePickerIndex;
9848
9861
  private includeQuery;
9862
+ private linkPickerOpen;
9863
+ private linkQuery;
9864
+ private linkResults;
9865
+ private linkSearchFailed;
9866
+ private linkSelection;
9867
+ private linkSearchTimer?;
9868
+ private linkSearchToken;
9869
+ /** Resolved link targets by reference; a null value is one the app does not know. */
9870
+ private linkRefs;
9871
+ private linkRefsPending;
9849
9872
  private pendingDragHandle;
9850
9873
  private dragStartX;
9851
9874
  private dragStartY;
@@ -9872,6 +9895,13 @@ declare module "components/remarkd-editor/remarkd-editor.component" {
9872
9895
  * chips rendered for `include::` directives and feeds the include picker.
9873
9896
  */
9874
9897
  includeUrl: string;
9898
+ /**
9899
+ * Endpoint the article link picker searches, as
9900
+ * `{"items":[{ref,kind,title,context,status}]}`. Queried with `?q=<term>` as
9901
+ * the author types and with `?refs=a,b` to resolve the references a body
9902
+ * already carries.
9903
+ */
9904
+ linkUrl: string;
9875
9905
  /** Adds a toolbar toggle that swaps the block view for the full remarkd source. */
9876
9906
  allowRaw: boolean;
9877
9907
  /** Makes the editor required for form submission. */
@@ -9895,6 +9925,7 @@ declare module "components/remarkd-editor/remarkd-editor.component" {
9895
9925
  disconnectedCallback(): void;
9896
9926
  handleValueChange(): void;
9897
9927
  handleIncludeUrlChange(): void;
9928
+ handleLinkUrlChange(): void;
9898
9929
  /**
9899
9930
  * Splits remarkd source into blocks on blank lines, keeping fenced /
9900
9931
  * delimited containers (``` ==== !!!! .... ---- ____ **** ////) as single blocks.
@@ -9979,6 +10010,15 @@ declare module "components/remarkd-editor/remarkd-editor.component" {
9979
10010
  private moveDragGhost;
9980
10011
  private pickImage;
9981
10012
  private pickInclude;
10013
+ /**
10014
+ * Opens the picker over the block being edited. The caret range is captured
10015
+ * now: the picker's own filter takes focus, so the textarea's selection is
10016
+ * gone by the time an option is chosen.
10017
+ */
10018
+ private pickLink;
10019
+ private closeLinkPicker;
10020
+ /** Debounced; only the newest response is kept. */
10021
+ private searchLinks;
9982
10022
  private closeIncludePicker;
9983
10023
  private insertInclude;
9984
10024
  private closeImagePicker;
@@ -9996,6 +10036,13 @@ declare module "components/remarkd-editor/remarkd-editor.component" {
9996
10036
  private hasIncludeBlock;
9997
10037
  /** Fetches the include list once; every later caller shares the same promise. */
9998
10038
  private loadIncludeOptions;
10039
+ /**
10040
+ * Resolves the references in the body that have not been resolved yet, so a
10041
+ * link whose target is gone can be marked. A failed request records nothing:
10042
+ * an unanswered reference is not a broken one.
10043
+ */
10044
+ private resolveContentLinks;
10045
+ private markContentLinks;
9999
10046
  private autosize;
10000
10047
  /**
10001
10048
  * Applies an inline mark to the open block's textarea: wraps the selection, toggles the
@@ -10042,8 +10089,11 @@ declare module "components/remarkd-editor/remarkd-editor.component" {
10042
10089
  */
10043
10090
  private renderConditional;
10044
10091
  private renderBlock;
10045
- /** An inline action needs an open block to apply its mark to. */
10092
+ /** Inline marks and the article link both apply into an open block, not a new one. */
10046
10093
  private isActionDisabled;
10094
+ /** A picker action with no endpoint configured is not offered at all. */
10095
+ private actionAvailable;
10096
+ private slashItemAvailable;
10047
10097
  /** Routes a toolbar/menu action to the inline or block insert path — the one place both
10048
10098
  * `renderAction` and `renderMenuAction` call, so the bar and the overflow menu cannot
10049
10099
  * drift out of sync on what a given action actually does. */
@@ -10057,6 +10107,8 @@ declare module "components/remarkd-editor/remarkd-editor.component" {
10057
10107
  /** The block views, with the inline image picker spliced in when active. */
10058
10108
  private renderBody;
10059
10109
  private renderIncludePicker;
10110
+ private renderLinkPicker;
10111
+ private insertLink;
10060
10112
  private renderImagePicker;
10061
10113
  }
10062
10114
  }