@kubex/zinc 1.1.92 → 1.1.95

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.
Files changed (53) hide show
  1. package/dist/custom-elements.json +2880 -453
  2. package/dist/vscode.html-custom-data.json +209 -22
  3. package/dist/web-types.json +452 -39
  4. package/dist/zn.d.ts +633 -61
  5. package/dist/zn.min.css +1 -1
  6. package/dist/zn.min.js +865 -560
  7. package/docs/pages/components/page-builder.md +143 -19
  8. package/docs/pages/components/schedule-builder.md +345 -0
  9. package/docs/pages/components/slash-menu.md +132 -6
  10. package/docs/pages/components/textarea.md +16 -0
  11. package/package.json +1 -1
  12. package/scss/_root.scss +7 -1
  13. package/src/components/alert/alert.scss +9 -13
  14. package/src/components/button/button.scss +5 -2
  15. package/src/components/chip/chip.scss +1 -1
  16. package/src/components/icon-picker/icon-picker.component.ts +1 -1
  17. package/src/components/inline-edit/inline-edit.component.ts +6 -1
  18. package/src/components/input/input.component.ts +12 -2
  19. package/src/components/linked-select/linked-select.component.ts +22 -5
  20. package/src/components/page/page.scss +20 -9
  21. package/src/components/page-builder/modules/page-section-card/page-section-card.component.ts +16 -9
  22. package/src/components/page-builder/modules/page-section-card/page-section-card.scss +13 -0
  23. package/src/components/page-builder/modules/page-section-card/page-section-card.test.ts +9 -0
  24. package/src/components/page-builder/page-builder.component.ts +535 -232
  25. package/src/components/page-builder/page-builder.scss +230 -19
  26. package/src/components/page-builder/page-builder.test.ts +790 -110
  27. package/src/components/page-builder/page-tree.test.ts +483 -0
  28. package/src/components/page-builder/page-tree.ts +329 -0
  29. package/src/components/page-builder/page.types.ts +98 -10
  30. package/src/components/page-nav/page-nav.scss +9 -1
  31. package/src/components/panel/panel.component.ts +5 -1
  32. package/src/components/priority-list/priority-list.component.ts +1 -0
  33. package/src/components/priority-list/priority-list.scss +2 -1
  34. package/src/components/remarkd-editor/remarkd-editor.component.ts +198 -9
  35. package/src/components/remarkd-editor/remarkd-editor.scss +81 -0
  36. package/src/components/remarkd-editor/remarkd-editor.test.ts +179 -0
  37. package/src/components/schedule-builder/index.ts +12 -0
  38. package/src/components/schedule-builder/schedule-builder.component.ts +1543 -0
  39. package/src/components/schedule-builder/schedule-builder.scss +448 -0
  40. package/src/components/schedule-builder/schedule-builder.test.ts +344 -0
  41. package/src/components/settings-container/settings-container.scss +2 -1
  42. package/src/components/slash-item/slash-item.component.ts +1 -1
  43. package/src/components/slash-menu/slash-menu-items.ts +48 -0
  44. package/src/components/slash-menu/slash-menu.component.ts +134 -27
  45. package/src/components/slash-menu/slash-menu.scss +90 -12
  46. package/src/components/slash-menu/slash-menu.test.ts +107 -0
  47. package/src/components/textarea/textarea.component.ts +12 -2
  48. package/src/components/textarea/textarea.test.ts +2 -2
  49. package/src/components/toggle/toggle.component.ts +2 -1
  50. package/src/components/translations/translations.component.ts +5 -1
  51. package/src/zinc.ts +1 -0
  52. package/docs/superpowers/plans/2026-08-03-theme-editor.md +0 -1536
  53. package/docs/superpowers/specs/2026-08-03-theme-editor-design.md +0 -327
@@ -56,79 +56,6 @@
56
56
  }
57
57
  ]
58
58
  },
59
- {
60
- "kind": "javascript-module",
61
- "path": "components/action-bar/action-bar.js",
62
- "declarations": [
63
- {
64
- "kind": "class",
65
- "description": "",
66
- "name": "ZnActionBar",
67
- "cssProperties": [
68
- {
69
- "description": "An example CSS custom property.",
70
- "name": "--example"
71
- }
72
- ],
73
- "cssParts": [
74
- {
75
- "description": "The component's base wrapper.",
76
- "name": "base"
77
- }
78
- ],
79
- "slots": [
80
- {
81
- "description": "The default slot.",
82
- "name": ""
83
- },
84
- {
85
- "description": "An example slot.",
86
- "name": "example"
87
- }
88
- ],
89
- "members": [
90
- {
91
- "kind": "field",
92
- "name": "localize",
93
- "privacy": "private",
94
- "readonly": true,
95
- "default": "new LocalizeController(this)"
96
- }
97
- ],
98
- "events": [
99
- {
100
- "description": "Emitted as an example.",
101
- "name": "zn-event-name"
102
- }
103
- ],
104
- "superclass": {
105
- "name": "ZincElement",
106
- "module": "/src/internal/zinc-element"
107
- },
108
- "summary": "Short summary of the component's intended use.",
109
- "tagNameWithoutPrefix": "action-bar",
110
- "tagName": "zn-action-bar",
111
- "customElement": true,
112
- "jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/action-bar\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n * @slot example - An example slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --example - An example CSS custom property.\n */",
113
- "documentation": "https://zinc.style/components/action-bar",
114
- "status": "experimental",
115
- "since": "1.0",
116
- "dependencies": [
117
- "zn-example"
118
- ]
119
- }
120
- ],
121
- "exports": [
122
- {
123
- "kind": "js",
124
- "name": "default",
125
- "declaration": {
126
- "name": "ZnActionBar",
127
- "module": "components/action-bar/action-bar.js"
128
- }
129
- }
130
- ]
131
- },
132
59
  {
133
60
  "kind": "javascript-module",
134
61
  "path": "components/alert/alert.js",
@@ -323,6 +250,79 @@
323
250
  }
324
251
  ]
325
252
  },
253
+ {
254
+ "kind": "javascript-module",
255
+ "path": "components/action-bar/action-bar.js",
256
+ "declarations": [
257
+ {
258
+ "kind": "class",
259
+ "description": "",
260
+ "name": "ZnActionBar",
261
+ "cssProperties": [
262
+ {
263
+ "description": "An example CSS custom property.",
264
+ "name": "--example"
265
+ }
266
+ ],
267
+ "cssParts": [
268
+ {
269
+ "description": "The component's base wrapper.",
270
+ "name": "base"
271
+ }
272
+ ],
273
+ "slots": [
274
+ {
275
+ "description": "The default slot.",
276
+ "name": ""
277
+ },
278
+ {
279
+ "description": "An example slot.",
280
+ "name": "example"
281
+ }
282
+ ],
283
+ "members": [
284
+ {
285
+ "kind": "field",
286
+ "name": "localize",
287
+ "privacy": "private",
288
+ "readonly": true,
289
+ "default": "new LocalizeController(this)"
290
+ }
291
+ ],
292
+ "events": [
293
+ {
294
+ "description": "Emitted as an example.",
295
+ "name": "zn-event-name"
296
+ }
297
+ ],
298
+ "superclass": {
299
+ "name": "ZincElement",
300
+ "module": "/src/internal/zinc-element"
301
+ },
302
+ "summary": "Short summary of the component's intended use.",
303
+ "tagNameWithoutPrefix": "action-bar",
304
+ "tagName": "zn-action-bar",
305
+ "customElement": true,
306
+ "jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/action-bar\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n * @slot example - An example slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --example - An example CSS custom property.\n */",
307
+ "documentation": "https://zinc.style/components/action-bar",
308
+ "status": "experimental",
309
+ "since": "1.0",
310
+ "dependencies": [
311
+ "zn-example"
312
+ ]
313
+ }
314
+ ],
315
+ "exports": [
316
+ {
317
+ "kind": "js",
318
+ "name": "default",
319
+ "declaration": {
320
+ "name": "ZnActionBar",
321
+ "module": "components/action-bar/action-bar.js"
322
+ }
323
+ }
324
+ ]
325
+ },
326
326
  {
327
327
  "kind": "javascript-module",
328
328
  "path": "components/animated-button/animated-button.js",
@@ -17691,7 +17691,7 @@
17691
17691
  "text": "string"
17692
17692
  },
17693
17693
  "default": "'Insert'",
17694
- "description": "The heading shown above the slash menu's items.",
17694
+ "description": "The name the slash menu's list is announced by.",
17695
17695
  "attribute": "slash-heading"
17696
17696
  },
17697
17697
  {
@@ -17704,6 +17704,16 @@
17704
17704
  "description": "Hides the insertion keys normally shown against the slash menu's items.",
17705
17705
  "attribute": "slash-hide-keys"
17706
17706
  },
17707
+ {
17708
+ "kind": "field",
17709
+ "name": "slashRecentKey",
17710
+ "type": {
17711
+ "text": "string"
17712
+ },
17713
+ "default": "''",
17714
+ "description": "Lists the slash menu items most recently chosen here above the rest, remembered under this key.",
17715
+ "attribute": "slash-recent-key"
17716
+ },
17707
17717
  {
17708
17718
  "kind": "field",
17709
17719
  "name": "slashItemsProvider",
@@ -18205,7 +18215,7 @@
18205
18215
  "text": "string"
18206
18216
  },
18207
18217
  "default": "'Insert'",
18208
- "description": "The heading shown above the slash menu's items.",
18218
+ "description": "The name the slash menu's list is announced by.",
18209
18219
  "fieldName": "slashHeading"
18210
18220
  },
18211
18221
  {
@@ -18217,6 +18227,15 @@
18217
18227
  "description": "Hides the insertion keys normally shown against the slash menu's items.",
18218
18228
  "fieldName": "slashHideKeys"
18219
18229
  },
18230
+ {
18231
+ "name": "slash-recent-key",
18232
+ "type": {
18233
+ "text": "string"
18234
+ },
18235
+ "default": "''",
18236
+ "description": "Lists the slash menu items most recently chosen here above the rest, remembered under this key.",
18237
+ "fieldName": "slashRecentKey"
18238
+ },
18220
18239
  {
18221
18240
  "name": "options",
18222
18241
  "type": {
@@ -18947,7 +18966,7 @@
18947
18966
  "text": "string"
18948
18967
  },
18949
18968
  "default": "'Insert'",
18950
- "description": "The heading shown above the slash menu's items.",
18969
+ "description": "The name the slash menu's list is announced by.",
18951
18970
  "attribute": "slash-heading"
18952
18971
  },
18953
18972
  {
@@ -18960,6 +18979,16 @@
18960
18979
  "description": "Hides the insertion keys normally shown against the slash menu's items.",
18961
18980
  "attribute": "slash-hide-keys"
18962
18981
  },
18982
+ {
18983
+ "kind": "field",
18984
+ "name": "slashRecentKey",
18985
+ "type": {
18986
+ "text": "string"
18987
+ },
18988
+ "default": "''",
18989
+ "description": "Lists the items most recently chosen here above the rest, remembered in `localStorage` under this\nkey. Share a key between the fields that should share a history; leave unset to offer no such list.",
18990
+ "attribute": "slash-recent-key"
18991
+ },
18963
18992
  {
18964
18993
  "kind": "field",
18965
18994
  "name": "slashItemsProvider",
@@ -19819,7 +19848,7 @@
19819
19848
  "text": "string"
19820
19849
  },
19821
19850
  "default": "'Insert'",
19822
- "description": "The heading shown above the slash menu's items.",
19851
+ "description": "The name the slash menu's list is announced by.",
19823
19852
  "fieldName": "slashHeading"
19824
19853
  },
19825
19854
  {
@@ -19831,6 +19860,15 @@
19831
19860
  "description": "Hides the insertion keys normally shown against the slash menu's items.",
19832
19861
  "fieldName": "slashHideKeys"
19833
19862
  },
19863
+ {
19864
+ "name": "slash-recent-key",
19865
+ "type": {
19866
+ "text": "string"
19867
+ },
19868
+ "default": "''",
19869
+ "description": "Lists the items most recently chosen here above the rest, remembered in `localStorage` under this\nkey. Share a key between the fields that should share a history; leave unset to offer no such list.",
19870
+ "fieldName": "slashRecentKey"
19871
+ },
19834
19872
  {
19835
19873
  "name": "trigger-submit",
19836
19874
  "type": {
@@ -20757,6 +20795,16 @@
20757
20795
  "default": "\"\"",
20758
20796
  "attribute": "label"
20759
20797
  },
20798
+ {
20799
+ "kind": "field",
20800
+ "name": "selectFirst",
20801
+ "type": {
20802
+ "text": "boolean"
20803
+ },
20804
+ "default": "false",
20805
+ "description": "Automatically select the first option of the linked group when no value is set.",
20806
+ "attribute": "select-first"
20807
+ },
20760
20808
  {
20761
20809
  "kind": "field",
20762
20810
  "name": "input",
@@ -20859,6 +20907,17 @@
20859
20907
  {
20860
20908
  "kind": "field",
20861
20909
  "name": "handleSelectChange"
20910
+ },
20911
+ {
20912
+ "kind": "method",
20913
+ "name": "currentOptions",
20914
+ "privacy": "private",
20915
+ "return": {
20916
+ "type": {
20917
+ "text": "linkedSelectOption"
20918
+ }
20919
+ },
20920
+ "description": "The options of the group the linked select currently points at."
20862
20921
  }
20863
20922
  ],
20864
20923
  "events": [
@@ -20921,6 +20980,15 @@
20921
20980
  },
20922
20981
  "default": "\"\"",
20923
20982
  "fieldName": "label"
20983
+ },
20984
+ {
20985
+ "name": "select-first",
20986
+ "type": {
20987
+ "text": "boolean"
20988
+ },
20989
+ "default": "false",
20990
+ "description": "Automatically select the first option of the linked group when no value is set.",
20991
+ "fieldName": "selectFirst"
20924
20992
  }
20925
20993
  ],
20926
20994
  "superclass": {
@@ -25729,11 +25797,19 @@
25729
25797
  {
25730
25798
  "description": "The right panel while a section is selected.",
25731
25799
  "name": "inspector"
25800
+ },
25801
+ {
25802
+ "description": "The inspector's fixed header (icon, section name, type, close).",
25803
+ "name": "inspector-header"
25804
+ },
25805
+ {
25806
+ "description": "The inspector's scrolling form area.",
25807
+ "name": "inspector-body"
25732
25808
  }
25733
25809
  ],
25734
25810
  "slots": [
25735
25811
  {
25736
- "description": "`<template type=\"…\">` declarations; never displayed. Each template's attributes (type, label, icon, icon-library, color, category, description, slots, accepts) declare a palette entry and its content declares the inspector form for that type. `slots` makes the section a container with that many child slots; `accepts` is a comma-separated list of the type keys its slots allow.",
25812
+ "description": "`<template type=\"…\">` declarations; never displayed. Each template's attributes (type, label, icon, icon-library, color, category, description, container, columns, widths, grow, slots, accepts) declare a palette entry and its content declares the inspector form for that type. `container` makes the type a container whose editor-configurable layout starts from `columns` (seeds equal widths) or `widths` (explicit weights, wins over `columns`); `grow` seeds a growable instance. `accepts` is a comma-separated list of the type keys its cells allow — omitted on a `container` type, any type is allowed subject to the nesting cap. `slots` is",
25737
25813
  "name": "config"
25738
25814
  },
25739
25815
  {
@@ -25753,7 +25829,7 @@
25753
25829
  "text": "object"
25754
25830
  },
25755
25831
  "static": true,
25756
- "default": "{ 'zn-collapsible': ZnCollapsible, 'zn-icon': ZnIcon, 'zn-input': ZnInput, 'zn-page-palette-item': ZnPagePaletteItem, 'zn-page-section-card': ZnPageSectionCard, }"
25832
+ "default": "{ 'zn-collapsible': ZnCollapsible, 'zn-icon': ZnIcon, 'zn-input': ZnInput, 'zn-page-palette-item': ZnPagePaletteItem, 'zn-page-section-card': ZnPageSectionCard, 'zn-toggle': ZnToggle, }"
25757
25833
  },
25758
25834
  {
25759
25835
  "kind": "field",
@@ -25813,6 +25889,17 @@
25813
25889
  "attribute": "subheading",
25814
25890
  "reflects": true
25815
25891
  },
25892
+ {
25893
+ "kind": "field",
25894
+ "name": "requiredFirst",
25895
+ "type": {
25896
+ "text": "string"
25897
+ },
25898
+ "default": "''",
25899
+ "description": "Section type key that must lead the page. The builder hoists an existing section of\nthat type to the top, or inserts an empty one, and pins it there: it can't be\nremoved, reordered or dragged into a slot, and nothing can be dropped above it.\nIts content stays fully editable in the inspector.",
25900
+ "attribute": "required-first",
25901
+ "reflects": true
25902
+ },
25816
25903
  {
25817
25904
  "kind": "field",
25818
25905
  "name": "sectionTypes",
@@ -25907,23 +25994,23 @@
25907
25994
  },
25908
25995
  {
25909
25996
  "kind": "field",
25910
- "name": "_slotDragOver",
25997
+ "name": "_cellDragOver",
25911
25998
  "type": {
25912
- "text": "{ containerId: string; index: number } | null"
25999
+ "text": "{ containerId: string; cellIndex: number; insertIndex: number } | null"
25913
26000
  },
25914
26001
  "privacy": "private",
25915
26002
  "default": "null",
25916
- "description": "The container slot a drag is currently over, if any."
26003
+ "description": "The cell a drag is currently over, if any."
25917
26004
  },
25918
26005
  {
25919
26006
  "kind": "field",
25920
- "name": "_slotPicker",
26007
+ "name": "_cellPicker",
25921
26008
  "type": {
25922
- "text": "{ containerId: string; index: number } | null"
26009
+ "text": "{ containerId: string; cellIndex: number } | null"
25923
26010
  },
25924
26011
  "privacy": "private",
25925
26012
  "default": "null",
25926
- "description": "The container slot whose \"+\" type picker is open, if any."
26013
+ "description": "The cell whose \"+\" type picker is open, if any."
25927
26014
  },
25928
26015
  {
25929
26016
  "kind": "field",
@@ -26044,6 +26131,10 @@
26044
26131
  "kind": "method",
26045
26132
  "name": "handleConfigChange"
26046
26133
  },
26134
+ {
26135
+ "kind": "method",
26136
+ "name": "handleRequiredFirstChange"
26137
+ },
26047
26138
  {
26048
26139
  "kind": "method",
26049
26140
  "name": "handleSectionTypesChange"
@@ -26257,31 +26348,22 @@
26257
26348
  "description": "Normalises and installs an externally provided state; resets selection."
26258
26349
  },
