kanto-ds 1.3.0 → 1.5.1

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 (134) hide show
  1. package/README.md +10 -10
  2. package/dist/chunks/defaults-CFrjqae2.js +59 -0
  3. package/dist/chunks/{defaults-DKzFsNbv.js.map → defaults-CFrjqae2.js.map} +1 -1
  4. package/dist/chunks/events-r51msXNf.js +22 -0
  5. package/dist/chunks/{events-Bjl5Zmmq.js.map → events-r51msXNf.js.map} +1 -1
  6. package/dist/chunks/floating-B7_Dahpn.js +54 -0
  7. package/dist/chunks/floating-B7_Dahpn.js.map +1 -0
  8. package/dist/chunks/{form-control-CxjBTt1c.js → form-control-B74_EHtG.js} +7 -7
  9. package/dist/chunks/form-control-B74_EHtG.js.map +1 -0
  10. package/dist/chunks/{index-fzPIgxe2.js → index-STEEvEP7.js} +33 -16
  11. package/dist/chunks/index-STEEvEP7.js.map +1 -0
  12. package/dist/chunks/kt-calendar-B_hFdD9V.js +640 -0
  13. package/dist/chunks/kt-calendar-B_hFdD9V.js.map +1 -0
  14. package/dist/chunks/{kt-element-mdd5cXZX.js → kt-element-Djx2JcGl.js} +2 -2
  15. package/dist/chunks/{kt-element-mdd5cXZX.js.map → kt-element-Djx2JcGl.js.map} +1 -1
  16. package/dist/chunks/{listbox-Sm3nvsC6.js → listbox-llcUu_V-.js} +18 -14
  17. package/dist/chunks/{listbox-Sm3nvsC6.js.map → listbox-llcUu_V-.js.map} +1 -1
  18. package/dist/chunks/locale-C5xLkGx5.js +14 -0
  19. package/dist/chunks/locale-C5xLkGx5.js.map +1 -0
  20. package/dist/chunks/position-Cx_ZH5zh.js +39 -0
  21. package/dist/chunks/position-Cx_ZH5zh.js.map +1 -0
  22. package/dist/components/core/kt-avatar/kt-avatar.js +2 -2
  23. package/dist/components/core/kt-badge/kt-badge.js +3 -3
  24. package/dist/components/core/kt-button/kt-button.js +1 -1
  25. package/dist/components/core/kt-card/kt-card.js +2 -2
  26. package/dist/components/core/kt-code/kt-code.js +3 -3
  27. package/dist/components/core/kt-icon/kt-icon.js +2 -2
  28. package/dist/components/core/kt-kbd/kt-kbd.js +1 -1
  29. package/dist/components/core/kt-split-button/kt-split-button.js +4 -4
  30. package/dist/components/data/kt-chart/kt-chart.js +52 -52
  31. package/dist/components/data/kt-chart/kt-chart.js.map +1 -1
  32. package/dist/components/data/kt-meter/kt-meter.js +1 -1
  33. package/dist/components/data/kt-pagination/kt-pagination.js +3 -3
  34. package/dist/components/data/kt-stat/kt-stat.js +1 -1
  35. package/dist/components/data/kt-table/kt-table.d.ts +53 -3
  36. package/dist/components/data/kt-table/kt-table.js +286 -131
  37. package/dist/components/data/kt-table/kt-table.js.map +1 -1
  38. package/dist/components/data/kt-table/window.d.ts +19 -0
  39. package/dist/components/data/kt-timeline/kt-timeline.js +1 -1
  40. package/dist/components/feedback/kt-alert/kt-alert.js +3 -3
  41. package/dist/components/feedback/kt-empty-state/kt-empty-state.js +1 -1
  42. package/dist/components/feedback/kt-progress-bar/kt-progress-bar.js +10 -10
  43. package/dist/components/feedback/kt-progress-bar/kt-progress-bar.js.map +1 -1
  44. package/dist/components/feedback/kt-skeleton/kt-skeleton.js +1 -1
  45. package/dist/components/feedback/kt-toast/kt-toast.js +58 -42
  46. package/dist/components/feedback/kt-toast/kt-toast.js.map +1 -1
  47. package/dist/components/feedback/kt-toast-container/kt-toast-container.js +1 -1
  48. package/dist/components/feedback/kt-tooltip/kt-tooltip.d.ts +20 -0
  49. package/dist/components/feedback/kt-tooltip/kt-tooltip.js +95 -51
  50. package/dist/components/feedback/kt-tooltip/kt-tooltip.js.map +1 -1
  51. package/dist/components/forms/kt-calendar/kt-calendar.d.ts +96 -0
  52. package/dist/components/forms/kt-calendar/kt-calendar.js +13 -0
  53. package/dist/components/forms/kt-calendar/kt-calendar.js.map +1 -0
  54. package/dist/components/forms/kt-checkbox/kt-checkbox.d.ts +75 -0
  55. package/dist/components/forms/kt-checkbox/kt-checkbox.js +212 -0
  56. package/dist/components/forms/kt-checkbox/kt-checkbox.js.map +1 -0
  57. package/dist/components/forms/kt-date-picker/kt-date-picker.d.ts +105 -0
  58. package/dist/components/forms/kt-date-picker/kt-date-picker.js +382 -0
  59. package/dist/components/forms/kt-date-picker/kt-date-picker.js.map +1 -0
  60. package/dist/components/forms/kt-drag-drop/kt-drag-drop.d.ts +9 -0
  61. package/dist/components/forms/kt-drag-drop/kt-drag-drop.js +36 -22
  62. package/dist/components/forms/kt-drag-drop/kt-drag-drop.js.map +1 -1
  63. package/dist/components/forms/kt-form/kt-form.js +11 -10
  64. package/dist/components/forms/kt-form/kt-form.js.map +1 -1
  65. package/dist/components/forms/kt-input/kt-input.d.ts +37 -1
  66. package/dist/components/forms/kt-input/kt-input.js +380 -194
  67. package/dist/components/forms/kt-input/kt-input.js.map +1 -1
  68. package/dist/components/forms/kt-input-menu/kt-input-menu.d.ts +13 -0
  69. package/dist/components/forms/kt-input-menu/kt-input-menu.js +73 -42
  70. package/dist/components/forms/kt-input-menu/kt-input-menu.js.map +1 -1
  71. package/dist/components/forms/kt-label-input/kt-label-input.js +1 -1
  72. package/dist/components/forms/kt-radio-group/kt-radio-group.d.ts +112 -0
  73. package/dist/components/forms/kt-radio-group/kt-radio-group.js +279 -0
  74. package/dist/components/forms/kt-radio-group/kt-radio-group.js.map +1 -0
  75. package/dist/components/forms/kt-select/kt-select.d.ts +13 -0
  76. package/dist/components/forms/kt-select/kt-select.js +87 -56
  77. package/dist/components/forms/kt-select/kt-select.js.map +1 -1
  78. package/dist/components/forms/kt-textarea/kt-textarea.d.ts +9 -0
  79. package/dist/components/forms/kt-textarea/kt-textarea.js +28 -14
  80. package/dist/components/forms/kt-textarea/kt-textarea.js.map +1 -1
  81. package/dist/components/forms/kt-toggle/kt-toggle.d.ts +9 -0
  82. package/dist/components/forms/kt-toggle/kt-toggle.js +43 -29
  83. package/dist/components/forms/kt-toggle/kt-toggle.js.map +1 -1
  84. package/dist/components/navigation/kt-breadcrumb/kt-breadcrumb.js +3 -3
  85. package/dist/components/navigation/kt-header/kt-header.js +3 -3
  86. package/dist/components/navigation/kt-page-header/kt-page-header.js +1 -1
  87. package/dist/components/navigation/kt-segmented-control/kt-segmented-control.d.ts +9 -0
  88. package/dist/components/navigation/kt-segmented-control/kt-segmented-control.js +40 -22
  89. package/dist/components/navigation/kt-segmented-control/kt-segmented-control.js.map +1 -1
  90. package/dist/components/navigation/kt-sub-menu-navigation/kt-sub-menu-navigation.js +3 -3
  91. package/dist/components/navigation/kt-tabs/kt-tabs.js +2 -2
  92. package/dist/components/navigation/kt-toggle-button/kt-toggle-button.js +2 -2
  93. package/dist/components/navigation/kt-toggle-button-group/kt-toggle-button-group.js +13 -7
  94. package/dist/components/navigation/kt-toggle-button-group/kt-toggle-button-group.js.map +1 -1
  95. package/dist/components/overlays/kt-collapsible/kt-collapsible.js +2 -2
  96. package/dist/components/overlays/kt-confirm-dialog/kt-confirm-dialog.js +3 -3
  97. package/dist/components/overlays/kt-dropdown/kt-dropdown.d.ts +7 -5
  98. package/dist/components/overlays/kt-dropdown/kt-dropdown.js +67 -57
  99. package/dist/components/overlays/kt-dropdown/kt-dropdown.js.map +1 -1
  100. package/dist/components/overlays/kt-modal/kt-modal.js +3 -3
  101. package/dist/components/overlays/kt-side-panel/kt-side-panel.js +3 -3
  102. package/dist/custom-elements.json +3526 -741
  103. package/dist/icons/defaults.d.ts +2 -0
  104. package/dist/icons/index.js +1 -1
  105. package/dist/index.d.ts +8 -0
  106. package/dist/index.js +99 -90
  107. package/dist/index.js.map +1 -1
  108. package/dist/internal/countries.d.ts +24 -9
  109. package/dist/internal/date.d.ts +53 -0
  110. package/dist/internal/events.d.ts +5 -0
  111. package/dist/internal/floating.d.ts +48 -0
  112. package/dist/internal/form-control.d.ts +5 -1
  113. package/dist/internal/locale.d.ts +15 -0
  114. package/dist/internal/position.d.ts +27 -0
  115. package/dist/internal/strings.d.ts +25 -0
  116. package/dist/react/index.d.ts +25 -0
  117. package/dist/react/index.js +189 -156
  118. package/dist/react/index.js.map +1 -1
  119. package/dist/react/jsx.d.ts +22 -1
  120. package/dist/strings/index.js +1 -1
  121. package/dist/tokens/base.css +5 -0
  122. package/dist/tokens/responsive.css +1 -0
  123. package/dist/tokens/spacing.css +1 -0
  124. package/dist/vscode.css-custom-data.json +20 -0
  125. package/dist/vscode.html-custom-data.json +221 -9
  126. package/dist/vue/index.d.ts +10 -0
  127. package/dist/vue/index.js +11 -7
  128. package/dist/vue/index.js.map +1 -1
  129. package/dist/web-types.json +514 -12
  130. package/package.json +18 -1
  131. package/dist/chunks/defaults-DKzFsNbv.js +0 -57
  132. package/dist/chunks/events-Bjl5Zmmq.js +0 -18
  133. package/dist/chunks/form-control-CxjBTt1c.js.map +0 -1
  134. package/dist/chunks/index-fzPIgxe2.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "kanto-ds",
