@kubex/zinc 1.1.97 → 1.1.99

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 (85) hide show
  1. package/AGENTS.md +5 -0
  2. package/CLAUDE.md +5 -0
  3. package/dist/chunks/zn.R2EAU6OS.js +1 -0
  4. package/dist/custom-elements.json +14747 -12528
  5. package/dist/vscode.html-custom-data.json +386 -61
  6. package/dist/web-types.json +1232 -481
  7. package/dist/zn.d.ts +529 -11
  8. package/dist/zn.min.js +649 -478
  9. package/docs/pages/components/background.md +143 -0
  10. package/docs/pages/components/button.md +11 -1
  11. package/docs/pages/components/chart.md +165 -3
  12. package/docs/pages/components/checkbox-group.md +13 -1
  13. package/docs/pages/components/checkbox.md +59 -1
  14. package/docs/pages/components/icon-picker.md +8 -0
  15. package/docs/pages/components/radio-group.md +12 -0
  16. package/docs/pages/components/radio.md +188 -0
  17. package/docs/pages/components/remarkd-editor.md +22 -0
  18. package/docs/pages/components/scroll-container.md +14 -15
  19. package/docs/pages/components/thumbnail-group.md +216 -0
  20. package/docs/pages/components/thumbnail.md +349 -0
  21. package/docs/pages/components/well.md +34 -0
  22. package/package.json +1 -1
  23. package/src/components/background/background.component.ts +111 -0
  24. package/src/components/background/background.scss +236 -0
  25. package/src/components/background/background.test.ts +120 -0
  26. package/src/components/background/index.ts +12 -0
  27. package/src/components/button/button.component.ts +8 -0
  28. package/src/components/chart/builders.test.ts +190 -1
  29. package/src/components/chart/builders.ts +246 -4
  30. package/src/components/chart/chart.component.ts +33 -1
  31. package/src/components/chart/chart.test.ts +66 -1
  32. package/src/components/chart/echarts-loader.ts +10 -0
  33. package/src/components/checkbox/checkbox.component.ts +62 -6
  34. package/src/components/checkbox/checkbox.scss +1 -0
  35. package/src/components/checkbox/checkbox.test.ts +56 -0
  36. package/src/components/checkbox-group/checkbox-group.component.ts +15 -0
  37. package/src/components/checkbox-group/checkbox-group.scss +23 -5
  38. package/src/components/checkbox-group/checkbox-group.test.ts +15 -0
  39. package/src/components/collapsible/collapsible.component.ts +49 -4
  40. package/src/components/collapsible/collapsible.scss +33 -14
  41. package/src/components/confirm/confirm.component.ts +3 -3
  42. package/src/components/confirm/confirm.test.ts +15 -0
  43. package/src/components/dialog/dialog.component.ts +3 -2
  44. package/src/components/editor/editor.component.ts +7 -6
  45. package/src/components/header/header.scss +2 -2
  46. package/src/components/icon-picker/icon-picker.component.ts +3 -0
  47. package/src/components/icon-picker/lucide-icons.ts +1756 -0
  48. package/src/components/navbar/navbar.scss +11 -0
  49. package/src/components/page/page.scss +1 -1
  50. package/src/components/radio/radio.component.ts +63 -7
  51. package/src/components/radio/radio.scss +1 -0
  52. package/src/components/radio/radio.test.ts +56 -0
  53. package/src/components/radio-group/radio-group.component.ts +16 -3
  54. package/src/components/radio-group/radio-group.scss +23 -4
  55. package/src/components/radio-group/radio-group.test.ts +15 -0
  56. package/src/components/remarkd-editor/remarkd-editor.component.ts +118 -5
  57. package/src/components/remarkd-editor/remarkd-editor.scss +8 -1
  58. package/src/components/remarkd-editor/remarkd-editor.test.ts +135 -0
  59. package/src/components/scroll-container/scroll-container.component.ts +15 -1
  60. package/src/components/scroll-container/scroll-container.scss +4 -2
  61. package/src/components/scroll-container/scroll-container.test.ts +13 -0
  62. package/src/components/slideout/slideout.component.ts +3 -2
  63. package/src/components/split-pane/split-pane.scss +21 -15
  64. package/src/components/thumbnail/index.ts +12 -0
  65. package/src/components/thumbnail/thumbnail.component.ts +460 -0
  66. package/src/components/thumbnail/thumbnail.scss +360 -0
  67. package/src/components/thumbnail/thumbnail.test.ts +379 -0
  68. package/src/components/thumbnail-group/index.ts +12 -0
  69. package/src/components/thumbnail-group/thumbnail-group.component.ts +268 -0
  70. package/src/components/thumbnail-group/thumbnail-group.scss +86 -0
  71. package/src/components/thumbnail-group/thumbnail-group.test.ts +151 -0
  72. package/src/components/tile/tile.scss +4 -2
  73. package/src/components/translation-group/translation-group.test.ts +22 -0
  74. package/src/components/translations/translations.component.ts +18 -3
  75. package/src/components/well/well.component.ts +22 -4
  76. package/src/components/well/well.scss +24 -0
  77. package/src/components/well/well.test.ts +43 -0
  78. package/src/form-control.scss +3 -1
  79. package/src/internal/conditional.ts +2 -2
  80. package/src/internal/form.ts +2 -1
  81. package/src/internal/selection-card.ts +19 -0
  82. package/src/selection-card.scss +187 -0
  83. package/src/utilities/query.test.ts +18 -1
  84. package/src/utilities/query.ts +8 -0
  85. package/src/zinc.ts +3 -0
@@ -13,6 +13,17 @@
13
13
  }
14
14
  ]
15
15
  },
16
+ {
17
+ "name": "zn-action-bar",
18
+ "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
19
+ "attributes": [],
20
+ "references": [
21
+ {
22
+ "name": "Documentation",
23
+ "url": "https://zinc.style/components/action-bar"
24
+ }
25
+ ]
26
+ },
16
27
  {
17
28
  "name": "zn-alert",
18
29
  "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
@@ -53,17 +64,6 @@
53
64
  }
54
65
  ]
55
66
  },
