@kubex/zinc 1.0.25 → 1.0.98

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 (198) hide show
  1. package/.claude/project.md +556 -0
  2. package/.github/workflows/js_build_and_deploy.yaml +9 -10
  3. package/dist/custom-elements.json +13431 -8728
  4. package/dist/vscode.html-custom-data.json +571 -37
  5. package/dist/web-types.json +1439 -181
  6. package/dist/zn.d.ts +1642 -661
  7. package/dist/zn.min.css +1 -1
  8. package/dist/zn.min.js +1406 -891
  9. package/docs/_utilities/code-previews.cjs +10 -1
  10. package/docs/assets/scripts/docs.js +42 -18
  11. package/docs/data/data-table.json +229 -66
  12. package/docs/data/empty.json +6 -0
  13. package/docs/data/products-table.json +41 -193
  14. package/docs/pages/components/action-bar.md +121 -6
  15. package/docs/pages/components/alert.md +118 -15
  16. package/docs/pages/components/animated-button.md +299 -0
  17. package/docs/pages/components/audio-select.md +534 -0
  18. package/docs/pages/components/bulk-actions.md +79 -5
  19. package/docs/pages/components/button-group.md +235 -27
  20. package/docs/pages/components/button.md +139 -1
  21. package/docs/pages/components/chart.md +365 -9
  22. package/docs/pages/components/checkbox.md +387 -58
  23. package/docs/pages/components/chip.md +253 -33
  24. package/docs/pages/components/collapsible.md +393 -46
  25. package/docs/pages/components/cols.md +152 -30
  26. package/docs/pages/components/confirm.md +182 -16
  27. package/docs/pages/components/copy-button.md +169 -6
  28. package/docs/pages/components/data-select.md +194 -15
  29. package/docs/pages/components/data-table-filter.md +96 -5
  30. package/docs/pages/components/data-table-search.md +451 -0
  31. package/docs/pages/components/data-table-sort.md +66 -5
  32. package/docs/pages/components/data-table.md +727 -66
  33. package/docs/pages/components/datepicker.md +402 -7
  34. package/docs/pages/components/defined-label.md +120 -5
  35. package/docs/pages/components/dialog.md +339 -59
  36. package/docs/pages/components/dropdown.md +366 -11
  37. package/docs/pages/components/editor.md +604 -7
  38. package/docs/pages/components/empty-state.md +315 -16
  39. package/docs/pages/components/expanding-action.md +212 -28
  40. package/docs/pages/components/file.md +421 -12
  41. package/docs/pages/components/filter-container.md +158 -5
  42. package/docs/pages/components/filter-wrapper.md +167 -6
  43. package/docs/pages/components/form-group.md +383 -6
  44. package/docs/pages/components/hover-container.md +237 -6
  45. package/docs/pages/components/icon-picker.md +121 -0
  46. package/docs/pages/components/icon.md +454 -48
  47. package/docs/pages/components/inline-edit.md +787 -19
  48. package/docs/pages/components/input-group.md +207 -13
  49. package/docs/pages/components/input.md +194 -0
  50. package/docs/pages/components/key-container.md +115 -0
  51. package/docs/pages/components/key.md +101 -0
  52. package/docs/pages/components/menu.md +512 -6
  53. package/docs/pages/components/note.md +239 -36
  54. package/docs/pages/components/opt-group.md +107 -0
  55. package/docs/pages/components/pagination.md +332 -6
  56. package/docs/pages/components/pane.md +222 -6
  57. package/docs/pages/components/panel.md +213 -26
  58. package/docs/pages/components/popup.md +1354 -6
  59. package/docs/pages/components/priority-list.md +233 -0
  60. package/docs/pages/components/progress-bar.md +387 -6
  61. package/docs/pages/components/radio-group.md +242 -5
  62. package/docs/pages/components/radio.md +474 -6
  63. package/docs/pages/components/rating.md +331 -7
  64. package/docs/pages/components/reveal.md +524 -6
  65. package/docs/pages/components/scroll-container.md +552 -6
  66. package/docs/pages/components/select.md +762 -160
  67. package/docs/pages/components/skeleton.md +473 -30
  68. package/docs/pages/components/slideout.md +261 -5
  69. package/docs/pages/components/sp.md +99 -41
  70. package/docs/pages/components/split-button.md +347 -9
  71. package/docs/pages/components/split-pane.md +445 -6
  72. package/docs/pages/components/stat.md +549 -9
  73. package/docs/pages/components/status-indicator.md +230 -1
  74. package/docs/pages/components/stepper.md +563 -6
  75. package/docs/pages/components/tabs.md +439 -13
  76. package/docs/pages/components/textarea.md +415 -17
  77. package/docs/pages/components/tile.md +385 -26
  78. package/docs/pages/components/toggle.md +424 -6
  79. package/docs/pages/components/tooltip.md +367 -0
  80. package/docs/pages/components/translation-group.md +210 -0
  81. package/docs/pages/components/translations.md +319 -19
  82. package/docs/pages/components/vertical-stepper.md +401 -8
  83. package/docs/pages/components/well.md +300 -3
  84. package/docs/pages/getting-started/form-controls.md +162 -0
  85. package/docs/pages/index.md +116 -15
  86. package/package.json +5 -6
  87. package/scss/_global-spacing.scss +4 -0
  88. package/scss/_root.scss +2 -2
  89. package/scss/boot.scss +19 -0
  90. package/scss/shared/layout.scss +5 -0
  91. package/scss/themes/_light.scss +3 -3
  92. package/src/components/alert/alert.scss +1 -0
  93. package/src/components/animated-button/README.md +306 -0
  94. package/src/components/animated-button/animated-button.component.ts +229 -0
  95. package/src/components/animated-button/animated-button.scss +228 -0
  96. package/src/components/animated-button/animated-button.test.ts +143 -0
  97. package/src/components/animated-button/index.ts +12 -0
  98. package/src/components/button/button.component.ts +5 -0
  99. package/src/components/button-group/button-group.component.ts +25 -13
  100. package/src/components/button-group/button-group.scss +6 -0
  101. package/src/components/checkbox/checkbox.component.ts +4 -0
  102. package/src/components/checkbox/checkbox.scss +7 -4
  103. package/src/components/checkbox-group/checkbox-group.scss +7 -0
  104. package/src/components/chip/chip.component.ts +7 -2
  105. package/src/components/chip/chip.scss +16 -2
  106. package/src/components/collapsible/collapsible.component.ts +27 -20
  107. package/src/components/cols/cols.component.ts +14 -2
  108. package/src/components/cols/cols.scss +6 -12
  109. package/src/components/confirm/confirm.component.ts +7 -0
  110. package/src/components/copy-button/copy-button.component.ts +12 -11
  111. package/src/components/data-select/data-select.component.ts +215 -44
  112. package/src/components/data-select/data-select.scss +66 -6
  113. package/src/components/data-select/providers/currency-data-provider.ts +20 -6
  114. package/src/components/data-select/providers/provider.ts +1 -0
  115. package/src/components/data-select/providers/us-state-data-provider.ts +68 -0
  116. package/src/components/data-table/data-table.component.ts +81 -22
  117. package/src/components/data-table-search/data-table-search.component.ts +184 -0
  118. package/src/components/data-table-search/data-table-search.scss +17 -0
  119. package/src/components/data-table-search/data-table-search.test.ts +11 -0
  120. package/src/components/data-table-search/index.ts +12 -0
  121. package/src/components/datepicker/datepicker.component.ts +347 -13
  122. package/src/components/dialog/dialog.component.ts +1 -1
  123. package/src/components/empty-state/empty-state.scss +6 -1
  124. package/src/components/header/header.scss +3 -3
  125. package/src/components/icon/icon.component.ts +23 -1
  126. package/src/components/icon/icon.scss +23 -0
  127. package/src/components/icon-picker/brand-icons.ts +24 -0
  128. package/src/components/icon-picker/icon-picker.component.ts +407 -0
  129. package/src/components/icon-picker/icon-picker.scss +205 -0
  130. package/src/components/icon-picker/index.ts +12 -0
  131. package/src/components/icon-picker/line-icons.ts +612 -0
  132. package/src/components/icon-picker/material-icons.ts +14543 -0
  133. package/src/components/inline-edit/inline-edit.component.ts +190 -46
  134. package/src/components/inline-edit/inline-edit.scss +29 -0
  135. package/src/components/inline-edit/inline-edit.test.ts +314 -1
  136. package/src/components/input/input.component.ts +324 -5
  137. package/src/components/input/input.scss +87 -0
  138. package/src/components/input-group/input-group.component.ts +28 -7
  139. package/src/components/input-group/input-group.scss +48 -10
  140. package/src/components/item/item.component.ts +11 -2
  141. package/src/components/item/item.scss +7 -0
  142. package/src/components/key/index.ts +12 -0
  143. package/src/components/key/key.component.ts +47 -0
  144. package/src/components/key/key.scss +38 -0
  145. package/src/components/key-container/index.ts +12 -0
  146. package/src/components/key-container/key-container.component.ts +142 -0
  147. package/src/components/key-container/key-container.scss +33 -0
  148. package/src/components/menu-item/menu-item.component.ts +20 -0
  149. package/src/components/menu-item/menu-item.scss +69 -2
  150. package/src/components/navbar/navbar.component.ts +103 -11
  151. package/src/components/navbar/navbar.scss +6 -1
  152. package/src/components/opt-group/index.ts +12 -0
  153. package/src/components/opt-group/opt-group.component.ts +74 -0
  154. package/src/components/opt-group/opt-group.scss +37 -0
  155. package/src/components/opt-group/opt-group.test.ts +27 -0
  156. package/src/components/option/option.component.ts +1 -16
  157. package/src/components/option/option.scss +4 -0
  158. package/src/components/panel/panel.component.ts +10 -8
  159. package/src/components/panel/panel.scss +20 -0
  160. package/src/components/priority-list/index.ts +12 -0
  161. package/src/components/priority-list/priority-list.component.ts +611 -0
  162. package/src/components/priority-list/priority-list.scss +185 -0
  163. package/src/components/priority-list/priority-list.test.ts +139 -0
  164. package/src/components/progress-bar/progress-bar.component.ts +22 -16
  165. package/src/components/radio/radio.scss +10 -3
  166. package/src/components/select/select.component.ts +812 -72
  167. package/src/components/select/select.scss +108 -2
  168. package/src/components/select/select.test.ts +147 -2
  169. package/src/components/settings-container/settings-container.component.ts +44 -19
  170. package/src/components/settings-container/settings-container.scss +1 -1
  171. package/src/components/skeleton/skeleton.component.ts +6 -1
  172. package/src/components/slideout/slideout.scss +8 -3
  173. package/src/components/sp/sp.component.ts +3 -1
  174. package/src/components/sp/sp.scss +19 -0
  175. package/src/components/stepper/stepper.component.ts +16 -10
  176. package/src/components/textarea/textarea.scss +0 -4
  177. package/src/components/tile/tile.component.ts +12 -3
  178. package/src/components/tile/tile.scss +1 -1
  179. package/src/components/timer/timer.component.ts +15 -2
  180. package/src/components/toggle/toggle.component.ts +29 -26
  181. package/src/components/toggle/toggle.scss +13 -1
  182. package/src/components/translation-group/index.ts +12 -0
  183. package/src/components/translation-group/translation-group.component.ts +207 -0
  184. package/src/components/translation-group/translation-group.scss +8 -0
  185. package/src/components/translations/translations.component.ts +90 -44
  186. package/src/components/translations/translations.scss +4 -0
  187. package/src/components/vertical-stepper/vertical-stepper.component.ts +14 -9
  188. package/src/events/events.ts +12 -7
  189. package/src/events/zn-language-change.ts +7 -0
  190. package/src/events/zn-purchase.ts +11 -0
  191. package/src/events/zn-redirect.ts +7 -0
  192. package/src/events/zn-reorder.ts +7 -0
  193. package/src/events/zn-search-change.ts +11 -0
  194. package/src/events/zn-submit.ts +1 -1
  195. package/src/form-control.scss +4 -0
  196. package/src/internal/form-navigation.ts +510 -0
  197. package/src/internal/form.ts +6 -0
  198. package/src/zinc.ts +91 -83
package/dist/zn.d.ts CHANGED
@@ -24,6 +24,17 @@ declare module "zinc-autoloader" {
24
24
  */
25
25
  export function discover(root: Element | ShadowRoot): Promise<void>;
26
26
  }