26259
26350
  {
26260
- "kind": "method",
26261
- "name": "_findSection",
26262
- "privacy": "private",
26263
- "return": {
26264
- "type": {
26265
- "text": "PageSection | undefined"
26266
- }
26351
+ "kind": "field",
26352
+ "name": "_pinnedId",
26353
+ "type": {
26354
+ "text": "string | null"
26267
26355
  },
26268
- "parameters": [
26269
- {
26270
- "name": "id",
26271
- "type": {
26272
- "text": "string | null"
26273
- }
26274
- }
26275
- ],
26276
- "description": "Finds a section by id, searching top-level sections and slotted children."
26356
+ "privacy": "private",
26357
+ "description": "Id of the section pinned to the top of the page, or null when `required-first`\nis unset. Derived from the state rather than stored on it, so nothing about the\nlock leaks into the persisted config.",
26358
+ "readonly": true
26277
26359
  },
26278
26360
  {
26279
26361
  "kind": "method",
26280
- "name": "_patchSection",
26362
+ "name": "_isPinned",
26281
26363
  "privacy": "private",
26282
26364
  "return": {
26283
26365
  "type": {
26284
- "text": "PageSection[]"
26366
+ "text": "boolean"
26285
26367
  }
26286
26368
  },
26287
26369
  "parameters": [
@@ -26290,34 +26372,37 @@
26290
26372
  "type": {
26291
26373
  "text": "string"
26292
26374
  }
26293
- },
26294
- {
26295
- "name": "patch",
26296
- "type": {
26297
- "text": "(s: PageSection) => PageSection"
26298
- }
26299
26375
  }
26300
- ],
26301
- "description": "New sections array with the section patched wherever it lives (top level or slot)."
26376
+ ]
26377
+ },
26378
+ {
26379
+ "kind": "field",
26380
+ "name": "_firstFreeIndex",
26381
+ "type": {
26382
+ "text": "number"
26383
+ },
26384
+ "privacy": "private",
26385
+ "description": "Lowest top-level index a section may be added or moved to.",
26386
+ "readonly": true
26302
26387
  },
26303
26388
  {
26304
26389
  "kind": "method",
26305
- "name": "_extract",
26390
+ "name": "_requireFirst",
26306
26391
  "privacy": "private",
26307
26392
  "return": {
26308
26393
  "type": {
26309
- "text": "[PageSection | undefined, PageSection[]]"
26394
+ "text": "PageSection[]"
26310
26395
  }
26311
26396
  },
26312
26397
  "parameters": [
26313
26398
  {
26314
- "name": "id",
26399
+ "name": "sections",
26315
26400
  "type": {
26316
- "text": "string"
26401
+ "text": "PageSection[]"
26317
26402
  }
26318
26403
  }
26319
26404
  ],
26320
- "description": "Detaches a section wherever it lives: removed from the top level, or its slot nulled."
26405
+ "description": "Sections reordered so `required-first` leads the page: an existing section of that\ntype is hoisted to the front, otherwise an empty one is prepended. Returns the\nargument unchanged when there is nothing to do, so callers can compare by identity."
26321
26406
  },
26322
26407
  {
26323
26408
  "kind": "method",
@@ -26331,7 +26416,7 @@
26331
26416
  }
26332
26417
  }
26333
26418
  ],
26334
- "description": "Installs a new state from a user edit and notifies listeners."
26419
+ "description": "Installs a new state from a user edit and notifies listeners. Re-applies\ngrowth normalisation across the tree first, so a growable container never\ncarries a trailing empty row past this point — the read path (`containerCells`)\nalready hides it, but state/value/zn-page-change/auto-save must not diverge\nfrom what the canvas renders."
26335
26420
  },
26336
26421
  {
26337
26422
  "kind": "method",
@@ -26369,6 +26454,25 @@
26369
26454
  "kind": "field",
26370
26455
  "name": "redo"
26371
26456
  },
26457
+ {
26458
+ "kind": "method",
26459
+ "name": "_newSection",
26460
+ "privacy": "private",
26461
+ "return": {
26462
+ "type": {
26463
+ "text": "PageSection"
26464
+ }
26465
+ },
26466
+ "parameters": [
26467
+ {
26468
+ "name": "type",
26469
+ "type": {
26470
+ "text": "string"
26471
+ }
26472
+ }
26473
+ ],
26474
+ "description": "A fresh section of a registered type, seeded with layout/cells when it's a container."
26475
+ },
26372
26476
  {
26373
26477
  "kind": "method",
26374
26478
  "name": "addSection",
@@ -26396,39 +26500,90 @@
26396
26500
  },
26397
26501
  {
26398
26502
  "kind": "method",
26399
- "name": "addSectionToSlot",
26503
+ "name": "_removeSection",
26504
+ "privacy": "private",
26505
+ "parameters": [
26506
+ {
26507
+ "name": "id",
26508
+ "type": {
26509
+ "text": "string"
26510
+ }
26511
+ }
26512
+ ]
26513
+ },
26514
+ {
26515
+ "kind": "method",
26516
+ "name": "_duplicateSection",
26517
+ "privacy": "private",
26518
+ "parameters": [
26519
+ {
26520
+ "name": "id",
26521
+ "type": {
26522
+ "text": "string"
26523
+ }
26524
+ }
26525
+ ]
26526
+ },
26527
+ {
26528
+ "kind": "method",
26529
+ "name": "_findCellOwner",
26530
+ "privacy": "private",
26400
26531
  "return": {
26401
26532
  "type": {
26402
- "text": "PageSection | null"
26533
+ "text": "CellOwner | undefined"
26403
26534
  }
26404
26535
  },
26405
26536
  "parameters": [
26406
26537
  {
26407
- "name": "type",
26538
+ "name": "id",
26408
26539
  "type": {
26409
26540
  "text": "string"
26410
26541
  }
26411
- },
26542
+ }
26543
+ ],
26544
+ "description": "Locates a section living inside a container cell."
26545
+ },
26546
+ {
26547
+ "kind": "method",
26548
+ "name": "_moveSection",
26549
+ "privacy": "private",
26550
+ "parameters": [
26412
26551
  {
26413
- "name": "containerId",
26552
+ "name": "id",
26414
26553
  "type": {
26415
26554
  "text": "string"
26416
26555
  }
26417
26556
  },
26418
26557
  {
26419
- "name": "slotIndex",
26558
+ "name": "index",
26420
26559
  "type": {
26421
26560
  "text": "number"
26422
26561
  }
26423
26562
  }
26424
26563
  ],
26425
- "description": "Adds a new section of a registered type into a container's slot. Returns null if not allowed."
26564
+ "description": "Moves a section (top-level or inside a cell) to a top-level position."
26565
+ },
26566
+ {
26567
+ "kind": "field",
26568
+ "name": "_draggingId",
26569
+ "type": {
26570
+ "text": "string | null"
26571
+ },
26572
+ "privacy": "private",
26573
+ "default": "null",
26574
+ "description": "Id of the section currently being dragged — dataTransfer is unreadable during dragover."
26426
26575
  },
26427
26576
  {
26428
26577
  "kind": "method",
26429
- "name": "_removeSection",
26578
+ "name": "_onCardDragStart",
26430
26579
  "privacy": "private",
26431
26580
  "parameters": [
26581
+ {
26582
+ "name": "e",
26583
+ "type": {
26584
+ "text": "DragEvent"
26585
+ }
26586
+ },
26432
26587
  {
26433
26588
  "name": "id",
26434
26589
  "type": {
@@ -26439,26 +26594,32 @@
26439
26594
  },
26440
26595
  {
26441
26596
  "kind": "method",
26442
- "name": "_duplicateSection",
26597
+ "name": "_isPageDrag",
26443
26598
  "privacy": "private",
26599
+ "return": {
26600
+ "type": {
26601
+ "text": "boolean"
26602
+ }
26603
+ },
26444
26604
  "parameters": [
26445
26605
  {
26446
- "name": "id",
26606
+ "name": "e",
26447
26607
  "type": {
26448
- "text": "string"
26608
+ "text": "DragEvent"
26449
26609
  }
26450
26610
  }
26451
- ]
26611
+ ],
26612
+ "description": "Whether a drag carries one of the builder's own payloads."
26452
26613
  },
26453
26614
  {
26454
26615
  "kind": "method",
26455
- "name": "_moveSection",
26616
+ "name": "_onZoneDragOver",
26456
26617
  "privacy": "private",
26457
26618
  "parameters": [
26458
26619
  {
26459
- "name": "id",
26620
+ "name": "e",
26460
26621
  "type": {
26461
- "text": "string"
26622
+ "text": "DragEvent"
26462
26623
  }
26463
26624
  },
26464
26625
  {
@@ -26467,57 +26628,90 @@
26467
26628
  "text": "number"
26468
26629
  }
26469
26630
  }
26470
- ],
26471
- "description": "Moves a section (top-level or slotted) to a top-level position."
26631
+ ]
26472
26632
  },
26473
26633
  {
26474
26634
  "kind": "method",
26475
- "name": "_moveToSlot",
26635
+ "name": "_onZoneDrop",
26476
26636
  "privacy": "private",
26477
26637
  "parameters": [
26478
26638
  {
26479
- "name": "id",
26639
+ "name": "e",
26480
26640
  "type": {
26481
- "text": "string"
26641
+ "text": "DragEvent"
26482
26642
  }
26483
26643
  },
26484
26644
  {
26485
- "name": "containerId",
26645
+ "name": "index",
26486
26646
  "type": {
26487
- "text": "string"
26647
+ "text": "number"
26648
+ }
26649
+ }
26650
+ ]
26651
+ },
26652
+ {
26653
+ "kind": "field",
26654
+ "name": "_onCanvasDragOver",
26655
+ "privacy": "private"
26656
+ },
26657
+ {
26658
+ "kind": "field",
26659
+ "name": "_onCanvasDrop",
26660
+ "privacy": "private"
26661
+ },
26662
+ {
26663
+ "kind": "method",
26664
+ "name": "_acceptsType",
26665
+ "privacy": "private",
26666
+ "return": {
26667
+ "type": {
26668
+ "text": "boolean"
26669
+ }
26670
+ },
26671
+ "parameters": [
26672
+ {
26673
+ "name": "container",
26674
+ "type": {
26675
+ "text": "PageSection"
26488
26676
  }
26489
26677
  },
26490
26678
  {
26491
- "name": "slotIndex",
26679
+ "name": "typeKey",
26492
26680
  "type": {
26493
- "text": "number"
26681
+ "text": "string"
26494
26682
  }
26495
26683
  }
26496
26684
  ],
26497
- "description": "Moves a section into a container's slot. Dropping onto an occupied slot swaps\nthe two children (slot-to-slot reordering); top-level sections and containers\nonly enter empty slots / never enter slots respectively."
26685
+ "description": "Whether `typeKey`'s registered type is allowed into this container by its\n`accepts`/`slots=` rule the nesting depth cap is a separate concern,\nchecked by each caller against its own notion of how tall the dropped\nsubtree is."
26498
26686
  },
26499
26687
  {
26500
26688
  "kind": "method",
26501
- "name": "_onCardDragStart",
26689
+ "name": "_acceptsInCell",
26502
26690
  "privacy": "private",
26691
+ "return": {
26692
+ "type": {
26693
+ "text": "boolean"
26694
+ }
26695
+ },
26503
26696
  "parameters": [
26504
26697
  {
26505
- "name": "e",
26698
+ "name": "container",
26506
26699
  "type": {
26507
- "text": "DragEvent"
26700
+ "text": "PageSection"
26508
26701
  }
26509
26702
  },
26510
26703
  {
26511
- "name": "id",
26704
+ "name": "typeKey",
26512
26705
  "type": {
26513
26706
  "text": "string"
26514
26707
  }
26515
26708
  }
26516
- ]
26709
+ ],
26710
+ "description": "Whether `typeKey` may be dropped into this container's cells from the\npalette. A newly created section always has height 1, so the depth cap\nonly needs the target's own depth."
26517
26711
  },
26518
26712
  {
26519
26713
  "kind": "method",
26520
- "name": "_isPageDrag",
26714
+ "name": "_canMoveIntoCell",
26521
26715
  "privacy": "private",
26522
26716
  "return": {
26523
26717
  "type": {
@@ -26526,17 +26720,23 @@
26526
26720
  },
26527
26721
  "parameters": [
26528
26722
  {
26529
- "name": "e",
26723
+ "name": "container",
26530
26724
  "type": {
26531
- "text": "DragEvent"
26725
+ "text": "PageSection"
26726
+ }
26727
+ },
26728
+ {
26729
+ "name": "sectionId",
26730
+ "type": {
26731
+ "text": "string"
26532
26732
  }
26533
26733
  }
26534
26734
  ],
26535
- "description": "Whether a drag carries one of the builder's own payloads."
26735
+ "description": "Whether a dragged, already-placed section may land in this container's\ncells. Unlike a palette drop, the moved subtree can already be several\ncontainers tall (it may itself hold a nested container), so the cap has to\naccount for that height, not just the target's depth: dropping `moved` at\na new depth of `containerDepth(container) + 1` puts its own deepest\ndescendant at `containerDepth(container) + containerHeight(moved)`."
26536
26736
  },
26537
26737
  {
26538
26738
  "kind": "method",
26539
- "name": "_onSlotDragOver",
26739
+ "name": "_onCellDragOver",
26540
26740
  "privacy": "private",
26541
26741
  "parameters": [
26542
26742
  {
@@ -26552,7 +26752,13 @@
26552
26752
  }
26553
26753
  },
26554
26754
  {
26555
- "name": "index",
26755
+ "name": "cellIndex",
26756
+ "type": {
26757
+ "text": "number"
26758
+ }
26759
+ },
26760
+ {
26761
+ "name": "insertIndex",
26556
26762
  "type": {
26557
26763
  "text": "number"
26558
26764
  }
@@ -26561,7 +26767,7 @@
26561
26767
  },
26562
26768
  {
26563
26769
  "kind": "method",
26564
- "name": "_onSlotDrop",
26770
+ "name": "_onCellDrop",
26565
26771
  "privacy": "private",
26566
26772
  "parameters": [
26567
26773
  {
@@ -26577,7 +26783,13 @@
26577
26783
  }
26578
26784
  },
26579
26785
  {
26580
- "name": "index",
26786
+ "name": "cellIndex",
26787
+ "type": {
26788
+ "text": "number"
26789
+ }
26790
+ },
26791
+ {
26792
+ "name": "insertIndex",
26581
26793
  "type": {
26582
26794
  "text": "number"
26583
26795
  }
@@ -26586,36 +26798,63 @@
26586
26798
  },
26587
26799
  {
26588
26800
  "kind": "method",
26589
- "name": "_onZoneDragOver",
26590
- "privacy": "private",
26801
+ "name": "addSectionToCell",
26802
+ "return": {
26803
+ "type": {
26804
+ "text": "PageSection | null"
26805
+ }
26806
+ },
26591
26807
  "parameters": [
26592
26808
  {
26593
- "name": "e",
26809
+ "name": "type",
26594
26810
  "type": {
26595
- "text": "DragEvent"
26811
+ "text": "string"
26596
26812
  }
26597
26813
  },
26598
26814
  {
26599
- "name": "index",
26815
+ "name": "containerId",
26816
+ "type": {
26817
+ "text": "string"
26818
+ }
26819
+ },
26820
+ {
26821
+ "name": "cellIndex",
26600
26822
  "type": {
26601
26823
  "text": "number"
26602
26824
  }
26825
+ },
26826
+ {
26827
+ "name": "insertIndex",
26828
+ "default": "0"
26603
26829
  }
26604
- ]
26830
+ ],
26831
+ "description": "Adds a new section of a registered type into a container cell."
26605
26832
  },
26606
26833
  {
26607
26834
  "kind": "method",
26608
- "name": "_onZoneDrop",
26835
+ "name": "_moveToCell",
26609
26836
  "privacy": "private",
26610
26837
  "parameters": [
26611
26838
  {
26612
- "name": "e",
26839
+ "name": "id",
26613
26840
  "type": {
26614
- "text": "DragEvent"
26841
+ "text": "string"
26615
26842
  }
26616
26843
  },
26617
26844
  {
26618
- "name": "index",
26845
+ "name": "containerId",
26846
+ "type": {
26847
+ "text": "string"
26848
+ }
26849
+ },
26850
+ {
26851
+ "name": "cellIndex",
26852
+ "type": {
26853
+ "text": "number"
26854
+ }
26855
+ },
26856
+ {
26857
+ "name": "insertIndex",
26619
26858
  "type": {
26620
26859
  "text": "number"
26621
26860
  }
@@ -26623,14 +26862,23 @@
26623
26862
  ]
26624
26863
  },
26625
26864
  {
26626
- "kind": "field",
26627
- "name": "_onCanvasDragOver",
26628
- "privacy": "private"
26629
- },
26630
- {
26631
- "kind": "field",
26632
- "name": "_onCanvasDrop",
26633
- "privacy": "private"
26865
+ "kind": "method",
26866
+ "name": "_cellTypes",
26867
+ "privacy": "private",
26868
+ "return": {
26869
+ "type": {
26870
+ "text": "PageSectionType[]"
26871
+ }
26872
+ },
26873
+ "parameters": [
26874
+ {
26875
+ "name": "container",
26876
+ "type": {
26877
+ "text": "PageSection"
26878
+ }
26879
+ }
26880
+ ],
26881
+ "description": "Types offerable in a container's cells."
26634
26882
  },
26635
26883
  {
26636
26884
  "kind": "method",
@@ -26729,36 +26977,65 @@
26729
26977
  },
26730
26978
  {
26731
26979
  "kind": "method",
26732
- "name": "_renderSlot",
26980
+ "name": "_renderNode",
26733
26981
  "privacy": "private",
26982
+ "return": {
26983
+ "type": {
26984
+ "text": "TemplateResult"
26985
+ }
26986
+ },
26734
26987
  "parameters": [
26735
26988
  {
26736
- "name": "container",
26989
+ "name": "section",
26737
26990
  "type": {
26738
26991
  "text": "PageSection"
26739
26992
  }
26740
26993
  },
26741
26994
  {
26742
- "name": "child",
26995
+ "name": "drop",
26743
26996
  "type": {
26744
- "text": "PageSection | null"
26997
+ "text": "{ over: (e: DragEvent) => void; drop: (e: DragEvent) => void }"
26745
26998
  }
26746
26999
  },
26747
27000
  {
26748
- "name": "index",
27001
+ "name": "extraClass",
27002
+ "default": "''"
27003
+ }
27004
+ ],
27005
+ "description": "A card, or — for a container — its card plus its own cell grid. Shared by the\ntop-level section list and container-cell stacks, so nesting renders at every level."
27006
+ },
27007
+ {
27008
+ "kind": "method",
27009
+ "name": "_renderCells",
27010
+ "privacy": "private",
27011
+ "return": {
27012
+ "type": {
27013
+ "text": "TemplateResult"
27014
+ }
27015
+ },
27016
+ "parameters": [
27017
+ {
27018
+ "name": "container",
26749
27019
  "type": {
26750
- "text": "number"
27020
+ "text": "PageSection"
27021
+ }
27022
+ },
27023
+ {
27024
+ "name": "type",
27025
+ "type": {
27026
+ "text": "PageSectionType | undefined"
26751
27027
  }
26752
27028
  }
26753
- ]
27029
+ ],
27030
+ "description": "A container's cell grid: one track per width, one stack per cell."
26754
27031
  },
26755
27032
  {
26756
27033
  "kind": "method",
26757
- "name": "_slotTypes",
27034
+ "name": "_renderCell",
26758
27035
  "privacy": "private",
26759
27036
  "return": {
26760
27037
  "type": {
26761
- "text": "PageSectionType[]"
27038
+ "text": "TemplateResult"
26762
27039
  }
26763
27040
  },
26764
27041
  "parameters": [
@@ -26767,9 +27044,46 @@
26767
27044
  "type": {
26768
27045
  "text": "PageSection"
26769
27046
  }
27047
+ },
27048
+ {
27049
+ "name": "stack",
27050
+ "type": {
27051
+ "text": "PageSection[]"
27052
+ }
27053
+ },
27054
+ {
27055
+ "name": "cellIndex",
27056
+ "type": {
27057
+ "text": "number"
27058
+ }
27059
+ }
27060
+ ]
27061
+ },
27062
+ {
27063
+ "kind": "method",
27064
+ "name": "_renderCellStrip",
27065
+ "privacy": "private",
27066
+ "parameters": [
27067
+ {
27068
+ "name": "container",
27069
+ "type": {
27070
+ "text": "PageSection"
27071
+ }
27072
+ },
27073
+ {
27074
+ "name": "cellIndex",
27075
+ "type": {
27076
+ "text": "number"
27077
+ }
27078
+ },
27079
+ {
27080
+ "name": "insertIndex",
27081
+ "type": {
27082
+ "text": "number"
27083
+ }
26770
27084
  }
26771
27085
  ],
26772
- "description": "Types allowed in a container's slots: non-containers, filtered by its accepts list."
27086
+ "description": "Thin insertion target between two cards in a stack."
26773
27087
  },
26774
27088
  {
26775
27089
  "kind": "method",
@@ -26789,7 +27103,7 @@
26789
27103
  }
26790
27104
  }