4
- "version": "1.3.0",
4
+ "version": "1.5.1",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -1033,6 +1033,26 @@
1033
1033
  "description": "A data table: tri-state sorting, single or multiple selection, paging.\n\n---\n\n\n### **Events:**\n - **kt-sort-change** - Sorting changed. `detail: { key, direction }`.\n- **kt-selection-change** - Selection changed. `detail: { selected, rows }`.\n- **kt-row-click** - A row was clicked. `detail: { row, index }`.\n- **kt-page-change** - The page changed. `detail: { page }`.\n\n### **CSS Parts:**\n - **table** - The `<table>`.\n- **header-cell** - A `<th>`.\n- **row** - A `<tr>`.\n- **cell** - A `<td>`.",
1034
1034
  "doc-url": "",
1035
1035
  "attributes": [
1036
+ {
1037
+ "name": "page",
1038
+ "description": "The page on screen, from 1. Set it to open on another page.",
1039
+ "value": { "type": "number", "default": "1" }
1040
+ },
1041
+ {
1042
+ "name": "manual",
1043
+ "description": "For data sorted and paged on a server: `data` is the current page, shown\nas given. Headers and the pager still update the state and fire their\nevents, and the application loads what they ask for.",
1044
+ "value": { "type": "boolean", "default": "false" }
1045
+ },
1046
+ {
1047
+ "name": "virtual",
1048
+ "description": "Renders only the rows in view, for thousands of rows without paging. The\ntable scrolls inside its own box: give it a height (`kt-table { height:\n480px }`). Every row must be the same height — the first one rendered is\nmeasured. A page size takes precedence.",
1049
+ "value": { "type": "boolean", "default": "false" }
1050
+ },
1051
+ {
1052
+ "name": "total-rows",
1053
+ "description": "In manual mode, how many rows the server holds — what the pager counts.",
1054
+ "value": { "type": "number", "default": "0" }
1055
+ },
1036
1056
  {
1037
1057
  "name": "selectable",
1038
1058
  "value": { "type": "boolean", "default": "false" }
@@ -1077,6 +1097,11 @@
1077
1097
  "name": "label",
1078
1098
  "description": "Accessible name for the table.",
1079
1099
  "value": { "type": "string", "default": "''" }
1100
+ },
1101
+ {
1102
+ "name": "locale",
1103
+ "description": "BCP 47 locale text is sorted in. Empty means the page's `<html lang>`,\nthen the browser's language.",
1104
+ "value": { "type": "string", "default": "''" }
1080
1105
  }
1081
1106
  ],