56
- {
57
- "name": "zn-action-bar",
58
- "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
59
- "attributes": [],
60
- "references": [
61
- {
62
- "name": "Documentation",
63
- "url": "https://zinc.style/components/action-bar"
64
- }
65
- ]
66
- },
67
67
  {
68
68
  "name": "zn-animated-button",
69
69
  "description": "\n---\n\n\n### **Methods:**\n - **purchase(): _void_** - Programmatically trigger the purchase flow\n- **setSuccess(): _void_** - Set the button to success state manually\n- **setFailure(message): _void_** - Set the button to failure state manually with optional error message\n- **reset(): _void_** - Reset the button to idle state",
@@ -138,6 +138,58 @@
138
138
  }
139
139
  ]
140
140
  },
141
+ {
142
+ "name": "zn-background",
143
+ "description": "Composes a colour, decorative image, image strength, optional motion and contrast overlay behind slotted content.\n---\n\n\n### **Slots:**\n - _default_ - Content displayed above the background layers.\n\n### **CSS Properties:**\n - **--zn-background-color** - Fallback colour when the `color` attribute is not set. _(default: undefined)_\n- **--zn-background-image-position** - Position of the background image. Defaults to `center`. _(default: undefined)_\n- **--zn-background-overlay-angle** - Direction of the overlay gradient. Defaults to `110deg`. _(default: undefined)_\n- **--zn-background-floating-icon-color** - Colour of the floating icons. Defaults to `currentColor`. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's full-size background canvas.\n- **image** - The decorative background image.\n- **overlay** - The contrast overlay between the image and content.\n- **floating-icons** - The non-interactive layer containing the floating icons.\n- **floating-icon** - Each floating `zn-icon`.\n- **content** - The wrapper around the default slot.",
144
+ "attributes": [
145
+ {
146
+ "name": "image",
147
+ "description": "URL of the decorative background image.",
148
+ "values": []
149
+ },
150
+ {
151
+ "name": "color",
152
+ "description": "CSS colour painted beneath the image.",
153
+ "values": []
154
+ },
155
+ {
156
+ "name": "image-strength",
157
+ "description": "Visibility of the image: `soft` (30%), `medium` (62%) or `full` (100%).",
158
+ "values": [{ "name": "BackgroundImageStrength" }]
159
+ },
160
+ {
161
+ "name": "motion",
162
+ "description": "Subtle animation applied to the image. Motion stops when reduced motion is requested.",
163
+ "values": [{ "name": "BackgroundMotion" }]
164
+ },
165
+ {
166
+ "name": "overlay",
167
+ "description": "Strength of the contrast gradient above the image.",
168
+ "values": [{ "name": "BackgroundOverlay" }]
169
+ },
170
+ {
171
+ "name": "overlay-tone",
172
+ "description": "Whether the overlay uses a light or dark contrast treatment.",
173
+ "values": [{ "name": "BackgroundOverlayTone" }]
174
+ },
175
+ {
176
+ "name": "floating-icons",
177
+ "description": "Comma-separated Zinc icon names placed as ambient decoration. At most eight are rendered.",
178
+ "values": []
179
+ },
180
+ {
181
+ "name": "paused",
182
+ "description": "Pauses background motion without changing the selected motion treatment.",
183
+ "values": []
184
+ }
185
+ ],
186
+ "references": [
187
+ {
188
+ "name": "Documentation",
189
+ "url": "https://zinc.style/components/background"
190
+ }
191
+ ]
192
+ },
141
193
  {
142
194
  "name": "zn-bulk-actions",
143
195
  "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
@@ -266,6 +318,11 @@
266
318
  },
267
319
  { "name": "rel", "values": [] },
268
320
  { "name": "tooltip", "values": [] },
321
+ {
322
+ "name": "label",
323
+ "description": "Accessible name for the button. Icon-only buttons fall back to `tooltip`.",
324
+ "values": []
325
+ },
269
326
  { "name": "auto-click", "values": [] },
270
327
  { "name": "auto-click-delay", "values": [] },
271
328
  { "name": "loading-text", "values": [] },
@@ -435,6 +492,8 @@
435
492
  { "name": "type", "values": [{ "name": "ChartType" }] },
436
493
  { "name": "data", "values": [{ "name": "SeriesItem[]" }] },
437
494
  { "name": "categories", "values": [{ "name": "string[]" }] },