26791
27105
  ],
26792
- "description": "The one type-picker template both drop zones and slot cells render."
27106
+ "description": "The one type-picker template both drop zones and container cells render."
26793
27107
  },
26794
27108
  {
26795
27109
  "kind": "method",
@@ -26878,6 +27192,128 @@
26878
27192
  }
26879
27193
  ]
26880
27194
  },
27195
+ {
27196
+ "kind": "method",
27197
+ "name": "_setLayout",
27198
+ "privacy": "private",
27199
+ "parameters": [
27200
+ {
27201
+ "name": "id",
27202
+ "type": {
27203
+ "text": "string"
27204
+ }
27205
+ },
27206
+ {
27207
+ "name": "next",
27208
+ "type": {
27209
+ "text": "(current: { widths: number[]; grow: boolean; cells: PageSection[][] }) => {\n widths: number[];\n grow: boolean;\n cells: PageSection[][];\n }"
27210
+ }
27211
+ }
27212
+ ],
27213
+ "description": "Replaces a container's layout, keeping cells consistent with it."
27214
+ },
27215
+ {
27216
+ "kind": "method",
27217
+ "name": "_setColumns",
27218
+ "privacy": "private",
27219
+ "parameters": [
27220
+ {
27221
+ "name": "id",
27222
+ "type": {
27223
+ "text": "string"
27224
+ }
27225
+ },
27226
+ {
27227
+ "name": "columns",
27228
+ "type": {
27229
+ "text": "number"
27230
+ }
27231
+ }
27232
+ ]
27233
+ },
27234
+ {
27235
+ "kind": "method",
27236
+ "name": "_setWidth",
27237
+ "privacy": "private",
27238
+ "parameters": [
27239
+ {
27240
+ "name": "id",
27241
+ "type": {
27242
+ "text": "string"
27243
+ }
27244
+ },
27245
+ {
27246
+ "name": "column",
27247
+ "type": {
27248
+ "text": "number"
27249
+ }
27250
+ },
27251
+ {
27252
+ "name": "width",
27253
+ "type": {
27254
+ "text": "number"
27255
+ }
27256
+ }
27257
+ ]
27258
+ },
27259
+ {
27260
+ "kind": "method",
27261
+ "name": "_setGrow",
27262
+ "privacy": "private",
27263
+ "parameters": [
27264
+ {
27265
+ "name": "id",
27266
+ "type": {
27267
+ "text": "string"
27268
+ }
27269
+ },
27270
+ {
27271
+ "name": "grow",
27272
+ "type": {
27273
+ "text": "boolean"
27274
+ }
27275
+ }
27276
+ ]
27277
+ },
27278
+ {
27279
+ "kind": "method",
27280
+ "name": "_setRows",
27281
+ "privacy": "private",
27282
+ "parameters": [
27283
+ {
27284
+ "name": "id",
27285
+ "type": {
27286
+ "text": "string"
27287
+ }
27288
+ },
27289
+ {
27290
+ "name": "rows",
27291
+ "type": {
27292
+ "text": "number"
27293
+ }
27294
+ }
27295
+ ],
27296
+ "description": "Pads with empty rows, or trims trailing empty rows down to the last occupied one."
27297
+ },
27298
+ {
27299
+ "kind": "method",
27300
+ "name": "_renderLayoutGroup",
27301
+ "privacy": "private",
27302
+ "parameters": [
27303
+ {
27304
+ "name": "section",
27305
+ "type": {
27306
+ "text": "PageSection"
27307
+ }
27308
+ },
27309
+ {
27310
+ "name": "type",
27311
+ "type": {
27312
+ "text": "PageSectionType | undefined"
27313
+ }
27314
+ }
27315
+ ]
27316
+ },
26881
27317
  {
26882
27318
  "kind": "method",
26883
27319
  "name": "_renderInspector",
@@ -26938,6 +27374,15 @@
26938
27374
  "default": "''",
26939
27375
  "fieldName": "subheading"
26940
27376
  },
27377
+ {
27378
+ "name": "required-first",
27379
+ "type": {
27380
+ "text": "string"
27381
+ },
27382
+ "default": "''",
27383
+ "description": "Section type key that must lead the page. The builder hoists an existing section of\nthat type to the top, or inserts an empty one, and pins it there: it can't be\nremoved, reordered or dragged into a slot, and nothing can be dropped above it.\nIts content stays fully editable in the inspector.",
27384
+ "fieldName": "requiredFirst"
27385
+ },
26941
27386
  {
26942
27387
  "name": "palette-collapsed",
26943
27388
  "type": {
@@ -26974,7 +27419,7 @@
26974
27419
  "tagNameWithoutPrefix": "page-builder",
26975
27420
  "tagName": "zn-page-builder",
26976
27421
  "customElement": true,
26977
- "jsDoc": "/**\n * @summary A config-driven page composer: a palette of predefined section types, a linear\n * canvas of section cards, and an inspector for editing each section's content.\n * @documentation https://zinc.style/components/page-builder\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-collapsible\n * @dependency zn-icon\n * @dependency zn-input\n * @dependency zn-page-palette-item\n * @dependency zn-page-section-card\n *\n * @event zn-page-change - Emitted whenever the page state changes. `event.detail.state` is the new PageState.\n * @event zn-page-selection-change - Emitted when the selected section changes. `event.detail.sectionId`.\n *\n * @slot config - `<template type=\"…\">` declarations; never displayed. Each template's attributes\n * (type, label, icon, icon-library, color, category, description, slots, accepts) declare a\n * palette entry and its content declares the inspector form for that type. `slots` makes the\n * section a container with that many child slots; `accepts` is a comma-separated list of the\n * type keys its slots allow.\n * @slot header-left - Actions shown on the left of the header bar.\n * @slot header-right - Actions shown on the right of the header bar.\n *\n * @csspart base - The grid wrapper.\n * @csspart header - The full-width header action bar (only rendered when header slots are filled).\n * @csspart palette - The left palette panel.\n * @csspart canvas - The centre section-card canvas.\n * @csspart inspector - The right panel while a section is selected.\n */",
27422
+ "jsDoc": "/**\n * @summary A config-driven page composer: a palette of predefined section types, a linear\n * canvas of section cards, and an inspector for editing each section's content.\n * @documentation https://zinc.style/components/page-builder\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-collapsible\n * @dependency zn-icon\n * @dependency zn-input\n * @dependency zn-page-palette-item\n * @dependency zn-page-section-card\n *\n * @event zn-page-change - Emitted whenever the page state changes. `event.detail.state` is the new PageState.\n * @event zn-page-selection-change - Emitted when the selected section changes. `event.detail.sectionId`.\n *\n * @slot config - `<template type=\"…\">` declarations; never displayed. Each template's attributes\n * (type, label, icon, icon-library, color, category, description, container, columns, widths,\n * grow, slots, accepts) declare a palette entry and its content declares the inspector form for\n * that type. `container` makes the type a container whose editor-configurable layout starts from\n * `columns` (seeds equal widths) or `widths` (explicit weights, wins over `columns`); `grow` seeds\n * a growable instance. `accepts` is a comma-separated list of the type keys its cells allow —\n * omitted on a `container` type, any type is allowed subject to the nesting cap. `slots` is\n * @deprecated: it declares a fixed-slot container of `DEFAULT_WIDTHS` columns pinned to that many\n * cells, and keeps the old any-non-container-type rule when `accepts` is omitted.\n * @slot header-left - Actions shown on the left of the header bar.\n * @slot header-right - Actions shown on the right of the header bar.\n *\n * @csspart base - The grid wrapper.\n * @csspart header - The full-width header action bar (only rendered when header slots are filled).\n * @csspart palette - The left palette panel.\n * @csspart canvas - The centre section-card canvas.\n * @csspart inspector - The right panel while a section is selected.\n * @csspart inspector-header - The inspector's fixed header (icon, section name, type, close).\n * @csspart inspector-body - The inspector's scrolling form area.\n */",
26978
27423
  "documentation": "https://zinc.style/components/page-builder",
26979
27424
  "status": "experimental",
26980
27425
  "since": "1.0",
@@ -29822,6 +30267,10 @@
29822
30267
  "description": "The padding inside each item. Defaults to `var(--zn-spacing-small) var(--zn-spacing-medium)`.",
29823
30268
  "name": "--zn-priority-list-item-padding"
29824
30269
  },
30270
+ {
30271
+ "description": "The gap between an item's slotted actions. Defaults to `var(--zn-spacing-x-small)`.",
30272
+ "name": "--zn-priority-list-actions-gap"
30273
+ },
29825
30274
  {
29826
30275
  "description": "The color of the drag handle. Defaults to `var(--zn-color-neutral-500)`.",
29827
30276
  "name": "--zn-priority-list-handle-color"
@@ -30434,7 +30883,7 @@
30434
30883
  "tagNameWithoutPrefix": "priority-list",
30435
30884
  "tagName": "zn-priority-list",
30436
30885
  "customElement": true,
30437
- "jsDoc": "/**\n * @summary A reorderable list where each item receives a numerical priority based on its position. Supports drag-and-drop\n * and keyboard reordering. Priority values are submitted as form data via hidden inputs.\n *\n * @documentation https://zinc.style/components/priority-list\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-icon\n *\n * @slot - The default slot where list items are placed. Each slotted element must have a `value` attribute that\n * uniquely identifies the item. The component automatically assigns slot names to project each item into the\n * correct position. The item's position in the list determines its priority (top = `priority-start`, incrementing).\n * @slot label - The component's label. Required for proper accessibility. Alternatively, use the `label` attribute.\n * @slot label-tooltip - Used to add text displayed in a tooltip next to the label.\n * @slot help-text - Text that describes how to use the component. Alternatively, use the `help-text` attribute.\n *\n * @event zn-change - Emitted when the order of items changes.\n * @event zn-reorder - Emitted when items are reordered. Call `getPriorityMap()` on the component to get\n * the updated `{ key: string, priority: number }[]` array.\n *\n * @csspart form-control - The form control wrapper.\n * @csspart form-control-label - The label wrapper.\n * @csspart form-control-input - The input area wrapper.\n * @csspart form-control-help-text - The help text wrapper.\n * @csspart list - The list container.\n * @csspart item - An individual list item row.\n * @csspart drag-handle - The drag handle icon.\n * @csspart priority - The priority number badge.\n * @csspart content - The content area of an item.\n *\n * @cssproperty --zn-priority-list-item-gap - The gap between list items. Defaults to `var(--zn-spacing-2x-small)`.\n * @cssproperty --zn-priority-list-item-padding - The padding inside each item. Defaults to `var(--zn-spacing-small) var(--zn-spacing-medium)`.\n * @cssproperty --zn-priority-list-handle-color - The color of the drag handle. Defaults to `var(--zn-color-neutral-500)`.\n * @cssproperty --zn-priority-list-priority-color - The color of the priority number. Defaults to `var(--zn-color-neutral-600)`.\n */",
30886
+ "jsDoc": "/**\n * @summary A reorderable list where each item receives a numerical priority based on its position. Supports drag-and-drop\n * and keyboard reordering. Priority values are submitted as form data via hidden inputs.\n *\n * @documentation https://zinc.style/components/priority-list\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-icon\n *\n * @slot - The default slot where list items are placed. Each slotted element must have a `value` attribute that\n * uniquely identifies the item. The component automatically assigns slot names to project each item into the\n * correct position. The item's position in the list determines its priority (top = `priority-start`, incrementing).\n * @slot label - The component's label. Required for proper accessibility. Alternatively, use the `label` attribute.\n * @slot label-tooltip - Used to add text displayed in a tooltip next to the label.\n * @slot help-text - Text that describes how to use the component. Alternatively, use the `help-text` attribute.\n *\n * @event zn-change - Emitted when the order of items changes.\n * @event zn-reorder - Emitted when items are reordered. Call `getPriorityMap()` on the component to get\n * the updated `{ key: string, priority: number }[]` array.\n *\n * @csspart form-control - The form control wrapper.\n * @csspart form-control-label - The label wrapper.\n * @csspart form-control-input - The input area wrapper.\n * @csspart form-control-help-text - The help text wrapper.\n * @csspart list - The list container.\n * @csspart item - An individual list item row.\n * @csspart drag-handle - The drag handle icon.\n * @csspart priority - The priority number badge.\n * @csspart content - The content area of an item.\n *\n * @cssproperty --zn-priority-list-item-gap - The gap between list items. Defaults to `var(--zn-spacing-2x-small)`.\n * @cssproperty --zn-priority-list-item-padding - The padding inside each item. Defaults to `var(--zn-spacing-small) var(--zn-spacing-medium)`.\n * @cssproperty --zn-priority-list-actions-gap - The gap between an item's slotted actions. Defaults to `var(--zn-spacing-x-small)`.\n * @cssproperty --zn-priority-list-handle-color - The color of the drag handle. Defaults to `var(--zn-color-neutral-500)`.\n * @cssproperty --zn-priority-list-priority-color - The color of the priority number. Defaults to `var(--zn-color-neutral-600)`.\n */",
30438
30887
  "documentation": "https://zinc.style/components/priority-list",
30439
30888
  "status": "experimental",
30440
30889
  "since": "1.0",
@@ -33052,6 +33501,14 @@
33052
33501
  {
33053
33502
  "description": "The caption / alignment / size panel shown when an image block is clicked.",
33054
33503
  "name": "image-controls"
33504
+ },
33505
+ {
33506
+ "description": "The chip rendered in place of an `include::` directive.",
33507
+ "name": "include"
33508
+ },
33509
+ {
33510
+ "description": "The inline Include picker opened from the toolbar or \"/include\".",
33511
+ "name": "include-picker"
33055
33512
  }
33056
33513
  ],
33057
33514
  "members": [
@@ -33076,7 +33533,7 @@
33076
33533
  "name": "slashController",
33077
33534
  "privacy": "private",
33078
33535
  "readonly": true,
33079
- "default": "new SlashMenuController(this, { menu: () => this.mountSlashMenu(), // The menu only belongs in a block that is nothing but the slash command — a // block prefix like \"## \" is not valid remarkd part-way through a line. items: () => this.isSlashBlock() ? SLASH_ITEMS : [], onSelect: item => this.handleSlashSelect(item) })"
33536
+ "default": "new SlashMenuController(this, { menu: () => this.mountSlashMenu(), // The menu only belongs in a block that is nothing but the slash command — a // block prefix like \"## \" is not valid remarkd part-way through a line. items: () => this.isSlashBlock() ? SLASH_ITEMS.filter(item => item.action !== 'include' || !!this.includeUrl) : [], onSelect: item => this.handleSlashSelect(item) })"
33080
33537
  },
33081
33538
  {
33082
33539
  "kind": "field",
@@ -33087,6 +33544,15 @@
33087
33544
  "privacy": "private",
33088
33545
  "default": "''"
33089
33546
  },
33547
+ {
33548
+ "kind": "field",
33549
+ "name": "includeRequest",
33550
+ "type": {
33551
+ "text": "Promise<IncludeOption[]> | null"
33552
+ },
33553
+ "privacy": "private",
33554
+ "default": "null"
33555
+ },
33090
33556
  {
33091
33557
  "kind": "field",
33092
33558
  "name": "rawEntryValue",
@@ -33148,6 +33614,16 @@
33148
33614
  "privacy": "private",
33149
33615
  "default": "null"
33150
33616
  },
33617
+ {
33618
+ "kind": "field",
33619
+ "name": "slashRecentKey",
33620
+ "type": {
33621
+ "text": "string"
33622
+ },
33623
+ "default": "''",
33624
+ "description": "Lists the blocks most recently inserted here above the rest of the slash menu, remembered in\n`localStorage` under this key. Leave unset to offer no recently used section.",
33625
+ "attribute": "slash-recent-key"
33626
+ },
33151
33627
  {
33152
33628
  "kind": "field",
33153
33629
  "name": "hasSlashMenu",
@@ -33212,6 +33688,33 @@
33212
33688
  "privacy": "private",
33213
33689
  "default": "false"
33214
33690
  },
33691
+ {
33692
+ "kind": "field",
33693
+ "name": "includeOptions",
33694
+ "type": {
33695
+ "text": "IncludeOption[] | null"
33696
+ },
33697
+ "privacy": "private",
33698
+ "default": "null"
33699
+ },
33700
+ {
33701
+ "kind": "field",
33702
+ "name": "includePickerIndex",
33703
+ "type": {
33704
+ "text": "number | null"
33705
+ },
33706
+ "privacy": "private",
33707
+ "default": "null"
33708
+ },
33709
+ {
33710
+ "kind": "field",
33711
+ "name": "includeQuery",
33712
+ "type": {
33713
+ "text": "string"
33714
+ },
33715
+ "privacy": "private",
33716
+ "default": "''"
33717
+ },
33215
33718
  {
33216
33719
  "kind": "field",
33217
33720
  "name": "pendingDragHandle",
@@ -33297,6 +33800,16 @@
33297
33800
  "description": "Endpoint for image uploads — required for image support. Posting the file\nmetadata here must return `{uploadPath, uploadUrl}`; the file is then PUT\nto `uploadUrl` and the returned `uploadPath` is embedded as the image URL.",
33298
33801
  "attribute": "attachment-url"
33299
33802
  },
33803
+ {
33804
+ "kind": "field",
33805
+ "name": "includeUrl",
33806
+ "type": {
33807
+ "text": "string"
33808
+ },
33809
+ "default": "''",
33810
+ "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.",
33811
+ "attribute": "include-url"
33812
+ },
33300
33813
  {
33301
33814
  "kind": "field",
33302
33815
  "name": "allowRaw",
@@ -33415,6 +33928,10 @@
33415
33928
  "kind": "method",
33416
33929
  "name": "handleValueChange"
33417
33930
  },
33931
+ {
33932
+ "kind": "method",
33933
+ "name": "handleIncludeUrlChange"
33934
+ },
33418
33935
  {
33419
33936
  "kind": "method",
33420
33937
  "name": "splitBlocks",
@@ -33527,6 +34044,25 @@
33527
34044
  ],
33528
34045
  "description": "Parses a block that is purely an image (with optional caption/align lines)."
33529
34046
  },
34047
+ {
34048
+ "kind": "method",
34049
+ "name": "parseIncludeBlock",
34050
+ "privacy": "private",
34051
+ "return": {
34052
+ "type": {
34053
+ "text": "IncludeBlockData | null"
34054
+ }
34055
+ },
34056
+ "parameters": [
34057
+ {
34058
+ "name": "block",
34059
+ "type": {
34060
+ "text": "string"
34061
+ }
34062
+ }
34063
+ ],
34064
+ "description": "Parses a block that is nothing but an include directive."
34065
+ },
33530
34066
  {
33531
34067
  "kind": "method",
33532
34068
  "name": "serializeImageBlock",
@@ -33846,126 +34382,1829 @@
33846
34382
  },