27
+ declare module "internal/tabbable" {
28
+ /**
29
+ * Returns the first and last bounding elements that are tabbable. This is more performant than checking every single
30
+ * element because it short-circuits after finding the first and last ones.
31
+ */
32
+ export function getTabbableBoundary(root: HTMLElement | ShadowRoot): {
33
+ start: HTMLElement;
34
+ end: HTMLElement;
35
+ };
36
+ export function getTabbableElements(root: HTMLElement | ShadowRoot): HTMLElement[];
37
+ }
27
38
  declare module "internal/theme" {
28
39
  import type { ReactiveController, ReactiveControllerHost } from "lit";
29
40
  /**
@@ -105,6 +116,32 @@ declare module "internal/zinc-element" {
105
116
  setCustomValidity: (message: string) => void;
106
117
  }
107
118
  }
119
+ declare module "internal/form-navigation" {
120
+ export class FormNavigationController {
121
+ private readonly form;
122
+ constructor(form: HTMLFormElement);
123
+ private handleKeyDown;
124
+ private shouldSkipEnterKey;
125
+ private shouldExcludeFromNavigation;
126
+ private isSelectOption;
127
+ private findParentSelect;
128
+ private findParentGroup;
129
+ private getGroupItems;
130
+ private focusNextInGroup;
131
+ private focusPreviousInGroup;
132
+ private areRequiredFieldsFilled;
133
+ private getNavigableControls;
134
+ private findCurrentControlIndex;
135
+ private focusNextControl;
136
+ private focusPreviousControl;
137
+ private submitForm;
138
+ destroy(): void;
139
+ }
140
+ /**
141
+ * Gets or creates a FormNavigationController for the given form
142
+ */
143
+ export function getFormNavigationController(form: HTMLFormElement): FormNavigationController;
144
+ }
108
145
  declare module "internal/form" {
109
146
  import type { ReactiveController, ReactiveControllerHost } from "lit";
110
147
  import type { ZincFormControl } from "internal/zinc-element";
@@ -244,17 +281,6 @@ declare module "internal/watch" {
244
281
  */
245
282
  export function watch(propertyName: string | string[], options?: WatchOptions): <ElemClass extends LitElement>(proto: ElemClass, decoratedFnName: UpdateHandlerFunctionKeys<ElemClass>) => void;
246
283
  }
247
- declare module "internal/tabbable" {
248
- /**
249
- * Returns the first and last bounding elements that are tabbable. This is more performant than checking every single
250
- * element because it short-circuits after finding the first and last ones.
251
- */
252
- export function getTabbableBoundary(root: HTMLElement | ShadowRoot): {
253
- start: HTMLElement;
254
- end: HTMLElement;
255
- };
256
- export function getTabbableElements(root: HTMLElement | ShadowRoot): HTMLElement[];
257
- }
258
284
  declare module "utilities/top-layer-manager" {
259
285
  class TopLayerManager {
260
286
  private openDropdowns;
@@ -492,7 +518,7 @@ declare module "components/icon/icon.component" {
492
518
  import { type CSSResultGroup } from 'lit';
493
519
  import ZincElement from "internal/zinc-element";
494
520
  type IconLibrary = "src" | "material" | "material-outlined" | "material-round" | "material-sharp" | "material-two-tone" | "material-symbols-outlined" | "gravatar" | "libravatar" | "avatar" | "brands" | "line";
495
- export type IconColor = "default" | "primary" | "accent" | "info" | "warning" | "error" | "success" | "white" | "disabled" | "red" | "blue" | "green" | "orange" | "yellow" | "indigo" | "violet" | "pink" | "grey";
521
+ export type IconColor = "default" | "primary" | "accent" | "info" | "warning" | "error" | "success" | "white" | "disabled" | "red" | "blue" | "green" | "orange" | "yellow" | "indigo" | "violet" | "pink" | "grey" | (string & {});
496
522
  /**
497
523
  * @summary Short summary of the component's intended use.
498
524
  * @documentation https://zinc.style/components/icon
@@ -516,11 +542,15 @@ declare module "components/icon/icon.component" {
516
542
  alt: string;
517
543
  size: number;
518
544
  round: boolean;
545
+ tile: boolean;
546
+ depth: boolean;
519
547
  library: IconLibrary;
520
548
  color: IconColor;
521
549
  padded: boolean;
522
550
  blink: boolean;
523
551
  squared: boolean;
552
+ private static readonly presetColors;
553
+ private isPresetColor;
524
554
  gravatarOptions: string;
525
555
  defaultLibrary: IconLibrary;
526
556
  convertToLibrary(input: string): IconLibrary;
@@ -591,6 +621,16 @@ declare module "components/menu-item/menu-item.component" {
591
621
  rel: string;
592
622
  gaid: string;
593
623
  confirm: boolean;
624
+ /** Removes all padding from the menu item. */
625
+ flush: boolean;
626
+ /** Removes horizontal (left/right) padding only. Ignored if flush is set. */
627
+ flushX: boolean;
628
+ /** Removes vertical (top/bottom) padding only. Ignored if flush is set. */
629
+ flushY: boolean;
630
+ /** Removes the border from the menu item. */
631
+ noBorder: boolean;
632
+ /** Marks the menu item as currently active/selected. */
633
+ active: boolean;
594
634
  private readonly localize;
595
635
  private readonly hasSlotController;
596
636
  private submenuController;
@@ -713,7 +753,7 @@ declare module "components/dialog/dialog.component" {
713
753
  /** The dialog's theme variant. */
714
754
  variant: 'default' | 'warning' | 'announcement';
715
755
  /** The dialog's size. */
716
- size: 'small' | 'medium' | 'large';
756
+ size: 'small' | 'medium' | 'large' | 'custom';
717
757
  /**
718
758
  * Indicated whether of not the dialog is open. You can toggle this attribute to show and hide the dialog, or you can
719
759
  * use the `show()` and `hide()` methods and this attribute will reflect the dialog's state.
@@ -1146,6 +1186,7 @@ declare module "components/button/button.component" {
1146
1186
  getForm(): HTMLFormElement | null;
1147
1187
  reportValidity(): boolean;
1148
1188
  setCustomValidity(message: string): void;
1189
+ click(): void;
1149
1190
  handleClick: () => void;
1150
1191
  private _isLink;
1151
1192
  private _isButton;
@@ -1230,21 +1271,21 @@ declare module "components/toggle/toggle.component" {
1230
1271
  import { type CSSResultGroup, type PropertyValues } from 'lit';
1231
1272
  import ZincElement, { type ZincFormControl } from "internal/zinc-element";
1232
1273
  /**
1233
- * @summary Short summary of the component's intended use.
1274
+ * @summary Toggles allow the user to switch an option on or off.
1234
1275
  * @documentation https://zinc.style/components/toggle
1235
- * @status experimental
1276
+ * @status stable
1236
1277
  * @since 1.0
1237
1278
  *
1238
- * @dependency zn-example
1279
+ * @dependency zn-tooltip
1239
1280
  *
1240
- * @event zn-event-name - Emitted as an example.
1281
+ * @event zn-input - Emitted when the toggle receives input.
1241
1282
  *
1242
- * @slot - The default slot.
1243
- * @slot example - An example slot.
1283
+ * @slot - The toggle's label.
1244
1284
  *
1245
- * @csspart base - The component's base wrapper.
1285
+ * @csspart base - The component's base wrapper containing the toggle switch.
1286
+ * @csspart control - The toggle switch control (the circular button that slides).
1246
1287
  *
1247
- * @cssproperty --example - An example CSS custom property.
1288
+ * @cssproperty --zn-toggle-margin - The margin around the toggle switch. Defaults to `8px 0`.
1248
1289
  */
1249
1290
  export default class ZnToggle extends ZincElement implements ZincFormControl {
1250
1291
  static styles: CSSResultGroup;
@@ -1266,6 +1307,7 @@ declare module "components/toggle/toggle.component" {
1266
1307
  onText: string;
1267
1308
  offText: string;
1268
1309
  label: string;
1310
+ inline: boolean;
1269
1311
  get validity(): ValidityState;
1270
1312
  get validationMessage(): string;
1271
1313
  firstUpdated(_changedProperties: PropertyValues): void;
@@ -1296,10 +1338,10 @@ declare module "components/toggle/index" {
1296
1338
  }
1297
1339
  }
1298
1340
  declare module "components/collapsible/collapsible.component" {
1299
- import { type CSSResultGroup } from 'lit';
1341
+ import { type CSSResultGroup, type PropertyValues } from 'lit';
1300
1342
  import { Store } from "internal/storage";
1301
1343
  import ZincElement from "internal/zinc-element";
1302
- import { ZnInputEvent } from "events/zn-input";
1344
+ import type { ZnInputEvent } from "events/zn-input";
1303
1345
  /**
1304
1346
  * @summary Toggles between showing and hiding content when clicked
1305
1347
  * @documentation https://zinc.style/components/collapsible
@@ -1331,6 +1373,7 @@ declare module "components/collapsible/collapsible.component" {
1331
1373
  private showArrow;
1332
1374
  connectedCallback(): Promise<void>;
1333
1375
  handleCaptionToggle: (e: ZnInputEvent) => void;
1376
+ protected updated(changedProperties: PropertyValues): void;
1334
1377
  disconnectedCallback(): void;
1335
1378
  handleCollapse: (e: MouseEvent) => void;
1336
1379
  recalculateNumberOfItems: () => void;
@@ -1453,6 +1496,8 @@ declare module "components/chip/chip.component" {
1453
1496
  export default class ZnChip extends ZincElement {
1454
1497
  static styles: CSSResultGroup;
1455
1498
  icon: string;
1499
+ caption: string;
1500
+ iconSize: number;
1456
1501
  type: 'info' | 'success' | 'warning' | 'error' | 'primary' | 'transparent' | 'custom' | 'neutral';
1457
1502
  size: 'small' | 'medium' | 'large';
1458
1503
  flush: boolean;
@@ -1504,7 +1549,7 @@ declare module "components/well/index" {
1504
1549
  declare module "components/copy-button/copy-button.component" {
1505
1550
  import { type CSSResultGroup } from 'lit';
1506
1551
  import ZincElement from "internal/zinc-element";
1507
- import ZnTooltip from "components/tooltip/index";
1552
+ import type ZnTooltip from "components/tooltip/index";
1508
1553
  /**
1509
1554
  * @summary Short summary of the component's intended use.
1510
1555
  * @documentation https://zinc.style/components/copy-button
@@ -1533,6 +1578,7 @@ declare module "components/copy-button/copy-button.component" {
1533
1578
  value: string;
1534
1579
  copyLabel: string;
1535
1580
  src: string;
1581
+ size: number;
1536
1582
  /**
1537
1583
  * An id that references an element in the same document from which data will be copied. If both this and `value` are
1538
1584
  * present, this value will take precedence. By default, the target element's `textContent` will be copied. To copy an
@@ -1563,6 +1609,18 @@ declare module "events/zn-filter-change" {
1563
1609
  }
1564
1610
  }
1565
1611
  }
1612
+ declare module "events/zn-search-change" {
1613
+ export type ZnSearchChangeEvent = CustomEvent<{
1614
+ value: string;
1615
+ formData: Record<string, any>;
1616
+ searchUri?: string;
1617
+ }>;
1618
+ global {
1619
+ interface GlobalEventHandlersEventMap {
1620
+ 'zn-search-change': ZnSearchChangeEvent;
1621
+ }
1622
+ }
1623
+ }
1566
1624
  declare module "components/data-table-filter/data-table-filter.component" {
1567
1625
  import { type CSSResultGroup, type PropertyValues } from 'lit';
1568
1626
  import ZincElement, { type ZincFormControl } from "internal/zinc-element";
@@ -1613,181 +1671,238 @@ declare module "components/data-table-filter/index" {
1613
1671
  }
1614
1672
  }
1615
1673
  }
1616
- declare module "components/empty-state/empty-state.component" {
1617
- import { type CSSResultGroup } from 'lit';
1674
+ declare module "components/input/input.component" {
1618
1675
  import ZincElement from "internal/zinc-element";
1676
+ import ZnIcon from "components/icon/index";
1677
+ import ZnTooltip from "components/tooltip/index";
1678
+ import type { ZincFormControl } from "internal/zinc-element";
1619
1679
  /**
1620
1680
  * @summary Short summary of the component's intended use.
1621
- * @documentation https://zinc.style/components/empty-state
1681
+ * @documentation https://zinc.style/components/input
1622
1682
  * @status experimental
1623
1683
  * @since 1.0
1624
1684
  *
1625
- * @dependency zn-example
1685
+ * @dependency zn-icon
1686
+ * @dependency zn-tooltip
1626
1687
  *
1627
- * @event zn-event-name - Emitted as an example.
1688
+ * @event zn-blur - Emitted when the control loses focus.
1689
+ * @event zn-change - Emitted when an alteration to the control's value is committed by the user.
1690
+ * @event zn-clear - Emitted when the clear button is activated.
1691
+ * @event zn-focus - Emitted when the control gains focus.
1692
+ * @event zn-input - Emitted when the control receives input.
1693
+ * @event zn-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.
1628
1694
  *
1629
- * @slot - The default slot.
1630
- * @slot example - An example slot.
1695
+ * @slot label - The input's label. Alternatively, you can use the `label` attribute.
1696
+ * @slot label-tooltip - Used to add text that is displayed in a tooltip next to the label. Alternatively, you can use the `label-tooltip` attribute.
1697
+ * @slot context-note - Used to add contextual text that is displayed above the input, on the right. Alternatively, you can use the `context-note` attribute.
1698
+ * @slot prefix - Used to prepend a presentational icon or similar element to the input.
1699
+ * @slot suffix - Used to append a presentational icon or similar element to the input.
1700
+ * @slot clear-icon - An icon to use in lieu of the default clear icon.
1701
+ * @slot show-password-icon - An icon to use in lieu of the default show password icon.
1702
+ * @slot hide-password-icon - An icon to use in lieu of the default hide password icon.
1703
+ * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.
1631
1704
  *
1705
+ * @csspart form-control - The form control that wraps the label, input, and help text.
1706
+ * @csspart form-control-label - The label's wrapper.
1707
+ * @csspart form-control-input - The input's wrapper.
1708
+ * @csspart form-control-help-text - The help text's wrapper.
1632
1709
  * @csspart base - The component's base wrapper.
1633
- *
1634
- * @cssproperty --example - An example CSS custom property.
1710
+ * @csspart input - The internal `<input>` control.
1711
+ * @csspart prefix - The container that wraps the prefix.
1712
+ * @csspart clear-button - The clear button.
1713
+ * @csspart password-toggle-button - The password toggle button.
1714
+ * @csspart suffix - The container that wraps the suffix.
1635
1715
  */
1636
- export default class ZnEmptyState extends ZincElement {
1637
- static styles: CSSResultGroup;
1638
- icon: string;
1639
- caption: string;
1640
- description: string;
1641
- type: 'error' | 'info' | 'primary' | '';
1642
- padded: boolean;
1716
+ export default class ZnInput extends ZincElement implements ZincFormControl {
1717
+ static styles: import("lit").CSSResult;
1718
+ static dependencies: {
1719
+ 'zn-icon': typeof ZnIcon;
1720
+ 'zn-tooltip': typeof ZnTooltip;
1721
+ };
1722
+ private readonly formControlController;
1643
1723
  private readonly hasSlotController;
1644
- render(): import("lit").TemplateResult<1>;
1645
- }
1646
- }
1647
- declare module "components/empty-state/index" {
1648
- import ZnEmptyState from "components/empty-state/empty-state.component";
1649
- export * from "components/empty-state/empty-state.component";
1650
- export default ZnEmptyState;
1651
- global {
1652
- interface HTMLElementTagNameMap {
1653
- 'zn-empty-state': ZnEmptyState;
1654
- }
1655
- }
1656
- }
1657
- declare module "components/hover-container/hover-container.component" {
1658
- import { type CSSResultGroup, type PropertyValues } from 'lit';
1659
- import ZincElement from "internal/zinc-element";
1660
- import type Popup from "components/popup/index";
1661
- /**
1662
- * @summary The HoverContainer component is used to display additional information when a user hovers over or clicks
1663
- * on an element.
1664
- *
1665
- * @documentation https://zinc.style/components/hover-container
1666
- * @status experimental
1667
- * @since 1.0
1668
- *
1669
- * @event zn-show - Emitted when the hover-container is shown.
1670
- * @event zn-after-show - Emitted after the hover-container is shown.
1671
- * @event zn-hide - Emitted when the hover-container is hidden.
1672
- * @event zn-after-hide - Emitted after the hover-container is hidden.
1673
- *
1674
- * @slot - The content of the hover-container
1675
- * @slot anchor - The anchor the hover-container is attached to.
1676
- */
1677
- export default class ZnHoverContainer extends ZincElement {
1678
- static styles: CSSResultGroup;
1679
- private hoverTimeout;
1680
- private closeWatcher;
1681
- defaultSlot: HTMLSlotElement;
1682
- body: HTMLElement;
1683
- popup: Popup;
1684
- content: string;
1685
- placement: 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end';
1686
- disabled: boolean;
1687
- distance: number;
1688
- open: boolean;
1689
- skidding: number;
1690
- trigger: string;
1691
- hoist: boolean;
1692
- constructor();
1693
- disconnectedCallback(): void;
1694
- protected firstUpdated(_changedProperties: PropertyValues): void;
1695
- private hasTrigger;
1696
- private handleBlur;
1697
- private handleClick;
1698
- private handleFocus;
1699
- private handleDocumentKeyDown;
1700
- private handleMouseOver;
1701
- private handleMouseOut;
1702
- handleOpenChange(): void;
1703
- handleOptionsChange(): Promise<void>;
1704
- handleDisabledChange(): void;
1705
- show(): Promise<void>;
1706
- hide(): void;
1707
- render(): import("lit").TemplateResult<1>;
1708
- }
1709
- }
1710
- declare module "components/hover-container/index" {
1711
- import ZnHoverContainer from "components/hover-container/hover-container.component";
1712
- export * from "components/hover-container/hover-container.component";
1713
- export default ZnHoverContainer;
1714
- global {
1715
- interface HTMLElementTagNameMap {
1716
- 'zn-hover-container': ZnHoverContainer;
1717
- }
1718
- }
1719
- }
1720
- declare module "components/skeleton/skeleton.component" {
1721
- import ZincElement from "internal/zinc-element";
1722
- import type { CSSResultGroup } from "lit";
1723
- /**
1724
- * @summary Short summary of the component's intended use.
1725
- * @documentation https://zinc.style/components/skeleton
1726
- * @status experimental
1727
- * @since 1.0
1728
- */
1729
- export default class ZnSkeleton extends ZincElement {
1730
- static styles: CSSResultGroup;
1731
- speed: string;
1732
- width: string;
1733
- height: string;
1734
- radius: string;
1735
- protected render(): unknown;
1736
- }
1737
- }
1738
- declare module "components/skeleton/index" {
1739
- import ZnSkeleton from "components/skeleton/skeleton.component";
1740
- export * from "components/skeleton/skeleton.component";
1741
- export default ZnSkeleton;
1742
- global {
1743
- interface HTMLElementTagNameMap {
1744
- 'zn-skeleton': ZnSkeleton;
1745
- }
1746
- }
1747
- }
1748
- declare module "components/style/style.component" {
1749
- import { type CSSResultGroup } from 'lit';
1750
- import ZincElement from "internal/zinc-element";
1751
- export default class ZnStyle extends ZincElement {
1752
- static styles: CSSResultGroup;
1753
1724
  private readonly localize;
1754
- color: string;
1755
- border: boolean;
1756
- error: boolean;
1757
- success: boolean;
1758
- info: boolean;
1759
- warning: boolean;
1760
- primary: boolean;
1761
- accent: boolean;
1762
- center: boolean;
1763
- display: null;
1764
- font: string;
1765
- width: string;
1766
- height: string;
1767
- pad: string;
1768
- margin: string;
1769
- autoMargin: string;
1770
- connectedCallback(): void;
1771
- createRenderRoot(): this;
1772
- }
1773
- }
1774
- declare module "components/style/index" {
1775
- import ZnStyle from "components/style/style.component";
1776
- export * from "components/style/style.component";
1777
- export default ZnStyle;
1778
- global {
1779
- interface HTMLElementTagNameMap {
1780
- 'zn-style': ZnStyle;
1781
- }
1782
- }
1783
- }
1784
- declare module "components/data-select/providers/country-data-provider" {
1785
- import type { DataProviderOption, LocalDataProvider } from "components/data-select/providers/provider";
1786
- export const countryDataProvider: LocalDataProvider<DataProviderOption>;
1787
- }
1788
- declare module "components/data-select/providers/currency-data-provider" {
1789
- import type { DataProviderOption, LocalDataProvider } from "components/data-select/providers/provider";
1790
- export const currencyDataProvider: LocalDataProvider<DataProviderOption>;
1725
+ input: HTMLInputElement;
1726
+ colorPicker: HTMLInputElement;
1727
+ private hasFocus;
1728
+ private isUserTyping;
1729
+ title: string;
1730
+ private __numberInput;
1731
+ private __dateInput;
1732
+ /**
1733
+ * The type of input. Works the same as native `<input>` element. But only a subset of types is supported. Defaults
1734
+ * to `text`
1735
+ */
1736
+ type: 'color' | 'currency' | 'date' | 'datetime-local' | 'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'time' | 'url';
1737
+ /** The name of the input, submitted as a name/value pair with form data. */
1738
+ name: string;
1739
+ /** The current value of the input, submitted as a name/value pair with form data. */
1740
+ value: any;
1741
+ /** The default value of the form control. Primarily used for resetting the form control. */
1742
+ defaultValue: string;
1743
+ /** The inputs size **/
1744
+ size: 'x-small' | 'small' | 'medium' | 'large';
1745
+ /** Draws a pill-styled input **/
1746
+ pill: boolean;
1747
+ /** The inputs label. If you need to display HTML, use the `label` slot. **/
1748
+ label: string;
1749
+ /** Text that appears in a tooltip next to the label. If you need to display HTML in the tooltip, use the
1750
+ * `label-tooltip` slot.
1751
+ * **/
1752
+ labelTooltip: string;
1753
+ /**
1754
+ * Text that appears above the input, on the right, to add additional context. If you need to display HTML
1755
+ * in this text, use the `context-note` slot instead
1756
+ */
1757
+ contextNote: string;
1758
+ /** The input's help text. If you need to display HTML, use the `help-text` slot instead. **/
1759
+ helpText: string;
1760
+ /** Adds a clear button when the input is not empty **/
1761
+ clearable: boolean;
1762
+ /** Adds the default optional icon for this input type. Currently only types `email` and `tel` have a default
1763
+ * optional icon.
1764
+ */
1765
+ optionalIcon: boolean;
1766
+ /** Disables the input **/
1767
+ disabled: boolean;
1768
+ /** Fills the input background white **/
1769
+ filled: boolean;
1770
+ /** Placeholder text to show as a hint when the input is empty. */
1771
+ placeholder: string;
1772
+ /** Makes the input read-only **/
1773
+ readonly: boolean;
1774
+ /** Adds a button to toggle the passwords visibility, only applies to password types **/
1775
+ passwordToggle: boolean;
1776
+ /** Determines whether or no the password is currently visible. Only applies to password types **/
1777
+ passwordVisible: boolean;
1778
+ /** Hides the browsers built-in increment/decrement spin buttons for number inputs **/
1779
+ noSpinButtons: boolean;
1780
+ /** The color format to display for color inputs. Only applies when type is 'color'. **/
1781
+ colorFormat: 'hex' | 'rgb' | 'hsl' | 'oklch';
1782
+ /**
1783
+ * By default, form-controls are associated with the nearest containing `<form>` element. This attribute allows you
1784
+ * to place the form control outside a form and associate it with the form that has this `id`. The form must be
1785
+ * in the same document or shadow root for this to work.
1786
+ */
1787
+ form: string;
1788
+ /** Makes the input a required field. */
1789
+ required: boolean;
1790
+ /** A regular expression pattern to validate input against. */
1791
+ pattern: string;
1792
+ /** The minimum length of input that will be considered valid. */
1793
+ minlength: number;
1794
+ /** The maximum length of input that will be considered valid. */
1795
+ maxlength: number;
1796
+ /** The input's minimum value. Only applies to date and number input types. */
1797
+ min: number | string;
1798
+ /** The input's maximum value. Only applies to date and number input types. */
1799
+ max: number | string;
1800
+ /**
1801
+ * Specifies the granularity that the value must adhere to, or the special value `any` which means no stepping is
1802
+ * implied, allowing any numeric value. Only applies to date and number input types.
1803
+ */
1804
+ step: number | 'any';
1805
+ /** Controls whether and how text input is automatically capitalized as it is entered by the user. */
1806
+ autocapitalize: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';
1807
+ /** Indicates whether the browser's autocorrect feature is on or off. */
1808
+ autocorrect: 'off' | 'on';
1809
+ /**
1810
+ * Specifies what permission the browser has to provide assistance in filling out form field values. Refer to
1811
+ * [this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.
1812
+ */
1813
+ autocomplete: string;
1814
+ /** Indicates that the input should receive focus on page load. */
1815
+ autofocus: boolean;
1816
+ /** Used to customize the label or icon of the Enter key on virtual keyboards. */
1817
+ enterkeyhint: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
1818
+ /** Enables spell checking on the input. */
1819
+ spellcheck: boolean;
1820
+ /**
1821
+ * Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual
1822
+ * keyboard on supportive devices.
1823
+ */
1824
+ inputmode: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
1825
+ /**
1826
+ * Gets or sets the current value as `date` object. Returns `null` if the value can't be converted. This will use
1827
+ * the native `<input type="{{type}}">` implementation and may result in an error.
1828
+ */
1829
+ get valueAsDate(): Date | null;
1830
+ set valueAsDate(newValue: Date | null);
1831
+ /** Gets or sets the current value as a number. Return `null` if the value can't be converted. */
1832
+ get valueAsNumber(): number;
1833
+ set valueAsNumber(newValue: number);
1834
+ /** Gets the validity state object */
1835
+ get validity(): ValidityState;
1836
+ /** Gets the validation message */
1837
+ get validationMessage(): string;
1838
+ private validateMinMax;
1839
+ private hexToRgb;
1840
+ private rgbToHex;
1841
+ private hexToOklch;
1842
+ private oklchToHex;
1843
+ private hexToHsl;
1844
+ private hslToHex;
1845
+ private convertToHex;
1846
+ private convertFromHex;
1847
+ private handleBlur;
1848
+ private handleChange;
1849
+ private handleClearClick;
1850
+ private handleFocus;
1851
+ private handleInput;
1852
+ private handleInvalid;
1853
+ private handleKeyDown;
1854
+ private handlePasswordToggle;
1855
+ private handleColorSwatchClick;
1856
+ private handleColorPickerChange;
1857
+ private focusInput;
1858
+ handleDisabledChange(): void;
1859
+ handleStepChange(): void;
1860
+ handleValueChange(): Promise<void>;
1861
+ handleColorFormatChange(): Promise<void>;
1862
+ /** Sets focus on the input. */
1863
+ focus(options?: FocusOptions): void;
1864
+ /** Removes focus from the input. */
1865
+ blur(): void;
1866
+ /** Selects all the text in the input. */
1867
+ select(): void;
1868
+ /** Sets the start and end positions of the text selection (0-based). */
1869
+ setSelectionRange(selectionStart: number, selectionEnd: number, selectionDirection?: 'forward' | 'backward' | 'none'): void;
1870
+ /** Replaces a range of text with a new string. */
1871
+ setRangeText(replacement: string, start?: number, end?: number, selectMode?: 'select' | 'start' | 'end' | 'preserve'): void;
1872
+ /** Displays the browser picker for an input element (only works if the browser supports it for the input type). */
1873
+ showPicker(): void;
1874
+ /** Increments the value of a numeric input type by the value of the step attribute. */
1875
+ stepUp(): void;
1876
+ /** Decrements the value of a numeric input type by the value of the step attribute. */
1877
+ stepDown(): void;
1878
+ /** Checks the validity but does not show a validation message. Returns `true` when valid and `false` when invalid. */
1879
+ checkValidity(): boolean;
1880
+ /** Gets the associated form, if one exists. */
1881
+ getForm(): HTMLFormElement | null;
1882
+ /** Checks for validity and shows the browser's validation message if the control is invalid. */
1883
+ reportValidity(): boolean;
1884
+ /** Sets a custom validation message. Pass an empty string to restore validity. */
1885
+ setCustomValidity(message: string): void;
1886
+ render(): import("lit").TemplateResult<1>;
1887
+ }
1888
+ }
1889
+ declare module "components/input/index" {
1890
+ import ZnInput from "components/input/input.component";
1891
+ export * from "components/input/input.component";
1892
+ export default ZnInput;
1893
+ global {
1894
+ interface HTMLElementTagNameMap {
1895
+ 'zn-input': ZnInput;
1896
+ }
1897
+ }
1898
+ }
1899
+ declare module "components/data-select/providers/country-data-provider" {
1900
+ import type { DataProviderOption, LocalDataProvider } from "components/data-select/providers/provider";
1901
+ export const countryDataProvider: LocalDataProvider<DataProviderOption>;
1902
+ }
1903
+ declare module "components/data-select/providers/currency-data-provider" {
1904
+ import type { DataProviderOption, LocalDataProvider } from "components/data-select/providers/provider";
1905
+ export const currencyDataProvider: (allowCommon?: boolean) => LocalDataProvider<DataProviderOption>;
1791
1906
  }
1792
1907
  declare module "components/data-select/providers/color-data-provider" {
1793
1908
  import type { DataProviderOption, LocalDataProvider } from "components/data-select/providers/provider";
@@ -1798,6 +1913,10 @@ declare module "components/data-select/providers/country-code-data-provider" {
1798
1913
  import type { DataProviderOption, LocalDataProvider } from "components/data-select/providers/provider";
1799
1914
  export const countryDialPrefixDataProvider: LocalDataProvider<DataProviderOption>;
1800
1915
  }
1916
+ declare module "components/data-select/providers/us-state-data-provider" {
1917
+ import type { DataProviderOption, LocalDataProvider } from "components/data-select/providers/provider";
1918
+ export const usStateDataProvider: LocalDataProvider<DataProviderOption>;
1919
+ }
1801
1920
  declare module "components/data-select/providers/provider" {
1802
1921
  import type { HTMLTemplateResult } from "lit";
1803
1922
  /**
@@ -1822,64 +1941,7 @@ declare module "components/data-select/providers/provider" {
1822
1941
  export * from "components/data-select/providers/currency-data-provider";
1823
1942
  export * from "components/data-select/providers/color-data-provider";
1824
1943
  export * from "components/data-select/providers/country-code-data-provider";
1825
- }
1826
- declare module "internal/animate" {
1827
- /**
1828
- * Animates an element using keyframes. Returns a promise that resolves after the animation completes or gets canceled.
1829
- */
1830
- export function animateTo(el: HTMLElement, keyframes: Keyframe[], options?: KeyframeAnimationOptions): Promise<unknown>;
1831
- /** Parses a CSS duration and returns the number of milliseconds. */
1832
- export function parseDuration(delay: number | string): number;
1833
- /** Tells if the user has enabled the "reduced motion" setting in their browser or OS. */
1834
- export function prefersReducedMotion(): boolean;
1835
- /**
1836
- * Stops all active animations on the target element. Returns a promise that resolves after all animations are canceled.
1837
- */
1838
- export function stopAnimations(el: HTMLElement): Promise<unknown[]>;
1839
- /**
1840
- * We can't animate `height: auto`, but we can calculate the height and shim keyframes by replacing it with the
1841
- * element's scrollHeight before the animation.
1842
- */
1843
- export function shimKeyframesHeightAuto(keyframes: Keyframe[], calculatedHeight: number): {
1844
- height: string | number | null | undefined;
1845
- composite?: CompositeOperationOrAuto;
1846
- easing?: string;
1847
- offset?: number | null;
1848
- }[];
1849
- }
1850
- declare module "utilities/animation-registry" {
1851
- export interface ElementAnimation {
1852
- keyframes: Keyframe[];
1853
- rtlKeyframes?: Keyframe[];
1854
- options?: KeyframeAnimationOptions;
1855
- }
1856
- export interface ElementAnimationMap {
1857
- [animationName: string]: ElementAnimation;
1858
- }
1859
- export interface GetAnimationOptions {
1860
- /**
1861
- * The component's directionality. When set to "rtl", `rtlKeyframes` will be preferred over `keyframes` where
1862
- * available using getAnimation().
1863
- */
1864
- dir: string;
1865
- }
1866
- /**
1867
- * Sets a default animation. Components should use the `name.animation` for primary animations and `name.part.animation`
1868
- * for secondary animations, e.g. `dialog.show` and `dialog.overlay.show`. For modifiers, use `drawer.showTop`.
1869
- */
1870
- export function setDefaultAnimation(animationName: string, animation: ElementAnimation | null): void;
1871
- /** Sets a custom animation for the specified element. */
1872
- export function setAnimation(el: Element, animationName: string, animation: ElementAnimation | null): void;
1873
- /** Gets an element's animation. Falls back to the default if no animation is found. */
1874
- export function getAnimation(el: Element, animationName: string, options: GetAnimationOptions): ElementAnimation;
1875
- }
1876
- declare module "events/zn-remove" {
1877
- export type ZnRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
1878
- global {
1879
- interface GlobalEventHandlersEventMap {
1880
- 'zn-remove': ZnRemoveEvent;
1881
- }
1882
- }
1944
+ export * from "components/data-select/providers/us-state-data-provider";
1883
1945
  }
1884
1946
  declare module "components/option/option.component" {
1885
1947
  import { type CSSResultGroup } from 'lit';
@@ -1916,8 +1978,7 @@ declare module "components/option/option.component" {
1916
1978
  hasHover: boolean;
1917
1979
  /**
1918
1980
  * The option's value. When selected, the containing form control will receive this value. The value must be unique
1919
- * from other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing
1920
- * multiple values.
1981
+ * from other options in the same group. Values may contain spaces when using JSON array syntax on the parent select.
1921
1982
  */
1922
1983
  value: string;
1923
1984
  /** Draws the option in a disabled state, preventing selection. */
@@ -1929,7 +1990,6 @@ declare module "components/option/option.component" {
1929
1990
  private handleMouseLeave;
1930
1991
  handleDisabledChange(): void;
1931
1992
  handleSelectedChange(): void;
1932
- handleValueChange(): void;
1933
1993
  /** Returns a plain text label based on the option's content. */
1934
1994
  getTextLabel(): string;
1935
1995
  render(): import("lit").TemplateResult<1>;
@@ -1945,45 +2005,150 @@ declare module "components/option/index" {
1945
2005
  }
1946
2006
  }
1947
2007
  }
1948
- declare module "components/select/select.component" {
1949
- import { FormControlController } from "internal/form";
1950
- import ZincElement from "internal/zinc-element";
1951
- import ZnChip from "components/chip/index";
1952
- import ZnIcon from "components/icon/index";
1953
- import ZnPopup from "components/popup/index";
1954
- import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
1955
- import type { ZincFormControl } from "internal/zinc-element";
1956
- import type ZnOption from "components/option/index";
2008
+ declare module "internal/animate" {
1957
2009
  /**
1958
- * @summary Short summary of the component's intended use.
1959
- * @documentation https://zinc.style/components/select
1960
- * @status experimental
1961
- * @since 1.0
1962
- *
1963
- * @dependency zn-icon
1964
- * @dependency zn-popup
1965
- * @dependency zn-tag
1966
- *
1967
- * @slot - The listbox options. Must be `<zn-option>` elements. You can use `<zn-divider>` to group items visually.
1968
- * @slot label - The input's label. Alternatively, you can use the `label` attribute.
1969
- * @slot label-tooltip - Used to add text that is displayed in a tooltip next to the label. Alternatively, you can use the `label-tooltip` attribute.
1970
- * @slot context-note - Used to add contextual text that is displayed above the select, on the right. Alternatively, you can use the `context-note` attribute.
1971
- * @slot prefix - Used to prepend a presentational icon or similar element to the combobox.
1972
- * @slot clear-icon - An icon to use in lieu of the default clear icon.
1973
- * @slot expand-icon - The icon to show when the control is expanded and collapsed. Rotates on open and close.
1974
- * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.
1975
- *
1976
- * @event zn-change - Emitted when the control's value changes.
1977
- * @event zn-clear - Emitted when the control's value is cleared.
1978
- * @event zn-input - Emitted when the control receives input.
1979
- * @event zn-focus - Emitted when the control gains focus.
1980
- * @event zn-blur - Emitted when the control loses focus.
2010
+ * Animates an element using keyframes. Returns a promise that resolves after the animation completes or gets canceled.
2011
+ */
2012
+ export function animateTo(el: HTMLElement, keyframes: Keyframe[], options?: KeyframeAnimationOptions): Promise<unknown>;
2013
+ /** Parses a CSS duration and returns the number of milliseconds. */
2014
+ export function parseDuration(delay: number | string): number;
2015
+ /** Tells if the user has enabled the "reduced motion" setting in their browser or OS. */
2016
+ export function prefersReducedMotion(): boolean;
2017
+ /**
2018
+ * Stops all active animations on the target element. Returns a promise that resolves after all animations are canceled.
2019
+ */
2020
+ export function stopAnimations(el: HTMLElement): Promise<unknown[]>;
2021
+ /**
2022
+ * We can't animate `height: auto`, but we can calculate the height and shim keyframes by replacing it with the
2023
+ * element's scrollHeight before the animation.
2024
+ */
2025
+ export function shimKeyframesHeightAuto(keyframes: Keyframe[], calculatedHeight: number): {
2026
+ height: string | number | null | undefined;
2027
+ composite?: CompositeOperationOrAuto;
2028
+ easing?: string;
2029
+ offset?: number | null;
2030
+ }[];
2031
+ }
2032
+ declare module "utilities/animation-registry" {
2033
+ export interface ElementAnimation {
2034
+ keyframes: Keyframe[];
2035
+ rtlKeyframes?: Keyframe[];
2036
+ options?: KeyframeAnimationOptions;
2037
+ }
2038
+ export interface ElementAnimationMap {
2039
+ [animationName: string]: ElementAnimation;
2040
+ }
2041
+ export interface GetAnimationOptions {
2042
+ /**
2043
+ * The component's directionality. When set to "rtl", `rtlKeyframes` will be preferred over `keyframes` where
2044
+ * available using getAnimation().
2045
+ */
2046
+ dir: string;
2047
+ }
2048
+ /**
2049
+ * Sets a default animation. Components should use the `name.animation` for primary animations and `name.part.animation`
2050
+ * for secondary animations, e.g. `dialog.show` and `dialog.overlay.show`. For modifiers, use `drawer.showTop`.
2051
+ */
2052
+ export function setDefaultAnimation(animationName: string, animation: ElementAnimation | null): void;
2053
+ /** Sets a custom animation for the specified element. */
2054
+ export function setAnimation(el: Element, animationName: string, animation: ElementAnimation | null): void;
2055
+ /** Gets an element's animation. Falls back to the default if no animation is found. */
2056
+ export function getAnimation(el: Element, animationName: string, options: GetAnimationOptions): ElementAnimation;
2057
+ }
2058
+ declare module "components/opt-group/opt-group.component" {
2059
+ import { type CSSResultGroup } from 'lit';
2060
+ import ZincElement from "internal/zinc-element";
2061
+ /**
2062
+ * @summary Groups options within a `<zn-select>` under a labeled header, similar to `<optgroup>` in native HTML.
2063
+ * @documentation https://zinc.style/components/opt-group
2064
+ * @status experimental
2065
+ * @since 1.0
2066
+ *
2067
+ * @slot - The default slot for `<zn-option>` elements.
2068
+ *
2069
+ * @csspart base - The component's base wrapper.
2070
+ * @csspart label - The group label element.
2071
+ */
2072
+ export default class ZnOptGroup extends ZincElement {
2073
+ static styles: CSSResultGroup;
2074
+ /** The label for the opt-group, displayed as a non-selectable header above the grouped options. */
2075
+ label: string;
2076
+ /** Disables all options within the group. */
2077
+ disabled: boolean;
2078
+ connectedCallback(): void;
2079
+ handleLabelChange(): void;
2080
+ handleDisabledChange(): void;
2081
+ /** @internal - Updates visibility of the group based on whether any child options are visible. */
2082
+ updateVisibility(): void;
2083
+ render(): import("lit").TemplateResult<1>;
2084
+ private handleSlotChange;
2085
+ private propagateDisabled;
2086
+ }
2087
+ }
2088
+ declare module "components/opt-group/index" {
2089
+ import ZnOptGroup from "components/opt-group/opt-group.component";
2090
+ export * from "components/opt-group/opt-group.component";
2091
+ export default ZnOptGroup;
2092
+ global {
2093
+ interface HTMLElementTagNameMap {
2094
+ 'zn-opt-group': ZnOptGroup;
2095
+ }
2096
+ }
2097
+ }
2098
+ declare module "events/zn-remove" {
2099
+ export type ZnRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
2100
+ global {
2101
+ interface GlobalEventHandlersEventMap {
2102
+ 'zn-remove': ZnRemoveEvent;
2103
+ }
2104
+ }
2105
+ }
2106
+ declare module "components/select/select.component" {
2107
+ import { FormControlController } from "internal/form";
2108
+ import ZincElement from "internal/zinc-element";
2109
+ import ZnChip from "components/chip/index";
2110
+ import ZnIcon from "components/icon/index";
2111
+ import ZnOptGroup from "components/opt-group/index";
2112
+ import ZnOption from "components/option/index";
2113
+ import ZnPopup from "components/popup/index";
2114
+ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
2115
+ import type { ZincFormControl } from "internal/zinc-element";
2116
+ /**
2117
+ * @summary Short summary of the component's intended use.
2118
+ * @documentation https://zinc.style/components/select
2119
+ * @status experimental
2120
+ * @since 1.0
2121
+ *
2122
+ * @dependency zn-icon
2123
+ * @dependency zn-opt-group
2124
+ * @dependency zn-option
2125
+ * @dependency zn-popup
2126
+ * @dependency zn-tag
2127
+ *
2128
+ * @slot - The listbox options. Must be `<zn-option>` elements. You can use `<zn-opt-group>` to group options under a labeled header, or `<zn-divider>` to group items visually.
2129
+ * @slot label - The input's label. Alternatively, you can use the `label` attribute.
2130
+ * @slot label-tooltip - Used to add text that is displayed in a tooltip next to the label. Alternatively, you can use the `label-tooltip` attribute.
2131
+ * @slot context-note - Used to add contextual text that is displayed above the select, on the right. Alternatively, you can use the `context-note` attribute.
2132
+ * @slot prefix - Used to prepend a presentational icon or similar element to the combobox.
2133
+ * @slot clear-icon - An icon to use in lieu of the default clear icon.
2134
+ * @slot expand-icon - The icon to show when the control is expanded and collapsed. Rotates on open and close.
2135
+ * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.
2136
+ *
2137
+ * @event zn-change - Emitted when the control's value changes.
2138
+ * @event zn-clear - Emitted when the control's value is cleared.
2139
+ * @event zn-input - Emitted when the control receives input.
2140
+ * @event zn-focus - Emitted when the control gains focus.
2141
+ * @event zn-blur - Emitted when the control loses focus.
1981
2142
  * @event zn-show - Emitted when the select's menu opens.
1982
2143
  * @event zn-after-show - Emitted after the select's menu opens and all animations are complete.
1983
2144
  * @event zn-hide - Emitted when the select's menu closes.
1984
2145
  * @event zn-after-hide - Emitted after the select's menu closes and all animations are complete.
1985
2146
  * @event zn-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.
2147
+ * @event zn-load - Emitted when options have been successfully loaded from the `src` URL.
2148
+ * @event zn-error - Emitted when loading options from the `src` URL fails.
1986
2149
  *
2150
+ * @csspart search-loading - The container shown while a remote search request is in flight.
2151
+ * @csspart max-results-indicator - The message shown when results are truncated by `max-results`.
1987
2152
  * @csspart form-control - The form control that wraps the label, input, and help text.
1988
2153
  * @csspart form-control-label - The label's wrapper.
1989
2154
  * @csspart form-control-input - The select's wrapper.
@@ -2005,6 +2170,8 @@ declare module "components/select/select.component" {
2005
2170
  static styles: CSSResultGroup;
2006
2171
  static dependencies: {
2007
2172
  'zn-icon': typeof ZnIcon;
2173
+ 'zn-opt-group': typeof ZnOptGroup;
2174
+ 'zn-option': typeof ZnOption;
2008
2175
  'zn-popup': typeof ZnPopup;
2009
2176
  'zn-tag': typeof ZnChip;
2010
2177
  };
@@ -2026,14 +2193,44 @@ declare module "components/select/select.component" {
2026
2193
  selectedOptions: ZnOption[];
2027
2194
  private valueHasChanged;
2028
2195
  private inputPrefix;
2196
+ /** @internal - current search/filter text when search is enabled (lowercased for matching) */
2197
+ private _searchQuery;
2198
+ /** @internal - raw display value of the search input (preserves case for the input field) */
2199
+ private _searchDisplayValue;
2200
+ /** @internal - whether the "no matching options" empty state is visible */
2201
+ private _noResultsVisible;
2202
+ /** @internal */
2203
+ private _fetchedOptions;
2204
+ /** @internal */
2205
+ private _fetchLoading;
2206
+ /** @internal */
2207
+ private _fetchError;
2208
+ /** @internal */
2209
+ private _fetchAbortController;
2210
+ /** @internal - debounce timer for remote search */
2211
+ private _searchDebounceTimer;
2212
+ /** @internal - whether a remote search fetch is in progress (distinct from initial load) */
2213
+ private _searchLoading;
2214
+ /** @internal - the query string of the last successful remote search */
2215
+ private _lastRemoteQuery;
2216
+ /** @internal - whether the last remote result set was exhaustive (fewer than maxResults returned) */
2217
+ private _lastRemoteExhaustive;
2218
+ /** @internal - total number of results before maxResults truncation (0 = not truncated) */
2219
+ private _totalResultCount;
2220
+ /**
2221
+ * @internal - tracks selected items by key/value during remote search so they survive
2222
+ * when search results replace the fetched options list.
2223
+ */
2224
+ private _selectedRemoteItems;
2029
2225
  /** The name of the select, submitted as a name/value pair with form data. */
2030
2226
  name: string;
2227
+ nonRemovable: boolean;
2031
2228
  private _value;
2032
2229
  get value(): string | string[];
2033
2230
  /**
2034
2231
  * The current value of the select, submitted as a name/value pair with form data. When `multiple` is enabled, the
2035
- * value attribute will be a space-delimited list of values based on the options selected, and the value property will
2036
- * be an array. **For this reason, values must not contain spaces.**
2232
+ * value property will be an array. Values may contain spaces when using JSON array syntax in the attribute,
2233
+ * e.g. `value='["my value", "their value"]'`. Space-delimited strings are still supported for backward compatibility.
2037
2234
  */
2038
2235
  set value(val: string | string[]);
2039
2236
  /** The default value of the form control. Primarily used for resetting the form control. */
@@ -2067,6 +2264,8 @@ declare module "components/select/select.component" {
2067
2264
  hoist: boolean;
2068
2265
  /** Draws a pill-style select with rounded edges. */
2069
2266
  pill: boolean;
2267
+ /** Enables search/filter functionality. When enabled, the user can type into the select to filter the visible options. */
2268
+ search: boolean;
2070
2269
  /** The select's label. If you need to display HTML, use the `label` slot instead. */
2071
2270
  label: string;
2072
2271
  /** Text that appears in a tooltip next to the label. If you need to display HTML in the tooltip, use the `label-tooltip` slot instead. */
@@ -2096,13 +2295,47 @@ declare module "components/select/select.component" {
2096
2295
  * the specified value.
2097
2296
  */
2098
2297
  getTag: (option: ZnOption, index: number) => TemplateResult | string | HTMLElement;
2298
+ /** Automatically select the first option if no value is set. */
2299
+ selectFirst: boolean;
2099
2300
  distinct: string;
2100
2301
  conditional: string;
2302
+ /**
2303
+ * The URL to fetch options from. When set, the component fetches JSON from this URL and renders the results as
2304
+ * options. The expected format is an array of objects with `key` and `value` properties:
2305
+ * `[{"key": "us", "value": "United States"}, ...]`
2306
+ * When not set, the component works exactly as before using slotted `<zn-option>` elements.
2307
+ */
2308
+ dataUri: string;
2309
+ /**
2310
+ * Context data to send as a header when fetching options from the URL specified by the `src` property.
2311
+ */
2312
+ contextData: string;
2313
+ /**
2314
+ * The maximum number of options to display from a remote fetch response. Set to 0 for unlimited.
2315
+ * Only applies when fetching from `data-uri`.
2316
+ */
2317
+ maxResults: number;
2318
+ /**
2319
+ * Debounce delay in milliseconds for remote search requests. The component waits this long after the user
2320
+ * stops typing before sending a request.
2321
+ */
2322
+ searchDebounce: number;
2323
+ /**
2324
+ * The query parameter name appended to the `data-uri` URL for remote search requests.
2325
+ * Defaults to `"q"`, e.g. `/api/items?q=search+term`. Set to a custom value like `"search"` or `"filter"` to match your API.
2326
+ */
2327
+ searchParam: string;
2328
+ /**
2329
+ * When set alongside `search` and `data-uri`, the component will not fetch options on initial load.
2330
+ * Options are only fetched when the user starts typing a search query.
2331
+ */
2332
+ searchOnly: boolean;
2101
2333
  /** Gets the validity state object */
2102
2334
  get validity(): ValidityState;
2103
2335
  /** Gets the validation message */
2104
2336
  get validationMessage(): string;
2105
2337
  connectedCallback(): void;
2338
+ disconnectedCallback(): void;
2106
2339
  private updateHasInputPrefix;
2107
2340
  private addOpenListeners;
2108
2341
  private removeOpenListeners;
@@ -2116,19 +2349,50 @@ declare module "components/select/select.component" {
2116
2349
  private handleComboboxKeyDown;
2117
2350
  private handleClearClick;
2118
2351
  private handleClearMouseDown;
2352
+ /** Whether the component is in remote-search mode (search + dataUri both set) */
2353
+ private get _isRemoteSearch();
2354
+ /** Handles text input on the display input for search/filter mode */
2355
+ private handleSearchInput;
2356
+ /** Filters visible options based on the current search query */
2357
+ private filterOptions;
2358
+ /** Clears the search query and shows all options */
2359
+ private clearSearch;
2119
2360
  private handleOptionClick;
2120
2361
  private handleDefaultSlotChange;
2121
2362
  private handleTagRemove;
2122
2363
  private getAllOptions;
2364
+ private getAllOptGroups;
2365
+ private getVisibleOptions;
2123
2366
  getFirstOption(): ZnOption | null;
2124
2367
  private setCurrentOption;
2125
2368
  private setSelectedOptions;
2126
2369
  private toggleOptionSelection;
2127
2370
  private selectionChanged;
2128
2371
  protected get tags(): TemplateResult<1>[];
2372
+ /**
2373
+ * Renders hidden <zn-option> elements for items that are currently selected but not present in
2374
+ * the latest `_fetchedOptions` (e.g. because a remote search narrowed the results). This keeps
2375
+ * them in the DOM so `handleDefaultSlotChange` can find and re-select them.
2376
+ */
2377
+ private _renderSelectedRemoteItems;
2129
2378
  private handleInvalid;
2130
2379
  protected firstUpdated(_changedProperties: PropertyValues): void;
2131
2380
  handleDisabledChange(): void;
2381
+ handleSrcChange(): void;
2382
+ private _handleFetchError;
2383
+ /** Builds the localStorage cache key for a given search query */
2384
+ private _buildCacheKey;
2385
+ /** Reads cached results from localStorage */
2386
+ private _readCache;
2387
+ /** Writes results to localStorage cache */
2388
+ private _writeCache;
2389
+ /**
2390
+ * Parses raw JSON data into the internal fetched-options format.
2391
+ * Applies `maxResults` limiting to flat option arrays.
2392
+ */
2393
+ private _parseOptions;
2394
+ /** Fetches options from the URL specified by the `data-uri` property. Optionally appends a search query. */
2395
+ fetchOptions(searchQuery?: string): Promise<void>;
2132
2396
  attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null): void;
2133
2397
  handleValueChange(): void;
2134
2398
  handleOpenChange(): Promise<void>;
@@ -2148,6 +2412,9 @@ declare module "components/select/select.component" {
2148
2412
  focus(options?: FocusOptions): void;
2149
2413
  /** Removes focus from the control. */
2150
2414
  blur(): void;
2415
+ private updateDependencies;
2416
+ private updateDependencyState;
2417
+ private toggleDisabled;
2151
2418
  render(): TemplateResult<1>;
2152
2419
  }
2153
2420
  }
@@ -2166,35 +2433,46 @@ declare module "components/data-select/data-select.component" {
2166
2433
  import { type CSSResultGroup, type PropertyValues } from 'lit';
2167
2434
  import { FormControlController } from "internal/form";
2168
2435
  import ZincElement from "internal/zinc-element";
2436
+ import ZnOption from "components/option/index";
2437
+ import ZnSelect from "components/select/index";
2169
2438
  import type { ZincFormControl } from "internal/zinc-element";
2170
- import type ZnSelect from "components/select/index";
2171
2439
  /**
2172
- * @summary Short summary of the component's intended use.
2440
+ * @summary A select component with built-in data providers for common options like colors, currencies, and countries.
2173
2441
  * @documentation https://zinc.style/components/data-select
2174
2442
  * @status experimental
2175
2443
  * @since 1.0
2176
2444
  *
2177
- * @dependency zn-example
2178
- *
2179
- * @event zn-event-name - Emitted as an example.
2445
+ * @dependency zn-select
2446
+ * @dependency zn-option
2180
2447
  *
2181
- * @slot - The default slot.
2182
- * @slot example - An example slot.
2448
+ * @event zn-input - Emitted when the select's value changes.
2449
+ * @event zn-clear - Emitted when the clear button is activated.
2450
+ * @event blur - Emitted when the select loses focus.
2183
2451
  *
2184
- * @csspart base - The component's base wrapper.
2452
+ * @slot label - The select's label. Alternatively, you can use the `label` attribute.
2453
+ * @slot label-tooltip - Used to add text that is displayed in a tooltip next to the label. Alternatively, you can use the `label-tooltip` attribute.
2454
+ * @slot context-note - Used to add contextual text that is displayed above the select, on the right. Alternatively, you can use the `context-note` attribute.
2455
+ * @slot help-text - Text that describes how to use the select. Alternatively, you can use the `help-text` attribute.
2185
2456
  *
2186
- * @cssproperty --example - An example CSS custom property.
2457
+ * @csspart combobox - The container that wraps the prefix, combobox, clear icon, and expand button (forwarded from zn-select).
2458
+ * @csspart expand-icon - The container that wraps the expand icon (forwarded from zn-select).
2459
+ * @csspart form-control-help-text - The help text's wrapper (forwarded from zn-select).
2460
+ * @csspart form-control-input - The select's wrapper (forwarded from zn-select).
2461
+ * @csspart display-input - The element that displays the selected option's label (forwarded from zn-select).
2187
2462
  */
2188
2463
  export default class ZnDataSelect extends ZincElement implements ZincFormControl {
2189
2464
  static styles: CSSResultGroup;
2465
+ static dependencies: {
2466
+ 'zn-select': typeof ZnSelect;
2467
+ 'zn-option': typeof ZnOption;
2468
+ };
2190
2469
  select: ZnSelect;
2191
- selectPrefix: HTMLElement;
2192
2470
  /** The name of the select. Used for form submission. */
2193
2471
  name: string;
2194
- /** The value of the select. Used for form submission. */
2195
- value: string;
2472
+ /** The value of the select. Used for form submission. When `multiple` is enabled, this is an array of strings. */
2473
+ value: string | string[];
2196
2474
  /** The provider of the select. */
2197
- provider: 'color' | 'currency' | 'country' | 'phone';
2475
+ provider: 'color' | 'currency' | 'country' | 'phone' | 'us-state';
2198
2476
  /** The position of the icon. */
2199
2477
  iconPosition: 'start' | 'end' | 'none';
2200
2478
  /** An array of keys to use for filtering the options in the selected provider. */
@@ -2205,6 +2483,8 @@ declare module "components/data-select/data-select.component" {
2205
2483
  clearable: boolean;
2206
2484
  /** Include an "All" option at the top. */
2207
2485
  allowAll: boolean;
2486
+ /** Include a "Common" option that selects multiple common currencies. */
2487
+ allowCommon: boolean;
2208
2488
  /** The selects label. If you need to display HTML, use the `label` slot instead. */
2209
2489
  label: string;
2210
2490
  /** Text that appears in a tooltip next to the label. If you need to display HTML in the tooltip, use the `label-tooltip` slot instead. */
@@ -2220,15 +2500,22 @@ declare module "components/data-select/data-select.component" {
2220
2500
  helpText: string;
2221
2501
  /** The selects required attribute. */
2222
2502
  required: boolean;
2503
+ /** Disables the select. */
2504
+ disabled: boolean;
2223
2505
  iconOnly: boolean;
2224
2506
  multiple: boolean;
2507
+ selectFirst: boolean;
2508
+ distinct: string;
2509
+ conditional: string;
2225
2510
  protected readonly formControlController: FormControlController;
2511
+ private selectObserver?;
2226
2512
  get validationMessage(): string;
2227
2513
  get validity(): ValidityState;
2228
2514
  constructor();
2229
2515
  connectedCallback(): void;
2230
2516
  disconnectedCallback(): void;
2231
- protected firstUpdated(_changedProperties: PropertyValues): void;
2517
+ protected firstUpdated(_changedProperties: PropertyValues): Promise<void>;
2518
+ protected updated(_changedProperties: PropertyValues): Promise<void>;
2232
2519
  checkValidity(): boolean;
2233
2520
  getForm(): HTMLFormElement | null;
2234
2521
  reportValidity(): boolean;
@@ -2241,7 +2528,11 @@ declare module "components/data-select/data-select.component" {
2241
2528
  blur: () => void;
2242
2529
  protected render(): import("lit").TemplateResult<1>;
2243
2530
  private _updatePrefix;
2531
+ private _updateIconEmptyState;
2244
2532
  private getPlaceholder;
2533
+ private _observeSelectDisabled;
2534
+ private _syncDisabledState;
2535
+ private _normalizeValue;
2245
2536
  }
2246
2537
  }
2247
2538
  declare module "components/data-select/index" {
@@ -2254,370 +2545,404 @@ declare module "components/data-select/index" {
2254
2545
  }
2255
2546
  }
2256
2547
  }
2257
- declare module "components/input/input.component" {
2548
+ declare module "utilities/lit-to-html" {
2549
+ import { type TemplateResult } from "lit";
2550
+ export function litToHTML<T extends HTMLElement>(templateResult: TemplateResult): T | null;
2551
+ }
2552
+ declare module "events/zn-change" {
2553
+ export type ZnChangeEvent = CustomEvent<Record<PropertyKey, never>>;
2554
+ global {
2555
+ interface GlobalEventHandlersEventMap {
2556
+ 'zn-change': ZnChangeEvent;
2557
+ }
2558
+ }
2559
+ }
2560
+ declare module "components/query-builder/query-builder.component" {
2561
+ import { type CSSResultGroup, type PropertyValues } from 'lit';
2258
2562
  import ZincElement from "internal/zinc-element";
2259
- import ZnIcon from "components/icon/index";
2260
- import ZnTooltip from "components/tooltip/index";
2563
+ import ZnButton from "components/button/index";
2564
+ import ZnInput from "components/input/index";
2565
+ import ZnOption from "components/option/index";
2566
+ import ZnSelect from "components/select/index";
2261
2567
  import type { ZincFormControl } from "internal/zinc-element";
2568
+ export type QueryBuilderData = QueryBuilderItem[];
2569
+ export interface QueryBuilderItem {
2570
+ id: string;
2571
+ name: string;
2572
+ type?: QueryBuilderType;
2573
+ options?: QueryBuilderOptions;
2574
+ operators: QueryBuilderOperators[];
2575
+ maxOptionsVisible?: string;
2576
+ }
2577
+ export type QueryBuilderType = 'bool' | 'boolean' | 'date' | 'number';
2578
+ export interface QueryBuilderOptions {
2579
+ [key: string | number]: string | number;
2580
+ }
2581
+ export enum QueryBuilderOperators {
2582
+ Eq = "eq",
2583
+ Neq = "neq",
2584
+ Eqi = "eqi",
2585
+ Neqi = "neqi",
2586
+ Before = "before",
2587
+ After = "after",
2588
+ In = "in",
2589
+ Nin = "nin",
2590
+ MatchPhrasePre = "matchphrasepre",
2591
+ NMatchPhrasePre = "nmatchphrasepre",
2592
+ MatchPhrase = "matchphrase",
2593
+ NMatchPhrase = "nmatchphrase",
2594
+ Match = "match",
2595
+ NMatch = "nmatch",
2596
+ Contains = "contains",
2597
+ DoesNotContain = "doesnotcontain",
2598
+ Starts = "starts",
2599
+ NStarts = "nstarts",
2600
+ Ends = "ends",
2601
+ NEnds = "nends",
2602
+ Wild = "wild",
2603
+ NWild = "nwild",
2604
+ Like = "like",
2605
+ NLike = "nlike",
2606
+ Fuzzy = "fuzzy",
2607
+ NFuzzy = "nfuzzy",
2608
+ Gte = "gte",
2609
+ Gt = "gt",
2610
+ Lt = "lt",
2611
+ Lte = "lte"
2612
+ }
2613
+ export interface CreatedRule {
2614
+ id: string;
2615
+ name: string;
2616
+ operator: string;
2617
+ value: string;
2618
+ }
2262
2619
  /**
2263
2620
  * @summary Short summary of the component's intended use.
2264
- * @documentation https://zinc.style/components/input
2621
+ * @documentation https://zinc.style/components/query-builder
2265
2622
  * @status experimental
2266
2623
  * @since 1.0
2267
2624
  *
2268
- * @dependency zn-icon
2269
- * @dependency zn-tooltip
2625
+ * @dependency zn-button
2626
+ * @dependency zn-input
2627
+ * @dependency zn-option
2628
+ * @dependency zn-select
2270
2629
  *
2271
- * @event zn-blur - Emitted when the control loses focus.
2272
- * @event zn-change - Emitted when an alteration to the control's value is committed by the user.
2273
- * @event zn-clear - Emitted when the clear button is activated.
2274
- * @event zn-focus - Emitted when the control gains focus.
2275
- * @event zn-input - Emitted when the control receives input.
2276
- * @event zn-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.
2630
+ * @slot - The default slot.
2631
+ * @slot example - An example slot.
2277
2632
  *
2278
- * @slot label - The input's label. Alternatively, you can use the `label` attribute.
2279
- * @slot label-tooltip - Used to add text that is displayed in a tooltip next to the label. Alternatively, you can use the `label-tooltip` attribute.
2280
- * @slot context-note - Used to add contextual text that is displayed above the input, on the right. Alternatively, you can use the `context-note` attribute.
2281
- * @slot prefix - Used to prepend a presentational icon or similar element to the input.
2282
- * @slot suffix - Used to append a presentational icon or similar element to the input.
2283
- * @slot clear-icon - An icon to use in lieu of the default clear icon.
2284
- * @slot show-password-icon - An icon to use in lieu of the default show password icon.
2285
- * @slot hide-password-icon - An icon to use in lieu of the default hide password icon.
2286
- * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.
2633
+ * @csspart base - The component's base wrapper.
2287
2634
  *
2288
- * @csspart form-control - The form control that wraps the label, input, and help text.
2289
- * @csspart form-control-label - The label's wrapper.
2290
- * @csspart form-control-input - The input's wrapper.
2291
- * @csspart form-control-help-text - The help text's wrapper.
2292
- * @csspart base - The component's base wrapper.
2293
- * @csspart input - The internal `<input>` control.
2294
- * @csspart prefix - The container that wraps the prefix.
2295
- * @csspart clear-button - The clear button.
2296
- * @csspart password-toggle-button - The password toggle button.
2297
- * @csspart suffix - The container that wraps the suffix.
2635
+ * @cssproperty --example - An example CSS custom property.
2298
2636
  */
2299
- export default class ZnInput extends ZincElement implements ZincFormControl {
2300
- static styles: import("lit").CSSResult;
2637
+ export default class ZnQueryBuilder extends ZincElement implements ZincFormControl {
2638
+ static styles: CSSResultGroup;
2301
2639
  static dependencies: {
2302
- 'zn-icon': typeof ZnIcon;
2303
- 'zn-tooltip': typeof ZnTooltip;
2640
+ 'zn-button': typeof ZnButton;
2641
+ 'zn-input': typeof ZnInput;
2642
+ 'zn-option': typeof ZnOption;
2643
+ 'zn-select': typeof ZnSelect;
2304
2644
  };
2305
- private readonly formControlController;
2306
- private readonly hasSlotController;
2307
- private readonly localize;
2645
+ private _selectedRules;
2646
+ private _formController;
2647
+ private _previousOperator;
2648
+ container: HTMLDivElement;
2649
+ addRule: ZnSelect;
2308
2650
  input: HTMLInputElement;
2309
- private hasFocus;
2310
- title: string;
2311
- private __numberInput;
2312
- private __dateInput;
2313
- /**
2314
- * The type of input. Works the same as native `<input>` element. But only a subset of types is supported. Defaults
2315
- * to `text`
2316
- */
2317
- type: 'currency' | 'date' | 'datetime-local' | 'email' | 'number' | 'password' | 'search' | 'tel' | 'text' | 'time' | 'url';
2318
- /** The name of the input, submitted as a name/value pair with form data. */
2651
+ filters: QueryBuilderData;
2652
+ dropdown: boolean;
2319
2653
  name: string;
2320
- /** The current value of the input, submitted as a name/value pair with form data. */
2321
- value: any;
2322
- /** The default value of the form control. Primarily used for resetting the form control. */
2323
- defaultValue: string;
2324
- /** The inputs size **/
2325
- size: 'x-small' | 'small' | 'medium' | 'large';
2326
- /** Draws a pill-styled input **/
2327
- pill: boolean;
2328
- /** The inputs label. If you need to display HTML, use the `label` slot. **/
2329
- label: string;
2330
- /** Text that appears in a tooltip next to the label. If you need to display HTML in the tooltip, use the
2331
- * `label-tooltip` slot.
2332
- * **/
2333
- labelTooltip: string;
2334
- /**
2335
- * Text that appears above the input, on the right, to add additional context. If you need to display HTML
2336
- * in this text, use the `context-note` slot instead
2337
- */
2338
- contextNote: string;
2339
- /** The input's help text. If you need to display HTML, use the `help-text` slot instead. **/
2340
- helpText: string;
2341
- /** Adds a clear button when the input is not empty **/
2342
- clearable: boolean;
2343
- /** Adds the default optional icon for this input type. Currently only types `email` and `tel` have a default
2344
- * optional icon.
2345
- */
2346
- optionalIcon: boolean;
2347
- /** Disables the input **/
2348
- disabled: boolean;
2349
- /** Fills the input background white **/
2350
- filled: boolean;
2351
- /** Placeholder text to show as a hint when the input is empty. */
2352
- placeholder: string;
2353
- /** Makes the input read-only **/
2354
- readonly: boolean;
2355
- /** Adds a button to toggle the passwords visibility, only applies to password types **/
2356
- passwordToggle: boolean;
2357
- /** Determines whether or no the password is currently visible. Only applies to password types **/
2358
- passwordVisible: boolean;
2359
- /** Hides the browsers built-in increment/decrement spin buttons for number inputs **/
2360
- noSpinButtons: boolean;
2361
- /**
2362
- * By default, form-controls are associated with the nearest containing `<form>` element. This attribute allows you
2363
- * to place the form control outside a form and associate it with the form that has this `id`. The form must be
2364
- * in the same document or shadow root for this to work.
2365
- */
2366
- form: string;
2367
- /** Makes the input a required field. */
2368
- required: boolean;
2369
- /** A regular expression pattern to validate input against. */
2370
- pattern: string;
2371
- /** The minimum length of input that will be considered valid. */
2372
- minlength: number;
2373
- /** The maximum length of input that will be considered valid. */
2374
- maxlength: number;
2375
- /** The input's minimum value. Only applies to date and number input types. */
2376
- min: number | string;
2377
- /** The input's maximum value. Only applies to date and number input types. */
2378
- max: number | string;
2379
- /**
2380
- * Specifies the granularity that the value must adhere to, or the special value `any` which means no stepping is
2381
- * implied, allowing any numeric value. Only applies to date and number input types.
2382
- */
2383
- step: number | 'any';
2384
- /** Controls whether and how text input is automatically capitalized as it is entered by the user. */
2385
- autocapitalize: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters';
2386
- /** Indicates whether the browser's autocorrect feature is on or off. */
2387
- autocorrect: 'off' | 'on';
2388
- /**
2389
- * Specifies what permission the browser has to provide assistance in filling out form field values. Refer to
2390
- * [this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.
2391
- */
2392
- autocomplete: string;
2393
- /** Indicates that the input should receive focus on page load. */
2394
- autofocus: boolean;
2395
- /** Used to customize the label or icon of the Enter key on virtual keyboards. */
2396
- enterkeyhint: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
2397
- /** Enables spell checking on the input. */
2398
- spellcheck: boolean;
2399
- /**
2400
- * Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual
2401
- * keyboard on supportive devices.
2402
- */
2403
- inputmode: 'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url';
2404
- /**
2405
- * Gets or sets the current value as `date` object. Returns `null` if the value can't be converted. This will use
2406
- * the native `<input type="{{type}}">` implementation and may result in an error.
2407
- */
2408
- get valueAsDate(): Date | null;
2409
- set valueAsDate(newValue: Date | null);
2410
- /** Gets or sets the current value as a number. Return `null` if the value can't be converted. */
2411
- get valueAsNumber(): number;
2412
- set valueAsNumber(newValue: number);
2413
- /** Gets the validity state object */
2414
- get validity(): ValidityState;
2415
- /** Gets the validation message */
2654
+ value: PropertyKey;
2655
+ showValues: string[];
2416
2656
  get validationMessage(): string;
2417
- private validateMinMax;
2418
- private handleBlur;
2419
- private handleChange;
2420
- private handleClearClick;
2421
- private handleFocus;
2422
- private handleInput;
2423
- private handleInvalid;
2424
- private handleKeyDown;
2425
- private handlePasswordToggle;
2426
- private focusInput;
2427
- handleDisabledChange(): void;
2428
- handleStepChange(): void;
2429
- handleValueChange(): Promise<void>;
2430
- /** Sets focus on the input. */
2431
- focus(options?: FocusOptions): void;
2432
- /** Removes focus from the input. */
2433
- blur(): void;
2434
- /** Selects all the text in the input. */
2435
- select(): void;
2436
- /** Sets the start and end positions of the text selection (0-based). */
2437
- setSelectionRange(selectionStart: number, selectionEnd: number, selectionDirection?: 'forward' | 'backward' | 'none'): void;
2438
- /** Replaces a range of text with a new string. */
2439
- setRangeText(replacement: string, start?: number, end?: number, selectMode?: 'select' | 'start' | 'end' | 'preserve'): void;
2440
- /** Displays the browser picker for an input element (only works if the browser supports it for the input type). */
2441
- showPicker(): void;
2442
- /** Increments the value of a numeric input type by the value of the step attribute. */
2443
- stepUp(): void;
2444
- /** Decrements the value of a numeric input type by the value of the step attribute. */
2445
- stepDown(): void;
2446
- /** Checks the validity but does not show a validation message. Returns `true` when valid and `false` when invalid. */
2657
+ get validity(): ValidityState;
2658
+ protected firstUpdated(_changedProperties: PropertyValues): void;
2659
+ render(): import("lit").TemplateResult<1>;
2660
+ private _handleChange;
2661
+ private _addRule;
2662
+ private _createInput;
2663
+ private _changeValueInput;
2664
+ private _createBooleanInput;
2665
+ private _createNumberInput;
2666
+ private _createDateInput;
2667
+ private _createSelectInput;
2668
+ private _createDefaultInput;
2669
+ private _updateOperatorValue;
2670
+ private _updateDateValue;
2671
+ private _updateValue;
2672
+ private updateInValue;
2673
+ private _changeRule;
2674
+ private _getRulePosition;
2675
+ private _removeRule;
2676
+ clear(): void;
2677
+ reset(): void;
2447
2678
  checkValidity(): boolean;
2448
- /** Gets the associated form, if one exists. */
2449
2679
  getForm(): HTMLFormElement | null;
2450
- /** Checks for validity and shows the browser's validation message if the control is invalid. */
2451
2680
  reportValidity(): boolean;
2452
- /** Sets a custom validation message. Pass an empty string to restore validity. */
2453
2681
  setCustomValidity(message: string): void;
2454
- render(): import("lit").TemplateResult<1>;
2455
2682
  }
2456
2683
  }
2457
- declare module "components/input/index" {
2458
- import ZnInput from "components/input/input.component";
2459
- export * from "components/input/input.component";
2460
- export default ZnInput;
2684
+ declare module "components/query-builder/index" {
2685
+ import ZnQueryBuilder from "components/query-builder/query-builder.component";
2686
+ export * from "components/query-builder/query-builder.component";
2687
+ export default ZnQueryBuilder;
2461
2688
  global {
2462
2689
  interface HTMLElementTagNameMap {
2463
- 'zn-input': ZnInput;
2690
+ 'zn-query-builder': ZnQueryBuilder;
2464
2691
  }
2465
2692
  }
2466
2693
  }
2467
- declare module "utilities/lit-to-html" {
2468
- import { type TemplateResult } from "lit";
2469
- export function litToHTML<T extends HTMLElement>(templateResult: TemplateResult): T | null;
2694
+ declare module "components/data-table-search/data-table-search.component" {
2695
+ import { type CSSResultGroup, type PropertyValues } from 'lit';
2696
+ import ZincElement, { type ZincFormControl } from "internal/zinc-element";
2697
+ import ZnInput from "components/input/index";
2698
+ /**
2699
+ * @summary A search component for data tables.
2700
+ * @documentation https://zinc.style/components/data-table-search
2701
+ * @status experimental
2702
+ * @since 1.0
2703
+ *
2704
+ * @dependency zn-input
2705
+ *
2706
+ * @event zn-search-change - Emitted when the search value changes (debounced).
2707
+ *
2708
+ * @slot - The default slot for additional form inputs.
2709
+ *
2710
+ * @csspart base - The component's base wrapper.
2711
+ *
2712
+ * @property {string} name - The name of the search input field (default: "search").
2713
+ * @property {string} value - The current search value.
2714
+ * @property {string} placeholder - The placeholder text for the search input (default: "Search...").
2715
+ * @property {string} helpText - Help text displayed below the search input.
2716
+ * @property {string} searchUri - Optional URI to use for search operations.
2717
+ * @property {number} debounceDelay - The delay in milliseconds before triggering a search (default: 500).
2718
+ */
2719
+ export default class ZnDataTableSearch extends ZincElement implements ZincFormControl {
2720
+ static styles: CSSResultGroup;
2721
+ static dependencies: {
2722
+ 'zn-input': typeof ZnInput;
2723
+ };
2724
+ private _formController;
2725
+ private _searchTimeout?;
2726
+ name: string;
2727
+ value: string;
2728
+ placeholder: string;
2729
+ helpText: string;
2730
+ searchUri: string | undefined;
2731
+ debounceDelay: number;
2732
+ get validationMessage(): string;
2733
+ get validity(): ValidityState;
2734
+ checkValidity(): boolean;
2735
+ getForm(): HTMLFormElement | null;
2736
+ reportValidity(): boolean;
2737
+ setCustomValidity(): void;
2738
+ protected firstUpdated(_changedProperties: PropertyValues): void;
2739
+ /**
2740
+ * Collects form data from slotted input elements
2741
+ */
2742
+ getFormData(): Record<string, any>;
2743
+ handleInput: (e: Event) => void;
2744
+ handleClear: () => void;
2745
+ disconnectedCallback(): void;
2746
+ /**
2747
+ * Emit the search change event with form data
2748
+ */
2749
+ private emitSearchChange;
2750
+ render(): import("lit").TemplateResult<1>;
2751
+ }
2470
2752
  }
2471
- declare module "events/zn-change" {
2472
- export type ZnChangeEvent = CustomEvent<Record<PropertyKey, never>>;
2753
+ declare module "components/data-table-search/index" {
2754
+ import ZnDataTableSearch from "components/data-table-search/data-table-search.component";
2755
+ export * from "components/data-table-search/data-table-search.component";
2756
+ export default ZnDataTableSearch;
2473
2757
  global {
2474
- interface GlobalEventHandlersEventMap {
2475
- 'zn-change': ZnChangeEvent;
2758
+ interface HTMLElementTagNameMap {
2759
+ 'zn-data-table-search': ZnDataTableSearch;
2476
2760
  }
2477
2761
  }
2478
2762
  }
2479
- declare module "components/query-builder/query-builder.component" {
2480
- import { type CSSResultGroup, type PropertyValues } from 'lit';
2763
+ declare module "components/empty-state/empty-state.component" {
2764
+ import { type CSSResultGroup } from 'lit';
2481
2765
  import ZincElement from "internal/zinc-element";
2482
- import ZnButton from "components/button/index";
2483
- import ZnInput from "components/input/index";
2484
- import ZnOption from "components/option/index";
2485
- import ZnSelect from "components/select/index";
2486
- import type { ZincFormControl } from "internal/zinc-element";
2487
- export type QueryBuilderData = QueryBuilderItem[];
2488
- export interface QueryBuilderItem {
2489
- id: string;
2490
- name: string;
2491
- type?: QueryBuilderType;
2492
- options?: QueryBuilderOptions;
2493
- operators: QueryBuilderOperators[];
2494
- maxOptionsVisible?: string;
2495
- }
2496
- export type QueryBuilderType = 'bool' | 'boolean' | 'date' | 'number';
2497
- export interface QueryBuilderOptions {
2498
- [key: string | number]: string | number;
2499
- }
2500
- export enum QueryBuilderOperators {
2501
- Eq = "eq",
2502
- Neq = "neq",
2503
- Eqi = "eqi",
2504
- Neqi = "neqi",
2505
- Before = "before",
2506
- After = "after",
2507
- In = "in",
2508
- Nin = "nin",
2509
- MatchPhrasePre = "matchphrasepre",
2510
- NMatchPhrasePre = "nmatchphrasepre",
2511
- MatchPhrase = "matchphrase",
2512
- NMatchPhrase = "nmatchphrase",
2513
- Match = "match",
2514
- NMatch = "nmatch",
2515
- Contains = "contains",
2516
- DoesNotContain = "doesnotcontain",
2517
- Starts = "starts",
2518
- NStarts = "nstarts",
2519
- Ends = "ends",
2520
- NEnds = "nends",
2521
- Wild = "wild",
2522
- NWild = "nwild",
2523
- Like = "like",
2524
- NLike = "nlike",
2525
- Fuzzy = "fuzzy",
2526
- NFuzzy = "nfuzzy",
2527
- Gte = "gte",
2528
- Gt = "gt",
2529
- Lt = "lt",
2530
- Lte = "lte"
2766
+ /**
2767
+ * @summary Short summary of the component's intended use.
2768
+ * @documentation https://zinc.style/components/empty-state
2769
+ * @status experimental
2770
+ * @since 1.0
2771
+ *
2772
+ * @dependency zn-example
2773
+ *
2774
+ * @event zn-event-name - Emitted as an example.
2775
+ *
2776
+ * @slot - The default slot.
2777
+ * @slot example - An example slot.
2778
+ *
2779
+ * @csspart base - The component's base wrapper.
2780
+ *
2781
+ * @cssproperty --example - An example CSS custom property.
2782
+ */
2783
+ export default class ZnEmptyState extends ZincElement {
2784
+ static styles: CSSResultGroup;
2785
+ icon: string;
2786
+ caption: string;
2787
+ description: string;
2788
+ type: 'error' | 'info' | 'primary' | '';
2789
+ padded: boolean;
2790
+ private readonly hasSlotController;
2791
+ render(): import("lit").TemplateResult<1>;
2531
2792
  }
2532
- export interface CreatedRule {
2533
- id: string;
2534
- name: string;
2535
- operator: string;
2536
- value: string;
2793
+ }
2794
+ declare module "components/empty-state/index" {
2795
+ import ZnEmptyState from "components/empty-state/empty-state.component";
2796
+ export * from "components/empty-state/empty-state.component";
2797
+ export default ZnEmptyState;
2798
+ global {
2799
+ interface HTMLElementTagNameMap {
2800
+ 'zn-empty-state': ZnEmptyState;
2801
+ }
2537
2802
  }
2803
+ }
2804
+ declare module "components/hover-container/hover-container.component" {
2805
+ import { type CSSResultGroup, type PropertyValues } from 'lit';
2806
+ import ZincElement from "internal/zinc-element";
2807
+ import type Popup from "components/popup/index";
2538
2808
  /**
2539
- * @summary Short summary of the component's intended use.
2540
- * @documentation https://zinc.style/components/query-builder
2809
+ * @summary The HoverContainer component is used to display additional information when a user hovers over or clicks
2810
+ * on an element.
2811
+ *
2812
+ * @documentation https://zinc.style/components/hover-container
2541
2813
  * @status experimental
2542
2814
  * @since 1.0
2543
2815
  *
2544
- * @dependency zn-button
2545
- * @dependency zn-input
2546
- * @dependency zn-option
2547
- * @dependency zn-select
2548
- *
2549
- * @slot - The default slot.
2550
- * @slot example - An example slot.
2551
- *
2552
- * @csspart base - The component's base wrapper.
2816
+ * @event zn-show - Emitted when the hover-container is shown.
2817
+ * @event zn-after-show - Emitted after the hover-container is shown.
2818
+ * @event zn-hide - Emitted when the hover-container is hidden.
2819
+ * @event zn-after-hide - Emitted after the hover-container is hidden.
2553
2820
  *
2554
- * @cssproperty --example - An example CSS custom property.
2821
+ * @slot - The content of the hover-container
2822
+ * @slot anchor - The anchor the hover-container is attached to.
2555
2823
  */
2556
- export default class ZnQueryBuilder extends ZincElement implements ZincFormControl {
2824
+ export default class ZnHoverContainer extends ZincElement {
2557
2825
  static styles: CSSResultGroup;
2558
- static dependencies: {
2559
- 'zn-button': typeof ZnButton;
2560
- 'zn-input': typeof ZnInput;
2561
- 'zn-option': typeof ZnOption;
2562
- 'zn-select': typeof ZnSelect;
2563
- };
2564
- private _selectedRules;
2565
- private _formController;
2566
- private _previousOperator;
2567
- container: HTMLDivElement;
2568
- addRule: ZnSelect;
2569
- input: HTMLInputElement;
2570
- filters: QueryBuilderData;
2571
- dropdown: boolean;
2572
- name: string;
2573
- value: PropertyKey;
2574
- showValues: string[];
2575
- get validationMessage(): string;
2576
- get validity(): ValidityState;
2826
+ private hoverTimeout;
2827
+ private closeWatcher;
2828
+ defaultSlot: HTMLSlotElement;
2829
+ body: HTMLElement;
2830
+ popup: Popup;
2831
+ content: string;
2832
+ placement: 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end';
2833
+ disabled: boolean;
2834
+ distance: number;
2835
+ open: boolean;
2836
+ skidding: number;
2837
+ trigger: string;
2838
+ hoist: boolean;
2839
+ constructor();
2840
+ disconnectedCallback(): void;
2577
2841
  protected firstUpdated(_changedProperties: PropertyValues): void;
2842
+ private hasTrigger;
2843
+ private handleBlur;
2844
+ private handleClick;
2845
+ private handleFocus;
2846
+ private handleDocumentKeyDown;
2847
+ private handleMouseOver;
2848
+ private handleMouseOut;
2849
+ handleOpenChange(): void;
2850
+ handleOptionsChange(): Promise<void>;
2851
+ handleDisabledChange(): void;
2852
+ show(): Promise<void>;
2853
+ hide(): void;
2578
2854
  render(): import("lit").TemplateResult<1>;
2579
- private _handleChange;
2580
- private _addRule;
2581
- private _createInput;
2582
- private _changeValueInput;
2583
- private _createBooleanInput;
2584
- private _createNumberInput;
2585
- private _createDateInput;
2586
- private _createSelectInput;
2587
- private _createDefaultInput;
2588
- private _updateOperatorValue;
2589
- private _updateDateValue;
2590
- private _updateValue;
2591
- private updateInValue;
2592
- private _changeRule;
2593
- private _getRulePosition;
2594
- private _removeRule;
2595
- clear(): void;
2596
- reset(): void;
2597
- checkValidity(): boolean;
2598
- getForm(): HTMLFormElement | null;
2599
- reportValidity(): boolean;
2600
- setCustomValidity(message: string): void;
2601
2855
  }
2602
2856
  }
2603
- declare module "components/query-builder/index" {
2604
- import ZnQueryBuilder from "components/query-builder/query-builder.component";
2605
- export * from "components/query-builder/query-builder.component";
2606
- export default ZnQueryBuilder;
2857
+ declare module "components/hover-container/index" {
2858
+ import ZnHoverContainer from "components/hover-container/hover-container.component";
2859
+ export * from "components/hover-container/hover-container.component";
2860
+ export default ZnHoverContainer;
2607
2861
  global {
2608
2862
  interface HTMLElementTagNameMap {
2609
- 'zn-query-builder': ZnQueryBuilder;
2863
+ 'zn-hover-container': ZnHoverContainer;
2864
+ }
2865
+ }
2866
+ }
2867
+ declare module "components/skeleton/skeleton.component" {
2868
+ import ZincElement from "internal/zinc-element";
2869
+ import type { CSSResultGroup } from "lit";
2870
+ /**
2871
+ * @summary Skeleton loaders provide visual placeholders while content is loading, improving perceived performance and user experience.
2872
+ * @documentation https://zinc.style/components/skeleton
2873
+ * @status experimental
2874
+ * @since 1.0
2875
+ *
2876
+ * @property {string} speed - Animation speed for the shimmer effect. Default: "3s"
2877
+ * @property {string} width - Width of the skeleton element. Default: "100%"
2878
+ * @property {string} height - Height of the skeleton element. Default: "20px"
2879
+ * @property {string} radius - Border radius of the skeleton element. Default: "4px"
2880
+ */
2881
+ export default class ZnSkeleton extends ZincElement {
2882
+ static styles: CSSResultGroup;
2883
+ speed: string;
2884
+ width: string;
2885
+ height: string;
2886
+ radius: string;
2887
+ protected render(): unknown;
2888
+ }
2889
+ }
2890
+ declare module "components/skeleton/index" {
2891
+ import ZnSkeleton from "components/skeleton/skeleton.component";
2892
+ export * from "components/skeleton/skeleton.component";
2893
+ export default ZnSkeleton;
2894
+ global {
2895
+ interface HTMLElementTagNameMap {
2896
+ 'zn-skeleton': ZnSkeleton;
2897
+ }
2898
+ }
2899
+ }
2900
+ declare module "components/style/style.component" {
2901
+ import { type CSSResultGroup } from 'lit';
2902
+ import ZincElement from "internal/zinc-element";
2903
+ export default class ZnStyle extends ZincElement {
2904
+ static styles: CSSResultGroup;
2905
+ private readonly localize;
2906
+ color: string;
2907
+ border: boolean;
2908
+ error: boolean;
2909
+ success: boolean;
2910
+ info: boolean;
2911
+ warning: boolean;
2912
+ primary: boolean;
2913
+ accent: boolean;
2914
+ center: boolean;
2915
+ display: null;
2916
+ font: string;
2917
+ width: string;
2918
+ height: string;
2919
+ pad: string;
2920
+ margin: string;
2921
+ autoMargin: string;
2922
+ connectedCallback(): void;
2923
+ createRenderRoot(): this;
2924
+ }
2925
+ }
2926
+ declare module "components/style/index" {
2927
+ import ZnStyle from "components/style/style.component";
2928
+ export * from "components/style/style.component";
2929
+ export default ZnStyle;
2930
+ global {
2931
+ interface HTMLElementTagNameMap {
2932
+ 'zn-style': ZnStyle;
2610
2933
  }
2611
2934
  }
2612
2935
  }
2613
2936
  declare module "components/data-table/data-table.component" {
2614
2937
  import { type CSSResultGroup, type TemplateResult } from 'lit';
2615
2938
  import { type ZnFilterChangeEvent } from "events/zn-filter-change";
2939
+ import { type ZnSearchChangeEvent } from "events/zn-search-change";
2616
2940
  import ZincElement from "internal/zinc-element";
2617
2941
  import ZnButton from "components/button/index";
2618
2942
  import ZnButtonGroup from "components/button-group/index";
2619
2943
  import ZnChip from "components/chip/index";
2620
2944
  import ZnConfirm from "components/confirm/index";
2945
+ import ZnDataTableSearch from "components/data-table-search/index";
2621
2946
  import ZnDropdown from "components/dropdown/index";
2622
2947
  import ZnEmptyState from "components/empty-state/index";
2623
2948
  import ZnHoverContainer from "components/hover-container/index";
@@ -2661,6 +2986,7 @@ declare module "components/data-table/data-table.component" {
2661
2986
  filter = "filter",
2662
2987
  filter_top = "filter-top",
2663
2988
  sort = "sort",
2989
+ search = "search",
2664
2990
  inputs = "inputs"
2665
2991
  }
2666
2992
  interface ActionConfig {
@@ -2672,6 +2998,8 @@ declare module "components/data-table/data-table.component" {
2672
2998
  confirmTitle: string;
2673
2999
  confirmContent: string;
2674
3000
  icon: string;
3001
+ iconSrc?: string;
3002
+ color?: string;
2675
3003
  type: string;
2676
3004
  }
2677
3005
  interface HeaderConfig {
@@ -2701,11 +3029,18 @@ declare module "components/data-table/data-table.component" {
2701
3029
  * @dependency zn-button-group
2702
3030
  * @dependency zn-confirm
2703
3031
  * @dependency zn-skeleton
2704
- *
2705
- * @event zn-event-name - Emitted as an example.
3032
+ * @dependency zn-data-table-search
2706
3033
  *
2707
3034
  * @slot - The default slot.
2708
- * @slot example - An example slot.
3035
+ * @slot search - Slot for search component.
3036
+ * @slot sort - Slot for sort component.
3037
+ * @slot filter - Slot for filter component.
3038
+ * @slot filter-top - Slot for top-level filter component.
3039
+ * @slot delete-action - Slot for delete action button.
3040
+ * @slot modify-action - Slot for modify action button.
3041
+ * @slot create-action - Slot for create action button.
3042
+ * @slot inputs - Slot for additional input controls.
3043
+ * @slot empty-state - Slot for custom empty state.
2709
3044
  *
2710
3045
  * @csspart base - The component's base wrapper.
2711
3046
  *
@@ -2725,6 +3060,7 @@ declare module "components/data-table/data-table.component" {
2725
3060
  'zn-confirm': typeof ZnConfirm;
2726
3061
  'zn-skeleton': typeof ZnSkeleton;
2727
3062
  'zn-style': typeof ZnStyle;
3063
+ 'zn-data-table-search': typeof ZnDataTableSearch;
2728
3064
  };
2729
3065
  dataUri: string;
2730
3066
  data: any;
@@ -2732,6 +3068,7 @@ declare module "components/data-table/data-table.component" {
2732
3068
  sortDirection: string;
2733
3069
  localSort: boolean;
2734
3070
  filter: string;
3071
+ search: string;
2735
3072
  wideColumn: string;
2736
3073
  key: string;
2737
3074
  headers: Record<string, HeaderConfig>;
@@ -2772,7 +3109,8 @@ declare module "components/data-table/data-table.component" {
2772
3109
  render(): TemplateResult<1>;
2773
3110
  connectedCallback(): void;
2774
3111
  disconnectedCallback(): void;
2775
- changeEventListener: (e: ZnFilterChangeEvent) => void;
3112
+ filterChangeListener: (e: ZnFilterChangeEvent) => void;
3113
+ searchChangeListener: (e: ZnSearchChangeEvent) => void;
2776
3114
  emptyState(): TemplateResult<1>;
2777
3115
  renderTable(data: Response): TemplateResult<1>;
2778
3116
  humanize(str: string): string;
@@ -3010,6 +3348,7 @@ declare module "components/tile/tile.component" {
3010
3348
  flushY: boolean;
3011
3349
  inline: boolean;
3012
3350
  private _isLink;
3351
+ private _handleActionsClick;
3013
3352
  render(): import("lit").TemplateResult;
3014
3353
  }
3015
3354
  }
@@ -3165,6 +3504,7 @@ declare module "events/zn-menu-select" {
3165
3504
  }
3166
3505
  declare module "components/navbar/navbar.component" {
3167
3506
  import { type CSSResultGroup, type PropertyValues } from 'lit';
3507
+ import { Store } from "internal/storage";
3168
3508
  import ZincElement from "internal/zinc-element";
3169
3509
  import ZnDropdown from "components/dropdown/index";
3170
3510
  /**
@@ -3201,6 +3541,10 @@ declare module "components/navbar/navbar.component" {
3201
3541
  noPad: false;
3202
3542
  manualAddItems: boolean;
3203
3543
  isolated: boolean;
3544
+ masterId: string;
3545
+ storeKey: string;
3546
+ storeTtl: number;
3547
+ localStorage: boolean;
3204
3548
  private _preItems;
3205
3549
  private _postItems;
3206
3550
  private _appended;
@@ -3213,12 +3557,14 @@ declare module "components/navbar/navbar.component" {
3213
3557
  private _navItemsGap;
3214
3558
  private _expandableMargin;
3215
3559
  private _totalItemWidth;
3560
+ protected _store: Store;
3216
3561
  appendItem(item: Element): void;
3217
3562
  connectedCallback(): void;
3218
3563
  handleResize: () => void;
3219
- addItem(item: Element): void;
3564
+ addItem(item: Element, persist?: boolean): void;
3220
3565
  protected firstUpdated(_changedProperties: PropertyValues): void;
3221
- showMore(): void;
3566
+ private _loadStoredTabs;
3567
+ private _saveTabToStorage;
3222
3568
  private handleClick;
3223
3569
  render(): import("lit").TemplateResult<1>;
3224
3570
  }
@@ -3287,8 +3633,100 @@ declare module "components/header/index" {
3287
3633
  }
3288
3634
  }
3289
3635
  }
3636
+ declare module "components/icon-picker/brand-icons" {
3637
+ export const brandIcons: string[];
3638
+ }
3639
+ declare module "components/icon-picker/line-icons" {
3640
+ export const lineIcons: string[];
3641
+ }
3642
+ declare module "components/icon-picker/material-icons" {
3643
+ export const materialIcons: string[];
3644
+ export const material_outlinedIcons: string[];
3645
+ export const material_roundIcons: string[];
3646
+ export const material_sharpIcons: string[];
3647
+ export const material_two_toneIcons: string[];
3648
+ export const material_symbols_outlinedIcons: string[];
3649
+ }
3650
+ declare module "components/icon-picker/icon-picker.component" {
3651
+ import { type CSSResultGroup } from 'lit';
3652
+ import ZincElement from "internal/zinc-element";
3653
+ import ZnButton from "components/button/index";
3654
+ import ZnDialog from "components/dialog/index";
3655
+ import ZnIcon from "components/icon/index";
3656
+ import ZnInput from "components/input/index";
3657
+ import ZnOption from "components/option/index";
3658
+ import ZnSelect from "components/select/index";
3659
+ import type { ZincFormControl } from "internal/zinc-element";
3660
+ export default class ZnIconPicker extends ZincElement implements ZincFormControl {
3661
+ static styles: CSSResultGroup;
3662
+ static dependencies: {
3663
+ 'zn-icon': typeof ZnIcon;
3664
+ 'zn-button': typeof ZnButton;
3665
+ 'zn-dialog': typeof ZnDialog;
3666
+ 'zn-input': typeof ZnInput;
3667
+ 'zn-select': typeof ZnSelect;
3668
+ 'zn-option': typeof ZnOption;
3669
+ };
3670
+ private readonly formControlController;
3671
+ name: string;
3672
+ icon: string;
3673
+ label: string;
3674
+ library: string;
3675
+ color: string;
3676
+ noColor: boolean;
3677
+ noLibrary: boolean;
3678
+ helpText: string;
3679
+ disabled: boolean;
3680
+ required: boolean;
3681
+ form: string;
3682
+ defaultValue: string;
3683
+ private _dialogOpen;
3684
+ private _searchQuery;
3685
+ private _iconList;
3686
+ private _filteredIcons;
3687
+ private _pendingIcon;
3688
+ private _pendingLibrary;
3689
+ private _pendingColor;
3690
+ private _dialog;
3691
+ get value(): string;
3692
+ set value(val: string);
3693
+ get validity(): ValidityState;
3694
+ get validationMessage(): string;
3695
+ checkValidity(): boolean;
3696
+ getForm(): HTMLFormElement | null;
3697
+ reportValidity(): boolean;
3698
+ setCustomValidity(_message: string): void;
3699
+ private static readonly freeInputLibraries;
3700
+ private isFreeInputLibrary;
3701
+ private getIconsForLibrary;
3702
+ private openDialog;
3703
+ private closeDialog;
3704
+ private handleConfirm;
3705
+ private handleCancel;
3706
+ private handleSearchInput;
3707
+ private filterIcons;
3708
+ private handleIconSelect;
3709
+ private handleLibraryChange;
3710
+ private handleColorInput;
3711
+ private handleFreeInput;
3712
+ private handleClear;
3713
+ private _handleTriggerClick;
3714
+ private _handleTriggerKeyDown;
3715
+ render(): import("lit").TemplateResult<1>;
3716
+ }
3717
+ }
3718
+ declare module "components/icon-picker/index" {
3719
+ import ZnIconPicker from "components/icon-picker/icon-picker.component";
3720
+ export * from "components/icon-picker/icon-picker.component";
3721
+ export default ZnIconPicker;
3722
+ global {
3723
+ interface HTMLElementTagNameMap {
3724
+ 'zn-icon-picker': ZnIconPicker;
3725
+ }
3726
+ }
3727
+ }
3290
3728
  declare module "components/inline-edit/inline-edit.component" {
3291
- import { type CSSResultGroup, type HTMLTemplateResult } from 'lit';
3729
+ import { type CSSResultGroup, type HTMLTemplateResult, type PropertyValues } from 'lit';
3292
3730
  import ZincElement from "internal/zinc-element";
3293
3731
  import ZnSelect from "components/select/index";
3294
3732
  import type { ZincFormControl } from "internal/zinc-element";
@@ -3303,8 +3741,9 @@ declare module "components/inline-edit/inline-edit.component" {
3303
3741
  *
3304
3742
  * @event zn-event-name - Emitted as an example.
3305
3743
  *
3306
- * @slot - The default slot.
3744
+ * @slot - Default slot. When `input-type` is `select`, accepts `zn-option` elements to define select options. If provided, takes precedence over the `options` property.
3307
3745
  * @slot example - An example slot.
3746
+ * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.
3308
3747
  *
3309
3748
  * @csspart base - The component's base wrapper.
3310
3749
  *
@@ -3313,7 +3752,8 @@ declare module "components/inline-edit/inline-edit.component" {
3313
3752
  export default class ZnInlineEdit extends ZincElement implements ZincFormControl {
3314
3753
  static styles: CSSResultGroup;
3315
3754
  private readonly formControlController;
3316
- value: string;
3755
+ private readonly hasSlotController;
3756
+ value: string | string[];
3317
3757
  name: string;
3318
3758
  placeholder: string;
3319
3759
  editText: string;
@@ -3323,18 +3763,45 @@ declare module "components/inline-edit/inline-edit.component" {
3323
3763
  size: 'small' | 'medium' | 'large';
3324
3764
  required: boolean;
3325
3765
  pattern: string;
3326
- inputType: 'select' | 'text' | 'data-select' | 'number';
3766
+ multiple: boolean;
3767
+ clearable: boolean;
3768
+ min: string | number;
3769
+ max: string | number;
3770
+ step: number | 'any';
3771
+ inputType: 'select' | 'text' | 'data-select' | 'number' | 'textarea';
3327
3772
  options: {
3328
3773
  [key: string]: string;
3329
3774
  };
3330
3775
  selectProvider: string;
3331
3776
  iconPosition: 'start' | 'end' | 'none';
3777
+ /**
3778
+ * The URL to fetch options from. When set , the component fetches JSON from this URL and renders the results as
3779
+ * options. The expected format is an array of objects with `key` and `value` properties:
3780
+ * `[{"key": "us", "value": "United States"}, ...]`
3781
+ * When not set, the component works exactly as before using slotted `<zn-option>` elements.
3782
+ * Only works with type select.
3783
+ */
3784
+ dataUri: string;
3785
+ /**
3786
+ * Context data to send as a header when fetching options from the URL specified by the `src` property.
3787
+ */
3788
+ contextData: string;
3789
+ /** Enables search/filtering on select inputs. */
3790
+ search: boolean;
3332
3791
  /** The input's help text. If you need to display HTML, use the `help-text` slot instead. **/
3333
3792
  helpText: string;
3793
+ /** The text direction for the input (ltr or rtl) **/
3794
+ dir: 'ltr' | 'rtl' | 'auto';
3795
+ /**
3796
+ * Specifies what permission the browser has to provide assistance in filling out form field values. Refer to
3797
+ * [this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.
3798
+ */
3799
+ autocomplete: string;
3334
3800
  private hasFocus;
3335
3801
  private isEditing;
3802
+ private _valueBeforeEdit;
3336
3803
  input: ZnInput | ZnSelect;
3337
- defaultValue: string;
3804
+ defaultValue: string | string[];
3338
3805
  get validity(): ValidityState;
3339
3806
  get validationMessage(): string;
3340
3807
  checkValidity(): boolean;
@@ -3344,6 +3811,7 @@ declare module "components/inline-edit/inline-edit.component" {
3344
3811
  connectedCallback(): void;
3345
3812
  disconnectedCallback(): void;
3346
3813
  firstUpdated(): Promise<void>;
3814
+ protected willUpdate(changedProperties: PropertyValues): void;
3347
3815
  handleValueChange(): Promise<void>;
3348
3816
  handleIsEditingChange(): Promise<void>;
3349
3817
  mouseEventHandler: (e: MouseEvent) => void;
@@ -3356,7 +3824,10 @@ declare module "components/inline-edit/inline-edit.component" {
3356
3824
  handleCancelClick: (e: MouseEvent) => void;
3357
3825
  handleBlur: () => void;
3358
3826
  handleInput: (e: Event) => void;
3827
+ private moveSlottedOptionsToSelect;
3828
+ handleSlotChange: () => Promise<void>;
3359
3829
  protected render(): import("lit").TemplateResult<1>;
3830
+ protected _getTextAreaInput(): HTMLTemplateResult;
3360
3831
  protected _getTextInput(): HTMLTemplateResult;
3361
3832
  protected _getNumberInput(): HTMLTemplateResult;
3362
3833
  protected _getSelectInput(): HTMLTemplateResult;
@@ -3407,21 +3878,26 @@ declare module "components/vertical-stepper/vertical-stepper.component" {
3407
3878
  import { type CSSResultGroup } from 'lit';
3408
3879
  import ZincElement from "internal/zinc-element";
3409
3880
  /**
3410
- * @summary Short summary of the component's intended use.
3881
+ * @summary Vertical steppers display a sequence of steps in a vertical layout with descriptions and optional icons.
3411
3882
  * @documentation https://zinc.style/components/vertical-stepper
3412
3883
  * @status experimental
3413
3884
  * @since 1.0
3414
3885
  *
3415
- * @dependency zn-example
3416
- *
3417
- * @event zn-event-name - Emitted as an example.
3418
- *
3419
- * @slot - The default slot.
3420
- * @slot example - An example slot.
3421
- *
3422
- * @csspart base - The component's base wrapper.
3423
- *
3424
- * @cssproperty --example - An example CSS custom property.
3886
+ * @property {boolean} last - When true, removes the connecting line below this step (use for the final step in a sequence).
3887
+ * @property {boolean} first - When true, indicates this is the first step in the sequence (affects visual styling).
3888
+ * @property {boolean} active - When true, highlights this step as the current active step in the process.
3889
+ * @property {string} description - A descriptive text explaining what happens in this step or its current status.
3890
+ * @property {string} caption - The main label/title for this step.
3891
+ *
3892
+ * @slot icon - Optional slot for adding an icon or indicator before the step content.
3893
+ *
3894
+ * @csspart vs - The main container for the vertical stepper.
3895
+ * @csspart vs__left - The left section containing the icon and connecting line.
3896
+ * @csspart vs__icon - The icon container.
3897
+ * @csspart vs__line - The vertical connecting line between steps.
3898
+ * @csspart vs__right - The right section containing caption and description text.
3899
+ * @csspart vs__caption - The caption/title text element.
3900
+ * @csspart vs__description - The description text element.
3425
3901
  */
3426
3902
  export default class ZnVerticalStepper extends ZincElement {
3427
3903
  static styles: CSSResultGroup;
@@ -3466,6 +3942,8 @@ declare module "components/timer/timer.component" {
3466
3942
  export default class ZnTimer extends ZincElement {
3467
3943
  static styles: CSSResultGroup;
3468
3944
  private timestamp;
3945
+ private _timerId;
3946
+ disconnectedCallback(): void;
3469
3947
  private _getLastMessage;
3470
3948
  render(): import("lit").TemplateResult<1>;
3471
3949
  private _getTimes;
@@ -3574,18 +4052,18 @@ declare module "components/panel/panel.component" {
3574
4052
  import { type CSSResultGroup, type PropertyValues } from 'lit';
3575
4053
  import ZincElement from "internal/zinc-element";
3576
4054
  /**
3577
- * @summary Short summary of the component's intended use.
4055
+ * @summary Panels are versatile containers that provide structure for organizing content with optional headers and footers.
3578
4056
  * @documentation https://zinc.style/components/panel
3579
4057
  * @status experimental
3580
4058
  * @since 1.0
3581
4059
  *
3582
- * @slot - The default slot.
3583
- * @slot actions - The actions slot.
3584
- * @slot footer - The footer slot.
3585
- *
4060
+ * @slot - The panel's main content.
4061
+ * @slot actions - Actions displayed in the panel header (buttons, chips, etc).
4062
+ * @slot footer - Content displayed in the panel footer.
4063
+ *
3586
4064
  * @csspart base - The component's base wrapper.
3587
4065
  *
3588
- * @cssproperty --example - An example CSS custom property.
4066
+ * @cssproperty --zn-panel-basis - The flex-basis of the panel. Can be set using the basis-px attribute.
3589
4067
  */
3590
4068
  export default class ZnPanel extends ZincElement {
3591
4069
  static styles: CSSResultGroup;
@@ -3842,7 +4320,7 @@ declare module "components/sp/sp.component" {
3842
4320
  xl: string;
3843
4321
  };
3844
4322
  /**
3845
- * @summary Short summary of the component's intended use.
4323
+ * @summary A flexible layout container for spacing and arranging child elements in rows or columns with configurable gap, padding, and dividers.
3846
4324
  * @documentation https://zinc.style/components/sp
3847
4325
  * @status experimental
3848
4326
  * @since 1.0
@@ -3867,6 +4345,7 @@ declare module "components/sp/sp.component" {
3867
4345
  padX: boolean;
3868
4346
  padY: boolean;
3869
4347
  noGap: boolean;
4348
+ noPosition: boolean;
3870
4349
  flush: boolean;
3871
4350
  flushX: boolean;
3872
4351
  flushY: boolean;
@@ -3895,21 +4374,27 @@ declare module "components/stepper/stepper.component" {
3895
4374
  import { type CSSResultGroup } from 'lit';
3896
4375
  import ZincElement from "internal/zinc-element";
3897
4376
  /**
3898
- * @summary Short summary of the component's intended use.
4377
+ * @summary Steppers provide visual feedback about progress through a multi-step process or workflow.
3899
4378
  * @documentation https://zinc.style/components/stepper
3900
4379
  * @status experimental
3901
4380
  * @since 1.0
3902
4381
  *
3903
- * @dependency zn-example
3904
- *
3905
- * @event zn-event-name - Emitted as an example.
3906
- *
3907
- * @slot - The default slot.
3908
- * @slot example - An example slot.
3909
- *
3910
- * @csspart base - The component's base wrapper.
3911
- *
3912
- * @cssproperty --example - An example CSS custom property.
4382
+ * @property {string} caption - A descriptive label displayed above the stepper to indicate the current step or phase.
4383
+ * @property {string} label - An optional label displayed above the caption, typically used for the wizard or workflow name.
4384
+ * @property {number} steps - The total number of steps in the process.
4385
+ * @property {number} value - The current step position (0 to steps). Progress is calculated as value/steps.
4386
+ * @property {boolean} show-progress - When true, displays the step count (e.g., "2 / 5 steps") next to the caption.
4387
+ *
4388
+ * @csspart step-container - The container holding the progress line and steps.
4389
+ * @csspart step-line - The background line showing the full step track.
4390
+ * @csspart step-progress - The filled progress indicator showing completion.
4391
+ * @csspart steps - The container for individual step markers.
4392
+ * @csspart step - An individual step marker circle.
4393
+ * @csspart header - The header container with caption and progress text.
4394
+ * @csspart caption - The caption text element.
4395
+ * @csspart progress - The progress count text (e.g., "2 / 5 steps").
4396
+ * @csspart label - The label text container.
4397
+ * @csspart info - The label text element.
3913
4398
  */
3914
4399
  export default class ZnStepper extends ZincElement {
3915
4400
  static styles: CSSResultGroup;
@@ -4073,21 +4558,25 @@ declare module "components/progress-bar/progress-bar.component" {
4073
4558
  import { type CSSResultGroup } from 'lit';
4074
4559
  import ZincElement from "internal/zinc-element";
4075
4560
  /**
4076
- * @summary Short summary of the component's intended use.
4561
+ * @summary Progress bars provide visual feedback about the completion status of a task or process.
4077
4562
  * @documentation https://zinc.style/components/progress-bar
4078
4563
  * @status experimental
4079
4564
  * @since 1.0
4080
4565
  *
4081
- * @dependency zn-example
4082
- *
4083
- * @event zn-event-name - Emitted as an example.
4084
- *
4085
- * @slot - The default slot.
4086
- * @slot example - An example slot.
4087
- *
4088
- * @csspart base - The component's base wrapper.
4089
- *
4090
- * @cssproperty --example - An example CSS custom property.
4566
+ * @csspart header - The header container that contains the caption and progress text.
4567
+ * @csspart caption - The caption text element.
4568
+ * @csspart progress - The progress percentage text element.
4569
+ * @csspart bar - The SVG element containing the progress bar.
4570
+ * @csspart track - The background track of the progress bar.
4571
+ * @csspart fill - The filled portion of the progress bar indicating progress.
4572
+ * @csspart footer - The footer container that contains the description.
4573
+ * @csspart info - The description text element.
4574
+ *
4575
+ * @cssproperty --zn-border-color - The color of the progress bar background track.
4576
+ * @cssproperty --zn-primary - The color of the progress bar fill.
4577
+ * @cssproperty --zn-text-heading - The color of the caption text.
4578
+ * @cssproperty --zn-text - The color of the progress percentage and description text.
4579
+ * @cssproperty --zn-spacing-x-small - The spacing between header/footer and the progress bar.
4091
4580
  */
4092
4581
  export default class ZnProgressBar extends ZincElement {
4093
4582
  static styles: CSSResultGroup;
@@ -5014,6 +5503,8 @@ declare module "components/checkbox/checkbox.component" {
5014
5503
  indeterminate: boolean;
5015
5504
  /** Draws a container around the checkbox. */
5016
5505
  contained: boolean;
5506
+ /** Removes a container around the checkbox. */
5507
+ borderless: boolean;
5017
5508
  /** Applies styles relevant to checkboxes in a horizontal layout. */
5018
5509
  horizontal: boolean;
5019
5510
  /** The default value of the form control. Primarily used for resetting the form control. */
@@ -5093,21 +5584,41 @@ declare module "components/datepicker/datepicker.component" {
5093
5584
  import ZnTooltip from "components/tooltip/index";
5094
5585
  import type { ZincFormControl } from "internal/zinc-element";
5095
5586
  /**
5096
- * @summary Short summary of the component's intended use.
5587
+ * @summary A date picker component with calendar popup and input validation.
5097
5588
  * @documentation https://zinc.style/components/datepicker
5098
5589
  * @status experimental
5099
5590
  * @since 1.0
5100
5591
  *
5101
- * @dependency zn-example
5592
+ * @dependency zn-icon
5593
+ * @dependency zn-tooltip
5102
5594
  *
5103
- * @event zn-event-name - Emitted as an example.
5595
+ * @event zn-change - Emitted when the date value changes.
5596
+ * @event zn-input - Emitted when the input value changes.
5597
+ * @event zn-blur - Emitted when the input loses focus.
5598
+ * @event zn-focus - Emitted when the input gains focus.
5104
5599
  *
5105
- * @slot - The default slot.
5106
- * @slot example - An example slot.
5600
+ * @slot label - The datepicker's label. Alternatively, you can use the `label` attribute.
5601
+ * @slot label-tooltip - Tooltip content for the label. Alternatively, you can use the `label-tooltip` attribute.
5602
+ * @slot context-note - Additional context text displayed above the input. Alternatively, you can use the `context-note` attribute.
5603
+ * @slot help-text - Help text displayed below the input. Alternatively, you can use the `help-text` attribute.
5604
+ * @slot prefix - Content to display before the input (in addition to the default calendar icon).
5605
+ * @slot suffix - Content to display after the input.
5107
5606
  *
5108
5607
  * @csspart base - The component's base wrapper.
5109
- *
5110
- * @cssproperty --example - An example CSS custom property.
5608
+ * @csspart form-control - The form control wrapper.
5609
+ * @csspart form-control-label - The label element.
5610
+ * @csspart form-control-input - The input wrapper.
5611
+ * @csspart form-control-help-text - The help text element.
5612
+ *
5613
+ * @property format - Date format using AirDatepicker tokens. Default: 'dd/MM/yyyy'
5614
+ * Supported formats:
5615
+ * - dd/MM/yyyy (31/12/2024) - Default
5616
+ * - MM/dd/yyyy (12/31/2024)
5617
+ * - yyyy-MM-dd (2024-12-31)
5618
+ * - dd-MM-yyyy (31-12-2024)
5619
+ * - yyyy/MM/dd (2024/12/31)
5620
+ *
5621
+ * @cssproperty --zn-input-* - Inherited input component CSS custom properties.
5111
5622
  */
5112
5623
  export default class ZnDatepicker extends ZincElement implements ZincFormControl {
5113
5624
  static styles: CSSResultGroup;
@@ -5153,10 +5664,35 @@ declare module "components/datepicker/datepicker.component" {
5153
5664
  * in the same document or shadow root for this to work.
5154
5665
  */
5155
5666
  form: string;
5667
+ flush: boolean;
5156
5668
  /** Makes the input a required field. */
5157
5669
  required: boolean;
5670
+ /** Adds a clear button to the calendar for removing a selected date. **/
5671
+ clearable: boolean;
5158
5672
  /** Makes the input a range picker. **/
5159
5673
  range: boolean;
5674
+ /** Disallows selecting past dates. **/
5675
+ disablePastDates: boolean;
5676
+ /** Minimum date that can be selected. Overrides disable-past-dates if both are set. Accepts Date object or date string. **/
5677
+ minDate?: string | Date;
5678
+ /** Maximum date that can be selected. Accepts Date object or date string. **/
5679
+ maxDate?: string | Date;
5680
+ /**
5681
+ * Date format for display and input. Uses AirDatepicker format tokens.
5682
+ *
5683
+ * Common formats:
5684
+ * - 'dd/MM/yyyy' (31/12/2024) - Default, European style
5685
+ * - 'MM/dd/yyyy' (12/31/2024) - US style
5686
+ * - 'yyyy-MM-dd' (2024-12-31) - ISO style
5687
+ * - 'dd-MM-yyyy' (31-12-2024) - Alternative European
5688
+ * - 'yyyy/MM/dd' (2024/12/31) - Alternative ISO
5689
+ *
5690
+ * Format tokens:
5691
+ * - dd: Day with leading zero (01-31)
5692
+ * - MM: Month with leading zero (01-12)
5693
+ * - yyyy: Full year (2024)
5694
+ */
5695
+ format: string;
5160
5696
  private _instance;
5161
5697
  /** Gets the validity state object */
5162
5698
  get validity(): ValidityState;
@@ -5164,6 +5700,7 @@ declare module "components/datepicker/datepicker.component" {
5164
5700
  get validationMessage(): string;
5165
5701
  handleDisabledChange(): void;
5166
5702
  handleValueChange(): Promise<void>;
5703
+ handleDatepickerOptionsChange(): void;
5167
5704
  /** Sets focus on the input. */
5168
5705
  focus(options?: FocusOptions): void;
5169
5706
  /** Removes focus from the input. */
@@ -5182,6 +5719,18 @@ declare module "components/datepicker/datepicker.component" {
5182
5719
  private handleInput;
5183
5720
  private handleChange;
5184
5721
  private handleInvalid;
5722
+ private handleKeyDown;
5723
+ private handlePaste;
5724
+ private handleBlur;
5725
+ private isValidDateString;
5726
+ private parseDate;
5727
+ private parseDateString;
5728
+ private isDateInRange;
5729
+ private clearInvalidDate;
5730
+ private getFormatSeparator;
5731
+ private escapeRegex;
5732
+ private normalizeDate;
5733
+ private autoFormatDate;
5185
5734
  protected updated(_changedProperties: PropertyValues): void;
5186
5735
  render(): import("lit").TemplateResult<1>;
5187
5736
  }
@@ -5259,6 +5808,8 @@ declare module "components/input-group/input-group.component" {
5259
5808
  defaultSlot: HTMLSlotElement;
5260
5809
  /** The input group's label. If you need to display HTML, use the `label` slot. */
5261
5810
  label: string;
5811
+ /** Adds a gap between the grouped elements, preserving individual border radii. Use `sm`, `md`, or `lg`. */
5812
+ gap: 'sm' | 'md' | 'lg';
5262
5813
  private handleSlotChange;
5263
5814
  render(): import("lit").TemplateResult<1>;
5264
5815
  }
@@ -5970,6 +6521,7 @@ declare module "components/item/item.component" {
5970
6521
  connectedCallback(): void;
5971
6522
  protected updated(_changedProperties: PropertyValues): void;
5972
6523
  protected _hasContent(): boolean;
6524
+ protected _hasRequiredSlot(): boolean;
5973
6525
  render(): import("lit").TemplateResult<1>;
5974
6526
  }
5975
6527
  }
@@ -6534,6 +7086,7 @@ declare module "components/settings-container/settings-container.component" {
6534
7086
  private handleContentSlotChange;
6535
7087
  private handleFiltersSlotChange;
6536
7088
  private recomputeFiltersFromSlot;
7089
+ private updateSingleFilter;
6537
7090
  updateFilters(): void;
6538
7091
  updateFilter(e: ZnChangeEvent): void;
6539
7092
  render(): import("lit").TemplateResult<1>;
@@ -6688,12 +7241,12 @@ declare module "components/audio-select/index" {
6688
7241
  }
6689
7242
  }
6690
7243
  declare module "components/translations/translations.component" {
6691
- import type { PropertyValues } from 'lit';
6692
- import type { ZincFormControl } from "internal/zinc-element";
6693
7244
  import ZincElement from "internal/zinc-element";
6694
7245
  import ZnInlineEdit from "components/inline-edit/index";
6695
7246
  import ZnInput from "components/input/index";
6696
7247
  import ZnNavbar from "components/navbar/index";
7248
+ import type { PropertyValues } from 'lit';
7249
+ import type { ZincFormControl } from "internal/zinc-element";
6697
7250
  export default class ZnTranslations extends ZincElement implements ZincFormControl {
6698
7251
  static styles: import("lit").CSSResult;
6699
7252
  static dependencies: {
@@ -6709,6 +7262,8 @@ declare module "components/translations/translations.component" {
6709
7262
  disabled: boolean;
6710
7263
  required: boolean;
6711
7264
  flush: boolean;
7265
+ /** When true, hides the individual language navbar and defers language control to a parent zn-translation-group. */
7266
+ grouped: boolean;
6712
7267
  languages: Record<string, string>;
6713
7268
  values: Record<string, string>;
6714
7269
  private _activeLanguage;
@@ -6718,6 +7273,14 @@ declare module "components/translations/translations.component" {
6718
7273
  getForm(): HTMLFormElement | null;
6719
7274
  reportValidity(): boolean;
6720
7275
  setCustomValidity(): void;
7276
+ /** Sets the active language externally. Used by zn-translation-group. */
7277
+ setActiveLanguage(language: string): void;
7278
+ /** Returns the currently active language. */
7279
+ getActiveLanguage(): string;
7280
+ /** Adds a language key to this component's values if not already present. Used by zn-translation-group. */
7281
+ addLanguageKey(languageCode: string): void;
7282
+ /** Returns all language codes that have values. */
7283
+ getValueLanguages(): string[];
6721
7284
  protected firstUpdated(): void;
6722
7285
  willUpdate(changedProperties: PropertyValues): void;
6723
7286
  private handleLanguageAdd;
@@ -6726,6 +7289,7 @@ declare module "components/translations/translations.component" {
6726
7289
  private updateValue;
6727
7290
  private handleKeyDown;
6728
7291
  private handleSubmit;
7292
+ private isRTLLanguage;
6729
7293
  render(): import("lit").TemplateResult<1>;
6730
7294
  }
6731
7295
  }
@@ -6734,6 +7298,370 @@ declare module "components/translations/index" {
6734
7298
  export * from "components/translations/translations.component";
6735
7299
  export default ZnTranslations;
6736
7300
  }
7301
+ declare module "components/key/key.component" {
7302
+ import { type CSSResultGroup } from 'lit';
7303
+ import ZincElement from "internal/zinc-element";
7304
+ /**
7305
+ * @summary A legend key item, typically used alongside charts to label and toggle visibility of data series by category.
7306
+ * @documentation https://zinc.style/components/key
7307
+ * @status experimental
7308
+ * @since 1.0
7309
+ *
7310
+ * @slot - The description of the key.
7311
+ */
7312
+ export default class ZnKey extends ZincElement {
7313
+ static styles: CSSResultGroup;
7314
+ icon: string;
7315
+ attribute: string;
7316
+ value: string;
7317
+ color: 'primary' | 'success' | 'warning' | 'error' | 'info' | 'neutral';
7318
+ active: boolean;
7319
+ iconSize: number;
7320
+ private _handleClick;
7321
+ render(): import("lit").TemplateResult<1>;
7322
+ }
7323
+ }
7324
+ declare module "components/key/index" {
7325
+ import ZnKey from "components/key/key.component";
7326
+ export * from "components/key/key.component";
7327
+ export default ZnKey;
7328
+ global {
7329
+ interface HTMLElementTagNameMap {
7330
+ 'zn-key': ZnKey;
7331
+ }
7332
+ }
7333
+ }
7334
+ declare module "components/key-container/key-container.component" {
7335
+ import { type CSSResultGroup } from 'lit';
7336
+ import ZincElement from "internal/zinc-element";
7337
+ /**
7338
+ * @summary A legend container that manages key items, typically used alongside charts to toggle visibility of data series by category.
7339
+ * @documentation https://zinc.style/components/key-container
7340
+ * @status experimental
7341
+ * @since 1.0
7342
+ *
7343
+ * @slot - The content to be filtered.
7344
+ * @slot keys - The key items (zn-key) that define the filters.
7345
+ *
7346
+ * @event zn-change - Emitted when the set of active keys changes.
7347
+ */
7348
+ export default class ZnKeyContainer extends ZincElement {
7349
+ static styles: CSSResultGroup;
7350
+ keysSlot: HTMLSlotElement;
7351
+ defaultSlot: HTMLSlotElement;
7352
+ position: 'top-end' | 'top-start' | 'bottom-end' | 'bottom-start';
7353
+ target: string;
7354
+ itemSelector: string;
7355
+ filterAttribute: string;
7356
+ noScroll: boolean;
7357
+ private _hiddenElements;
7358
+ private _targetElement;
7359
+ connectedCallback(): void;
7360
+ firstUpdated(): void;
7361
+ private _handleKeyChange;
7362
+ private getKeys;
7363
+ private updateFilters;
7364
+ private itemMatchesKey;
7365
+ render(): import("lit").TemplateResult<1>;
7366
+ }
7367
+ }
7368
+ declare module "components/key-container/index" {
7369
+ import ZnKeyContainer from "components/key-container/key-container.component";
7370
+ export * from "components/key-container/key-container.component";
7371
+ export default ZnKeyContainer;
7372
+ global {
7373
+ interface HTMLElementTagNameMap {
7374
+ 'zn-key-container': ZnKeyContainer;
7375
+ }
7376
+ }
7377
+ }
7378
+ declare module "components/animated-button/animated-button.component" {
7379
+ import { type CSSResultGroup } from 'lit';
7380
+ import ZincElement from "internal/zinc-element";
7381
+ import ZnIcon from "components/icon/icon.component";
7382
+ export default class ZnAnimatedButton extends ZincElement {
7383
+ static styles: CSSResultGroup;
7384
+ static dependencies: {
7385
+ 'zn-icon': typeof ZnIcon;
7386
+ };
7387
+ private currentState;
7388
+ private errorMessage;
7389
+ /** The text to display in the idle state */
7390
+ idleText: string;
7391
+ /** The text to display in the processing state */
7392
+ processingText: string;
7393
+ /** The text to display in the success state */
7394
+ successText: string;
7395
+ /** The text to display in the failure state */
7396
+ failureText: string;
7397
+ /** The URL to redirect to after successful purchase */
7398
+ redirectUrl: string;
7399
+ /** Delay in milliseconds before redirecting after success (default: 1500ms) */
7400
+ redirectDelay: number;
7401
+ /** Delay in milliseconds before resetting from failure state (default: 2000ms) */
7402
+ failureResetDelay: number;
7403
+ /** Disabled state */
7404
+ disabled: boolean;
7405
+ /** The name of the form control (required for form submission) */
7406
+ name: string;
7407
+ /** The value of the form control */
7408
+ value: string;
7409
+ private resetTimeout?;
7410
+ private redirectTimeout?;
7411
+ disconnectedCallback(): void;
7412
+ private clearTimeouts;
7413
+ /** Programmatically trigger the purchase flow */
7414
+ purchase(): void;
7415
+ /** Set the button to success state manually */
7416
+ setSuccess(): void;
7417
+ /** Set the button to failure state manually with optional error message */
7418
+ setFailure(message?: string): void;
7419
+ /** Reset the button to idle state */
7420
+ reset(): void;
7421
+ private handlePurchase;
7422
+ private scheduleRedirect;
7423
+ private scheduleReset;
7424
+ private handleClick;
7425
+ protected render(): import("lit").TemplateResult<1>;
7426
+ }
7427
+ }
7428
+ declare module "components/animated-button/index" {
7429
+ import ZnAnimatedButton from "components/animated-button/animated-button.component";
7430
+ export * from "components/animated-button/animated-button.component";
7431
+ export default ZnAnimatedButton;
7432
+ global {
7433
+ interface HTMLElementTagNameMap {
7434
+ 'zn-animated-button': ZnAnimatedButton;
7435
+ }
7436
+ }
7437
+ }
7438
+ declare module "components/translation-group/translation-group.component" {
7439
+ import { type CSSResultGroup, type PropertyValues } from 'lit';
7440
+ import ZnButton from "components/button/index";
7441
+ import ZnButtonGroup from "components/button-group/index";
7442
+ import ZnDropdown from "components/dropdown/index";
7443
+ import ZnHeader from "components/header/index";
7444
+ import ZnMenu from "components/menu/index";
7445
+ import ZnPanel from "components/panel/panel.component";
7446
+ /**
7447
+ * @summary A panel-styled container that provides a shared language toggle for multiple zn-translations children.
7448
+ *
7449
+ * @dependency zn-button
7450
+ * @dependency zn-button-group
7451
+ * @dependency zn-dropdown
7452
+ * @dependency zn-menu
7453
+ *
7454
+ * @event zn-language-change - Emitted when the active language changes. Detail: `{ language: string }`.
7455
+ *
7456
+ * @slot - Default slot for `<zn-translations>` elements.
7457
+ * @slot actions - Actions displayed in the panel header alongside language buttons.
7458
+ *
7459
+ * @csspart base - The component's base wrapper.
7460
+ */
7461
+ export default class ZnTranslationGroup extends ZnPanel {
7462
+ static styles: CSSResultGroup;
7463
+ static dependencies: {
7464
+ 'zn-button': typeof ZnButton;
7465
+ 'zn-button-group': typeof ZnButtonGroup;
7466
+ 'zn-dropdown': typeof ZnDropdown;
7467
+ 'zn-header': typeof ZnHeader;
7468
+ 'zn-menu': typeof ZnMenu;
7469
+ };
7470
+ private readonly _slotController;
7471
+ /** The group label displayed in the panel header. */
7472
+ label: string;
7473
+ /** The available languages for the group. */
7474
+ languages: Record<string, string>;
7475
+ private _activeLanguage;
7476
+ /** Tracks all language codes that have been activated across children. */
7477
+ private _activatedLanguages;
7478
+ protected firstUpdated(_changedProperties: PropertyValues): void;
7479
+ protected updated(changedProperties: PropertyValues): void;
7480
+ private getAllTranslations;
7481
+ /** Sync grouped state, languages, and active language to all children. */
7482
+ private syncChildren;
7483
+ private syncChildLanguages;
7484
+ private handleSlotChange;
7485
+ private switchLanguage;
7486
+ private handleLanguageAdd;
7487
+ render(): import("lit").TemplateResult<1>;
7488
+ }
7489
+ }
7490
+ declare module "components/translation-group/index" {
7491
+ import ZnTranslationGroup from "components/translation-group/translation-group.component";
7492
+ export * from "components/translation-group/translation-group.component";
7493
+ export default ZnTranslationGroup;
7494
+ global {
7495
+ interface HTMLElementTagNameMap {
7496
+ 'zn-translation-group': ZnTranslationGroup;
7497
+ }
7498
+ }
7499
+ }
7500
+ declare module "components/priority-list/priority-list.component" {
7501
+ import { type CSSResultGroup, type PropertyValues } from 'lit';
7502
+ import { FormControlController } from "internal/form";
7503
+ import ZincElement from "internal/zinc-element";
7504
+ import ZnIcon from "components/icon/index";
7505
+ import type { ZincFormControl } from "internal/zinc-element";
7506
+ export interface PriorityItem {
7507
+ key: string;
7508
+ priority: number;
7509
+ }
7510
+ /**
7511
+ * @summary A reorderable list where each item receives a numerical priority based on its position. Supports drag-and-drop
7512
+ * and keyboard reordering. Priority values are submitted as form data via hidden inputs.
7513
+ *
7514
+ * @documentation https://zinc.style/components/priority-list
7515
+ * @status experimental
7516
+ * @since 1.0
7517
+ *
7518
+ * @dependency zn-icon
7519
+ *
7520
+ * @slot - The default slot where list items are placed. Each slotted element must have a `value` attribute that
7521
+ * uniquely identifies the item. The component automatically assigns slot names to project each item into the
7522
+ * correct position. The item's position in the list determines its priority (top = `priority-start`, incrementing).
7523
+ * @slot label - The component's label. Required for proper accessibility. Alternatively, use the `label` attribute.
7524
+ * @slot label-tooltip - Used to add text displayed in a tooltip next to the label.
7525
+ * @slot help-text - Text that describes how to use the component. Alternatively, use the `help-text` attribute.
7526
+ *
7527
+ * @event zn-change - Emitted when the order of items changes.
7528
+ * @event zn-reorder - Emitted when items are reordered. Call `getPriorityMap()` on the component to get
7529
+ * the updated `{ key: string, priority: number }[]` array.
7530
+ *
7531
+ * @csspart form-control - The form control wrapper.
7532
+ * @csspart form-control-label - The label wrapper.
7533
+ * @csspart form-control-input - The input area wrapper.
7534
+ * @csspart form-control-help-text - The help text wrapper.
7535
+ * @csspart list - The list container.
7536
+ * @csspart item - An individual list item row.
7537
+ * @csspart drag-handle - The drag handle icon.
7538
+ * @csspart priority - The priority number badge.
7539
+ * @csspart content - The content area of an item.
7540
+ *
7541
+ * @cssproperty --zn-priority-list-item-gap - The gap between list items. Defaults to `var(--zn-spacing-2x-small)`.
7542
+ * @cssproperty --zn-priority-list-item-padding - The padding inside each item. Defaults to `var(--zn-spacing-small) var(--zn-spacing-medium)`.
7543
+ * @cssproperty --zn-priority-list-handle-color - The color of the drag handle. Defaults to `var(--zn-color-neutral-500)`.
7544
+ * @cssproperty --zn-priority-list-priority-color - The color of the priority number. Defaults to `var(--zn-color-neutral-600)`.
7545
+ */
7546
+ export default class ZnPriorityList extends ZincElement implements ZincFormControl {
7547
+ static dependencies: {
7548
+ 'zn-icon': typeof ZnIcon;
7549
+ };
7550
+ static styles: CSSResultGroup;
7551
+ protected readonly formControlController: FormControlController;
7552
+ private readonly hasSlotController;
7553
+ hiddenInputsContainer: HTMLDivElement;
7554
+ /**
7555
+ * The name prefix for form submission. Each item generates a hidden input named `{name}[{itemValue}]`
7556
+ * with the priority number as its value.
7557
+ */
7558
+ name: string;
7559
+ /**
7560
+ * The current ordered list of item keys, reflecting the visual order. This is the source of truth for ordering.
7561
+ * Each entry should match a `value` attribute on a slotted child element.
7562
+ */
7563
+ get value(): string[];
7564
+ set value(val: string[]);
7565
+ private _value;
7566
+ defaultValue: string[];
7567
+ /** The component's label. Required for proper accessibility. */
7568
+ label: string;
7569
+ /** Text that appears in a tooltip next to the label. */
7570
+ labelTooltip: string;
7571
+ /** Help text that describes how to use the component. */
7572
+ helpText: string;
7573
+ /**
7574
+ * Associates the control with a form by id. The form must be in the same document or shadow root.
7575
+ */
7576
+ form: string;
7577
+ /** The size of the list items. */
7578
+ size: 'small' | 'medium' | 'large';
7579
+ /** Whether the priority list is disabled. */
7580
+ disabled: boolean;
7581
+ /** Ensures the form control has a value before allowing submission. */
7582
+ required: boolean;
7583
+ /** The starting priority number. Defaults to 1. */
7584
+ priorityStart: number;
7585
+ /**
7586
+ * When set, the associated form will be submitted with the given action URL whenever items are reordered.
7587
+ * If set to an empty string, the form will be submitted using its existing action.
7588
+ */
7589
+ formAction: string;
7590
+ /**
7591
+ * A comma-separated list of item keys defining the initial display order.
7592
+ * Keys must match the `value` attributes on slotted children.
7593
+ * Any slotted items not listed are appended at the end in DOM order.
7594
+ */
7595
+ order: string;
7596
+ private draggedKey;
7597
+ private isDragging;
7598
+ private dragOverKey;
7599
+ /** Gets the validity state object. */
7600
+ get validity(): ValidityState;
7601
+ /** Gets the validation message. */
7602
+ get validationMessage(): string;
7603
+ connectedCallback(): void;
7604
+ protected firstUpdated(_changedProperties: PropertyValues): void;
7605
+ /**
7606
+ * Initialize item order from slotted children if no explicit value was provided.
7607
+ * If an `order` attribute is set, use it to define the initial order,
7608
+ * appending any slotted items not listed in the order at the end.
7609
+ */
7610
+ private _initializeOrderFromSlot;
7611
+ /**
7612
+ * Gets all direct children with a `value` attribute (excluding those in reserved slots).
7613
+ */
7614
+ private _getSlottedItems;
7615
+ /**
7616
+ * Assigns `slot` attributes to light DOM children based on their `value` attribute,
7617
+ * so they project into the correct named slot in the shadow DOM.
7618
+ */
7619
+ private _assignSlotNames;
7620
+ /**
7621
+ * Returns the priority map: an array of { key, priority } objects.
7622
+ */
7623
+ getPriorityMap(): PriorityItem[];
7624
+ /**
7625
+ * Syncs hidden inputs so form data includes priority values.
7626
+ */
7627
+ private _syncHiddenInputs;
7628
+ /**
7629
+ * Moves an item from one index to another.
7630
+ */
7631
+ private _moveItem;
7632
+ /**
7633
+ * Submits the associated form if a `formaction` attribute is set.
7634
+ */
7635
+ private _submitForm;
7636
+ private _handleDragStart;
7637
+ private _handleDragEnd;
7638
+ private _handleDragOver;
7639
+ private _handleDragLeave;
7640
+ private _handleDrop;
7641
+ private _handleKeyDown;
7642
+ private _handleSlotChange;
7643
+ /** Checks for validity but does not show a validation message. */
7644
+ checkValidity(): boolean;
7645
+ /** Gets the associated form, if one exists. */
7646
+ getForm(): HTMLFormElement | null;
7647
+ /** Checks for validity and shows the browser's validation message if the control is invalid. */
7648
+ reportValidity(): boolean;
7649
+ /** Sets a custom validation message. Pass an empty string to restore validity. */
7650
+ setCustomValidity(_message?: string): void;
7651
+ protected updated(changedProperties: PropertyValues): void;
7652
+ render(): import("lit").TemplateResult<1>;
7653
+ }
7654
+ }
7655
+ declare module "components/priority-list/index" {
7656
+ import ZnPriorityList from "components/priority-list/priority-list.component";
7657
+ export * from "components/priority-list/priority-list.component";
7658
+ export default ZnPriorityList;
7659
+ global {
7660
+ interface HTMLElementTagNameMap {
7661
+ 'zn-priority-list': ZnPriorityList;
7662
+ }
7663
+ }
7664
+ }
6737
7665
  declare module "events/zn-after-hide" {
6738
7666
  export type ZnAfterHideEvent = CustomEvent<Record<PropertyKey, never>>;
6739
7667
  global {
@@ -6782,6 +7710,46 @@ declare module "events/zn-show" {
6782
7710
  }
6783
7711
  }
6784
7712
  }
7713
+ declare module "events/zn-purchase" {
7714
+ export type ZnPurchaseEvent = CustomEvent<{
7715
+ value: string;
7716
+ setSuccess: () => void;
7717
+ setFailure: (message?: string) => void;
7718
+ }>;
7719
+ global {
7720
+ interface GlobalEventHandlersEventMap {
7721
+ 'zn-purchase': ZnPurchaseEvent;
7722
+ }
7723
+ }
7724
+ }
7725
+ declare module "events/zn-redirect" {
7726
+ export type ZnRedirectEvent = CustomEvent<{
7727
+ url: string;
7728
+ }>;
7729
+ global {
7730
+ interface GlobalEventHandlersEventMap {
7731
+ 'zn-redirect': ZnRedirectEvent;
7732
+ }
7733
+ }
7734
+ }
7735
+ declare module "events/zn-language-change" {
7736
+ export type ZnLanguageChangeEvent = CustomEvent<{
7737
+ language: string;
7738
+ }>;
7739
+ global {
7740
+ interface GlobalEventHandlersEventMap {
7741
+ 'zn-language-change': ZnLanguageChangeEvent;
7742
+ }
7743
+ }
7744
+ }
7745
+ declare module "events/zn-reorder" {
7746
+ export type ZnReorderEvent = CustomEvent<Record<PropertyKey, never>>;
7747
+ global {
7748
+ interface GlobalEventHandlersEventMap {
7749
+ 'zn-reorder': ZnReorderEvent;
7750
+ }
7751
+ }
7752
+ }
6785
7753
  declare module "events/events" {
6786
7754
  export type { ZnAfterHideEvent } from "events/zn-after-hide";
6787
7755
  export type { ZnAfterShowEvent } from "events/zn-after-show";
@@ -6790,6 +7758,11 @@ declare module "events/events" {
6790
7758
  export type { ZnFocusEvent } from "events/zn-focus";
6791
7759
  export type { ZnInputEvent } from "events/zn-input";
6792
7760
  export type { ZnShowEvent } from "events/zn-show";
7761
+ export type { ZnPurchaseEvent } from "events/zn-purchase";
7762
+ export type { ZnRedirectEvent } from "events/zn-redirect";
7763
+ export type { ZnSearchChangeEvent } from "events/zn-search-change";
7764
+ export type { ZnLanguageChangeEvent } from "events/zn-language-change";
7765
+ export type { ZnReorderEvent } from "events/zn-reorder";
6793
7766
  }
6794
7767
  declare module "zinc" {
6795
7768
  export { default as Button } from "components/button/index";
@@ -6819,6 +7792,7 @@ declare module "zinc" {
6819
7792
  export { default as SimpleChart } from "components/simple-chart/index";
6820
7793
  export { default as Header } from "components/header/index";
6821
7794
  export { default as Navbar } from "components/navbar/index";
7795
+ export { default as IconPicker } from "components/icon-picker/index";
6822
7796
  export { default as InlineEdit } from "components/inline-edit/index";
6823
7797
  export { default as Pagination } from "components/pagination/index";
6824
7798
  export { default as VerticalStepper } from "components/vertical-stepper/index";
@@ -6864,6 +7838,7 @@ declare module "zinc" {
6864
7838
  export { default as Slideout } from "components/slideout/index";
6865
7839
  export { default as DataTableFilter } from "components/data-table-filter/index";
6866
7840
  export { default as DataTableSort } from "components/data-table-sort/index";
7841
+ export { default as DataTableSearch } from "components/data-table-search/index";
6867
7842
  export { default as ActionBar } from "components/action-bar/index";
6868
7843
  export { default as ExpandingAction } from "components/expanding-action/index";
6869
7844
  export { default as PageNav } from "components/page-nav/index";
@@ -6878,6 +7853,12 @@ declare module "zinc" {
6878
7853
  export { default as Reveal } from "components/reveal/index";
6879
7854
  export { default as AudioSelect } from "components/audio-select/index";
6880
7855
  export { default as Translations } from "components/translations/index";
7856
+ export { default as Key } from "components/key/index";
7857
+ export { default as KeyContainer } from "components/key-container/index";
7858
+ export { default as AnimatedButton } from "components/animated-button/index";
7859
+ export { default as TranslationGroup } from "components/translation-group/index";
7860
+ export { default as OptGroup } from "components/opt-group/index";
7861
+ export { default as PriorityList } from "components/priority-list/index";
6881
7862
  export { default as ZincElement } from "internal/zinc-element";
6882
7863
  export * from "utilities/on";
6883
7864
  export * from "utilities/query";
@@ -7077,7 +8058,7 @@ declare module "events/zn-sort-change" {
7077
8058
  }
7078
8059
  declare module "events/zn-submit" {
7079
8060
  export type ZnSubmitEvent = CustomEvent<{
7080
- value: string;
8061
+ value: string | string[];
7081
8062
  element: HTMLElement;
7082
8063
  }>;
7083
8064
  global {