1082
1107
  "events": [
@@ -1099,6 +1124,26 @@
1099
1124
  ],
1100
1125
  "js": {
1101
1126
  "properties": [
1127
+ {
1128
+ "name": "page",
1129
+ "description": "The page on screen, from 1. Set it to open on another page.",
1130
+ "type": "number"
1131
+ },
1132
+ {
1133
+ "name": "manual",
1134
+ "description": "For data sorted and paged on a server: `data` is the current page, shown\nas given. Headers and the pager still update the state and fire their\nevents, and the application loads what they ask for.",
1135
+ "type": "boolean"
1136
+ },
1137
+ {
1138
+ "name": "virtual",
1139
+ "description": "Renders only the rows in view, for thousands of rows without paging. The\ntable scrolls inside its own box: give it a height (`kt-table { height:\n480px }`). Every row must be the same height — the first one rendered is\nmeasured. A page size takes precedence.",
1140
+ "type": "boolean"
1141
+ },
1142
+ {
1143
+ "name": "totalRows",
1144
+ "description": "In manual mode, how many rows the server holds — what the pager counts.",
1145
+ "type": "number"
1146
+ },
1102
1147
  { "name": "columns", "type": "readonly KtTableColumn[]" },
1103
1148
  { "name": "data", "type": "readonly KtTableRow[]" },
1104
1149
  { "name": "selectable", "type": "boolean" },
@@ -1129,9 +1174,14 @@
1129
1174
  "description": "Accessible name for the table.",
1130
1175
  "type": "string"
1131
1176
  },
1177
+ {
1178
+ "name": "locale",
1179
+ "description": "BCP 47 locale text is sorted in. Empty means the page's `<html lang>`,\nthen the browser's language.",
1180
+ "type": "string"
1181
+ },
1132
1182
  {
1133
1183
  "name": "sortedRows",
1134
- "description": "The rows after sorting, before paging.",
1184
+ "description": "The rows after sorting, before paging.\n\nSorted once per change of `data`, `sortKey`, `sortDirection` or locale, not on\nevery render: hovering a row or ticking a box re-renders the table, and\nre-sorting a few thousand rows each time is what made that lag. Assign a\nnew array to `data` rather than changing it in place.",
1135
1185
  "type": "readonly KtTableRow[]"
1136
1186
  },
1137
1187
  { "name": "totalPages", "type": "number" },
@@ -1625,8 +1675,14 @@
1625
1675
  { "name": "text", "value": { "type": "string", "default": "''" } },
1626
1676
  {
1627
1677
  "name": "placement",
1678
+ "description": "The side the bubble prefers. It takes the opposite one when this one has\nno room — \"top\" on a trigger at the top of the page shows below it.",
1628
1679
  "value": { "type": "KtTooltipPlacement", "default": "'top'" }
1629
1680
  },
1681
+ {
1682
+ "name": "open",
1683
+ "description": "Shows the bubble whatever the pointer and focus do — for a trigger that\ncannot take focus itself, like an icon beside a field, whose owner shows\nit while the field is focused.",
1684
+ "value": { "type": "boolean", "default": "false" }
1685
+ },
1630
1686
  {
1631
1687
  "name": "disabled",
1632
1688
  "description": "Suppresses the tooltip without removing it from the markup.",
@@ -1638,7 +1694,16 @@
1638
1694
  "js": {
1639
1695
  "properties": [
1640
1696
  { "name": "text", "type": "string" },
1641
- { "name": "placement", "type": "KtTooltipPlacement" },
1697
+ {
1698
+ "name": "placement",
1699
+ "description": "The side the bubble prefers. It takes the opposite one when this one has\nno room — \"top\" on a trigger at the top of the page shows below it.",
1700
+ "type": "KtTooltipPlacement"
1701
+ },
1702
+ {
1703
+ "name": "open",
1704
+ "description": "Shows the bubble whatever the pointer and focus do — for a trigger that\ncannot take focus itself, like an icon beside a field, whose owner shows\nit while the field is focused.",
1705
+ "type": "boolean"
1706
+ },
1642
1707
  {
1643
1708
  "name": "disabled",
1644
1709
  "description": "Suppresses the tooltip without removing it from the markup.",
@@ -1648,9 +1713,308 @@
1648
1713
  "events": []
1649
1714
  }
1650
1715
  },
1716
+ {
1717
+ "name": "kt-calendar",
1718
+ "description": "A month calendar to pick a day or a period from, shown in the page.\n\nThe same calendar `<kt-date-picker>` opens in its popup, for when the\ncalendar is the interface rather than a way to fill a field: a booking\npage, a dashboard's date filter, a planning view.\n\nThe header's month and year are buttons. The month opens a grid of the\ntwelve months, the year a grid of twelve years, so reaching a date years\naway takes three clicks rather than paging month by month.\n\nKeyboard, in the day grid (the WAI-ARIA date grid pattern): arrows by day\nand week, Home/End to the week's ends, Page Up/Down by month and with Shift\nby year, Enter to choose. In the month and year grids: arrows, Page Up/Down\nby year or by twelve years, Enter to choose, Escape back to the days.\n\n---\n\n\n### **Events:**\n - **kt-change** - A day, or a whole period, was chosen. `detail: { value }`.\n\n### **Methods:**\n - **focus(): _void_** - Focuses the grid's current cell — the chosen day, or today.\n\n### **CSS Parts:**\n - **base** - The calendar.\n- **day** - A day cell.",
1719
+ "doc-url": "",
1720
+ "attributes": [
1721
+ {
1722
+ "name": "value",
1723
+ "description": "ISO date, or `start/end` interval with `range`. `null` when empty.",
1724
+ "value": { "type": "string | null", "default": "null" }
1725
+ },
1726
+ {
1727
+ "name": "range",
1728
+ "description": "Choose a period — two dates — instead of one day.",
1729
+ "value": { "type": "boolean", "default": "false" }
1730
+ },
1731
+ {
1732
+ "name": "min",
1733
+ "description": "Earliest date that can be chosen, ISO.",
1734
+ "value": { "type": "string", "default": "''" }
1735
+ },
1736
+ {
1737
+ "name": "max",
1738
+ "description": "Latest date that can be chosen, ISO.",
1739
+ "value": { "type": "string", "default": "''" }
1740
+ },
1741
+ {
1742
+ "name": "locale",
1743
+ "description": "BCP 47 language tag for names and the first day of the week. Empty: the\npage's `lang`, then the browser's language.",
1744
+ "value": { "type": "string", "default": "''" }
1745
+ },
1746
+ {
1747
+ "name": "label",
1748
+ "description": "Accessible name of the calendar. Defaults to the strings registry.",
1749
+ "value": { "type": "string", "default": "''" }
1750
+ }
1751
+ ],
1752
+ "events": [
1753
+ {
1754
+ "name": "kt-change",
1755
+ "description": "A day, or a whole period, was chosen. `detail: { value }`."
1756
+ }
1757
+ ],
1758
+ "js": {
1759
+ "properties": [
1760
+ {
1761
+ "name": "value",
1762
+ "description": "ISO date, or `start/end` interval with `range`. `null` when empty.",
1763
+ "type": "string | null"
1764
+ },
1765
+ {
1766
+ "name": "range",
1767
+ "description": "Choose a period — two dates — instead of one day.",
1768
+ "type": "boolean"
1769
+ },
1770
+ {
1771
+ "name": "min",
1772
+ "description": "Earliest date that can be chosen, ISO.",
1773
+ "type": "string"
1774
+ },
1775
+ {
1776
+ "name": "max",
1777
+ "description": "Latest date that can be chosen, ISO.",
1778
+ "type": "string"
1779
+ },
1780
+ {
1781
+ "name": "locale",
1782
+ "description": "BCP 47 language tag for names and the first day of the week. Empty: the\npage's `lang`, then the browser's language.",
1783
+ "type": "string"
1784
+ },
1785
+ {
1786
+ "name": "label",
1787
+ "description": "Accessible name of the calendar. Defaults to the strings registry.",
1788
+ "type": "string"
1789
+ }
1790
+ ],
1791
+ "events": [
1792
+ {
1793
+ "name": "kt-change",
1794
+ "description": "A day, or a whole period, was chosen. `detail: { value }`."
1795
+ }
1796
+ ]
1797
+ }
1798
+ },
1799
+ {
1800
+ "name": "kt-checkbox",
1801
+ "description": "A checkbox: a choice that applies when the form is submitted.\n\nBuilt on a real `<input type=\"checkbox\">`, laid invisibly over the drawn\nbox, so the keyboard, the label click, the indeterminate state and what a\nscreen reader announces all come from the platform rather than a\nreimplementation of it.\n\nFor a setting that takes effect the moment it is flipped, use\n`<kt-toggle>`; for one choice among several, `<kt-radio-group>`.\n\n---\n\n\n### **Events:**\n - **kt-change** - The box was checked or unchecked. `detail: { checked }`.\n\n### **Methods:**\n - **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n\n### **Slots:**\n - _default_ - The label, clickable.\n\n### **CSS Parts:**\n - **base** - The `<label>` around box and text.\n- **input** - The native checkbox.\n- **box** - The drawn box.",
1802
+ "doc-url": "",
1803
+ "attributes": [
1804
+ {
1805
+ "name": "checked",
1806
+ "value": { "type": "boolean", "default": "false" }
1807
+ },
1808
+ {
1809
+ "name": "indeterminate",
1810
+ "description": "Neither checked nor unchecked — for a \"select all\" over a partial\nselection. Cleared as soon as the user clicks, as on a native checkbox.",
1811
+ "value": { "type": "boolean", "default": "false" }
1812
+ },
1813
+ {
1814
+ "name": "disabled",
1815
+ "value": { "type": "boolean", "default": "false" }
1816
+ },
1817
+ {
1818
+ "name": "required",
1819
+ "value": { "type": "boolean", "default": "false" }
1820
+ },
1821
+ {
1822
+ "name": "size",
1823
+ "value": { "type": "KtCheckboxSize", "default": "'medium'" }
1824
+ },
1825
+ { "name": "name", "value": { "type": "string", "default": "''" } },
1826
+ {
1827
+ "name": "value",
1828
+ "description": "Submitted when checked, as for a native checkbox.",
1829
+ "value": { "type": "string", "default": "'on'" }
1830
+ },
1831
+ {
1832
+ "name": "label",
1833
+ "description": "Accessible name, when nothing is slotted.",
1834
+ "value": { "type": "string", "default": "''" }
1835
+ },
1836
+ {
1837
+ "name": "error",
1838
+ "description": "Error message. A non-empty value puts the box in its error state.",
1839
+ "value": { "type": "string", "default": "''" }
1840
+ }
1841
+ ],
1842
+ "slots": [{ "name": "", "description": "The label, clickable." }],
1843
+ "events": [
1844
+ {
1845
+ "name": "kt-change",
1846
+ "description": "The box was checked or unchecked. `detail: { checked }`."
1847
+ }
1848
+ ],
1849
+ "js": {
1850
+ "properties": [
1851
+ { "name": "checked", "type": "boolean" },
1852
+ {
1853
+ "name": "indeterminate",
1854
+ "description": "Neither checked nor unchecked — for a \"select all\" over a partial\nselection. Cleared as soon as the user clicks, as on a native checkbox.",
1855
+ "type": "boolean"
1856
+ },
1857
+ { "name": "disabled", "type": "boolean" },
1858
+ { "name": "required", "type": "boolean" },
1859
+ { "name": "size", "type": "KtCheckboxSize" },
1860
+ { "name": "name", "type": "string" },
1861
+ {
1862
+ "name": "value",
1863
+ "description": "Submitted when checked, as for a native checkbox.",
1864
+ "type": "string"
1865
+ },
1866
+ {
1867
+ "name": "label",
1868
+ "description": "Accessible name, when nothing is slotted.",
1869
+ "type": "string"
1870
+ },
1871
+ {
1872
+ "name": "error",
1873
+ "description": "Error message. A non-empty value puts the box in its error state.",
1874
+ "type": "string"
1875
+ }
1876
+ ],
1877
+ "events": [
1878
+ {
1879
+ "name": "kt-change",
1880
+ "description": "The box was checked or unchecked. `detail: { checked }`."
1881
+ }
1882
+ ]
1883
+ }
1884
+ },
1885
+ {
1886
+ "name": "kt-date-picker",
1887
+ "description": "A date field with a calendar, for one day or a period.\n\nThe value is ISO 8601 text, the format a server and a `<input type=\"date\">`\nalready speak: `2026-09-25`, or `2026-09-01/2026-09-25` for a period. What\nthe field shows is the same date formatted for the reader's language, and\nthe calendar starts its weeks on the day their region does.\n\nThe popup is a `<kt-calendar>`, with its keyboard model and its month and\nyear views: the WAI-ARIA date picker dialog pattern, where Escape closes the\ndialog and hands focus back to the field, and tabbing out closes it too.\n\n---\n\n\n### **Events:**\n - **kt-change** - A date or a whole period was chosen, or the value cleared. `detail: { value }` — the ISO date or interval, or `null`.\n\n### **Methods:**\n - **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n\n### **CSS Parts:**\n - **trigger** - The field.\n- **panel** - The calendar popup.\n- **calendar** - The `<kt-calendar>` inside it.",
1888
+ "doc-url": "",
1889
+ "attributes": [
1890
+ {
1891
+ "name": "value",
1892
+ "description": "ISO date, or `start/end` interval with `range`. `null` when empty.",
1893
+ "value": { "type": "string | null", "default": "null" }
1894
+ },
1895
+ {
1896
+ "name": "range",
1897
+ "description": "Choose a period — two dates — instead of one day.",
1898
+ "value": { "type": "boolean", "default": "false" }
1899
+ },
1900
+ {
1901
+ "name": "min",
1902
+ "description": "Earliest date that can be chosen, ISO.",
1903
+ "value": { "type": "string", "default": "''" }
1904
+ },
1905
+ {
1906
+ "name": "max",
1907
+ "description": "Latest date that can be chosen, ISO.",
1908
+ "value": { "type": "string", "default": "''" }
1909
+ },
1910
+ { "name": "name", "value": { "type": "string", "default": "''" } },
1911
+ {
1912
+ "name": "label",
1913
+ "description": "Accessible name, when no `<kt-label-input>` wraps the field.",
1914
+ "value": { "type": "string", "default": "''" }
1915
+ },
1916
+ {
1917
+ "name": "placeholder",
1918
+ "description": "Shown while empty. Defaults to the strings registry.",
1919
+ "value": { "type": "string | undefined", "default": "undefined" }
1920
+ },
1921
+ {
1922
+ "name": "locale",
1923
+ "description": "BCP 47 language tag for formatting and for the first day of the week.\nEmpty: the page's `lang`, then the browser's language.",
1924
+ "value": { "type": "string", "default": "''" }
1925
+ },
1926
+ {
1927
+ "name": "size",
1928
+ "value": { "type": "KtDatePickerSize", "default": "'medium'" }
1929
+ },
1930
+ {
1931
+ "name": "disabled",
1932
+ "value": { "type": "boolean", "default": "false" }
1933
+ },
1934
+ {
1935
+ "name": "required",
1936
+ "value": { "type": "boolean", "default": "false" }
1937
+ },
1938
+ {
1939
+ "name": "clearable",
1940
+ "description": "Shows a button that empties the field once it holds a value.",
1941
+ "value": { "type": "boolean", "default": "true" }
1942
+ },
1943
+ {
1944
+ "name": "error",
1945
+ "description": "Error message. A non-empty value puts the field in its error state.",
1946
+ "value": { "type": "string", "default": "''" }
1947
+ }
1948
+ ],
1949
+ "events": [
1950
+ {
1951
+ "name": "kt-change",
1952
+ "description": "A date or a whole period was chosen, or the value cleared. `detail: { value }` — the ISO date or interval, or `null`."
1953
+ }
1954
+ ],
1955
+ "js": {
1956
+ "properties": [
1957
+ {
1958
+ "name": "value",
1959
+ "description": "ISO date, or `start/end` interval with `range`. `null` when empty.",
1960
+ "type": "string | null"
1961
+ },
1962
+ {
1963
+ "name": "range",
1964
+ "description": "Choose a period — two dates — instead of one day.",
1965
+ "type": "boolean"
1966
+ },
1967
+ {
1968
+ "name": "min",
1969
+ "description": "Earliest date that can be chosen, ISO.",
1970
+ "type": "string"
1971
+ },
1972
+ {
1973
+ "name": "max",
1974
+ "description": "Latest date that can be chosen, ISO.",
1975
+ "type": "string"
1976
+ },
1977
+ { "name": "name", "type": "string" },
1978
+ {
1979
+ "name": "label",
1980
+ "description": "Accessible name, when no `<kt-label-input>` wraps the field.",
1981
+ "type": "string"
1982
+ },
1983
+ {
1984
+ "name": "placeholder",
1985
+ "description": "Shown while empty. Defaults to the strings registry.",
1986
+ "type": "string | undefined"
1987
+ },
1988
+ {
1989
+ "name": "locale",
1990
+ "description": "BCP 47 language tag for formatting and for the first day of the week.\nEmpty: the page's `lang`, then the browser's language.",
1991
+ "type": "string"
1992
+ },
1993
+ { "name": "size", "type": "KtDatePickerSize" },
1994
+ { "name": "disabled", "type": "boolean" },
1995
+ { "name": "required", "type": "boolean" },
1996
+ {
1997
+ "name": "clearable",
1998
+ "description": "Shows a button that empties the field once it holds a value.",
1999
+ "type": "boolean"
2000
+ },
2001
+ {
2002
+ "name": "error",
2003
+ "description": "Error message. A non-empty value puts the field in its error state.",
2004
+ "type": "string"
2005
+ }
2006
+ ],
2007
+ "events": [
2008
+ {
2009
+ "name": "kt-change",
2010
+ "description": "A date or a whole period was chosen, or the value cleared. `detail: { value }` — the ISO date or interval, or `null`."
2011
+ }
2012
+ ]
2013
+ }
2014
+ },
1651
2015
  {
1652
2016
  "name": "kt-drag-drop",
1653
- "description": "A file drop zone.\n\nAccepts a drop or a click, lists what was picked with sizes and types, and\nlets each entry be removed. It holds the files in memory and reports them —\nuploading is the application's business.\n\n---\n\n\n### **Events:**\n - **kt-files-change** - The selection changed. `detail: { files }`.\n- **kt-files-rejected** - Files were refused. `detail: { files, reason }`.\n\n### **Methods:**\n - **clear(): _void_** - Empties the selection without firing a rejection.\n\n### **CSS Parts:**\n - **base** - The dashed drop zone.\n- **list** - The list of chosen files.",
2017
+ "description": "A file drop zone.\n\nAccepts a drop or a click, lists what was picked with sizes and types, and\nlets each entry be removed. It holds the files in memory and reports them —\nuploading is the application's business.\n\n---\n\n\n### **Events:**\n - **kt-files-change** - The selection changed. `detail: { files }`.\n- **kt-files-rejected** - Files were refused. `detail: { files, reason }`.\n\n### **Methods:**\n - **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n- **clear(): _void_** - Empties the selection without firing a rejection.\n\n### **CSS Parts:**\n - **base** - The dashed drop zone.\n- **list** - The list of chosen files.",
1654
2018
  "doc-url": "",
1655
2019
  "attributes": [
1656
2020
  {
@@ -1830,7 +2194,7 @@
1830
2194
  },
1831
2195
  {
1832
2196
  "name": "kt-input",
1833
- "description": "A single-line text field.\n\nBorderless by design: the field is a fill on `--color-dark-12` that gains a\n2px *outline* — grey on hover, primary on focus, danger on error. An outline\nsits outside the box, so nothing reflows when the state changes.\n\nThe element is form-associated: it serialises into `FormData` under its\n`name`, resets with the form, and reports validity like a native input.\n\n---\n\n\n### **Events:**\n - **kt-input** - On every keystroke. `detail: { value }`.\n- **kt-change** - When the value is committed (blur or Enter). `detail: { value }`.\n- **kt-clear** - The clear button was pressed.\n\n### **Methods:**\n - **formResetCallback(): _void_** - Called by the platform when the enclosing form is reset.\n- **formStateRestoreCallback(state: _string_): _void_** - Called by the platform when the browser restores a session.\n- **select(): _void_** - Selects the field's contents, as `HTMLInputElement.select()` does.\n\n### **CSS Parts:**\n - **base** - The field container.\n- **control** - The native `<input>`.\n- **actions** - The trailing icon row.",
2197
+ "description": "A single-line text field.\n\nBorderless by design: the field is a fill on `--color-dark-12` that gains a\n2px *outline* — grey on hover, primary on focus, danger on error. An outline\nsits outside the box, so nothing reflows when the state changes.\n\nThe element is form-associated: it serialises into `FormData` under its\n`name`, resets with the form, and reports validity like a native input.\n\n---\n\n\n### **Events:**\n - **kt-input** - On every keystroke. `detail: { value }`.\n- **kt-change** - When the value is committed (blur or Enter). `detail: { value }`.\n- **kt-clear** - The clear button was pressed.\n\n### **Methods:**\n - **formResetCallback(): _void_** - Called by the platform when the enclosing form is reset.\n- **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n- **formStateRestoreCallback(state: _string_): _void_** - Called by the platform when the browser restores a session.\n- **select(): _void_** - Selects the field's contents, as `HTMLInputElement.select()` does.\n\n### **CSS Parts:**\n - **base** - The field container.\n- **control** - The native `<input>`.\n- **actions** - The trailing icon row.",
1834
2198
  "doc-url": "",
1835
2199
  "attributes": [
1836
2200
  {
@@ -1872,7 +2236,7 @@
1872
2236
  },
1873
2237
  {
1874
2238
  "name": "error",
1875
- "description": "Error message. A non-empty value puts the field in its error state.",
2239
+ "description": "Error message. A non-empty value puts the field in its error state, and\nwins over the field's own checks.",
1876
2240
  "value": { "type": "string", "default": "''" }
1877
2241
  },
1878
2242
  {
@@ -1939,7 +2303,7 @@
1939
2303
  },
1940
2304
  {
1941
2305
  "name": "error",
1942
- "description": "Error message. A non-empty value puts the field in its error state.",
2306
+ "description": "Error message. A non-empty value puts the field in its error state, and\nwins over the field's own checks.",
1943
2307
  "type": "string"
1944
2308
  },
1945
2309
  {
@@ -1983,7 +2347,7 @@
1983
2347
  },
1984
2348
  {
1985
2349
  "name": "kt-input-menu",
1986
- "description": "A combobox: type to narrow the list, then pick.\n\nReach for it over `<kt-select>` once the list is long enough that scanning it\nis slower than typing three letters — somewhere around twenty options.\n\n---\n\n\n### **Events:**\n - **kt-change** - An option was chosen or cleared. `detail: { value, option }`.\n- **kt-filter** - The query changed. `detail: { query }`.\n\n### **CSS Parts:**\n - **control** - The field.\n- **input** - The native `<input>`.\n- **popup** - The option list.\n- **option** - An option row.",
2350
+ "description": "A combobox: type to narrow the list, then pick.\n\nReach for it over `<kt-select>` once the list is long enough that scanning it\nis slower than typing three letters — somewhere around twenty options.\n\n---\n\n\n### **Events:**\n - **kt-change** - An option was chosen or cleared. `detail: { value, option }`.\n- **kt-filter** - The query changed. `detail: { query }`.\n\n### **Methods:**\n - **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n\n### **CSS Parts:**\n - **control** - The field.\n- **input** - The native `<input>`.\n- **popup** - The option list.\n- **option** - An option row.",
1987
2351
  "doc-url": "",
1988
2352
  "attributes": [
1989
2353
  {
@@ -2081,9 +2445,147 @@
2081
2445
  "events": []
2082
2446
  }
2083
2447
  },
2448
+ {
2449
+ "name": "kt-radio",
2450
+ "description": "One option of a `<kt-radio-group>`.\n\nIt draws itself and carries `role=\"radio\"`; the group owns the selection,\nthe tab stop and the keyboard. A `<kt-radio>` outside a group does nothing\nuseful.\n\n---\n\n\n### **Slots:**\n - _default_ - The label.\n\n### **CSS Parts:**\n - **base** - The `role=\"radio\"` row.\n- **circle** - The drawn circle.",
2451
+ "doc-url": "",
2452
+ "attributes": [
2453
+ {
2454
+ "name": "value",
2455
+ "description": "Submitted by the group when this option is chosen.",
2456
+ "value": { "type": "string", "default": "''" }
2457
+ },
2458
+ {
2459
+ "name": "disabled",
2460
+ "value": { "type": "boolean", "default": "false" }
2461
+ },
2462
+ {
2463
+ "name": "checked",
2464
+ "description": "Set by the group.",
2465
+ "value": { "type": "boolean", "default": "false" }
2466
+ },
2467
+ {
2468
+ "name": "invalid",
2469
+ "description": "Set by the group while it reports an error.",
2470
+ "value": { "type": "boolean", "default": "false" }
2471
+ },
2472
+ {
2473
+ "name": "group-disabled",
2474
+ "description": "Set by the group while the whole group is disabled.",
2475
+ "value": { "type": "boolean", "default": "false" }
2476
+ }
2477
+ ],
2478
+ "slots": [{ "name": "", "description": "The label." }],
2479
+ "events": [],
2480
+ "js": {
2481
+ "properties": [
2482
+ {
2483
+ "name": "value",
2484
+ "description": "Submitted by the group when this option is chosen.",
2485
+ "type": "string"
2486
+ },
2487
+ { "name": "disabled", "type": "boolean" },
2488
+ {
2489
+ "name": "checked",
2490
+ "description": "Set by the group.",
2491
+ "type": "boolean"
2492
+ },
2493
+ {
2494
+ "name": "tabbable",
2495
+ "description": "Set by the group: whether this option holds the group's one tab stop.",
2496
+ "type": "boolean"
2497
+ },
2498
+ {
2499
+ "name": "invalid",
2500
+ "description": "Set by the group while it reports an error.",
2501
+ "type": "boolean"
2502
+ },
2503
+ {
2504
+ "name": "groupDisabled",
2505
+ "description": "Set by the group while the whole group is disabled.",
2506
+ "type": "boolean"
2507
+ }
2508
+ ],
2509
+ "events": []
2510
+ }
2511
+ },
2512
+ {
2513
+ "name": "kt-radio-group",
2514
+ "description": "One choice among a few, all visible at once.\n\nReach for it over `<kt-select>` when there are few enough options to show\nthem all — seeing every option is the point — and over\n`<kt-segmented-control>` when the options need a sentence each, or the\nchoice belongs in a form rather than a toolbar.\n\nNative radios cannot form a group across shadow roots, so this is the ARIA\nradio group pattern: one tab stop for the whole group, arrow keys move and\nselect, disabled options are skipped.\n\n---\n\n\n### **Events:**\n - **kt-change** - An option was chosen. `detail: { value }`.\n\n### **Methods:**\n - **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n\n### **Slots:**\n - _default_ - The `<kt-radio>` options.\n\n### **CSS Parts:**\n - **base** - The `role=\"radiogroup\"` container.",
2515
+ "doc-url": "",
2516
+ "attributes": [
2517
+ {
2518
+ "name": "value",
2519
+ "description": "The chosen option's value, or `null`.",
2520
+ "value": { "type": "string | null", "default": "null" }
2521
+ },
2522
+ { "name": "name", "value": { "type": "string", "default": "''" } },
2523
+ {
2524
+ "name": "label",
2525
+ "description": "Accessible name of the group.",
2526
+ "value": { "type": "string", "default": "''" }
2527
+ },
2528
+ {
2529
+ "name": "disabled",
2530
+ "value": { "type": "boolean", "default": "false" }
2531
+ },
2532
+ {
2533
+ "name": "required",
2534
+ "value": { "type": "boolean", "default": "false" }
2535
+ },
2536
+ {
2537
+ "name": "orientation",
2538
+ "value": {
2539
+ "type": "KtRadioGroupOrientation",
2540
+ "default": "'vertical'"
2541
+ }
2542
+ },
2543
+ {
2544
+ "name": "error",
2545
+ "description": "Error message. A non-empty value puts the group in its error state.",
2546
+ "value": { "type": "string", "default": "''" }
2547
+ }
2548
+ ],
2549
+ "slots": [{ "name": "", "description": "The `<kt-radio>` options." }],
2550
+ "events": [
2551
+ {
2552
+ "name": "kt-change",
2553
+ "description": "An option was chosen. `detail: { value }`."
2554
+ }
2555
+ ],
2556
+ "js": {
2557
+ "properties": [
2558
+ {
2559
+ "name": "value",
2560
+ "description": "The chosen option's value, or `null`.",
2561
+ "type": "string | null"
2562
+ },
2563
+ { "name": "name", "type": "string" },
2564
+ {
2565
+ "name": "label",
2566
+ "description": "Accessible name of the group.",
2567
+ "type": "string"
2568
+ },
2569
+ { "name": "disabled", "type": "boolean" },
2570
+ { "name": "required", "type": "boolean" },
2571
+ { "name": "orientation", "type": "KtRadioGroupOrientation" },
2572
+ {
2573
+ "name": "error",
2574
+ "description": "Error message. A non-empty value puts the group in its error state.",
2575
+ "type": "string"
2576
+ }
2577
+ ],
2578
+ "events": [
2579
+ {
2580
+ "name": "kt-change",
2581
+ "description": "An option was chosen. `detail: { value }`."
2582
+ }
2583
+ ]
2584
+ }
2585
+ },
2084
2586
  {
2085
2587
  "name": "kt-select",
2086
- "description": "A single-choice dropdown.\n\nUnlike the trigger-plus-div it replaces, this is a real listbox: arrow keys\nmove an active descendant, Home and End jump to the ends, Enter commits,\nEscape closes without changing anything, and disabled options are skipped\nrather than merely unclickable.\n\n---\n\n\n### **Events:**\n - **kt-change** - An option was chosen or cleared. `detail: { value, option }`.\n\n### **CSS Parts:**\n - **trigger** - The button that opens the list.\n- **popup** - The option list.\n- **option** - An option row.",
2588
+ "description": "A single-choice dropdown.\n\nUnlike the trigger-plus-div it replaces, this is a real listbox: arrow keys\nmove an active descendant, Home and End jump to the ends, Enter commits,\nEscape closes without changing anything, and disabled options are skipped\nrather than merely unclickable.\n\n---\n\n\n### **Events:**\n - **kt-change** - An option was chosen or cleared. `detail: { value, option }`.\n\n### **Methods:**\n - **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n\n### **CSS Parts:**\n - **trigger** - The button that opens the list.\n- **popup** - The option list.\n- **option** - An option row.",
2087
2589
  "doc-url": "",
2088
2590
  "attributes": [
2089
2591
  {
@@ -2188,7 +2690,7 @@
2188
2690
  },
2189
2691
  {
2190
2692
  "name": "kt-textarea",
2191
- "description": "A multi-line text field, with the same borderless fill and outline states as\n`<kt-input>`.\n\nA character counter appears whenever `maxlength` is set — the field tells\nthe user where the limit is before the browser silently stops accepting\nkeystrokes.\n\n---\n\n\n### **Events:**\n - **kt-input** - On every keystroke. `detail: { value }`.\n- **kt-change** - When the value is committed. `detail: { value }`.\n\n### **CSS Parts:**\n - **base** - The field container.\n- **control** - The native `<textarea>`.\n- **counter** - The character counter.",
2693
+ "description": "A multi-line text field, with the same borderless fill and outline states as\n`<kt-input>`.\n\nA character counter appears whenever `maxlength` is set — the field tells\nthe user where the limit is before the browser silently stops accepting\nkeystrokes.\n\n---\n\n\n### **Events:**\n - **kt-input** - On every keystroke. `detail: { value }`.\n- **kt-change** - When the value is committed. `detail: { value }`.\n\n### **Methods:**\n - **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n\n### **CSS Parts:**\n - **base** - The field container.\n- **control** - The native `<textarea>`.\n- **counter** - The character counter.",
2192
2694
  "doc-url": "",
2193
2695
  "attributes": [
2194
2696
  { "name": "value", "value": { "type": "string", "default": "''" } },
@@ -2277,7 +2779,7 @@
2277
2779
  },
2278
2780
  {
2279
2781
  "name": "kt-toggle",
2280
- "description": "An on/off switch.\n\nSized off the button heights so a toggle lines up with the controls beside\nit: the track is 1.8× the field height, the thumb is inset by 12% of it.\nChange `--button-height` and the switch follows.\n\n---\n\n\n### **Events:**\n - **kt-change** - The state changed. `detail: { checked }`.\n\n### **Slots:**\n - _default_ - Optional label, rendered beside the switch and clickable.\n\n### **CSS Parts:**\n - **base** - The button carrying `role=\"switch\"`.\n- **track** - The track.\n- **thumb** - The sliding thumb.",
2782
+ "description": "An on/off switch.\n\nSized off the button heights so a toggle lines up with the controls beside\nit: the track is 1.8× the field height, the thumb is inset by 12% of it.\nChange `--button-height` and the switch follows.\n\n---\n\n\n### **Events:**\n - **kt-change** - The state changed. `detail: { checked }`.\n\n### **Methods:**\n - **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n\n### **Slots:**\n - _default_ - Optional label, rendered beside the switch and clickable.\n\n### **CSS Parts:**\n - **base** - The button carrying `role=\"switch\"`.\n- **track** - The track.\n- **thumb** - The sliding thumb.",
2281
2783
  "doc-url": "",
2282
2784
  "attributes": [
2283
2785
  {
@@ -2516,7 +3018,7 @@
2516
3018
  },
2517
3019
  {
2518
3020
  "name": "kt-segmented-control",
2519
- "description": "A small set of mutually exclusive choices, shown as one inset track with the\nselected segment raised out of it.\n\nUse it for two to five options that all fit on screen — a view switch, a date\nrange. Past that, `<kt-select>`.\n\nImplemented as a radio group: one tab stop for the whole control, arrows to\nmove between segments. That is what a keyboard user expects here, and it\nkeeps a five-option control from adding five tab stops to the page.\n\n---\n\n\n### **Events:**\n - **kt-change** - A segment was chosen. `detail: { value, option }`.\n\n### **CSS Parts:**\n - **base** - The track.\n- **option** - A segment.",
3021
+ "description": "A small set of mutually exclusive choices, shown as one inset track with the\nselected segment raised out of it.\n\nUse it for two to five options that all fit on screen — a view switch, a date\nrange. Past that, `<kt-select>`.\n\nImplemented as a radio group: one tab stop for the whole control, arrows to\nmove between segments. That is what a keyboard user expects here, and it\nkeeps a five-option control from adding five tab stops to the page.\n\n---\n\n\n### **Events:**\n - **kt-change** - A segment was chosen. `detail: { value, option }`.\n\n### **Methods:**\n - **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n\n### **CSS Parts:**\n - **base** - The track.\n- **option** - A segment.",
2520
3022
  "doc-url": "",
2521
3023
  "attributes": [
2522
3024
  {