33847
34383
  {
33848
34384
  "kind": "method",
33849
- "name": "pickImage",
34385
+ "name": "pickImage",
34386
+ "privacy": "private",
34387
+ "parameters": [
34388
+ {
34389
+ "name": "index",
34390
+ "type": {
34391
+ "text": "number"
34392
+ }
34393
+ }
34394
+ ]
34395
+ },
34396
+ {
34397
+ "kind": "method",
34398
+ "name": "pickInclude",
34399
+ "privacy": "private",
34400
+ "parameters": [
34401
+ {
34402
+ "name": "index",
34403
+ "type": {
34404
+ "text": "number"
34405
+ }
34406
+ }
34407
+ ]
34408
+ },
34409
+ {
34410
+ "kind": "field",
34411
+ "name": "closeIncludePicker",
34412
+ "privacy": "private"
34413
+ },
34414
+ {
34415
+ "kind": "method",
34416
+ "name": "insertInclude",
34417
+ "privacy": "private",
34418
+ "parameters": [
34419
+ {
34420
+ "name": "item",
34421
+ "type": {
34422
+ "text": "IncludeOption"
34423
+ }
34424
+ }
34425
+ ]
34426
+ },
34427
+ {
34428
+ "kind": "field",
34429
+ "name": "closeImagePicker",
34430
+ "privacy": "private"
34431
+ },
34432
+ {
34433
+ "kind": "field",
34434
+ "name": "handleImagePicked",
34435
+ "privacy": "private"
34436
+ },
34437
+ {
34438
+ "kind": "method",
34439
+ "name": "insertImage",
34440
+ "privacy": "private",
34441
+ "parameters": [
34442
+ {
34443
+ "name": "file",
34444
+ "type": {
34445
+ "text": "File"
34446
+ }
34447
+ },
34448
+ {
34449
+ "name": "index",
34450
+ "type": {
34451
+ "text": "number"
34452
+ }
34453
+ }
34454
+ ]
34455
+ },
34456
+ {
34457
+ "kind": "method",
34458
+ "name": "uploadImage",
34459
+ "privacy": "private",
34460
+ "return": {
34461
+ "type": {
34462
+ "text": "Promise<string>"
34463
+ }
34464
+ },
34465
+ "parameters": [
34466
+ {
34467
+ "name": "file",
34468
+ "type": {
34469
+ "text": "File"
34470
+ }
34471
+ }
34472
+ ]
34473
+ },
34474
+ {
34475
+ "kind": "method",
34476
+ "name": "hasIncludeBlock",
34477
+ "privacy": "private",
34478
+ "return": {
34479
+ "type": {
34480
+ "text": "boolean"
34481
+ }
34482
+ }
34483
+ },
34484
+ {
34485
+ "kind": "method",
34486
+ "name": "loadIncludeOptions",
34487
+ "privacy": "private",
34488
+ "return": {
34489
+ "type": {
34490
+ "text": "Promise<IncludeOption[]>"
34491
+ }
34492
+ },
34493
+ "description": "Fetches the include list once; every later caller shares the same promise."
34494
+ },
34495
+ {
34496
+ "kind": "method",
34497
+ "name": "autosize",
34498
+ "privacy": "private",
34499
+ "parameters": [
34500
+ {
34501
+ "name": "input",
34502
+ "type": {
34503
+ "text": "HTMLTextAreaElement"
34504
+ }
34505
+ }
34506
+ ]
34507
+ },
34508
+ {
34509
+ "kind": "field",
34510
+ "name": "toggleRawMode",
34511
+ "privacy": "private"
34512
+ },
34513
+ {
34514
+ "kind": "method",
34515
+ "name": "focusRaw",
34516
+ "privacy": "private"
34517
+ },
34518
+ {
34519
+ "kind": "field",
34520
+ "name": "handleRawInput",
34521
+ "privacy": "private",
34522
+ "description": "Raw mode keeps the whole document in one textarea, so the textarea — not\nthe block list — is authoritative while it is open: re-splitting on every\nkeystroke would normalise blank lines out from under the cursor."
34523
+ },
34524
+ {
34525
+ "kind": "field",
34526
+ "name": "commitRaw",
34527
+ "privacy": "private",
34528
+ "description": "Re-splits the raw source into blocks. Not `updateBlocks` — that only\nreports a change when the re-join differs from the value, and raw edits\nhave already written straight to the value."
34529
+ },
34530
+ {
34531
+ "kind": "method",
34532
+ "name": "handleToolbarInsert",
34533
+ "privacy": "private",
34534
+ "parameters": [
34535
+ {
34536
+ "name": "item",
34537
+ "type": {
34538
+ "text": "BlockType"
34539
+ }
34540
+ }
34541
+ ]
34542
+ },
34543
+ {
34544
+ "kind": "method",
34545
+ "name": "renderImageControls",
34546
+ "privacy": "private"
34547
+ },
34548
+ {
34549
+ "kind": "method",
34550
+ "name": "renderIncludeChip",
34551
+ "privacy": "private",
34552
+ "parameters": [
34553
+ {
34554
+ "name": "data",
34555
+ "type": {
34556
+ "text": "IncludeBlockData"
34557
+ }
34558
+ }
34559
+ ]
34560
+ },
34561
+ {
34562
+ "kind": "method",
34563
+ "name": "renderBlock",
34564
+ "privacy": "private",
34565
+ "parameters": [
34566
+ {
34567
+ "name": "block",
34568
+ "type": {
34569
+ "text": "string"
34570
+ }
34571
+ },
34572
+ {
34573
+ "name": "index",
34574
+ "type": {
34575
+ "text": "number"
34576
+ }
34577
+ }
34578
+ ]
34579
+ },
34580
+ {
34581
+ "kind": "method",
34582
+ "name": "renderRaw",
34583
+ "privacy": "private"
34584
+ },
34585
+ {
34586
+ "kind": "method",
34587
+ "name": "renderBody",
34588
+ "privacy": "private",
34589
+ "description": "The block views, with the inline image picker spliced in when active."
34590
+ },
34591
+ {
34592
+ "kind": "method",
34593
+ "name": "renderIncludePicker",
34594
+ "privacy": "private"
34595
+ },
34596
+ {
34597
+ "kind": "method",
34598
+ "name": "renderImagePicker",
34599
+ "privacy": "private"
34600
+ }
34601
+ ],
34602
+ "events": [
34603
+ {
34604
+ "description": "Emitted on each keystroke while editing a block.",
34605
+ "name": "zn-input"
34606
+ },
34607
+ {
34608
+ "description": "Emitted when a block edit is committed and the value changes.",
34609
+ "name": "zn-change"
34610
+ }
34611
+ ],
34612
+ "attributes": [
34613
+ {
34614
+ "name": "slash-recent-key",
34615
+ "type": {
34616
+ "text": "string"
34617
+ },
34618
+ "default": "''",
34619
+ "description": "Lists the blocks most recently inserted here above the rest of the slash menu, remembered in\n`localStorage` under this key. Leave unset to offer no recently used section.",
34620
+ "fieldName": "slashRecentKey"
34621
+ },
34622
+ {
34623
+ "name": "name",
34624
+ "type": {
34625
+ "text": "string"
34626
+ },
34627
+ "default": "''",
34628
+ "description": "The name of the control, submitted as part of form data.",
34629
+ "fieldName": "name"
34630
+ },
34631
+ {
34632
+ "name": "value",
34633
+ "type": {
34634
+ "text": "string"
34635
+ },
34636
+ "default": "''",
34637
+ "description": "The current remarkd source.",
34638
+ "fieldName": "value"
34639
+ },
34640
+ {
34641
+ "name": "placeholder",
34642
+ "type": {
34643
+ "text": "string"
34644
+ },
34645
+ "default": "'Type something…'",
34646
+ "description": "Placeholder shown when the document is empty.",
34647
+ "fieldName": "placeholder"
34648
+ },
34649
+ {
34650
+ "name": "attachment-url",
34651
+ "type": {
34652
+ "text": "string"
34653
+ },
34654
+ "default": "''",
34655
+ "description": "Endpoint for image uploads — required for image support. Posting the file\nmetadata here must return `{uploadPath, uploadUrl}`; the file is then PUT\nto `uploadUrl` and the returned `uploadPath` is embedded as the image URL.",
34656
+ "fieldName": "attachmentUrl"
34657
+ },
34658
+ {
34659
+ "name": "include-url",
34660
+ "type": {
34661
+ "text": "string"
34662
+ },
34663
+ "default": "''",
34664
+ "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.",
34665
+ "fieldName": "includeUrl"
34666
+ },
34667
+ {
34668
+ "name": "allow-raw",
34669
+ "type": {
34670
+ "text": "boolean"
34671
+ },
34672
+ "default": "false",
34673
+ "description": "Adds a toolbar toggle that swaps the block view for the full remarkd source.",
34674
+ "fieldName": "allowRaw"
34675
+ },
34676
+ {
34677
+ "name": "required",
34678
+ "type": {
34679
+ "text": "boolean"
34680
+ },
34681
+ "default": "false",
34682
+ "description": "Makes the editor required for form submission.",
34683
+ "fieldName": "required"
34684
+ },
34685
+ {
34686
+ "name": "readonly",
34687
+ "type": {
34688
+ "text": "boolean"
34689
+ },
34690
+ "default": "false",
34691
+ "description": "Makes the editor read-only.",
34692
+ "fieldName": "readonly"
34693
+ },
34694
+ {
34695
+ "name": "disabled",
34696
+ "type": {
34697
+ "text": "boolean"
34698
+ },
34699
+ "default": "false",
34700
+ "description": "Disables the editor.",
34701
+ "fieldName": "disabled"
34702
+ }
34703
+ ],
34704
+ "superclass": {
34705
+ "name": "ZincElement",
34706
+ "module": "/src/internal/zinc-element"
34707
+ },
34708
+ "summary": "A Notion-style block editor for remarkd content. Blocks render inline; click one to edit its source.",
34709
+ "tagNameWithoutPrefix": "remarkd-editor",
34710
+ "tagName": "zn-remarkd-editor",
34711
+ "customElement": true,
34712
+ "jsDoc": "/**\n * @summary A Notion-style block editor for remarkd content. Blocks render inline; click one to edit its source.\n * @documentation https://zinc.style/components/remarkd-editor\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-button\n * @dependency zn-button-group\n * @dependency zn-icon\n * @dependency zn-file\n * @dependency zn-slash-menu\n *\n * @event zn-input - Emitted on each keystroke while editing a block.\n * @event zn-change - Emitted when a block edit is committed and the value changes.\n *\n * @csspart base - The component's base wrapper.\n * @csspart toolbar - The always-visible block-insert toolbar.\n * @csspart raw-toggle - The button that switches between the block view and the raw source view.\n * @csspart block - A rendered block wrapper.\n * @csspart rendered - The rendered remarkd output of a block.\n * @csspart input - The textarea shown while editing a block.\n * @csspart raw - The full-document textarea shown in raw source mode.\n * @csspart slash-menu - The `zn-slash-menu` opened by typing \"/\" in an empty block.\n * @csspart image-controls - The caption / alignment / size panel shown when an image block is clicked.\n * @csspart include - The chip rendered in place of an `include::` directive.\n * @csspart include-picker - The inline Include picker opened from the toolbar or \"/include\".\n */",
34713
+ "documentation": "https://zinc.style/components/remarkd-editor",
34714
+ "status": "experimental",
34715
+ "since": "1.0",
34716
+ "dependencies": [
34717
+ "zn-button",
34718
+ "zn-button-group",
34719
+ "zn-icon",
34720
+ "zn-file",
34721
+ "zn-slash-menu"
34722
+ ]
34723
+ }
34724
+ ],
34725
+ "exports": [
34726
+ {
34727
+ "kind": "js",
34728
+ "name": "default",
34729
+ "declaration": {
34730
+ "name": "ZnRemarkdEditor",
34731
+ "module": "components/remarkd-editor/remarkd-editor.js"
34732
+ }
34733
+ }
34734
+ ]
34735
+ },
34736
+ {
34737
+ "kind": "javascript-module",
34738
+ "path": "components/reveal/reveal.js",
34739
+ "declarations": [
34740
+ {
34741
+ "kind": "class",
34742
+ "description": "",
34743
+ "name": "ZnReveal",
34744
+ "cssProperties": [
34745
+ {
34746
+ "description": "An example CSS custom property.",
34747
+ "name": "--example"
34748
+ }
34749
+ ],
34750
+ "cssParts": [
34751
+ {
34752
+ "description": "The component's base wrapper.",
34753
+ "name": "base"
34754
+ }
34755
+ ],
34756
+ "slots": [
34757
+ {
34758
+ "description": "The default slot.",
34759
+ "name": ""
34760
+ },
34761
+ {
34762
+ "description": "An example slot.",
34763
+ "name": "example"
34764
+ }
34765
+ ],
34766
+ "members": [
34767
+ {
34768
+ "kind": "field",
34769
+ "name": "duration",
34770
+ "type": {
34771
+ "text": "number"
34772
+ },
34773
+ "default": "2000",
34774
+ "attribute": "duration"
34775
+ },
34776
+ {
34777
+ "kind": "field",
34778
+ "name": "initial",
34779
+ "type": {
34780
+ "text": "string"
34781
+ },
34782
+ "default": "''",
34783
+ "attribute": "initial"
34784
+ },
34785
+ {
34786
+ "kind": "field",
34787
+ "name": "revealed",
34788
+ "type": {
34789
+ "text": "string"
34790
+ },
34791
+ "default": "''",
34792
+ "attribute": "revealed"
34793
+ },
34794
+ {
34795
+ "kind": "field",
34796
+ "name": "hideDelay",
34797
+ "type": {
34798
+ "text": "number"
34799
+ },
34800
+ "default": "150",
34801
+ "attribute": "hide-delay"
34802
+ },
34803
+ {
34804
+ "kind": "field",
34805
+ "name": "noToggle",
34806
+ "type": {
34807
+ "text": "boolean"
34808
+ },
34809
+ "default": "false",
34810
+ "description": "Disables click-to-toggle so the value is only revealed on hover. Clicks still bubble to the parent.",
34811
+ "attribute": "no-toggle"
34812
+ },
34813
+ {
34814
+ "kind": "field",
34815
+ "name": "_isRevealed",
34816
+ "type": {
34817
+ "text": "boolean"
34818
+ },
34819
+ "privacy": "private",
34820
+ "default": "false"
34821
+ },
34822
+ {
34823
+ "kind": "field",
34824
+ "name": "_isToggled",
34825
+ "type": {
34826
+ "text": "boolean"
34827
+ },
34828
+ "privacy": "private",
34829
+ "default": "false"
34830
+ },
34831
+ {
34832
+ "kind": "field",
34833
+ "name": "_hideTimer",
34834
+ "type": {
34835
+ "text": "ReturnType<typeof setTimeout> | undefined"
34836
+ },
34837
+ "privacy": "private"
34838
+ },
34839
+ {
34840
+ "kind": "method",
34841
+ "name": "_clearHideTimer",
34842
+ "privacy": "private"
34843
+ },
34844
+ {
34845
+ "kind": "method",
34846
+ "name": "handleToggleReveal",
34847
+ "privacy": "protected"
34848
+ },
34849
+ {
34850
+ "kind": "method",
34851
+ "name": "handleMouseEnter",
34852
+ "privacy": "protected"
34853
+ },
34854
+ {
34855
+ "kind": "method",
34856
+ "name": "handleMouseLeave",
34857
+ "privacy": "protected"
34858
+ }
34859
+ ],
34860
+ "events": [
34861
+ {
34862
+ "description": "Emitted as an example.",
34863
+ "name": "zn-event-name"
34864
+ }
34865
+ ],
34866
+ "attributes": [
34867
+ {
34868
+ "name": "duration",
34869
+ "type": {
34870
+ "text": "number"
34871
+ },
34872
+ "default": "2000",
34873
+ "fieldName": "duration"
34874
+ },
34875
+ {
34876
+ "name": "initial",
34877
+ "type": {
34878
+ "text": "string"
34879
+ },
34880
+ "default": "''",
34881
+ "fieldName": "initial"
34882
+ },
34883
+ {
34884
+ "name": "revealed",
34885
+ "type": {
34886
+ "text": "string"
34887
+ },
34888
+ "default": "''",
34889
+ "fieldName": "revealed"
34890
+ },
34891
+ {
34892
+ "name": "hide-delay",
34893
+ "type": {
34894
+ "text": "number"
34895
+ },
34896
+ "default": "150",
34897
+ "fieldName": "hideDelay"
34898
+ },
34899
+ {
34900
+ "name": "no-toggle",
34901
+ "type": {
34902
+ "text": "boolean"
34903
+ },
34904
+ "default": "false",
34905
+ "description": "Disables click-to-toggle so the value is only revealed on hover. Clicks still bubble to the parent.",
34906
+ "fieldName": "noToggle"
34907
+ }
34908
+ ],
34909
+ "superclass": {
34910
+ "name": "ZincElement",
34911
+ "module": "/src/internal/zinc-element"
34912
+ },
34913
+ "summary": "Short summary of the component's intended use.",
34914
+ "tagNameWithoutPrefix": "reveal",
34915
+ "tagName": "zn-reveal",
34916
+ "customElement": true,
34917
+ "jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/reveal\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n * @slot example - An example slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @usage\n * ```html\n * <zn-reveal duration=\"3000\"\n * initial=\"******@hotmail.com\"\n * revealed=\"john.doe@hotmail.com\" toggle>\n * </zn-reveal>\n * ```\n *\n * @cssproperty --example - An example CSS custom property.\n */",
34918
+ "documentation": "https://zinc.style/components/reveal",
34919
+ "status": "experimental",
34920
+ "since": "1.0",
34921
+ "dependencies": [
34922
+ "zn-example"
34923
+ ]
34924
+ }
34925
+ ],
34926
+ "exports": [
34927
+ {
34928
+ "kind": "js",
34929
+ "name": "default",
34930
+ "declaration": {
34931
+ "name": "ZnReveal",
34932
+ "module": "components/reveal/reveal.js"
34933
+ }
34934
+ }
34935
+ ]
34936
+ },
34937
+ {
34938
+ "kind": "javascript-module",
34939
+ "path": "components/schedule-builder/schedule-builder.js",
34940
+ "declarations": [
34941
+ {
34942
+ "kind": "class",
34943
+ "description": "",
34944
+ "name": "ZnScheduleBuilder",
34945
+ "cssProperties": [
34946
+ {
34947
+ "description": "The height of a single time slot in the calendar. Defaults to `18px`.",
34948
+ "name": "--slot-height"
34949
+ },
34950
+ {
34951
+ "description": "The width of the calendar's time gutter. Defaults to `64px`.",
34952
+ "name": "--gutter-width"
34953
+ },
34954
+ {
34955
+ "description": "The fill used for open hours.",
34956
+ "name": "--open-color"
34957
+ },
34958
+ {
34959
+ "description": "The fill used for hours an exception removes.",
34960
+ "name": "--reduced-color"
34961
+ }
34962
+ ],
34963
+ "cssParts": [
34964
+ {
34965
+ "description": "The form control that wraps the builder, label and help text.",
34966
+ "name": "form-control"
34967
+ },
34968
+ {
34969
+ "description": "The component's base wrapper.",
34970
+ "name": "base"
34971
+ },
34972
+ {
34973
+ "description": "The row above the builder holding the hint, legend and view toggle.",
34974
+ "name": "toolbar"
34975
+ },
34976
+ {
34977
+ "description": "The calendar view wrapper.",
34978
+ "name": "calendar"
34979
+ },
34980
+ {
34981
+ "description": "The form (list) view wrapper.",
34982
+ "name": "list"
34983
+ },
34984
+ {
34985
+ "description": "The summary panel beside the calendar.",
34986
+ "name": "summary"
34987
+ }
34988
+ ],
34989
+ "slots": [
34990
+ {
34991
+ "description": "The schedule's label. Alternatively, use the `label` attribute.",
34992
+ "name": "label"
34993
+ },
34994
+ {
34995
+ "description": "Text that describes how to use the schedule. Alternatively, use the `help-text` attribute.",
34996
+ "name": "help-text"
34997
+ }
34998
+ ],
34999
+ "members": [
35000
+ {
35001
+ "kind": "field",
35002
+ "name": "formAssociated",
35003
+ "type": {
35004
+ "text": "boolean"
35005
+ },
35006
+ "static": true,
35007
+ "default": "true"
35008
+ },
35009
+ {
35010
+ "kind": "field",
35011
+ "name": "dependencies",
35012
+ "type": {
35013
+ "text": "object"
35014
+ },
35015
+ "static": true,
35016
+ "default": "{ 'zn-icon': ZnIcon, 'zn-input': ZnInput, 'zn-option': ZnOption, 'zn-select': ZnSelect, }"
35017
+ },
35018
+ {
35019
+ "kind": "field",
35020
+ "name": "formControlController",
35021
+ "privacy": "private",
35022
+ "readonly": true,
35023
+ "default": "new FormControlController(this, { assumeInteractionOn: ['zn-change'] })"
35024
+ },
35025
+ {
35026
+ "kind": "field",
35027
+ "name": "hasSlotController",
35028
+ "privacy": "private",
35029
+ "readonly": true,
35030
+ "default": "new HasSlotController(this, 'help-text', 'label')"
35031
+ },
35032
+ {
35033
+ "kind": "field",
35034
+ "name": "localize",
35035
+ "privacy": "private",
35036
+ "readonly": true,
35037
+ "default": "new LocalizeController(this)"
35038
+ },
35039
+ {
35040
+ "kind": "field",
35041
+ "name": "internals",
35042
+ "type": {
35043
+ "text": "ElementInternals | null"
35044
+ },
35045
+ "privacy": "private",
35046
+ "readonly": true
35047
+ },
35048
+ {
35049
+ "kind": "field",
35050
+ "name": "canvas",
35051
+ "type": {
35052
+ "text": "HTMLElement"
35053
+ },
35054
+ "privacy": "private"
35055
+ },
35056
+ {
35057
+ "kind": "field",
35058
+ "name": "_days",
35059
+ "type": {
35060
+ "text": "ScheduleDayMap"
35061
+ },
35062
+ "privacy": "private"
35063
+ },
35064
+ {
35065
+ "kind": "field",
35066
+ "name": "_exceptions",
35067
+ "type": {
35068
+ "text": "ScheduleException[]"
35069
+ },
35070
+ "privacy": "private",
35071
+ "default": "[]"
35072
+ },
35073
+ {
35074
+ "kind": "field",
35075
+ "name": "_dragPreview",
35076
+ "type": {
35077
+ "text": "ScheduleDayMap | null"
35078
+ },
35079
+ "privacy": "private",
35080
+ "default": "null"
35081
+ },
35082
+ {
35083
+ "kind": "field",
35084
+ "name": "_editing",
35085
+ "type": {
35086
+ "text": "{ day: ScheduleDay; index: number } | null"
35087
+ },
35088
+ "privacy": "private",
35089
+ "default": "null"
35090
+ },
35091
+ {
35092
+ "kind": "field",
35093
+ "name": "_dragMode",
35094
+ "type": {
35095
+ "text": "'open' | 'close'"
35096
+ },
35097
+ "privacy": "private",
35098
+ "default": "'open'"
35099
+ },
35100
+ {
35101
+ "kind": "field",
35102
+ "name": "_dragAnchor",
35103
+ "type": {
35104
+ "text": "{ col: number; row: number } | null"
35105
+ },
35106
+ "privacy": "private",
35107
+ "default": "null"
35108
+ },
35109
+ {
35110
+ "kind": "field",
35111
+ "name": "_dragPointerId",
35112
+ "type": {
35113
+ "text": "number | null"
35114
+ },
35115
+ "privacy": "private",
35116
+ "default": "null"
35117
+ },
35118
+ {
35119
+ "kind": "field",
35120
+ "name": "name",
35121
+ "type": {
35122
+ "text": "string"
35123
+ },
35124
+ "description": "The name of the form control, submitted as a name/value pair with form data.",
35125
+ "attribute": "name",
35126
+ "reflects": true
35127
+ },
35128
+ {
35129
+ "kind": "field",
35130
+ "name": "value",
35131
+ "type": {
35132
+ "text": "string"
35133
+ },
35134
+ "default": "''",
35135
+ "description": "The schedule as a JSON string. This is what gets posted with the form.",
35136
+ "attribute": "value"
35137
+ },
35138
+ {
35139
+ "kind": "field",
35140
+ "name": "defaultValue",
35141
+ "type": {
35142
+ "text": "string"
35143
+ },
35144
+ "default": "''",
35145
+ "description": "The default value, used when resetting the containing form."
35146
+ },
35147
+ {
35148
+ "kind": "field",
35149
+ "name": "label",
35150
+ "type": {
35151
+ "text": "string"
35152
+ },
35153
+ "default": "''",
35154
+ "description": "The schedule's label. If you need to display HTML, use the `label` slot instead.",
35155
+ "attribute": "label"
35156
+ },
35157
+ {
35158
+ "kind": "field",
35159
+ "name": "helpText",
35160
+ "type": {
35161
+ "text": "string"
35162
+ },
35163
+ "default": "''",
35164
+ "description": "The schedule's help text. If you need to display HTML, use the `help-text` slot instead.",
35165
+ "attribute": "help-text"
35166
+ },
35167
+ {
35168
+ "kind": "field",
35169
+ "name": "view",
35170
+ "type": {
35171
+ "text": "ScheduleView"
35172
+ },
35173
+ "default": "'calendar'",
35174
+ "description": "Which view is showing.",
35175
+ "attribute": "view",
35176
+ "reflects": true
35177
+ },
35178
+ {
35179
+ "kind": "field",
35180
+ "name": "openLabel",
35181
+ "type": {
35182
+ "text": "string"
35183
+ },
35184
+ "default": "'Available'",
35185
+ "description": "The word used for hours the schedule covers, in the legend and in labels.",
35186
+ "attribute": "open-label"
35187
+ },
35188
+ {
35189
+ "kind": "field",
35190
+ "name": "closedLabel",
35191
+ "type": {
35192
+ "text": "string"
35193
+ },
35194
+ "default": "'Closed'",
35195
+ "description": "The word used for hours the schedule doesn't cover, in the legend and against empty days.",
35196
+ "attribute": "closed-label"
35197
+ },
35198
+ {
35199
+ "kind": "field",
35200
+ "name": "noToggle",
35201
+ "type": {
35202
+ "text": "boolean"
35203
+ },
35204
+ "default": "false",
35205
+ "description": "Hides the calendar/form view toggle.",
35206
+ "attribute": "no-toggle"
35207
+ },
35208
+ {
35209
+ "kind": "field",
35210
+ "name": "hideSummary",
35211
+ "type": {
35212
+ "text": "boolean"
35213
+ },
35214
+ "default": "false",
35215
+ "description": "Hides the summary panel beside the calendar.",
35216
+ "attribute": "hide-summary"
35217
+ },
35218
+ {
35219
+ "kind": "field",
35220
+ "name": "startHour",
35221
+ "type": {
35222
+ "text": "number"
35223
+ },
35224
+ "default": "6",
35225
+ "description": "The first hour shown in the calendar.",
35226
+ "attribute": "start-hour"
35227
+ },
35228
+ {
35229
+ "kind": "field",
35230
+ "name": "endHour",
35231
+ "type": {
35232
+ "text": "number"
35233
+ },
35234
+ "default": "22",
35235
+ "description": "The last hour shown in the calendar.",
35236
+ "attribute": "end-hour"
35237
+ },
35238
+ {
35239
+ "kind": "field",
35240
+ "name": "interval",
35241
+ "type": {
35242
+ "text": "number"
35243
+ },
35244
+ "default": "30",
35245
+ "description": "The granularity of the calendar grid and the time inputs, in minutes.",
35246
+ "attribute": "interval"
35247
+ },
35248
+ {
35249
+ "kind": "field",
35250
+ "name": "weekStart",
35251
+ "type": {
35252
+ "text": "ScheduleDay"
35253
+ },
35254
+ "default": "'mon'",
35255
+ "description": "The weekday the week starts on.",
35256
+ "attribute": "week-start"
35257
+ },
35258
+ {
35259
+ "kind": "field",
35260
+ "name": "timeFormat",
35261
+ "type": {
35262
+ "text": "'12' | '24'"
35263
+ },
35264
+ "default": "'24'",
35265
+ "description": "Displays times as 12 or 24 hour. The serialised value is always 24 hour `HH:MM`.",
35266
+ "attribute": "time-format"
35267
+ },
35268
+ {
35269
+ "kind": "field",
35270
+ "name": "displayTimezone",
35271
+ "type": {
35272
+ "text": "string"
35273
+ },
35274
+ "default": "''",
35275
+ "description": "The IANA timezone the hours are shown in. Accepts `auto` for the viewer's own timezone. Defaults\nto `save-timezone`, so nothing is converted until you ask for it. Changing this only re-labels\nthe same underlying hours; the value never moves.",
35276
+ "attribute": "display-timezone"
35277
+ },
35278
+ {
35279
+ "kind": "field",
35280
+ "name": "saveTimezone",
35281
+ "type": {
35282
+ "text": "string"
35283
+ },
35284
+ "default": "''",
35285
+ "description": "The IANA timezone the value is stored in. Defaults to `UTC` as soon as the schedule is\ntimezone-aware (a display timezone is set, or the picker is shown), and to no timezone at all\notherwise — in which case the times are stored exactly as they are shown.",
35286
+ "attribute": "save-timezone"
35287
+ },
35288
+ {
35289
+ "kind": "field",
35290
+ "name": "showTimezone",
35291
+ "type": {
35292
+ "text": "boolean"
35293
+ },
35294
+ "default": "false",
35295
+ "description": "Shows the timezone picker, letting the user read the schedule in any timezone.",
35296
+ "attribute": "show-timezone"
35297
+ },
35298
+ {
35299
+ "kind": "field",
35300
+ "name": "timezones",
35301
+ "type": {
35302
+ "text": "string[]"
35303
+ },
35304
+ "default": "[]",
35305
+ "description": "The timezones offered by the picker, as IANA names or one of the named sets — `en` (the four US\nzones, the UK and Australia, under those names), `offsets` (one zone per UTC offset, the\ndefault), `common` (every offset plus the world's major centres) or `all` (the complete IANA\nlist). Names and sets can be mixed, e.g. `en Asia/Tokyo`.",
35306
+ "attribute": "timezones"
35307
+ },
35308
+ {
35309
+ "kind": "field",
35310
+ "name": "referenceDate",
35311
+ "type": {
35312
+ "text": "string"
35313
+ },
35314
+ "default": "''",
35315
+ "description": "The date (`YYYY-MM-DD`) used to resolve timezone offsets. A weekly pattern has no date of its\nown, so one has to be picked to know whether daylight saving applies; today is used by default.",
35316
+ "attribute": "reference-date"
35317
+ },
35318
+ {
35319
+ "kind": "field",
35320
+ "name": "disabled",
35321
+ "type": {
35322
+ "text": "boolean"
35323
+ },
35324
+ "default": "false",
35325
+ "description": "Disables the schedule.",
35326
+ "attribute": "disabled",
35327
+ "reflects": true
35328
+ },
35329
+ {
35330
+ "kind": "field",
35331
+ "name": "readonly",
35332
+ "type": {
35333
+ "text": "boolean"
35334
+ },
35335
+ "default": "false",
35336
+ "description": "Renders the schedule without any editing affordances.",
35337
+ "attribute": "readonly",
35338
+ "reflects": true
35339
+ },
35340
+ {
35341
+ "kind": "field",
35342
+ "name": "required",
35343
+ "type": {
35344
+ "text": "boolean"
35345
+ },
35346
+ "default": "false",
35347
+ "description": "Makes the schedule a required field, invalid until at least one period is open.",
35348
+ "attribute": "required",
35349
+ "reflects": true
35350
+ },
35351
+ {
35352
+ "kind": "field",
35353
+ "name": "form",
35354
+ "type": {
35355
+ "text": "string"
35356
+ },
35357
+ "description": "The id of the form to associate with, when the control sits outside of it.",
35358
+ "attribute": "form",
35359
+ "reflects": true
35360
+ },
35361
+ {
35362
+ "kind": "field",
35363
+ "name": "schedule",
35364
+ "type": {
35365
+ "text": "ScheduleValue"
35366
+ },
35367
+ "description": "The schedule as a plain object, with `days` in the save timezone. Assigning to it replaces the\nwhole schedule."
35368
+ },
35369
+ {
35370
+ "kind": "field",
35371
+ "name": "exceptions",
35372
+ "type": {
35373
+ "text": "ScheduleException[]"
35374
+ },
35375
+ "description": "The exceptions annotating the schedule. Also readable from, and written into, the value."
35376
+ },
35377
+ {
35378
+ "kind": "field",
35379
+ "name": "validity",
35380
+ "type": {
35381
+ "text": "ValidityState"
35382
+ },
35383
+ "description": "Gets the validity state object.",
35384
+ "readonly": true
35385
+ },
35386
+ {
35387
+ "kind": "field",
35388
+ "name": "validationMessage",
35389
+ "type": {
35390
+ "text": "string"
35391
+ },
35392
+ "description": "Gets the validation message.",
35393
+ "readonly": true
35394
+ },
35395
+ {
35396
+ "kind": "field",
35397
+ "name": "_isZoned",
35398
+ "type": {
35399
+ "text": "boolean"
35400
+ },
35401
+ "privacy": "private",
35402
+ "description": "Whether the schedule carries a timezone at all.",
35403
+ "readonly": true
35404
+ },
35405
+ {
35406
+ "kind": "field",
35407
+ "name": "_saveZone",
35408
+ "type": {
35409
+ "text": "string"
35410
+ },
35411
+ "privacy": "private",
35412
+ "description": "The timezone the value is stored in. Empty means the times are stored exactly as shown.",
35413
+ "readonly": true
35414
+ },
35415
+ {
35416
+ "kind": "field",
35417
+ "name": "_displayZone",
35418
+ "type": {
35419
+ "text": "string"
35420
+ },
35421
+ "privacy": "private",
35422
+ "description": "The timezone the grid and list are drawn in.",
35423
+ "readonly": true
35424
+ },
35425
+ {
35426
+ "kind": "field",
35427
+ "name": "_reference",
35428
+ "type": {
35429
+ "text": "Date"
35430
+ },
35431
+ "privacy": "private",
35432
+ "description": "The moment used to resolve daylight saving for both zones.",
35433
+ "readonly": true
35434
+ },
35435
+ {
35436
+ "kind": "field",
35437
+ "name": "_offsetDelta",
35438
+ "type": {
35439
+ "text": "number"
35440
+ },
35441
+ "privacy": "private",
35442
+ "description": "Minutes to add to a stored time to get the time shown.",
35443
+ "readonly": true
35444
+ },
35445
+ {
35446
+ "kind": "field",
35447
+ "name": "_orderedDays",
35448
+ "type": {
35449
+ "text": "ScheduleDay[]"
35450
+ },
35451
+ "privacy": "private",
35452
+ "readonly": true
35453
+ },
35454
+ {
35455
+ "kind": "field",
35456
+ "name": "_interval",
35457
+ "type": {
35458
+ "text": "number"
35459
+ },
35460
+ "privacy": "private",
35461
+ "readonly": true
35462
+ },
35463
+ {
35464
+ "kind": "field",
35465
+ "name": "_startMinute",
35466
+ "type": {
35467
+ "text": "number"
35468
+ },
35469
+ "privacy": "private",
35470
+ "readonly": true
35471
+ },
35472
+ {
35473
+ "kind": "field",
35474
+ "name": "_endMinute",
35475
+ "type": {
35476
+ "text": "number"
35477
+ },
35478
+ "privacy": "private",
35479
+ "readonly": true
35480
+ },
35481
+ {
35482
+ "kind": "field",
35483
+ "name": "_slotCount",
35484
+ "type": {
35485
+ "text": "number"
35486
+ },
35487
+ "privacy": "private",
35488
+ "readonly": true
35489
+ },
35490
+ {
35491
+ "kind": "field",
35492
+ "name": "_slotsPerHour",
35493
+ "type": {
35494
+ "text": "number"
35495
+ },
35496
+ "privacy": "private",
35497
+ "readonly": true
35498
+ },
35499
+ {
35500
+ "kind": "field",
35501
+ "name": "_isEditable",
35502
+ "type": {
35503
+ "text": "boolean"
35504
+ },
35505
+ "privacy": "private",
35506
+ "readonly": true
35507
+ },
35508
+ {
35509
+ "kind": "field",
35510
+ "name": "_hasHours",
35511
+ "type": {
35512
+ "text": "boolean"
35513
+ },
35514
+ "privacy": "private",
35515
+ "readonly": true
35516
+ },
35517
+ {
35518
+ "kind": "method",
35519
+ "name": "handleValueChange"
35520
+ },
35521
+ {
35522
+ "kind": "method",
35523
+ "name": "handleValidationStateChange"
35524
+ },
35525
+ {
35526
+ "kind": "method",
35527
+ "name": "checkValidity",
35528
+ "return": {
35529
+ "type": {
35530
+ "text": "boolean"
35531
+ }
35532
+ },
35533
+ "description": "Checks validity but does not show a validation message."
35534
+ },
35535
+ {
35536
+ "kind": "method",
35537
+ "name": "getForm",
35538
+ "return": {
35539
+ "type": {
35540
+ "text": "HTMLFormElement | null"
35541
+ }
35542
+ },
35543
+ "description": "Gets the associated form, if one exists."
35544
+ },
35545
+ {
35546
+ "kind": "method",
35547
+ "name": "reportValidity",
35548
+ "return": {
35549
+ "type": {
35550
+ "text": "boolean"
35551
+ }
35552
+ },
35553
+ "description": "Checks for validity and shows the browser's validation message if the control is invalid."
35554
+ },
35555
+ {
35556
+ "kind": "method",
35557
+ "name": "setCustomValidity",
35558
+ "parameters": [
35559
+ {
35560
+ "name": "message",
35561
+ "type": {
35562
+ "text": "string"
35563
+ }
35564
+ }
35565
+ ],
35566
+ "description": "Sets a custom validation message. Pass an empty string to restore validity."
35567
+ },
35568
+ {
35569
+ "kind": "method",
35570
+ "name": "setDay",
35571
+ "parameters": [
35572
+ {
35573
+ "name": "day",
35574
+ "type": {
35575
+ "text": "ScheduleDay"
35576
+ }
35577
+ },
35578
+ {
35579
+ "name": "ranges",
35580
+ "type": {
35581
+ "text": "ScheduleRange[]"
35582
+ }
35583
+ }
35584
+ ],
35585
+ "description": "Replaces the hours for a single day, in the save timezone."
35586
+ },
35587
+ {
35588
+ "kind": "method",
35589
+ "name": "getDay",
35590
+ "return": {
35591
+ "type": {
35592
+ "text": "ScheduleRange[]"
35593
+ }
35594
+ },
35595
+ "parameters": [
35596
+ {
35597
+ "name": "day",
35598
+ "type": {
35599
+ "text": "ScheduleDay"
35600
+ }
35601
+ }
35602
+ ],
35603
+ "description": "Reads the hours for a single day, in the save timezone."
35604
+ },
35605
+ {
35606
+ "kind": "field",
35607
+ "name": "displayedDays",
35608
+ "type": {
35609
+ "text": "ScheduleDayMap"
35610
+ },
35611
+ "description": "The hours as currently shown, in the display timezone.",
35612
+ "readonly": true
35613
+ },
35614
+ {
35615
+ "kind": "method",
35616
+ "name": "setDisplayDay",
35617
+ "parameters": [
35618
+ {
35619
+ "name": "day",
35620
+ "type": {
35621
+ "text": "ScheduleDay"
35622
+ }
35623
+ },
35624
+ {
35625
+ "name": "ranges",
35626
+ "type": {
35627
+ "text": "ScheduleRange[]"
35628
+ }
35629
+ }
35630
+ ],
35631
+ "description": "Replaces the hours for a single day, given in the display timezone."
35632
+ },
35633
+ {
35634
+ "kind": "method",
35635
+ "name": "formResetCallback"
35636
+ },
35637
+ {
35638
+ "kind": "method",
35639
+ "name": "formStateRestoreCallback",
35640
+ "parameters": [
35641
+ {
35642
+ "name": "restoredValue",
35643
+ "type": {
35644
+ "text": "string"
35645
+ }
35646
+ }
35647
+ ]
35648
+ },
35649
+ {
35650
+ "kind": "field",
35651
+ "name": "_customValidity",
35652
+ "type": {
35653
+ "text": "string"
35654
+ },
35655
+ "privacy": "private",
35656
+ "default": "''"
35657
+ },
35658
+ {
35659
+ "kind": "method",
35660
+ "name": "_cloneDays",
35661
+ "privacy": "private",
35662
+ "return": {
35663
+ "type": {
35664
+ "text": "ScheduleDayMap"
35665
+ }
35666
+ },
35667
+ "parameters": [
35668
+ {
35669
+ "name": "days",
35670
+ "type": {
35671
+ "text": "ScheduleDayMap"
35672
+ }
35673
+ }
35674
+ ]
35675
+ },
35676
+ {
35677
+ "kind": "method",
35678
+ "name": "_serialise",
35679
+ "privacy": "private",
35680
+ "return": {
35681
+ "type": {
35682
+ "text": "string"
35683
+ }
35684
+ }
35685
+ },
35686
+ {
35687
+ "kind": "method",
35688
+ "name": "_applySchedule",
35689
+ "privacy": "private",
35690
+ "parameters": [
35691
+ {
35692
+ "name": "input",
35693
+ "type": {
35694
+ "text": "unknown"
35695
+ }
35696
+ }
35697
+ ],
35698
+ "description": "Accepts a JSON string, a full `ScheduleValue`, or a bare day map."
35699
+ },
35700
+ {
35701
+ "kind": "method",
35702
+ "name": "_syncFormValue",
35703
+ "privacy": "private"
35704
+ },
35705
+ {
35706
+ "kind": "method",
35707
+ "name": "_commit",
35708
+ "privacy": "private",
35709
+ "parameters": [
35710
+ {
35711
+ "name": "emit",
35712
+ "default": "true",
35713
+ "type": {
35714
+ "text": "boolean"
35715
+ }
35716
+ }
35717
+ ]
35718
+ },
35719
+ {
35720
+ "kind": "method",
35721
+ "name": "_formatTime",
35722
+ "privacy": "private",
35723
+ "return": {
35724
+ "type": {
35725
+ "text": "string"
35726
+ }
35727
+ },
35728
+ "parameters": [
35729
+ {
35730
+ "name": "time",
35731
+ "type": {
35732
+ "text": "string"
35733
+ }
35734
+ }
35735
+ ]
35736
+ },
35737
+ {
35738
+ "kind": "method",
35739
+ "name": "_formatRange",
35740
+ "privacy": "private",
35741
+ "return": {
35742
+ "type": {
35743
+ "text": "string"
35744
+ }
35745
+ },
35746
+ "parameters": [
35747
+ {
35748
+ "name": "range",
35749
+ "type": {
35750
+ "text": "ScheduleRange"
35751
+ }
35752
+ }
35753
+ ]
35754
+ },
35755
+ {
35756
+ "kind": "method",
35757
+ "name": "_formatDate",
35758
+ "privacy": "private",
35759
+ "return": {
35760
+ "type": {
35761
+ "text": "string"
35762
+ }
35763
+ },
35764
+ "parameters": [
35765
+ {
35766
+ "name": "value",
35767
+ "type": {
35768
+ "text": "string | undefined"
35769
+ }
35770
+ }
35771
+ ]
35772
+ },
35773
+ {
35774
+ "kind": "method",
35775
+ "name": "_summariseDay",
35776
+ "privacy": "private",
35777
+ "return": {
35778
+ "type": {
35779
+ "text": "string"
35780
+ }
35781
+ },
35782
+ "parameters": [
35783
+ {
35784
+ "name": "day",
35785
+ "type": {
35786
+ "text": "ScheduleDay"
35787
+ }
35788
+ },
35789
+ {
35790
+ "name": "days",
35791
+ "type": {
35792
+ "text": "ScheduleDayMap"
35793
+ }
35794
+ }
35795
+ ]
35796
+ },
35797
+ {
35798
+ "kind": "field",
35799
+ "name": "_storedAsShown",
35800
+ "type": {
35801
+ "text": "ScheduleDayMap"
35802
+ },
35803
+ "privacy": "private",
35804
+ "description": "The stored hours rotated into the display timezone.",
35805
+ "readonly": true
35806
+ },
35807
+ {
35808
+ "kind": "field",
35809
+ "name": "_shownDays",
35810
+ "type": {
35811
+ "text": "ScheduleDayMap"
35812
+ },
35813
+ "privacy": "private",
35814
+ "description": "The hours as drawn, which is the drag preview while a drag is in flight.",
35815
+ "readonly": true
35816
+ },
35817
+ {
35818
+ "kind": "method",
35819
+ "name": "_commitShownDays",
35820
+ "privacy": "private",
35821
+ "parameters": [
35822
+ {
35823
+ "name": "days",
35824
+ "type": {
35825
+ "text": "ScheduleDayMap"
35826
+ }
35827
+ }
35828
+ ],
35829
+ "description": "Stores hours that were edited in display coordinates, rotating them back to the save timezone."
35830
+ },
35831
+ {
35832
+ "kind": "method",
35833
+ "name": "_exceptionsForDay",
35834
+ "privacy": "private",
35835
+ "return": {
35836
+ "type": {
35837
+ "text": "ScheduleException[]"
35838
+ }
35839
+ },
35840
+ "parameters": [
35841
+ {
35842
+ "name": "day",
35843
+ "type": {
35844
+ "text": "ScheduleDay"
35845
+ }
35846
+ }
35847
+ ],
35848
+ "description": "The exceptions that touch a given weekday and actually change its hours."
35849
+ },
35850
+ {
35851
+ "kind": "field",
35852
+ "name": "_shownReductionSpans",
35853
+ "type": {
35854
+ "text": "WeekSpan[]"
35855
+ },
35856
+ "privacy": "private",
35857
+ "description": "The week spans an exception takes away, in display coordinates. Computed as spans rather than\nper-day ranges because a timezone rotation can move an exception's hours onto another weekday.",
35858
+ "readonly": true
35859
+ },
35860
+ {
35861
+ "kind": "method",
35862
+ "name": "_slotMinute",
35863
+ "privacy": "private",
35864
+ "return": {
35865
+ "type": {
35866
+ "text": "number"
35867
+ }
35868
+ },
35869
+ "parameters": [
35870
+ {
35871
+ "name": "day",
35872
+ "type": {
35873
+ "text": "ScheduleDay"
35874
+ }
35875
+ },
35876
+ {
35877
+ "name": "index",
35878
+ "type": {
35879
+ "text": "number"
35880
+ }
35881
+ }
35882
+ ],
35883
+ "description": "The week minute a calendar cell sits on, measured from Monday 00:00."
35884
+ },
35885
+ {
35886
+ "kind": "method",
35887
+ "name": "_slotState",
35888
+ "privacy": "private",
35889
+ "return": {
35890
+ "type": {
35891
+ "text": "SlotState"
35892
+ }
35893
+ },
35894
+ "parameters": [
35895
+ {
35896
+ "name": "day",
35897
+ "type": {
35898
+ "text": "ScheduleDay"
35899
+ }
35900
+ },
35901
+ {
35902
+ "name": "index",
35903
+ "type": {
35904
+ "text": "number"
35905
+ }
35906
+ },
35907
+ {
35908
+ "name": "open",
35909
+ "type": {
35910
+ "text": "WeekSpan[]"
35911
+ }
35912
+ },
35913
+ {
35914
+ "name": "reductions",
35915
+ "type": {
35916
+ "text": "WeekSpan[]"
35917
+ }
35918
+ }
35919
+ ]
35920
+ },
35921
+ {
35922
+ "kind": "method",
35923
+ "name": "_pointerPosition",
35924
+ "privacy": "private",
35925
+ "return": {
35926
+ "type": {
35927
+ "text": "{ col: number; row: number } | null"
35928
+ }
35929
+ },
35930
+ "parameters": [
35931
+ {
35932
+ "name": "event",
35933
+ "type": {
35934
+ "text": "PointerEvent"
35935
+ }
35936
+ }
35937
+ ]
35938
+ },
35939
+ {
35940
+ "kind": "method",
35941
+ "name": "_buildDragPreview",
35942
+ "privacy": "private",
35943
+ "return": {
35944
+ "type": {
35945
+ "text": "ScheduleDayMap"
35946
+ }
35947
+ },
35948
+ "parameters": [
35949
+ {
35950
+ "name": "cursor",
35951
+ "type": {
35952
+ "text": "{ col: number; row: number }"
35953
+ }
35954
+ }
35955
+ ],
35956
+ "description": "Paints the rectangle between the drag anchor and the cursor onto a copy of the shown schedule."
35957
+ },
35958
+ {
35959
+ "kind": "field",
35960
+ "name": "_handleCanvasPointerDown",
35961
+ "privacy": "private"
35962
+ },
35963
+ {
35964
+ "kind": "field",
35965
+ "name": "_handleCanvasPointerMove",
35966
+ "privacy": "private"
35967
+ },
35968
+ {
35969
+ "kind": "field",
35970
+ "name": "_handleCanvasPointerUp",
35971
+ "privacy": "private"
35972
+ },
35973
+ {
35974
+ "kind": "field",
35975
+ "name": "_handleCanvasPointerCancel",
35976
+ "privacy": "private"
35977
+ },
35978
+ {
35979
+ "kind": "method",
35980
+ "name": "_handleViewToggle",
35981
+ "privacy": "private",
35982
+ "parameters": [
35983
+ {
35984
+ "name": "view",
35985
+ "type": {
35986
+ "text": "ScheduleView"
35987
+ }
35988
+ }
35989
+ ]
35990
+ },
35991
+ {
35992
+ "kind": "method",
35993
+ "name": "_nextFreeRange",
35994
+ "privacy": "private",
35995
+ "return": {
35996
+ "type": {
35997
+ "text": "ScheduleRange"
35998
+ }
35999
+ },
36000
+ "parameters": [
36001
+ {
36002
+ "name": "ranges",
36003
+ "type": {
36004
+ "text": "ScheduleRange[]"
36005
+ }
36006
+ }
36007
+ ],
36008
+ "description": "Picks a sensible slot for a newly added range: the first hour-wide gap in the day."
36009
+ },
36010
+ {
36011
+ "kind": "method",
36012
+ "name": "_handleAddRange",
36013
+ "privacy": "private",
36014
+ "parameters": [
36015
+ {
36016
+ "name": "day",
36017
+ "type": {
36018
+ "text": "ScheduleDay"
36019
+ }
36020
+ }
36021
+ ]
36022
+ },
36023
+ {
36024
+ "kind": "method",
36025
+ "name": "_handleRemoveRange",
36026
+ "privacy": "private",
36027
+ "parameters": [
36028
+ {
36029
+ "name": "day",
36030
+ "type": {
36031
+ "text": "ScheduleDay"
36032
+ }
36033
+ },
36034
+ {
36035
+ "name": "index",
36036
+ "type": {
36037
+ "text": "number"
36038
+ }
36039
+ }
36040
+ ]
36041
+ },
36042
+ {
36043
+ "kind": "method",
36044
+ "name": "_handleRangeEdit",
36045
+ "privacy": "private",
36046
+ "parameters": [
36047
+ {
36048
+ "name": "day",
36049
+ "type": {
36050
+ "text": "ScheduleDay"
36051
+ }
36052
+ },
36053
+ {
36054
+ "name": "index",
36055
+ "type": {
36056
+ "text": "number"
36057
+ }
36058
+ },
36059
+ {
36060
+ "name": "edge",
36061
+ "type": {
36062
+ "text": "'start' | 'end'"
36063
+ }
36064
+ },
36065
+ {
36066
+ "name": "value",
36067
+ "type": {
36068
+ "text": "string"
36069
+ }
36070
+ }
36071
+ ]
36072
+ },
36073
+ {
36074
+ "kind": "method",
36075
+ "name": "_handleEditorKeyDown",
36076
+ "privacy": "private",
36077
+ "parameters": [
36078
+ {
36079
+ "name": "event",
36080
+ "type": {
36081
+ "text": "KeyboardEvent"
36082
+ }
36083
+ }
36084
+ ]
36085
+ },
36086
+ {
36087
+ "kind": "method",
36088
+ "name": "_handleEditorFocusOut",
36089
+ "privacy": "private",
36090
+ "parameters": [
36091
+ {
36092
+ "name": "event",
36093
+ "type": {
36094
+ "text": "FocusEvent"
36095
+ }
36096
+ }
36097
+ ]
36098
+ },
36099
+ {
36100
+ "kind": "method",
36101
+ "name": "_renderToolbar",
36102
+ "privacy": "private"
36103
+ },
36104
+ {
36105
+ "kind": "field",
36106
+ "name": "_timezoneOptions",
36107
+ "type": {
36108
+ "text": "TimezoneOption[]"
36109
+ },
36110
+ "privacy": "private",
36111
+ "description": "The picker's options: the configured list plus whatever zones are already in play.",
36112
+ "readonly": true
36113
+ },
36114
+ {
36115
+ "kind": "method",
36116
+ "name": "_handleTimezoneChange",
33850
36117
  "privacy": "private",
33851
36118
  "parameters": [
33852
36119
  {
33853
- "name": "index",
36120
+ "name": "event",
33854
36121
  "type": {
33855
- "text": "number"
36122
+ "text": "Event"
33856
36123
  }
33857
36124
  }
33858
36125
  ]
33859
36126
  },
33860
36127
  {
33861
- "kind": "field",
33862
- "name": "closeImagePicker",
36128
+ "kind": "method",
36129
+ "name": "_renderTimezonePicker",
33863
36130
  "privacy": "private"
33864
36131
  },
33865
36132
  {
33866
- "kind": "field",
33867
- "name": "handleImagePicked",
36133
+ "kind": "method",
36134
+ "name": "_renderCalendar",
33868
36135
  "privacy": "private"
33869
36136
  },
33870
36137
  {
33871
36138
  "kind": "method",
33872
- "name": "insertImage",
36139
+ "name": "_renderCalendarColumn",
33873
36140
  "privacy": "private",
33874
36141
  "parameters": [
33875
36142
  {
33876
- "name": "file",
36143
+ "name": "day",
33877
36144
  "type": {
33878
- "text": "File"
36145
+ "text": "ScheduleDay"
33879
36146
  }
33880
36147
  },
33881
36148
  {
33882
- "name": "index",
36149
+ "name": "openSpans",
33883
36150
  "type": {
33884
- "text": "number"
36151
+ "text": "WeekSpan[]"
33885
36152
  }
33886
- }
33887
- ]
33888
- },
33889
- {
33890
- "kind": "method",
33891
- "name": "uploadImage",
33892
- "privacy": "private",
33893
- "return": {
33894
- "type": {
33895
- "text": "Promise<string>"
33896
- }
33897
- },
33898
- "parameters": [
36153
+ },
33899
36154
  {
33900
- "name": "file",
36155
+ "name": "reductionSpans",
33901
36156
  "type": {
33902
- "text": "File"
36157
+ "text": "WeekSpan[]"
33903
36158
  }
33904
36159
  }
33905
36160
  ]
33906
36161
  },
33907
36162
  {
33908
36163
  "kind": "method",
33909
- "name": "autosize",
36164
+ "name": "_renderSummary",
33910
36165
  "privacy": "private",
33911
36166
  "parameters": [
33912
36167
  {
33913
- "name": "input",
36168
+ "name": "days",
33914
36169
  "type": {
33915
- "text": "HTMLTextAreaElement"
36170
+ "text": "ScheduleDayMap"
33916
36171
  }
33917
36172
  }
33918
36173
  ]
33919
36174
  },
33920
- {
33921
- "kind": "field",
33922
- "name": "toggleRawMode",
33923
- "privacy": "private"
33924
- },
33925
36175
  {
33926
36176
  "kind": "method",
33927
- "name": "focusRaw",
36177
+ "name": "_renderList",
33928
36178
  "privacy": "private"
33929
36179
  },
33930
- {
33931
- "kind": "field",
33932
- "name": "handleRawInput",
33933
- "privacy": "private",
33934
- "description": "Raw mode keeps the whole document in one textarea, so the textarea — not\nthe block list — is authoritative while it is open: re-splitting on every\nkeystroke would normalise blank lines out from under the cursor."
33935
- },
33936
- {
33937
- "kind": "field",
33938
- "name": "commitRaw",
33939
- "privacy": "private",
33940
- "description": "Re-splits the raw source into blocks. Not `updateBlocks` — that only\nreports a change when the re-join differs from the value, and raw edits\nhave already written straight to the value."
33941
- },
33942
36180
  {
33943
36181
  "kind": "method",
33944
- "name": "handleToolbarInsert",
36182
+ "name": "_renderListRow",
33945
36183
  "privacy": "private",
33946
36184
  "parameters": [
33947
36185
  {
33948
- "name": "item",
36186
+ "name": "day",
33949
36187
  "type": {
33950
- "text": "BlockType"
36188
+ "text": "ScheduleDay"
36189
+ }
36190
+ },
36191
+ {
36192
+ "name": "ranges",
36193
+ "type": {
36194
+ "text": "ScheduleRange[]"
33951
36195
  }
33952
36196
  }
33953
36197
  ]
33954
36198
  },
33955
36199
  {
33956
36200
  "kind": "method",
33957
- "name": "renderImageControls",
33958
- "privacy": "private"
33959
- },
33960
- {
33961
- "kind": "method",
33962
- "name": "renderBlock",
36201
+ "name": "_renderRangeChip",
33963
36202
  "privacy": "private",
33964
36203
  "parameters": [
33965
36204
  {
33966
- "name": "block",
36205
+ "name": "day",
33967
36206
  "type": {
33968
- "text": "string"
36207
+ "text": "ScheduleDay"
33969
36208
  }
33970
36209
  },
33971
36210
  {
@@ -33973,33 +36212,69 @@
33973
36212
  "type": {
33974
36213
  "text": "number"
33975
36214
  }
36215
+ },
36216
+ {
36217
+ "name": "range",
36218
+ "type": {
36219
+ "text": "ScheduleRange"
36220
+ }
36221
+ },
36222
+ {
36223
+ "name": "reduced",
36224
+ "type": {
36225
+ "text": "boolean"
36226
+ }
33976
36227
  }
33977
36228
  ]
33978
36229
  },
33979
36230
  {
33980
36231
  "kind": "method",
33981
- "name": "renderRaw",
33982
- "privacy": "private"
33983
- },
33984
- {
33985
- "kind": "method",
33986
- "name": "renderBody",
36232
+ "name": "_renderRangeEditor",
33987
36233
  "privacy": "private",
33988
- "description": "The block views, with the inline image picker spliced in when active."
36234
+ "parameters": [
36235
+ {
36236
+ "name": "day",
36237
+ "type": {
36238
+ "text": "ScheduleDay"
36239
+ }
36240
+ },
36241
+ {
36242
+ "name": "index",
36243
+ "type": {
36244
+ "text": "number"
36245
+ }
36246
+ },
36247
+ {
36248
+ "name": "range",
36249
+ "type": {
36250
+ "text": "ScheduleRange"
36251
+ }
36252
+ }
36253
+ ]
33989
36254
  },
33990
36255
  {
33991
36256
  "kind": "method",
33992
- "name": "renderImagePicker",
33993
- "privacy": "private"
36257
+ "name": "_dayNote",
36258
+ "privacy": "private",
36259
+ "return": {
36260
+ "type": {
36261
+ "text": "{ text: string; reduced: boolean }"
36262
+ }
36263
+ },
36264
+ "parameters": [
36265
+ {
36266
+ "name": "day",
36267
+ "type": {
36268
+ "text": "ScheduleDay"
36269
+ }
36270
+ }
36271
+ ],
36272
+ "description": "The exception annotation shown against a day in the form view."
33994
36273
  }
33995
36274
  ],
33996
36275
  "events": [
33997
36276
  {
33998
- "description": "Emitted on each keystroke while editing a block.",
33999
- "name": "zn-input"
34000
- },
34001
- {
34002
- "description": "Emitted when a block edit is committed and the value changes.",
36277
+ "description": "Emitted when the schedule changes.",
34003
36278
  "name": "zn-change"
34004
36279
  }
34005
36280
  ],
@@ -34009,8 +36284,7 @@
34009
36284
  "type": {
34010
36285
  "text": "string"
34011
36286
  },
34012
- "default": "''",
34013
- "description": "The name of the control, submitted as part of form data.",
36287
+ "description": "The name of the form control, submitted as a name/value pair with form data.",
34014
36288
  "fieldName": "name"
34015
36289
  },
34016
36290
  {
@@ -34019,283 +36293,215 @@
34019
36293
  "text": "string"
34020
36294
  },
34021
36295
  "default": "''",
34022
- "description": "The current remarkd source.",
36296
+ "description": "The schedule as a JSON string. This is what gets posted with the form.",
34023
36297
  "fieldName": "value"
34024
36298
  },