495
+ { "name": "y-categories", "values": [{ "name": "string[]" }] },
496
+ { "name": "indicators", "values": [{ "name": "RadarIndicator[]" }] },
438
497
  {
439
498
  "name": "xaxis",
440
499
  "values": [
@@ -454,6 +513,11 @@
454
513
  { "name": "colors", "values": [{ "name": "string[]" }] },
455
514
  { "name": "sync-group", "values": [] },
456
515
  { "name": "smooth", "values": [] },
516
+ { "name": "inner-radius", "values": [] },
517
+ { "name": "outer-radius", "values": [] },
518
+ { "name": "show-labels", "values": [] },
519
+ { "name": "min-value", "values": [] },
520
+ { "name": "max-value", "values": [] },
457
521
  { "name": "scale", "values": [] }
458
522
  ],
459
523
  "references": [
@@ -554,7 +618,7 @@
554
618
  },
555
619
  {
556
620
  "name": "zn-checkbox",
557
- "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-blur** - Emitted when the checkbox loses focus.\n- **zn-change** - Emitted when the checked state changes.\n- **zn-focus** - Emitted when the checkbox gains focus.\n- **zn-input** - Emitted when the checkbox receives input.\n- **zn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the checkbox.\n- **focus(options: _FocusOptions_)** - Sets focus on the checkbox.\n- **blur()** - Removes focus from the checkbox.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. The value provided will be shown to the user when the form is submitted. To clear\nthe custom validation message, call this method with an empty string.\n\n### **Slots:**\n - _default_ - The checkbox's label.\n- **description** - A description of the checkbox's label. Serves as help text for a checkbox item. Alternatively, you can use the `description` attribute.\n- **selected-content** - Use to nest rich content (like an input) inside a selected checkbox item. Use only with the contained style.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The square container that wraps the checkbox's checked state.\n- **control--checked** - Matches the control part when the checkbox is checked.\n- **control--indeterminate** - Matches the control part when the checkbox is indeterminate.\n- **checked-icon** - The checked icon, an `<zn-icon>` element.\n- **unchecked-icon** - The unchecked icon, an `<zn-icon>` element.\n- **indeterminate-icon** - The indeterminate icon, an `<zn-icon>` element.\n- **label** - The container that wraps the checkbox's label.\n- **description** - The container that wraps the checkbox's description.\n- **selected-content** - The container that wraps optional content that appears when a checkbox is checked.",
621
+ "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-blur** - Emitted when the checkbox loses focus.\n- **zn-change** - Emitted when the checked state changes.\n- **zn-focus** - Emitted when the checkbox gains focus.\n- **zn-input** - Emitted when the checkbox receives input.\n- **zn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the checkbox.\n- **focus(options: _FocusOptions_)** - Sets focus on the checkbox.\n- **blur()** - Removes focus from the checkbox.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. The value provided will be shown to the user when the form is submitted. To clear\nthe custom validation message, call this method with an empty string.\n\n### **Slots:**\n - _default_ - The checkbox's label.\n- **image** - Replaces the built-in image used by contained checkboxes.\n- **description** - A description of the checkbox's label. Serves as help text for a checkbox item. Alternatively, you can use the `description` attribute.\n- **selected-content** - Use to nest rich content (like an input) inside a selected checkbox item. Use only with the contained style.\n\n### **CSS Properties:**\n - **--zn-selection-card-image-width** - Width of the built-in card image. _(default: undefined)_\n- **--zn-selection-card-image-height** - Height of the built-in card image. _(default: undefined)_\n- **--zn-selection-card-min-height** - Minimum height of a contained checkbox with an image. _(default: undefined)_\n- **--zn-selection-card-content-min-width** - Width the card text keeps before it wraps below the image. _(default: undefined)_\n- **--zn-selection-card-title-font-size** - Font size of a selection card title. _(default: undefined)_\n- **--zn-selection-card-padding** - Equal inset around the contents of a selection card. _(default: undefined)_\n- **--zn-selection-card-gap** - Space between the image, title, and indicator gutter. _(default: undefined)_\n- **--zn-selection-card-control-offset** - Distance between a positioned control and the card edge. _(default: undefined)_\n- **--zn-selection-card-border-radius** - Corner radius of a contained container. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The square container that wraps the checkbox's checked state.\n- **control--checked** - Matches the control part when the checkbox is checked.\n- **control--indeterminate** - Matches the control part when the checkbox is indeterminate.\n- **checked-icon** - The checked icon, an `<zn-icon>` element.\n- **unchecked-icon** - The unchecked icon, an `<zn-icon>` element.\n- **indeterminate-icon** - The indeterminate icon, an `<zn-icon>` element.\n- **image-container** - The wrapper around the built-in image or image slot.\n- **image** - The built-in image.\n- **card-title** - The title inside a selection card.\n- **label** - The container that wraps the checkbox's label.\n- **description** - The container that wraps the checkbox's description.\n- **selected-content** - The container that wraps optional content that appears when a checkbox is checked.",
558
622
  "attributes": [
559
623
  { "name": "title", "values": [] },
560
624
  {
@@ -567,6 +631,11 @@
567
631
  "description": "The current value of the checkbox, submitted as a name/value pair with form data.",
568
632
  "values": []
569
633
  },
634
+ {
635
+ "name": "card-title",
636
+ "description": "Title rendered inside the card. The default slot takes precedence when provided.",
637
+ "values": []
638
+ },
570
639
  {
571
640
  "name": "unchecked-value",
572
641
  "description": "The unchecked value of the checkbox, submitted as a name/value pair with form data.",
@@ -601,6 +670,31 @@
601
670
  "description": "Draws a container around the checkbox.",
602
671
  "values": []
603
672
  },
673
+ {
674
+ "name": "square",
675
+ "description": "Squares off the corners of the container drawn by `contained`, which is rounded by default.",
676
+ "values": []
677
+ },
678
+ {
679
+ "name": "src",
680
+ "description": "URL for the image shown in a contained checkbox.",
681
+ "values": []
682
+ },
683
+ {
684
+ "name": "image-alt",
685
+ "description": "Accessible text for the built-in image. Leave empty when the image is decorative.",
686
+ "values": []
687
+ },
688
+ {
689
+ "name": "image-position",
690
+ "description": "Places the image above, beside, or below the checkbox's text. Requires `contained`.",
691
+ "values": [{ "name": "SelectionCardImagePosition" }]
692
+ },
693
+ {
694
+ "name": "control-position",
695
+ "description": "Places the checkbox indicator within a contained card. Use `none` to hide the indicator so the card itself\nshows the selected state. Requires `contained`.",
696
+ "values": [{ "name": "SelectionCardControlPosition" }]
697
+ },
604
698
  {
605
699
  "name": "borderless",
606
700
  "description": "Removes a container around the checkbox.",
@@ -668,7 +762,7 @@
668
762
  },
669
763
  {
670
764
  "name": "zn-checkbox-group",
671
- "description": "Shotrt summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-change** - Emitted when the checkbox group's selected value changes.\n- **zn-input** - Emitted when the checkbox group receives user input.\n- **zn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity(): _boolean_** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message)** - Sets a custom validation message. Pass an empty string to restore validity.\n\n### **Slots:**\n - _default_ - The default slot where `<zn-checkbox>` elements are placed.\n- **label** - The checkbox group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.\n- **label-tooltip** - Used to add text that is displayed in a tooltip next to the label. Alternatively, you can use the `label-tooltip` attribute.\n- **help-text** - Text that describes how to use the checkbox group. Alternatively, you can use the `help-text` attribute.\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and help text.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The input's wrapper.\n- **form-control-help-text** - The help text's wrapper.",
765
+ "description": "Shotrt summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-change** - Emitted when the checkbox group's selected value changes.\n- **zn-input** - Emitted when the checkbox group receives user input.\n- **zn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity(): _boolean_** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message)** - Sets a custom validation message. Pass an empty string to restore validity.\n\n### **Slots:**\n - _default_ - The default slot where `<zn-checkbox>` elements are placed.\n- **label** - The checkbox group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.\n- **label-tooltip** - Used to add text that is displayed in a tooltip next to the label. Alternatively, you can use the `label-tooltip` attribute.\n- **help-text** - Text that describes how to use the checkbox group. Alternatively, you can use the `help-text` attribute.\n\n### **CSS Properties:**\n - **--zn-checkbox-group-column-width** - Minimum column width used by the horizontal contained grid, or the card basis when `wrap` is set. _(default: undefined)_\n\n### **CSS Parts:**\n - **form-control** - The form control that wraps the label, input, and help text.\n- **form-control-label** - The label's wrapper.\n- **form-control-input** - The input's wrapper.\n- **form-control-help-text** - The help text's wrapper.",
672
766
  "attributes": [
673
767
  {
674
768
  "name": "label",
@@ -714,6 +808,16 @@
714
808
  "description": "The checkbox group's style. Changes the group's style from the default (plain) style to the 'contained' style. This style will be applied to all child checkboxes.",
715
809
  "values": []
716
810
  },
811
+ {
812
+ "name": "square",
813
+ "description": "Squares off the corners of every contained checkbox in the group, which are rounded by default.",
814
+ "values": []
815
+ },
816
+ {
817
+ "name": "wrap",
818
+ "description": "Lays horizontal contained checkboxes out as a wrapping row instead of an equal-width grid, so each one sizes from\n`--zn-checkbox-group-column-width` (set it to `auto` to size from content) and wraps onto a new line when needed.",
819
+ "values": []
820
+ },
717
821
  {
718
822
  "name": "form",
719
823
  "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
@@ -2718,45 +2822,6 @@
2718
2822
  }
2719
2823
  ]
2720
2824
  },
2721
- {
2722
- "name": "zn-page",
2723
- "description": "Combines a page header with tab navigation and tab panels.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Methods:**\n \n\n\n### **Slots:**\n - _default_ - Page content. Use zn-tab for named tabs and header-action/header-actions for header actions.\n- **description** - Rich subtitle/description content. Falls back to the `summary` attribute when empty.\n- **bottom** - Content rendered below the navbar row (e.g. chips, filters). Forwarded to the navbar's bottom slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
2724
- "attributes": [
2725
- { "name": "caption", "values": [] },
2726
- { "name": "entity-id", "values": [] },
2727
- { "name": "entity-id-show", "values": [] },
2728
- { "name": "full-location", "values": [] },
2729
- { "name": "modal", "values": [] },
2730
- { "name": "nested", "values": [] },
2731
- { "name": "primary", "values": [] },
2732
- { "name": "previous-path", "values": [] },
2733
- { "name": "previous-target", "values": [] },
2734
- { "name": "summary", "values": [] },
2735
- { "name": "master-id", "values": [] },
2736
- { "name": "default-uri", "values": [] },
2737
- { "name": "active", "values": [] },
2738
- { "name": "split", "values": [] },
2739
- { "name": "split-min", "values": [] },
2740
- { "name": "split-min-secondary", "values": [] },
2741
- { "name": "split-max", "values": [] },
2742
- { "name": "primary-caption", "values": [] },
2743
- { "name": "secondary-caption", "values": [] },
2744
- { "name": "no-prefetch", "values": [] },
2745
- { "name": "no-cache", "values": [] },
2746
- { "name": "local-storage", "values": [] },
2747
- { "name": "store-key", "values": [] },
2748
- { "name": "store-ttl", "values": [] },
2749
- { "name": "padded", "values": [] },
2750
- { "name": "fetch-style", "values": [] },
2751
- { "name": "full-width", "values": [] },
2752
- { "name": "padded-right", "values": [] },
2753
- { "name": "monitor", "values": [] },
2754
- { "name": "description", "values": [] }
2755
- ],
2756
- "references": [
2757
- { "name": "Documentation", "url": "https://zinc.style/components/page" }
2758
- ]
2759
- },
2760
2825
  {
2761
2826
  "name": "zn-page-builder",
2762
2827
  "description": "A config-driven page composer: a palette of predefined section types, a linear\ncanvas of section cards, and an inspector for editing each section's content.\n---\n\n\n### **Events:**\n - **zn-page-change** - Emitted whenever the page state changes. `event.detail.state` is the new PageState.\n- **zn-page-selection-change** - Emitted when the selected section changes. `event.detail.sectionId`.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Checks for validity but does not show a validation message.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity(): _boolean_** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(_message)** - Sets a custom validation message. Pass an empty string to restore validity.\n- **addSection(type: _string_, index: _number_): _PageSection | null_** - Adds a section of a registered type at `index` (default: end). Returns null for unknown types.\n- **addSectionToSlot(type: _string_, containerId: _string_, slotIndex: _number_): _PageSection | null_** - Adds a new section of a registered type into a container's slot. Returns null if not allowed.\n\n### **Slots:**\n - **config** - `<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.\n- **header-left** - Actions shown on the left of the header bar.\n- **header-right** - Actions shown on the right of the header bar.\n\n### **CSS Parts:**\n - **base** - The grid wrapper.\n- **header** - The full-width header action bar (only rendered when header slots are filled).\n- **palette** - The left palette panel.\n- **canvas** - The centre section-card canvas.\n- **inspector** - The right panel while a section is selected.\n- **inspector-header** - The inspector's fixed header (icon, section name, type, close).\n- **inspector-body** - The inspector's scrolling form area.",
@@ -2806,6 +2871,45 @@
2806
2871
  }
2807
2872
  ]
2808
2873
  },
2874
+ {
2875
+ "name": "zn-page",
2876
+ "description": "Combines a page header with tab navigation and tab panels.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Methods:**\n \n\n\n### **Slots:**\n - _default_ - Page content. Use zn-tab for named tabs and header-action/header-actions for header actions.\n- **description** - Rich subtitle/description content. Falls back to the `summary` attribute when empty.\n- **bottom** - Content rendered below the navbar row (e.g. chips, filters). Forwarded to the navbar's bottom slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
2877
+ "attributes": [
2878
+ { "name": "caption", "values": [] },
2879
+ { "name": "entity-id", "values": [] },
2880
+ { "name": "entity-id-show", "values": [] },
2881
+ { "name": "full-location", "values": [] },
2882
+ { "name": "modal", "values": [] },
2883
+ { "name": "nested", "values": [] },
2884
+ { "name": "primary", "values": [] },
2885
+ { "name": "previous-path", "values": [] },
2886
+ { "name": "previous-target", "values": [] },
2887
+ { "name": "summary", "values": [] },
2888
+ { "name": "master-id", "values": [] },
2889
+ { "name": "default-uri", "values": [] },
2890
+ { "name": "active", "values": [] },
2891
+ { "name": "split", "values": [] },
2892
+ { "name": "split-min", "values": [] },
2893
+ { "name": "split-min-secondary", "values": [] },
2894
+ { "name": "split-max", "values": [] },
2895
+ { "name": "primary-caption", "values": [] },
2896
+ { "name": "secondary-caption", "values": [] },
2897
+ { "name": "no-prefetch", "values": [] },
2898
+ { "name": "no-cache", "values": [] },
2899
+ { "name": "local-storage", "values": [] },
2900
+ { "name": "store-key", "values": [] },
2901
+ { "name": "store-ttl", "values": [] },
2902
+ { "name": "padded", "values": [] },
2903
+ { "name": "fetch-style", "values": [] },
2904
+ { "name": "full-width", "values": [] },
2905
+ { "name": "padded-right", "values": [] },
2906
+ { "name": "monitor", "values": [] },
2907
+ { "name": "description", "values": [] }
2908
+ ],
2909
+ "references": [
2910
+ { "name": "Documentation", "url": "https://zinc.style/components/page" }
2911
+ ]
2912
+ },
2809
2913
  {
2810
2914
  "name": "zn-page-nav",
2811
2915
  "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Methods:**\n \n\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
@@ -3242,7 +3346,7 @@
3242
3346
  },
3243
3347
  {
3244
3348
  "name": "zn-radio",
3245
- "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-blur** - Emitted when the radio loses focus.\n- **zn-change** - Emitted when the checked state changes.\n- **zn-focus** - Emitted when the radio gains focus.\n- **zn-input** - Emitted when the radio receives input.\n- **zn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the radio.\n- **focus(options: _FocusOptions_)** - Sets focus on the radio.\n- **blur()** - Removes focus from the radio.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. The value provided will be shown to the user when the form is submitted. To clear\nthe custom validation message, call this method with an empty string.\n\n### **Slots:**\n - _default_ - The radio's label.\n- **description** - A description of the radio's label. Serves as help text for a radio item. Alternatively, you can use the `description` attribute.\n- **selected-content** - Use to nest rich content (like an input) inside a selected radio item. Use only with the contained style.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The square container that wraps the radio's checked state.\n- **control--checked** - Matches the control part when the radio is checked.\n- **checked-icon** - The checked icon, an `<zn-icon>` element.\n- **label** - The container that wraps the radio's label.\n- **description** - The container that wraps the radio's description.\n- **selected-content** - The container that wraps optional content that appears when a radio is checked.",
3349
+ "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-blur** - Emitted when the radio loses focus.\n- **zn-change** - Emitted when the checked state changes.\n- **zn-focus** - Emitted when the radio gains focus.\n- **zn-input** - Emitted when the radio receives input.\n- **zn-invalid** - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n\n### **Methods:**\n - **click()** - Simulates a click on the radio.\n- **focus(options: _FocusOptions_)** - Sets focus on the radio.\n- **blur()** - Removes focus from the radio.\n- **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity()** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message: _string_)** - Sets a custom validation message. The value provided will be shown to the user when the form is submitted. To clear\nthe custom validation message, call this method with an empty string.\n\n### **Slots:**\n - _default_ - The radio's label.\n- **image** - Replaces the built-in image used by contained radios.\n- **description** - A description of the radio's label. Serves as help text for a radio item. Alternatively, you can use the `description` attribute.\n- **selected-content** - Use to nest rich content (like an input) inside a selected radio item. Use only with the contained style.\n\n### **CSS Properties:**\n - **--zn-selection-card-image-width** - Width of the built-in card image. _(default: undefined)_\n- **--zn-selection-card-image-height** - Height of the built-in card image. _(default: undefined)_\n- **--zn-selection-card-min-height** - Minimum height of a contained radio with an image. _(default: undefined)_\n- **--zn-selection-card-content-min-width** - Width the card text keeps before it wraps below the image. _(default: undefined)_\n- **--zn-selection-card-title-font-size** - Font size of a selection card title. _(default: undefined)_\n- **--zn-selection-card-padding** - Equal inset around the contents of a selection card. _(default: undefined)_\n- **--zn-selection-card-gap** - Space between the image, title, and indicator gutter. _(default: undefined)_\n- **--zn-selection-card-control-offset** - Distance between a positioned control and the card edge. _(default: undefined)_\n- **--zn-selection-card-border-radius** - Corner radius of a contained container. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **control** - The square container that wraps the radio's checked state.\n- **control--checked** - Matches the control part when the radio is checked.\n- **checked-icon** - The checked icon, an `<zn-icon>` element.\n- **image-container** - The wrapper around the built-in image or image slot.\n- **image** - The built-in image.\n- **card-title** - The title inside a selection card.\n- **label** - The container that wraps the radio's label.\n- **description** - The container that wraps the radio's description.\n- **selected-content** - The container that wraps optional content that appears when a radio is checked.",
3246
3350
  "attributes": [
3247
3351
  { "name": "title", "values": [] },
3248
3352
  {
@@ -3255,6 +3359,11 @@
3255
3359
  "description": "The current value of the radio, submitted as a name/value pair with form data.",
3256
3360
  "values": []
3257
3361
  },
3362
+ {
3363
+ "name": "card-title",
3364
+ "description": "Title rendered inside the card. The default slot takes precedence when provided.",
3365
+ "values": []
3366
+ },
3258
3367
  {
3259
3368
  "name": "size",
3260
3369
  "description": "The radio's size.",
@@ -3279,6 +3388,31 @@
3279
3388
  "description": "Draws a container around the radio.",
3280
3389
  "values": []
3281
3390
  },
3391
+ {
3392
+ "name": "square",
3393
+ "description": "Squares off the corners of the container drawn by `contained`, which is rounded by default.",
3394
+ "values": []
3395
+ },
3396
+ {
3397
+ "name": "src",
3398
+ "description": "URL for the image shown in a contained radio.",
3399
+ "values": []
3400
+ },
3401
+ {
3402
+ "name": "image-alt",
3403
+ "description": "Accessible text for the built-in image. Leave empty when the image is decorative.",
3404
+ "values": []
3405
+ },
3406
+ {
3407
+ "name": "image-position",
3408
+ "description": "Places the image above, beside, or below the radio's text. Requires `contained`.",
3409
+ "values": [{ "name": "SelectionCardImagePosition" }]
3410
+ },
3411
+ {
3412
+ "name": "control-position",
3413
+ "description": "Places the radio indicator within a contained card. Use `none` to hide the indicator so the card itself\nshows the selected state. Requires `contained`.",
3414
+ "values": [{ "name": "SelectionCardControlPosition" }]
3415
+ },
3282
3416
  {
3283
3417
  "name": "horizontal",
3284
3418
  "description": "Applies styles relevant to radios in a horizontal layout.",
@@ -3311,7 +3445,7 @@
3311
3445
  },
3312
3446
  {
3313
3447
  "name": "zn-radio-group",
3314
- "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Methods:**\n - **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity(): _boolean_** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message)** - Sets a custom validation message. Pass an empty string to restore validity.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
3448
+ "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Methods:**\n - **checkValidity()** - Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid.\n- **getForm(): _HTMLFormElement | null_** - Gets the associated form, if one exists.\n- **reportValidity(): _boolean_** - Checks for validity and shows the browser's validation message if the control is invalid.\n- **setCustomValidity(message)** - Sets a custom validation message. Pass an empty string to restore validity.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--zn-radio-group-column-width** - Minimum column width used by the horizontal contained grid, or the card basis when `wrap` is set. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
3315
3449
  "attributes": [
3316
3450
  {
3317
3451
  "name": "label",
@@ -3349,12 +3483,22 @@
3349
3483
  },
3350
3484
  {
3351
3485
  "name": "horizontal",
3352
- "description": "The checkbox group's orientation. Changes the group's layout from the default (vertical) to horizontal.",
3486
+ "description": "The radio group's orientation. Changes the group's layout from the default (vertical) to horizontal.",
3353
3487
  "values": []
3354
3488
  },
3355
3489
  {
3356
3490
  "name": "contained",
3357
- "description": "The checkbox group's style. Changes the group's style from the default (plain) style to the 'contained' style. This style will be applied to all child checkboxes.",
3491
+ "description": "The radio group's style. Changes the group's style from the default (plain) style to the 'contained' style. This style will be applied to all child radios.",
3492
+ "values": []
3493
+ },
3494
+ {
3495
+ "name": "square",
3496
+ "description": "Squares off the corners of every contained radio in the group, which are rounded by default.",
3497
+ "values": []
3498
+ },
3499
+ {
3500
+ "name": "wrap",
3501
+ "description": "Lays horizontal contained radios out as a wrapping row instead of an equal-width grid, so each one sizes from\n`--zn-radio-group-column-width` (set it to `auto` to size from content) and wraps onto a new line when needed.",
3358
3502
  "values": []
3359
3503
  },
3360
3504
  {
@@ -3418,7 +3562,7 @@
3418
3562
  },
3419
3563
  {
3420
3564
  "name": "zn-remarkd-editor",
3421
- "description": "A Notion-style block editor for remarkd content. Blocks render inline; click one to edit its source.\n---\n\n\n### **Events:**\n - **zn-input** - Emitted on each keystroke while editing a block.\n- **zn-change** - Emitted when a block edit is committed and the value changes.\n\n### **Methods:**\n - **focus()** - Starts editing the first block, or a new block if the document is empty.\n- **blur()** - Commits any in-progress block or raw edit.\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **toolbar** - The always-visible block-insert toolbar.\n- **raw-toggle** - The button that switches between the block view and the raw source view.\n- **block** - A rendered block wrapper.\n- **rendered** - The rendered remarkd output of a block.\n- **input** - The textarea shown while editing a block.\n- **raw** - The full-document textarea shown in raw source mode.\n- **slash-menu** - The `zn-slash-menu` opened by typing \"/\" in an empty block.\n- **image-controls** - The caption / alignment / size panel shown when an image block is clicked.\n- **include** - The chip rendered in place of an `include::` directive.\n- **include-picker** - The inline Include picker opened from the toolbar or \"/include\".",
3565
+ "description": "A Notion-style block editor for remarkd content. Blocks render inline; click one to edit its source.\n---\n\n\n### **Events:**\n - **zn-input** - Emitted on each keystroke while editing a block.\n- **zn-change** - Emitted when a block edit is committed and the value changes.\n\n### **Methods:**\n - **focus()** - Starts editing the first block, or a new block if the document is empty.\n- **blur()** - Commits any in-progress block or raw edit.\n\n### **CSS Properties:**\n - **--remarkd-editor-max-height** - The tallest the editor grows before its body scrolls. Defaults to `100dvh`. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **toolbar** - The always-visible block-insert toolbar.\n- **raw-toggle** - The button that switches between the block view and the raw source view.\n- **block** - A rendered block wrapper.\n- **rendered** - The rendered remarkd output of a block.\n- **input** - The textarea shown while editing a block.\n- **raw** - The full-document textarea shown in raw source mode.\n- **slash-menu** - The `zn-slash-menu` opened by typing \"/\" in an empty block.\n- **image-controls** - The caption / alignment / size panel shown when an image block is clicked.\n- **include** - The chip rendered in place of an `include::` directive.\n- **include-picker** - The inline Include picker opened from the toolbar or \"/include\".",
3422
3566
  "attributes": [
3423
3567
  {
3424
3568
  "name": "slash-recent-key",
@@ -3628,8 +3772,15 @@
3628
3772
  },
3629
3773
  {
3630
3774
  "name": "zn-scroll-container",
3631
- "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
3632
- "attributes": [{ "name": "start-scrolled", "values": [] }],
3775
+ "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--zn-scroll-container-height** - The height and maximum height of the scroll container. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
3776
+ "attributes": [
3777
+ {
3778
+ "name": "height",
3779
+ "description": "The height and maximum height of the scroll container.",
3780
+ "values": []
3781
+ },
3782
+ { "name": "start-scrolled", "values": [] }
3783
+ ],
3633
3784
  "references": [
3634
3785
  {
3635
3786
  "name": "Documentation",
@@ -4651,6 +4802,170 @@
4651
4802
  }
4652
4803
  ]
4653
4804
  },
4805
+ {
4806
+ "name": "zn-thumbnail",
4807
+ "description": "A captioned image tile — a fixed aspect-ratio preview with a title beneath it, optional\ncorner badges and actions, and an optional full-screen preview that grows out of the thumbnail.\n---\n\n\n### **Events:**\n - **zn-select** - Emitted when an enabled thumbnail is activated by click or keyboard. Cancelable — call `preventDefault()` to stop the preview from opening and to stop a parent `zn-thumbnail-group` from changing its selection.\n- **zn-show** - Emitted when the preview overlay starts opening.\n- **zn-close** - Emitted once the preview overlay has finished closing.\n\n### **Methods:**\n - **showPreview()** - Opens the preview overlay.\n- **hidePreview()** - Closes the preview overlay.\n\n### **Slots:**\n - _default_ - Fallback content rendered in place of the media when no `src` is set.\n- **image** - Replaces the built-in `<img>` (e.g. a video, canvas or `zn-icon`).\n- **caption** - Replaces the caption text.\n- **badge** - Content pinned to the bottom-left of the media (e.g. a play indicator). Badges take no pointer events and are held back on opacity, so they read as information about the asset rather than as something to click.\n- **actions** - Controls pinned to the bottom-right of the media (e.g. a download button). Each slotted element becomes its own chip, so several actions read as separate icons on the thumbnail rather than one grouped pill. This sits outside the thumbnail's link, so buttons and links here behave normally and never select the thumbnail or follow its `href`.\n- **preview** - Replaces the preview media (e.g. a `<video>` for the full-size asset).\n\n### **CSS Properties:**\n - **--zn-thumbnail-aspect-ratio** - Aspect ratio of the media frame. Defaults to 16 / 9. The `aspect-ratio` attribute sets this on the thumbnail itself; set the property on any ancestor (including a `zn-thumbnail-group`) to apply it to every thumbnail beneath it. _(default: undefined)_\n- **--zn-thumbnail-radius** - Corner radius of the media frame. _(default: undefined)_\n- **--zn-thumbnail-preview-aspect-ratio** - Overrides the measured aspect ratio of the preview panel. By default the panel takes the asset's own ratio so it wraps the image exactly. _(default: undefined)_\n- **--zn-thumbnail-preview-max-width** - Largest width the preview may take. Defaults to 70vw. _(default: undefined)_\n- **--zn-thumbnail-preview-max-height** - Largest height the preview may take. Defaults to 70vh. _(default: undefined)_\n- **--zn-thumbnail-preview-radius** - Corner radius of the preview panel. _(default: undefined)_\n- **--zn-thumbnail-chip-radius** - Corner radius of a badge, action or preview chip. _(default: undefined)_\n- **--zn-thumbnail-chip-background** - Background of a badge, action or preview chip. _(default: undefined)_\n- **--zn-thumbnail-chip-background-hover** - Hover background of an action or preview chip. _(default: undefined)_\n- **--zn-thumbnail-chip-color** - Foreground colour of a badge, action or preview chip. _(default: undefined)_\n- **--zn-thumbnail-chip-gap** - Gap between adjacent chips. _(default: undefined)_\n- **--zn-thumbnail-badge-opacity** - Opacity of a badge, holding it back from the action chips beside it. Defaults to 0.65. _(default: undefined)_\n- **--zn-thumbnail-selected-color** - Ring colour for the selected state. _(default: undefined)_\n- **--zn-thumbnail-active-color** - Ring colour for the active state. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **link** - The anchor (or div) covering the media and caption.\n- **media** - The fixed aspect-ratio media frame.\n- **image** - The built-in image element.\n- **overlay** - The layer holding the badge, actions and preview button.\n- **badge** - The bottom-left badge container.\n- **actions** - The bottom-right actions container.\n- **preview-button** - The built-in preview trigger, when `preview-trigger=\"button\"`.\n- **caption** - The caption beneath the media.\n- **preview** - The preview `<dialog>`.\n- **preview-backdrop** - The full-screen backdrop behind the preview.\n- **preview-frame** - The rounded panel the preview media sits in.\n- **preview-image** - The full-size image inside the preview.\n- **preview-close** - The preview's close button.",
4808
+ "attributes": [
4809
+ {
4810
+ "name": "src",
4811
+ "description": "Image URL for the built-in `<img>`.",
4812
+ "values": []
4813
+ },
4814
+ {
4815
+ "name": "alt",
4816
+ "description": "Alternative text for the built-in image. Falls back to the caption.",
4817
+ "values": []
4818
+ },
4819
+ {
4820
+ "name": "caption",
4821
+ "description": "The title shown beneath the media.",
4822
+ "values": []
4823
+ },
4824
+ {
4825
+ "name": "aspect-ratio",
4826
+ "description": "Aspect ratio of the media frame, as any CSS `aspect-ratio` value (e.g. `1 / 1`, `4 / 3`).\nTakes precedence over an inherited `--zn-thumbnail-aspect-ratio`. Defaults to `16 / 9`.",
4827
+ "values": []
4828
+ },
4829
+ {
4830
+ "name": "href",
4831
+ "description": "Renders the thumbnail as a link to this URL.",
4832
+ "values": []
4833
+ },
4834
+ {
4835
+ "name": "target",
4836
+ "description": "Where to open `href` (e.g. `_blank`).",
4837
+ "values": []
4838
+ },
4839
+ {
4840
+ "name": "full-uri",
4841
+ "description": "URL of the full-size asset. Setting this enables the preview overlay, which grows out of the\nthumbnail's position over a full-screen backdrop.",
4842
+ "values": []
4843
+ },
4844
+ {
4845
+ "name": "preview-trigger",
4846
+ "description": "How the preview opens. `click` (the default) opens it when the thumbnail is activated; `button`\nadds a dedicated expand control to the media instead, leaving clicks for selection or the link.",
4847
+ "values": [{ "name": "click" }, { "name": "button" }]
4848
+ },
4849
+ {
4850
+ "name": "preview-label",
4851
+ "description": "Accessible label for the built-in preview trigger and the preview overlay.",
4852
+ "values": []
4853
+ },
4854
+ {
4855
+ "name": "value",
4856
+ "description": "Identifier reported in the `zn-select` event detail and used for group selection.",
4857
+ "values": []
4858
+ },
4859
+ {
4860
+ "name": "selected",
4861
+ "description": "Draws the selected ring. Managed automatically inside a `selectable` `zn-thumbnail-group`.",
4862
+ "values": []
4863
+ },
4864
+ {
4865
+ "name": "active",
4866
+ "description": "Draws the active ring — for the thumbnail currently in use (playing, open, being edited), as\ndistinct from the user's selection. Takes the ring colour when a thumbnail is both active and\nselected. Recolour it with `--zn-thumbnail-active-color`.",
4867
+ "values": []
4868
+ },
4869
+ {
4870
+ "name": "selectable",
4871
+ "description": "Set by `zn-thumbnail-group` when it manages selection, so the thumbnail reads as clickable.",
4872
+ "values": []
4873
+ },
4874
+ {
4875
+ "name": "disabled",
4876
+ "description": "Dims the thumbnail and blocks selection, navigation and preview.",
4877
+ "values": []
4878
+ },
4879
+ {
4880
+ "name": "icon",
4881
+ "description": "Icon rendered in the bottom-left badge when the `badge` slot is empty.",
4882
+ "values": []
4883
+ },
4884
+ {
4885
+ "name": "hide-caption",
4886
+ "description": "Hides the caption row, leaving just the media frame.",
4887
+ "values": []
4888
+ }
4889
+ ],
4890
+ "references": [
4891
+ {
4892
+ "name": "Documentation",
4893
+ "url": "https://zinc.style/components/thumbnail"
4894
+ }
4895
+ ]
4896
+ },
4897
+ {
4898
+ "name": "zn-thumbnail-group",
4899
+ "description": "Lays a set of `zn-thumbnail` elements out as a single scrollable row, with a\n\"Show All\" toggle that expands them into a wrapping grid.\n---\n\n\n### **Events:**\n - **zn-expand** - Emitted when the group expands into the full grid.\n- **zn-collapse** - Emitted when the group collapses back to a single row.\n- **zn-change** - Emitted when the selected thumbnail changes (`selectable` groups only).\n\n### **Methods:**\n - **show()** - Expands the group into the full grid.\n- **hide()** - Collapses the group back to a single row.\n\n### **Slots:**\n - _default_ - One or more `zn-thumbnail` elements.\n- **caption** - Replaces the heading text.\n- **actions** - Extra content in the header, before the toggle.\n\n### **CSS Properties:**\n - **--zn-thumbnail-width** - Track width of a thumbnail. Defaults to 180px. Also settable with the `thumbnail-width` attribute. _(default: undefined)_\n- **--zn-thumbnail-gap** - Gap between thumbnails. Also settable with the `gap` attribute. _(default: undefined)_\n- **--zn-thumbnail-aspect-ratio** - Aspect ratio of every thumbnail in the group. Also settable with the `aspect-ratio` attribute. Any `zn-thumbnail` custom property set here is inherited by the slotted thumbnails. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.\n- **header** - The header row holding the caption and toggle.\n- **caption** - The heading text.\n- **toggle** - The show all / show less button.\n- **items** - The scrolling row / expanded grid that holds the thumbnails.",
4900
+ "attributes": [
4901
+ {
4902
+ "name": "caption",
4903
+ "description": "The heading shown at the top left of the group.",
4904
+ "values": []
4905
+ },
4906
+ {
4907
+ "name": "expanded",
4908
+ "description": "Expands the group into the full wrapping grid.",
4909
+ "values": []
4910
+ },
4911
+ {
4912
+ "name": "total",
4913
+ "description": "Total number of thumbnails in the underlying set, shown in the \"Show All (n)\" label. Set this when\nthe row only holds the first page of a larger set; otherwise the slotted thumbnails are counted.",
4914
+ "values": []
4915
+ },
4916
+ {
4917
+ "name": "show-all-label",
4918
+ "description": "Label of the expand toggle. The count is appended in brackets.",
4919
+ "values": []
4920
+ },
4921
+ {
4922
+ "name": "show-less-label",
4923
+ "description": "Label of the collapse toggle.",
4924
+ "values": []
4925
+ },
4926
+ {
4927
+ "name": "hide-toggle",
4928
+ "description": "Never render the toggle, even when the row overflows.",
4929
+ "values": []
4930
+ },
4931
+ {
4932
+ "name": "always-toggle",
4933
+ "description": "Always render the toggle, even when every thumbnail already fits on the row.",
4934
+ "values": []
4935
+ },
4936
+ {
4937
+ "name": "selectable",
4938
+ "description": "Manages single selection across the slotted thumbnails.",
4939
+ "values": []
4940
+ },
4941
+ {
4942
+ "name": "aspect-ratio",
4943
+ "description": "Aspect ratio for every thumbnail in the group, as any CSS `aspect-ratio` value (e.g. `1 / 1`).\nShorthand for setting `--zn-thumbnail-aspect-ratio` on the group. A thumbnail's own\n`aspect-ratio` attribute still wins.",
4944
+ "values": []
4945
+ },
4946
+ {
4947
+ "name": "thumbnail-width",
4948
+ "description": "Track width of each thumbnail (e.g. `140px`). Shorthand for `--zn-thumbnail-width`.",
4949
+ "values": []
4950
+ },
4951
+ {
4952
+ "name": "gap",
4953
+ "description": "Gap between thumbnails (e.g. `8px`). Shorthand for `--zn-thumbnail-gap`.",
4954
+ "values": []
4955
+ },
4956
+ {
4957
+ "name": "value",
4958
+ "description": "The `value` of the selected thumbnail (`selectable` groups only).",
4959
+ "values": []
4960
+ }
4961
+ ],
4962
+ "references": [
4963
+ {
4964
+ "name": "Documentation",
4965
+ "url": "https://zinc.style/components/thumbnail-group"
4966
+ }
4967
+ ]
4968
+ },
4654
4969
  {
4655
4970
  "name": "zn-tile",
4656
4971
  "description": "Short summary of the component's intended use.\n---\n\n\n### **Events:**\n - **zn-event-name** - Emitted as an example.\n\n### **Slots:**\n - _default_ - The default slot.\n- **example** - An example slot.\n\n### **CSS Properties:**\n - **--example** - An example CSS custom property. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The component's base wrapper.",
@@ -4956,10 +5271,20 @@
4956
5271
  },
4957
5272
  {
4958
5273
  "name": "zn-well",
4959
- "description": "Short summary of the component's intended use.\n---\n\n\n### **Slots:**\n - _default_ - The default slot.",
5274
+ "description": "Short summary of the component's intended use.\n---\n\n\n### **Slots:**\n - _default_ - The default slot.\n- **action** - Content displayed on the right hand side of the well.",
4960
5275
  "attributes": [
4961
5276
  { "name": "icon", "values": [] },
4962
- { "name": "inline", "values": [] }
5277
+ { "name": "inline", "values": [] },
5278
+ {
5279
+ "name": "pre",
5280
+ "description": "Renders the default slot inside a `pre` element, preserving whitespace using a monospace font.",
5281
+ "values": []
5282
+ },
5283
+ {
5284
+ "name": "break-long",
5285
+ "description": "Breaks long unbroken words, so they wrap instead of forcing the well wider.",
5286
+ "values": []
5287
+ }
4963
5288
  ],
4964
5289
  "references": [
4965
5290
  { "name": "Documentation", "url": "https://zinc.style/components/well" }