34025
36299
  {
34026
- "name": "placeholder",
36300
+ "name": "label",
34027
36301
  "type": {
34028
36302
  "text": "string"
34029
36303
  },
34030
- "default": "'Type something…'",
34031
- "description": "Placeholder shown when the document is empty.",
34032
- "fieldName": "placeholder"
36304
+ "default": "''",
36305
+ "description": "The schedule's label. If you need to display HTML, use the `label` slot instead.",
36306
+ "fieldName": "label"
34033
36307
  },
34034
36308
  {
34035
- "name": "attachment-url",
36309
+ "name": "help-text",
34036
36310
  "type": {
34037
36311
  "text": "string"
34038
36312
  },
34039
36313
  "default": "''",
34040
- "description": "Endpoint for image uploads — required for image support. Posting the file\nmetadata here must return `{uploadPath, uploadUrl}`; the file is then PUT\nto `uploadUrl` and the returned `uploadPath` is embedded as the image URL.",
34041
- "fieldName": "attachmentUrl"
36314
+ "description": "The schedule's help text. If you need to display HTML, use the `help-text` slot instead.",
36315
+ "fieldName": "helpText"
34042
36316
  },
34043
36317
  {
34044
- "name": "allow-raw",
36318
+ "name": "view",
34045
36319
  "type": {
34046
- "text": "boolean"
36320
+ "text": "ScheduleView"
34047
36321
  },
34048
- "default": "false",
34049
- "description": "Adds a toolbar toggle that swaps the block view for the full remarkd source.",
34050
- "fieldName": "allowRaw"
36322
+ "default": "'calendar'",
36323
+ "description": "Which view is showing.",
36324
+ "fieldName": "view"
34051
36325
  },
34052
36326
  {
34053
- "name": "required",
36327
+ "name": "open-label",
34054
36328
  "type": {
34055
- "text": "boolean"
36329
+ "text": "string"
34056
36330
  },
34057
- "default": "false",
34058
- "description": "Makes the editor required for form submission.",
34059
- "fieldName": "required"
36331
+ "default": "'Available'",
36332
+ "description": "The word used for hours the schedule covers, in the legend and in labels.",
36333
+ "fieldName": "openLabel"
34060
36334
  },
34061
36335
  {
34062
- "name": "readonly",
36336
+ "name": "closed-label",
34063
36337
  "type": {
34064
- "text": "boolean"
36338
+ "text": "string"
34065
36339
  },
34066
- "default": "false",
34067
- "description": "Makes the editor read-only.",
34068
- "fieldName": "readonly"
36340
+ "default": "'Closed'",
36341
+ "description": "The word used for hours the schedule doesn't cover, in the legend and against empty days.",
36342
+ "fieldName": "closedLabel"
34069
36343
  },
34070
36344
  {
34071
- "name": "disabled",
36345
+ "name": "no-toggle",
34072
36346
  "type": {
34073
36347
  "text": "boolean"
34074
36348
  },
34075
36349
  "default": "false",
34076
- "description": "Disables the editor.",
34077
- "fieldName": "disabled"
34078
- }
34079
- ],
34080
- "superclass": {
34081
- "name": "ZincElement",
34082
- "module": "/src/internal/zinc-element"
34083
- },
34084
- "summary": "A Notion-style block editor for remarkd content. Blocks render inline; click one to edit its source.",
34085
- "tagNameWithoutPrefix": "remarkd-editor",
34086
- "tagName": "zn-remarkd-editor",
34087
- "customElement": true,
34088
- "jsDoc": "/**\n * @summary A Notion-style block editor for remarkd content. Blocks render inline; click one to edit its source.\n * @documentation https://zinc.style/components/remarkd-editor\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-button\n * @dependency zn-button-group\n * @dependency zn-icon\n * @dependency zn-file\n * @dependency zn-slash-menu\n *\n * @event zn-input - Emitted on each keystroke while editing a block.\n * @event zn-change - Emitted when a block edit is committed and the value changes.\n *\n * @csspart base - The component's base wrapper.\n * @csspart toolbar - The always-visible block-insert toolbar.\n * @csspart raw-toggle - The button that switches between the block view and the raw source view.\n * @csspart block - A rendered block wrapper.\n * @csspart rendered - The rendered remarkd output of a block.\n * @csspart input - The textarea shown while editing a block.\n * @csspart raw - The full-document textarea shown in raw source mode.\n * @csspart slash-menu - The `zn-slash-menu` opened by typing \"/\" in an empty block.\n * @csspart image-controls - The caption / alignment / size panel shown when an image block is clicked.\n */",
34089
- "documentation": "https://zinc.style/components/remarkd-editor",
34090
- "status": "experimental",
34091
- "since": "1.0",
34092
- "dependencies": [
34093
- "zn-button",
34094
- "zn-button-group",
34095
- "zn-icon",
34096
- "zn-file",
34097
- "zn-slash-menu"
34098
- ]
34099
- }
34100
- ],
34101
- "exports": [
34102
- {
34103
- "kind": "js",
34104
- "name": "default",
34105
- "declaration": {
34106
- "name": "ZnRemarkdEditor",
34107
- "module": "components/remarkd-editor/remarkd-editor.js"
34108
- }
34109
- }
34110
- ]
34111
- },
34112
- {
34113
- "kind": "javascript-module",
34114
- "path": "components/reveal/reveal.js",
34115
- "declarations": [
34116
- {
34117
- "kind": "class",
34118
- "description": "",
34119
- "name": "ZnReveal",
34120
- "cssProperties": [
34121
- {
34122
- "description": "An example CSS custom property.",
34123
- "name": "--example"
34124
- }
34125
- ],
34126
- "cssParts": [
34127
- {
34128
- "description": "The component's base wrapper.",
34129
- "name": "base"
34130
- }
34131
- ],
34132
- "slots": [
34133
- {
34134
- "description": "The default slot.",
34135
- "name": ""
36350
+ "description": "Hides the calendar/form view toggle.",
36351
+ "fieldName": "noToggle"
34136
36352
  },
34137
36353
  {
34138
- "description": "An example slot.",
34139
- "name": "example"
34140
- }
34141
- ],
34142
- "members": [
34143
- {
34144
- "kind": "field",
34145
- "name": "duration",
36354
+ "name": "hide-summary",
34146
36355
  "type": {
34147
- "text": "number"
36356
+ "text": "boolean"
34148
36357
  },
34149
- "default": "2000",
34150
- "attribute": "duration"
36358
+ "default": "false",
36359
+ "description": "Hides the summary panel beside the calendar.",
36360
+ "fieldName": "hideSummary"
34151
36361
  },
34152
36362
  {
34153
- "kind": "field",
34154
- "name": "initial",
36363
+ "name": "start-hour",
34155
36364
  "type": {
34156
- "text": "string"
36365
+ "text": "number"
34157
36366
  },
34158
- "default": "''",
34159
- "attribute": "initial"
36367
+ "default": "6",
36368
+ "description": "The first hour shown in the calendar.",
36369
+ "fieldName": "startHour"
34160
36370
  },
34161
36371
  {
34162
- "kind": "field",
34163
- "name": "revealed",
36372
+ "name": "end-hour",
34164
36373
  "type": {
34165
- "text": "string"
36374
+ "text": "number"
34166
36375
  },
34167
- "default": "''",
34168
- "attribute": "revealed"
36376
+ "default": "22",
36377
+ "description": "The last hour shown in the calendar.",
36378
+ "fieldName": "endHour"
34169
36379
  },
34170
36380
  {
34171
- "kind": "field",
34172
- "name": "hideDelay",
36381
+ "name": "interval",
34173
36382
  "type": {
34174
36383
  "text": "number"
34175
36384
  },
34176
- "default": "150",
34177
- "attribute": "hide-delay"
36385
+ "default": "30",
36386
+ "description": "The granularity of the calendar grid and the time inputs, in minutes.",
36387
+ "fieldName": "interval"
34178
36388
  },
34179
36389
  {
34180
- "kind": "field",
34181
- "name": "noToggle",
36390
+ "name": "week-start",
34182
36391
  "type": {
34183
- "text": "boolean"
36392
+ "text": "ScheduleDay"
34184
36393
  },
34185
- "default": "false",
34186
- "description": "Disables click-to-toggle so the value is only revealed on hover. Clicks still bubble to the parent.",
34187
- "attribute": "no-toggle"
36394
+ "default": "'mon'",
36395
+ "description": "The weekday the week starts on.",
36396
+ "fieldName": "weekStart"
34188
36397
  },
34189
36398
  {
34190
- "kind": "field",
34191
- "name": "_isRevealed",
36399
+ "name": "time-format",
34192
36400
  "type": {
34193
- "text": "boolean"
36401
+ "text": "'12' | '24'"
34194
36402
  },
34195
- "privacy": "private",
34196
- "default": "false"
36403
+ "default": "'24'",
36404
+ "description": "Displays times as 12 or 24 hour. The serialised value is always 24 hour `HH:MM`.",
36405
+ "fieldName": "timeFormat"
34197
36406
  },
34198
36407
  {
34199
- "kind": "field",
34200
- "name": "_isToggled",
36408
+ "name": "display-timezone",
34201
36409
  "type": {
34202
- "text": "boolean"
36410
+ "text": "string"
34203
36411
  },
34204
- "privacy": "private",
34205
- "default": "false"
36412
+ "default": "''",
36413
+ "description": "The IANA timezone the hours are shown in. Accepts `auto` for the viewer's own timezone. Defaults\nto `save-timezone`, so nothing is converted until you ask for it. Changing this only re-labels\nthe same underlying hours; the value never moves.",
36414
+ "fieldName": "displayTimezone"
34206
36415
  },
34207
36416
  {
34208
- "kind": "field",
34209
- "name": "_hideTimer",
36417
+ "name": "save-timezone",
34210
36418
  "type": {
34211
- "text": "ReturnType<typeof setTimeout> | undefined"
36419
+ "text": "string"
34212
36420
  },
34213
- "privacy": "private"
34214
- },
34215
- {
34216
- "kind": "method",
34217
- "name": "_clearHideTimer",
34218
- "privacy": "private"
34219
- },
34220
- {
34221
- "kind": "method",
34222
- "name": "handleToggleReveal",
34223
- "privacy": "protected"
36421
+ "default": "''",
36422
+ "description": "The IANA timezone the value is stored in. Defaults to `UTC` as soon as the schedule is\ntimezone-aware (a display timezone is set, or the picker is shown), and to no timezone at all\notherwise — in which case the times are stored exactly as they are shown.",
36423
+ "fieldName": "saveTimezone"
34224
36424
  },
34225
36425
  {
34226
- "kind": "method",
34227
- "name": "handleMouseEnter",
34228
- "privacy": "protected"
36426
+ "name": "show-timezone",
36427
+ "type": {
36428
+ "text": "boolean"
36429
+ },
36430
+ "default": "false",
36431
+ "description": "Shows the timezone picker, letting the user read the schedule in any timezone.",
36432
+ "fieldName": "showTimezone"
34229
36433
  },
34230
36434
  {
34231
- "kind": "method",
34232
- "name": "handleMouseLeave",
34233
- "privacy": "protected"
34234
- }
34235
- ],
34236
- "events": [
34237
- {
34238
- "description": "Emitted as an example.",
34239
- "name": "zn-event-name"
34240
- }
34241
- ],
34242
- "attributes": [
34243
- {
34244
- "name": "duration",
36435
+ "name": "timezones",
34245
36436
  "type": {
34246
- "text": "number"
36437
+ "text": "string[]"
34247
36438
  },
34248
- "default": "2000",
34249
- "fieldName": "duration"
36439
+ "default": "[]",
36440
+ "description": "The timezones offered by the picker, as IANA names or one of the named sets — `en` (the four US\nzones, the UK and Australia, under those names), `offsets` (one zone per UTC offset, the\ndefault), `common` (every offset plus the world's major centres) or `all` (the complete IANA\nlist). Names and sets can be mixed, e.g. `en Asia/Tokyo`.",
36441
+ "fieldName": "timezones"
34250
36442
  },
34251
36443
  {
34252
- "name": "initial",
36444
+ "name": "reference-date",
34253
36445
  "type": {
34254
36446
  "text": "string"
34255
36447
  },
34256
36448
  "default": "''",
34257
- "fieldName": "initial"
36449
+ "description": "The date (`YYYY-MM-DD`) used to resolve timezone offsets. A weekly pattern has no date of its\nown, so one has to be picked to know whether daylight saving applies; today is used by default.",
36450
+ "fieldName": "referenceDate"
34258
36451
  },
34259
36452
  {
34260
- "name": "revealed",
36453
+ "name": "disabled",
34261
36454
  "type": {
34262
- "text": "string"
36455
+ "text": "boolean"
34263
36456
  },
34264
- "default": "''",
34265
- "fieldName": "revealed"
36457
+ "default": "false",
36458
+ "description": "Disables the schedule.",
36459
+ "fieldName": "disabled"
34266
36460
  },
34267
36461
  {
34268
- "name": "hide-delay",
36462
+ "name": "readonly",
34269
36463
  "type": {
34270
- "text": "number"
36464
+ "text": "boolean"
34271
36465
  },
34272
- "default": "150",
34273
- "fieldName": "hideDelay"
36466
+ "default": "false",
36467
+ "description": "Renders the schedule without any editing affordances.",
36468
+ "fieldName": "readonly"
34274
36469
  },
34275
36470
  {
34276
- "name": "no-toggle",
36471
+ "name": "required",
34277
36472
  "type": {
34278
36473
  "text": "boolean"
34279
36474
  },
34280
36475
  "default": "false",
34281
- "description": "Disables click-to-toggle so the value is only revealed on hover. Clicks still bubble to the parent.",
34282
- "fieldName": "noToggle"
36476
+ "description": "Makes the schedule a required field, invalid until at least one period is open.",
36477
+ "fieldName": "required"
36478
+ },
36479
+ {
36480
+ "name": "form",
36481
+ "type": {
36482
+ "text": "string"
36483
+ },
36484
+ "description": "The id of the form to associate with, when the control sits outside of it.",
36485
+ "fieldName": "form"
34283
36486
  }
34284
36487
  ],
34285
36488
  "superclass": {
34286
36489
  "name": "ZincElement",
34287
36490
  "module": "/src/internal/zinc-element"
34288
36491
  },
34289
- "summary": "Short summary of the component's intended use.",
34290
- "tagNameWithoutPrefix": "reveal",
34291
- "tagName": "zn-reveal",
36492
+ "summary": "Builds a weekly opening-hours schedule as a drag-to-paint calendar or a compact list of\ntime ranges, and posts the result as JSON.",
36493
+ "tagNameWithoutPrefix": "schedule-builder",
36494
+ "tagName": "zn-schedule-builder",
34292
36495
  "customElement": true,
34293
- "jsDoc": "/**\n * @summary Short summary of the component's intended use.\n * @documentation https://zinc.style/components/reveal\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-example\n *\n * @event zn-event-name - Emitted as an example.\n *\n * @slot - The default slot.\n * @slot example - An example slot.\n *\n * @csspart base - The component's base wrapper.\n *\n * @usage\n * ```html\n * <zn-reveal duration=\"3000\"\n * initial=\"******@hotmail.com\"\n * revealed=\"john.doe@hotmail.com\" toggle>\n * </zn-reveal>\n * ```\n *\n * @cssproperty --example - An example CSS custom property.\n */",
34294
- "documentation": "https://zinc.style/components/reveal",
36496
+ "jsDoc": "/**\n * @summary Builds a weekly opening-hours schedule as a drag-to-paint calendar or a compact list of\n * time ranges, and posts the result as JSON.\n * @documentation https://zinc.style/components/schedule-builder\n * @status experimental\n * @since 1.0\n *\n * @dependency zn-icon\n * @dependency zn-input\n * @dependency zn-option\n * @dependency zn-select\n *\n * @event zn-change - Emitted when the schedule changes.\n *\n * @slot label - The schedule's label. Alternatively, use the `label` attribute.\n * @slot help-text - Text that describes how to use the schedule. Alternatively, use the `help-text` attribute.\n *\n * @csspart form-control - The form control that wraps the builder, label and help text.\n * @csspart base - The component's base wrapper.\n * @csspart toolbar - The row above the builder holding the hint, legend and view toggle.\n * @csspart calendar - The calendar view wrapper.\n * @csspart list - The form (list) view wrapper.\n * @csspart summary - The summary panel beside the calendar.\n *\n * @cssproperty --slot-height - The height of a single time slot in the calendar. Defaults to `18px`.\n * @cssproperty --gutter-width - The width of the calendar's time gutter. Defaults to `64px`.\n * @cssproperty --open-color - The fill used for open hours.\n * @cssproperty --reduced-color - The fill used for hours an exception removes.\n */",
36497
+ "documentation": "https://zinc.style/components/schedule-builder",
34295
36498
  "status": "experimental",
34296
36499
  "since": "1.0",
34297
36500
  "dependencies": [
34298
- "zn-example"
36501
+ "zn-icon",
36502
+ "zn-input",
36503
+ "zn-option",
36504
+ "zn-select"
34299
36505
  ]
34300
36506
  }
34301
36507
  ],
@@ -34304,8 +36510,8 @@
34304
36510
  "kind": "js",
34305
36511
  "name": "default",
34306
36512
  "declaration": {
34307
- "name": "ZnReveal",
34308
- "module": "components/reveal/reveal.js"
36513
+ "name": "ZnScheduleBuilder",
36514
+ "module": "components/schedule-builder/schedule-builder.js"
34309
36515
  }
34310
36516
  }
34311
36517
  ]
@@ -36984,6 +39190,14 @@
36984
39190
  "description": "The width of the panel.",
36985
39191
  "name": "--slash-menu-width"
36986
39192
  },
39193
+ {
39194
+ "description": "The corner radius of the panel.",
39195
+ "name": "--slash-menu-border-radius"
39196
+ },
39197
+ {
39198
+ "description": "The corner radius of the items and their icon chips.",
39199
+ "name": "--slash-menu-item-border-radius"
39200
+ },
36987
39201
  {
36988
39202
  "description": "The maximum height of the panel before it scrolls.",
36989
39203
  "name": "--slash-menu-max-height"
@@ -36995,20 +39209,40 @@
36995
39209
  "name": "panel"
36996
39210
  },
36997
39211
  {
36998
- "description": "The panel's heading.",
36999
- "name": "heading"
39212
+ "description": "The scrolling list of items.",
39213
+ "name": "list"
37000
39214
  },
37001
39215
  {
37002
39216
  "description": "An item in the list.",
37003
39217
  "name": "item"
37004
39218
  },
39219
+ {
39220
+ "description": "The chip holding an item's icon.",
39221
+ "name": "icon"
39222
+ },
37005
39223
  {
37006
39224
  "description": "A group heading between items.",
37007
39225
  "name": "group-heading"
37008
39226
  },
39227
+ {
39228
+ "description": "The rule closing the recently used section, when the items below it have no heading of their own.",
39229
+ "name": "divider"
39230
+ },
37009
39231
  {
37010
39232
  "description": "The truncation footer, shown when not every match fits.",
37011
39233
  "name": "footer"
39234
+ },
39235
+ {
39236
+ "description": "The pinned footer of keyboard hints.",
39237
+ "name": "hints"
39238
+ },
39239
+ {
39240
+ "description": "A single keyboard hint within the footer.",
39241
+ "name": "hint"
39242
+ },
39243
+ {
39244
+ "description": "The key shown against a hint.",
39245
+ "name": "hint-key"
37012
39246
  }
37013
39247
  ],
37014
39248
  "members": [
@@ -37029,6 +39263,14 @@
37029
39263
  },
37030
39264
  "privacy": "private"
37031
39265
  },
39266
+ {
39267
+ "kind": "field",
39268
+ "name": "list",
39269
+ "type": {
39270
+ "text": "HTMLElement"
39271
+ },
39272
+ "privacy": "private"
39273
+ },
37032
39274
  {
37033
39275
  "kind": "field",
37034
39276
  "name": "stopAutoUpdate",
@@ -37075,7 +39317,7 @@
37075
39317
  "text": "string"
37076
39318
  },
37077
39319
  "default": "'Insert'",
37078
- "description": "The heading shown when there is no query.",
39320
+ "description": "The name the list is announced by when there is no query.",
37079
39321
  "attribute": "heading"
37080
39322
  },
37081
39323
  {
@@ -37108,6 +39350,46 @@
37108
39350
  "description": "Hides the insertion key (the item's value) normally shown against each item.",
37109
39351
  "attribute": "hide-keys"
37110
39352
  },
39353
+ {
39354
+ "kind": "field",
39355
+ "name": "hideHints",
39356
+ "type": {
39357
+ "text": "boolean"
39358
+ },
39359
+ "default": "false",
39360
+ "description": "Hides the pinned footer of keyboard hints.",
39361
+ "attribute": "hide-hints"
39362
+ },
39363
+ {
39364
+ "kind": "field",
39365
+ "name": "recentKey",
39366
+ "type": {
39367
+ "text": "string"
39368
+ },
39369
+ "default": "''",
39370
+ "description": "Remembers the items chosen here and lists the most recent of them first, under their own heading.\nThe key scopes the list to where the menu is used, so each place keeps its own history in\n`localStorage`. Leave unset to offer no recently used section.",
39371
+ "attribute": "recent-key"
39372
+ },
39373
+ {
39374
+ "kind": "field",
39375
+ "name": "maxRecent",
39376
+ "type": {
39377
+ "text": "number"
39378
+ },
39379
+ "default": "3",
39380
+ "description": "The most recently used items to list.",
39381
+ "attribute": "max-recent"
39382
+ },
39383
+ {
39384
+ "kind": "field",
39385
+ "name": "recentHeading",
39386
+ "type": {
39387
+ "text": "string"
39388
+ },
39389
+ "default": "'Recently used'",
39390
+ "description": "The heading shown above the recently used items.",
39391
+ "attribute": "recent-heading"
39392
+ },
37111
39393
  {
37112
39394
  "kind": "field",
37113
39395
  "name": "anchor",
@@ -37146,6 +39428,44 @@
37146
39428
  "privacy": "private",
37147
39429
  "default": "0"
37148
39430
  },
39431
+ {
39432
+ "kind": "field",
39433
+ "name": "recentKeys",
39434
+ "type": {
39435
+ "text": "string[]"
39436
+ },
39437
+ "privacy": "private",
39438
+ "default": "[]"
39439
+ },
39440
+ {
39441
+ "kind": "field",
39442
+ "name": "recentCount",
39443
+ "type": {
39444
+ "text": "number"
39445
+ },
39446
+ "privacy": "private",
39447
+ "default": "0",
39448
+ "description": "How many recently used items the last update listed, to spot the list appearing or reordering."
39449
+ },
39450
+ {
39451
+ "kind": "field",
39452
+ "name": "listItems",
39453
+ "type": {
39454
+ "text": "SlashMenuItem[]"
39455
+ },
39456
+ "privacy": "private",
39457
+ "readonly": true
39458
+ },
39459
+ {
39460
+ "kind": "field",
39461
+ "name": "recentItems",
39462
+ "type": {
39463
+ "text": "SlashMenuItem[]"
39464
+ },
39465
+ "privacy": "private",
39466
+ "description": "The remembered items that are in the current list, newest first. Only offered without a query —\nonce the user is searching, the ranked matches are the better answer.",
39467
+ "readonly": true
39468
+ },
37149
39469
  {
37150
39470
  "kind": "field",
37151
39471
  "name": "visibleItems",
@@ -37172,6 +39492,11 @@
37172
39492
  "kind": "method",
37173
39493
  "name": "hide"
37174
39494
  },
39495
+ {
39496
+ "kind": "method",
39497
+ "name": "clearRecent",
39498
+ "description": "Forgets the items remembered under `recent-key`."
39499
+ },
37175
39500
  {
37176
39501
  "kind": "method",
37177
39502
  "name": "setActiveIndex",
@@ -37286,6 +39611,30 @@
37286
39611
  "kind": "method",
37287
39612
  "name": "renderItems",
37288
39613
  "privacy": "private"
39614
+ },
39615
+ {
39616
+ "kind": "method",
39617
+ "name": "renderHint",
39618
+ "privacy": "private",
39619
+ "parameters": [
39620
+ {
39621
+ "name": "keys",
39622
+ "type": {
39623
+ "text": "(TemplateResult | string)[]"
39624
+ }
39625
+ },
39626
+ {
39627
+ "name": "label",
39628
+ "type": {
39629
+ "text": "string"
39630
+ }
39631
+ }
39632
+ ]
39633
+ },
39634
+ {
39635
+ "kind": "method",
39636
+ "name": "renderHints",
39637
+ "privacy": "private"
37289
39638
  }
37290
39639
  ],
37291
39640
  "events": [
@@ -37334,7 +39683,7 @@
37334
39683
  "text": "string"
37335
39684
  },
37336
39685
  "default": "'Insert'",
37337
- "description": "The heading shown when there is no query.",
39686
+ "description": "The name the list is announced by when there is no query.",
37338
39687
  "fieldName": "heading"
37339
39688
  },
37340
39689
  {
@@ -37364,6 +39713,42 @@
37364
39713
  "description": "Hides the insertion key (the item's value) normally shown against each item.",
37365
39714
  "fieldName": "hideKeys"
37366
39715
  },
39716
+ {
39717
+ "name": "hide-hints",
39718
+ "type": {
39719
+ "text": "boolean"
39720
+ },
39721
+ "default": "false",
39722
+ "description": "Hides the pinned footer of keyboard hints.",
39723
+ "fieldName": "hideHints"
39724
+ },
39725
+ {
39726
+ "name": "recent-key",
39727
+ "type": {
39728
+ "text": "string"
39729
+ },
39730
+ "default": "''",
39731
+ "description": "Remembers the items chosen here and lists the most recent of them first, under their own heading.\nThe key scopes the list to where the menu is used, so each place keeps its own history in\n`localStorage`. Leave unset to offer no recently used section.",
39732
+ "fieldName": "recentKey"
39733
+ },
39734
+ {
39735
+ "name": "max-recent",
39736
+ "type": {
39737
+ "text": "number"
39738
+ },
39739
+ "default": "3",
39740
+ "description": "The most recently used items to list.",
39741
+ "fieldName": "maxRecent"
39742
+ },
39743
+ {
39744
+ "name": "recent-heading",
39745
+ "type": {
39746
+ "text": "string"
39747
+ },
39748
+ "default": "'Recently used'",
39749
+ "description": "The heading shown above the recently used items.",
39750
+ "fieldName": "recentHeading"
39751
+ },
37367
39752
  {
37368
39753
  "name": "placement",
37369
39754
  "type": {
@@ -37391,7 +39776,7 @@
37391
39776
  "tagNameWithoutPrefix": "slash-menu",
37392
39777
  "tagName": "zn-slash-menu",
37393
39778
  "customElement": true,
37394
- "jsDoc": "/**\n * @summary A keyboard-driven list of insertions, anchored to the caret of the field that opened it.\n * @documentation https://zinc.style/components/slash-menu\n * @status experimental\n * @since 1.1\n *\n * @dependency zn-icon\n *\n * @event zn-slash-item-select - Emitted when an item is chosen. Does not cross shadow boundaries; the\n * component driving the menu (e.g. `zn-textarea`) re-emits it as `zn-slash-select`.\n *\n * @csspart panel - The floating panel that holds the list.\n * @csspart heading - The panel's heading.\n * @csspart item - An item in the list.\n * @csspart group-heading - A group heading between items.\n * @csspart footer - The truncation footer, shown when not every match fits.\n *\n * @cssproperty --slash-menu-width - The width of the panel.\n * @cssproperty --slash-menu-max-height - The maximum height of the panel before it scrolls.\n */",
39779
+ "jsDoc": "/**\n * @summary A keyboard-driven list of insertions, anchored to the caret of the field that opened it.\n * @documentation https://zinc.style/components/slash-menu\n * @status experimental\n * @since 1.1\n *\n * @dependency zn-icon\n *\n * @event zn-slash-item-select - Emitted when an item is chosen. Does not cross shadow boundaries; the\n * component driving the menu (e.g. `zn-textarea`) re-emits it as `zn-slash-select`.\n *\n * @csspart panel - The floating panel that holds the list.\n * @csspart list - The scrolling list of items.\n * @csspart item - An item in the list.\n * @csspart icon - The chip holding an item's icon.\n * @csspart group-heading - A group heading between items.\n * @csspart divider - The rule closing the recently used section, when the items below it have no heading of their own.\n * @csspart footer - The truncation footer, shown when not every match fits.\n * @csspart hints - The pinned footer of keyboard hints.\n * @csspart hint - A single keyboard hint within the footer.\n * @csspart hint-key - The key shown against a hint.\n *\n * @cssproperty --slash-menu-width - The width of the panel.\n * @cssproperty --slash-menu-border-radius - The corner radius of the panel.\n * @cssproperty --slash-menu-item-border-radius - The corner radius of the items and their icon chips.\n * @cssproperty --slash-menu-max-height - The maximum height of the panel before it scrolls.\n */",
37395
39780
  "documentation": "https://zinc.style/components/slash-menu",
37396
39781
  "status": "experimental",
37397
39782
  "since": "1.1",
@@ -41485,7 +43870,7 @@
41485
43870
  "text": "string"
41486
43871
  },
41487
43872
  "default": "'Insert'",
41488
- "description": "The heading shown above the slash menu's items.",
43873
+ "description": "The name the slash menu's list is announced by.",
41489
43874
  "attribute": "slash-heading"
41490
43875
  },
41491
43876
  {
@@ -41498,6 +43883,16 @@
41498
43883
  "description": "Hides the insertion keys normally shown against the slash menu's items.",
41499
43884
  "attribute": "slash-hide-keys"
41500
43885
  },
43886
+ {
43887
+ "kind": "field",
43888
+ "name": "slashRecentKey",
43889
+ "type": {
43890
+ "text": "string"
43891
+ },
43892
+ "default": "''",
43893
+ "description": "Lists the items most recently chosen here above the rest, remembered in `localStorage` under this\nkey. Share a key between the fields that should share a history; leave unset to offer no such list.",
43894
+ "attribute": "slash-recent-key"
43895
+ },
41501
43896
  {
41502
43897
  "kind": "field",
41503
43898
  "name": "slashItemsProvider",
@@ -42061,7 +44456,7 @@
42061
44456
  "text": "string"
42062
44457
  },
42063
44458
  "default": "'Insert'",
42064
- "description": "The heading shown above the slash menu's items.",
44459
+ "description": "The name the slash menu's list is announced by.",
42065
44460
  "fieldName": "slashHeading"
42066
44461
  },
42067
44462
  {
@@ -42073,6 +44468,15 @@
42073
44468
  "description": "Hides the insertion keys normally shown against the slash menu's items.",
42074
44469
  "fieldName": "slashHideKeys"
42075
44470
  },
44471
+ {
44472
+ "name": "slash-recent-key",
44473
+ "type": {
44474
+ "text": "string"
44475
+ },
44476
+ "default": "''",
44477
+ "description": "Lists the items most recently chosen here above the rest, remembered in `localStorage` under this\nkey. Share a key between the fields that should share a history; leave unset to offer no such list.",
44478
+ "fieldName": "slashRecentKey"
44479
+ },
42076
44480
  {
42077
44481
  "name": "transparent",
42078
44482
  "type": {
@@ -43855,6 +46259,10 @@
43855
46259
  "description": "The toggle switch control (the circular button that slides).",
43856
46260
  "name": "control"
43857
46261
  },
46262
+ {
46263
+ "description": "The toggle's label.",
46264
+ "name": "label"
46265
+ },
43858
46266
  {
43859
46267
  "description": "The container that wraps the toggle's description.",
43860
46268
  "name": "description"
@@ -44332,7 +46740,7 @@
44332
46740
  "tagNameWithoutPrefix": "toggle",
44333
46741
  "tagName": "zn-toggle",
44334
46742
  "customElement": true,
44335
- "jsDoc": "/**\n * @summary Toggles allow the user to switch an option on or off.\n * @documentation https://zinc.style/components/toggle\n * @status stable\n * @since 1.0\n *\n * @dependency zn-tooltip\n *\n * @event zn-input - Emitted when the toggle receives input.\n *\n * @slot - The toggle's label.\n * @slot description - A description of the toggle's label. Alternatively, you can use the `description` attribute.\n * @slot help-text - Text that describes how to use the toggle. Alternatively, you can use the `help-text` attribute.\n *\n * @csspart base - The component's base wrapper containing the toggle switch.\n * @csspart control - The toggle switch control (the circular button that slides).\n * @csspart description - The container that wraps the toggle's description.\n *\n * @cssproperty --zn-toggle-margin - The margin around the toggle switch. Defaults to `8px 0`.\n */",
46743
+ "jsDoc": "/**\n * @summary Toggles allow the user to switch an option on or off.\n * @documentation https://zinc.style/components/toggle\n * @status stable\n * @since 1.0\n *\n * @dependency zn-tooltip\n *\n * @event zn-input - Emitted when the toggle receives input.\n *\n * @slot - The toggle's label.\n * @slot description - A description of the toggle's label. Alternatively, you can use the `description` attribute.\n * @slot help-text - Text that describes how to use the toggle. Alternatively, you can use the `help-text` attribute.\n *\n * @csspart base - The component's base wrapper containing the toggle switch.\n * @csspart control - The toggle switch control (the circular button that slides).\n * @csspart label - The toggle's label.\n * @csspart description - The container that wraps the toggle's description.\n *\n * @cssproperty --zn-toggle-margin - The margin around the toggle switch. Defaults to `8px 0`.\n */",
44336
46744
  "documentation": "https://zinc.style/components/toggle",
44337
46745
  "status": "stable",
44338
46746
  "since": "1.0",
@@ -45349,7 +47757,7 @@
45349
47757
  "text": "string"
45350
47758
  },
45351
47759
  "default": "'Insert'",
45352
- "description": "The heading shown above the slash menu's items.",
47760
+ "description": "The name the slash menu's list is announced by.",
45353
47761
  "attribute": "slash-heading"
45354
47762
  },
45355
47763
  {
@@ -45362,6 +47770,16 @@
45362
47770
  "description": "Hides the insertion keys normally shown against the slash menu's items.",
45363
47771
  "attribute": "slash-hide-keys"
45364
47772
  },
47773
+ {
47774
+ "kind": "field",
47775
+ "name": "slashRecentKey",
47776
+ "type": {
47777
+ "text": "string"
47778
+ },
47779
+ "default": "''",
47780
+ "description": "Lists the slash menu items most recently chosen here above the rest, remembered under this key.",
47781
+ "attribute": "slash-recent-key"
47782
+ },
45365
47783
  {
45366
47784
  "kind": "field",
45367
47785
  "name": "slashItemsProvider",
@@ -45684,7 +48102,7 @@
45684
48102
  "text": "string"
45685
48103
  },
45686
48104
  "default": "'Insert'",
45687
- "description": "The heading shown above the slash menu's items.",
48105
+ "description": "The name the slash menu's list is announced by.",
45688
48106
  "fieldName": "slashHeading"
45689
48107
  },
45690
48108
  {
@@ -45696,6 +48114,15 @@
45696
48114
  "description": "Hides the insertion keys normally shown against the slash menu's items.",
45697
48115
  "fieldName": "slashHideKeys"
45698
48116
  },
48117
+ {
48118
+ "name": "slash-recent-key",
48119
+ "type": {
48120
+ "text": "string"
48121
+ },
48122
+ "default": "''",
48123
+ "description": "Lists the slash menu items most recently chosen here above the rest, remembered under this key.",
48124
+ "fieldName": "slashRecentKey"
48125
+ },
45699
48126
  {
45700
48127
  "name": "grouped",
45701
48128
  "type": {
@@ -45998,7 +48425,7 @@
45998
48425
  "package": {
45999
48426
  "name": "@kubex/zinc",
46000
48427
  "description": "A collection of web components for building web applications based off of @shoelace-style/Shoelace",
46001
- "version": "1.1.92",
48428
+ "version": "1.1.95",
46002
48429
  "author": "",
46003
48430
  "license": "MIT"
46004
48431
  }