@vonage/vivid 4.16.2 → 4.17.0

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 (292) hide show
  1. package/custom-elements.json +3426 -506
  2. package/elevation/index.cjs +1 -1
  3. package/elevation/index.js +1 -1
  4. package/index.cjs +147 -39
  5. package/index.js +64 -59
  6. package/lib/accordion/definition.d.ts +2 -0
  7. package/lib/accordion-item/definition.d.ts +2 -0
  8. package/lib/action-group/definition.d.ts +2 -0
  9. package/lib/alert/definition.d.ts +2 -0
  10. package/lib/audio-player/definition.d.ts +2 -0
  11. package/lib/avatar/definition.d.ts +2 -0
  12. package/lib/badge/definition.d.ts +2 -0
  13. package/lib/banner/definition.d.ts +2 -0
  14. package/lib/breadcrumb/definition.d.ts +2 -0
  15. package/lib/breadcrumb-item/definition.d.ts +2 -0
  16. package/lib/button/definition.d.ts +2 -0
  17. package/lib/calendar/calendar.d.ts +2 -0
  18. package/lib/calendar/definition.d.ts +2 -0
  19. package/lib/calendar-event/definition.d.ts +2 -0
  20. package/lib/card/definition.d.ts +2 -0
  21. package/lib/checkbox/definition.d.ts +2 -0
  22. package/lib/combobox/definition.d.ts +2 -0
  23. package/lib/components.d.ts +1 -0
  24. package/lib/data-grid/definition.d.ts +4 -0
  25. package/lib/date-picker/definition.d.ts +2 -0
  26. package/lib/date-range-picker/definition.d.ts +2 -0
  27. package/lib/dial-pad/definition.d.ts +2 -0
  28. package/lib/dialog/definition.d.ts +2 -0
  29. package/lib/divider/definition.d.ts +2 -0
  30. package/lib/empty-state/definition.d.ts +2 -0
  31. package/lib/enums.d.ts +6 -0
  32. package/lib/fab/definition.d.ts +2 -0
  33. package/lib/file-picker/definition.d.ts +2 -0
  34. package/lib/header/definition.d.ts +2 -0
  35. package/lib/icon/definition.d.ts +2 -0
  36. package/lib/layout/definition.d.ts +2 -0
  37. package/lib/menu/definition.d.ts +2 -0
  38. package/lib/menu/menu.d.ts +454 -4
  39. package/lib/menu-item/definition.d.ts +2 -0
  40. package/lib/nav/definition.d.ts +2 -0
  41. package/lib/nav-disclosure/definition.d.ts +2 -0
  42. package/lib/nav-item/definition.d.ts +2 -0
  43. package/lib/note/definition.d.ts +2 -0
  44. package/lib/number-field/definition.d.ts +2 -0
  45. package/lib/option/definition.d.ts +2 -0
  46. package/lib/pagination/definition.d.ts +2 -0
  47. package/lib/popup/definition.d.ts +0 -1
  48. package/lib/popup/popup.d.ts +25 -0
  49. package/lib/progress/definition.d.ts +2 -0
  50. package/lib/progress-ring/definition.d.ts +2 -0
  51. package/lib/radio/definition.d.ts +2 -0
  52. package/lib/radio-group/definition.d.ts +2 -0
  53. package/lib/range-slider/definition.d.ts +2 -0
  54. package/lib/rich-text-editor/definition.d.ts +2 -0
  55. package/lib/rich-text-editor/facades/prose-mirror-vivid.schema.d.ts +2 -0
  56. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +7 -0
  57. package/lib/rich-text-editor/rich-text-editor.d.ts +13 -0
  58. package/lib/rich-text-editor/rich-text-editor.template.d.ts +4 -0
  59. package/lib/searchable-select/definition.d.ts +2 -0
  60. package/lib/select/definition.d.ts +2 -0
  61. package/lib/selectable-box/definition.d.ts +2 -0
  62. package/lib/side-drawer/definition.d.ts +2 -0
  63. package/lib/slider/definition.d.ts +2 -0
  64. package/lib/split-button/definition.d.ts +2 -0
  65. package/lib/switch/definition.d.ts +2 -0
  66. package/lib/tab/definition.d.ts +2 -0
  67. package/lib/tab-panel/definition.d.ts +2 -0
  68. package/lib/tabs/definition.d.ts +2 -0
  69. package/lib/tag/definition.d.ts +2 -0
  70. package/lib/tag-group/definition.d.ts +2 -0
  71. package/lib/text-area/definition.d.ts +2 -0
  72. package/lib/text-field/definition.d.ts +2 -0
  73. package/lib/time-picker/definition.d.ts +2 -0
  74. package/lib/time-picker/inline-time-picker/columns.d.ts +13 -0
  75. package/lib/time-picker/inline-time-picker/definition.d.ts +1 -0
  76. package/lib/time-picker/inline-time-picker/inline-time-picker.d.ts +15 -0
  77. package/lib/time-picker/inline-time-picker/inline-time-picker.template.d.ts +5 -0
  78. package/lib/time-picker/time-picker.template.d.ts +1 -2
  79. package/lib/toggletip/definition.d.ts +2 -0
  80. package/lib/toggletip/toggletip.d.ts +454 -4
  81. package/lib/tooltip/definition.d.ts +2 -0
  82. package/lib/tooltip/tooltip.d.ts +454 -4
  83. package/lib/tree-item/definition.d.ts +2 -0
  84. package/lib/tree-view/definition.d.ts +2 -0
  85. package/lib/video-player/definition.d.ts +2 -0
  86. package/menu/index.js +1 -1
  87. package/package.json +7 -2
  88. package/popup/index.cjs +1 -1
  89. package/popup/index.js +1 -1
  90. package/rich-text-editor/index.cjs +5 -0
  91. package/rich-text-editor/index.js +3 -0
  92. package/searchable-select/index.cjs +1 -1
  93. package/searchable-select/index.js +1 -1
  94. package/select/index.cjs +1 -1
  95. package/select/index.js +1 -1
  96. package/selectable-box/index.cjs +1 -1
  97. package/selectable-box/index.js +1 -1
  98. package/shared/affix.cjs +1 -3
  99. package/shared/affix.js +2 -4
  100. package/shared/anchored.cjs +12 -9
  101. package/shared/anchored.js +13 -10
  102. package/shared/definition.js +1 -1
  103. package/shared/definition10.cjs +1 -0
  104. package/shared/definition10.js +2 -2
  105. package/shared/definition11.cjs +1 -1
  106. package/shared/definition11.js +2 -2
  107. package/shared/definition12.cjs +1 -1
  108. package/shared/definition12.js +2 -2
  109. package/shared/definition13.cjs +15 -2
  110. package/shared/definition13.js +16 -4
  111. package/shared/definition14.cjs +3 -2
  112. package/shared/definition14.js +4 -4
  113. package/shared/definition15.cjs +1 -1
  114. package/shared/definition15.js +2 -2
  115. package/shared/definition16.cjs +18 -18
  116. package/shared/definition16.js +6 -6
  117. package/shared/definition17.cjs +3 -0
  118. package/shared/definition17.js +2 -2
  119. package/shared/definition18.cjs +7 -7
  120. package/shared/definition18.js +4 -4
  121. package/shared/definition19.cjs +15 -15
  122. package/shared/definition19.js +4 -4
  123. package/shared/definition2.cjs +1 -0
  124. package/shared/definition2.js +2 -2
  125. package/shared/definition20.cjs +5 -4
  126. package/shared/definition20.js +6 -6
  127. package/shared/definition21.cjs +3 -2
  128. package/shared/definition21.js +4 -4
  129. package/shared/definition22.js +1 -1
  130. package/shared/definition23.cjs +2 -1
  131. package/shared/definition23.js +3 -3
  132. package/shared/definition24.cjs +2 -1
  133. package/shared/definition24.js +3 -3
  134. package/shared/definition25.cjs +14 -14
  135. package/shared/definition25.js +3 -3
  136. package/shared/definition26.cjs +2 -1
  137. package/shared/definition26.js +3 -3
  138. package/shared/definition27.cjs +1 -1
  139. package/shared/definition27.js +2 -2
  140. package/shared/definition28.cjs +1 -0
  141. package/shared/definition28.js +2 -2
  142. package/shared/definition29.cjs +53 -61
  143. package/shared/definition29.js +54 -63
  144. package/shared/definition3.cjs +1 -0
  145. package/shared/definition3.js +2 -2
  146. package/shared/definition30.cjs +1 -0
  147. package/shared/definition30.js +2 -2
  148. package/shared/definition31.cjs +1 -0
  149. package/shared/definition31.js +2 -2
  150. package/shared/definition32.cjs +1 -0
  151. package/shared/definition32.js +2 -2
  152. package/shared/definition33.cjs +2 -1
  153. package/shared/definition33.js +3 -3
  154. package/shared/definition34.cjs +25 -25
  155. package/shared/definition34.js +5 -5
  156. package/shared/definition35.cjs +1 -1
  157. package/shared/definition35.js +2 -2
  158. package/shared/definition36.cjs +2 -1
  159. package/shared/definition36.js +3 -3
  160. package/shared/definition37.cjs +1 -1
  161. package/shared/definition37.js +2 -2
  162. package/shared/definition38.cjs +2 -1
  163. package/shared/definition38.js +3 -3
  164. package/shared/definition39.cjs +1 -0
  165. package/shared/definition39.js +2 -2
  166. package/shared/definition4.cjs +3 -2
  167. package/shared/definition4.js +4 -4
  168. package/shared/definition40.cjs +1 -1
  169. package/shared/definition40.js +2 -2
  170. package/shared/definition41.cjs +30 -30
  171. package/shared/definition41.js +5 -5
  172. package/shared/definition42.cjs +12538 -1052
  173. package/shared/definition42.js +12538 -1053
  174. package/shared/definition43.cjs +927 -701
  175. package/shared/definition43.js +929 -702
  176. package/shared/definition44.cjs +874 -104
  177. package/shared/definition44.js +874 -104
  178. package/shared/definition45.cjs +114 -90
  179. package/shared/definition45.js +113 -90
  180. package/shared/definition46.cjs +88 -464
  181. package/shared/definition46.js +87 -463
  182. package/shared/definition47.cjs +463 -109
  183. package/shared/definition47.js +462 -109
  184. package/shared/definition48.cjs +108 -106
  185. package/shared/definition48.js +107 -106
  186. package/shared/definition49.cjs +139 -13
  187. package/shared/definition49.js +138 -13
  188. package/shared/definition5.cjs +3 -2
  189. package/shared/definition5.js +5 -5
  190. package/shared/definition50.cjs +16 -114
  191. package/shared/definition50.js +15 -114
  192. package/shared/definition51.cjs +79 -485
  193. package/shared/definition51.js +78 -485
  194. package/shared/definition52.cjs +503 -23
  195. package/shared/definition52.js +502 -23
  196. package/shared/definition53.cjs +25 -123
  197. package/shared/definition53.js +24 -123
  198. package/shared/definition54.cjs +96 -254
  199. package/shared/definition54.js +96 -255
  200. package/shared/definition55.cjs +261 -59
  201. package/shared/definition55.js +262 -60
  202. package/shared/definition56.cjs +72 -861
  203. package/shared/definition56.js +72 -861
  204. package/shared/definition57.cjs +880 -107
  205. package/shared/definition57.js +880 -107
  206. package/shared/definition58.cjs +104 -88
  207. package/shared/definition58.js +104 -89
  208. package/shared/definition59.cjs +80 -165
  209. package/shared/definition59.js +79 -163
  210. package/shared/definition6.cjs +2 -1
  211. package/shared/definition6.js +3 -3
  212. package/shared/definition60.cjs +142 -228
  213. package/shared/definition60.js +141 -229
  214. package/shared/definition61.cjs +233 -70146
  215. package/shared/definition61.js +232 -70146
  216. package/shared/definition62.cjs +69381 -28
  217. package/shared/definition62.js +69380 -27
  218. package/shared/definition63.cjs +28 -2163
  219. package/shared/definition63.js +27 -2161
  220. package/shared/definition64.cjs +2195 -0
  221. package/shared/definition64.js +2190 -0
  222. package/shared/definition7.cjs +2 -1
  223. package/shared/definition7.js +3 -3
  224. package/shared/definition8.cjs +2 -1
  225. package/shared/definition8.js +3 -3
  226. package/shared/definition9.cjs +1 -1
  227. package/shared/definition9.js +2 -2
  228. package/shared/enums.cjs +8 -0
  229. package/shared/enums.js +8 -1
  230. package/shared/form-associated.js +1 -1
  231. package/shared/form-elements.cjs +7 -7
  232. package/shared/form-elements.js +8 -8
  233. package/shared/foundation/vivid-element/vivid-element.d.ts +1 -0
  234. package/shared/patterns/anchored.d.ts +891 -10
  235. package/shared/patterns/trapped-focus.d.ts +2 -0
  236. package/shared/presentationDate.cjs +5 -7
  237. package/shared/presentationDate.js +5 -7
  238. package/shared/slider.template.cjs +4 -4
  239. package/shared/slider.template.js +4 -4
  240. package/shared/text-anchor.template.cjs +2 -2
  241. package/shared/text-anchor.template.js +2 -2
  242. package/shared/text-field.cjs +555 -2
  243. package/shared/text-field.js +554 -2
  244. package/shared/text-field2.cjs +2 -572
  245. package/shared/text-field2.js +2 -571
  246. package/shared/trapped-focus.cjs +7 -1
  247. package/shared/trapped-focus.js +7 -1
  248. package/shared/utils/mixins.d.ts +3 -0
  249. package/shared/vivid-element.cjs +3 -0
  250. package/shared/vivid-element.js +4 -1
  251. package/side-drawer/index.cjs +1 -1
  252. package/side-drawer/index.js +1 -1
  253. package/slider/index.cjs +1 -1
  254. package/slider/index.js +1 -1
  255. package/split-button/index.cjs +1 -1
  256. package/split-button/index.js +1 -1
  257. package/styles/core/all.css +1 -1
  258. package/styles/core/theme.css +1 -1
  259. package/styles/core/typography.css +1 -1
  260. package/styles/tokens/theme-dark.css +4 -4
  261. package/styles/tokens/theme-light.css +4 -4
  262. package/styles/tokens/vivid-2-compat.css +1 -1
  263. package/switch/index.cjs +1 -1
  264. package/switch/index.js +1 -1
  265. package/tab/index.cjs +1 -1
  266. package/tab/index.js +1 -1
  267. package/tab-panel/index.cjs +1 -1
  268. package/tab-panel/index.js +1 -1
  269. package/tabs/index.cjs +1 -1
  270. package/tabs/index.js +1 -1
  271. package/tag/index.cjs +1 -1
  272. package/tag/index.js +1 -1
  273. package/tag-group/index.cjs +1 -1
  274. package/tag-group/index.js +1 -1
  275. package/text-anchor/index.js +1 -1
  276. package/text-area/index.cjs +1 -1
  277. package/text-area/index.js +1 -1
  278. package/text-field/index.cjs +1 -1
  279. package/text-field/index.js +1 -1
  280. package/time-picker/index.cjs +1 -1
  281. package/time-picker/index.js +1 -1
  282. package/toggletip/index.cjs +1 -1
  283. package/toggletip/index.js +1 -1
  284. package/tooltip/index.cjs +1 -1
  285. package/tooltip/index.js +1 -1
  286. package/tree-item/index.cjs +1 -1
  287. package/tree-item/index.js +1 -1
  288. package/tree-view/index.cjs +1 -1
  289. package/tree-view/index.js +1 -1
  290. package/video-player/index.cjs +1 -1
  291. package/video-player/index.js +1 -1
  292. package/vivid.api.json +22795 -1
@@ -1,24 +1,150 @@
1
1
  'use strict';
2
2
 
3
+ const definition = require('./definition27.cjs');
3
4
  const vividElement = require('./vivid-element.cjs');
5
+ const formAssociated = require('./form-associated.cjs');
6
+ const keyCodes = require('./key-codes.cjs');
7
+ const classNames = require('./class-names.cjs');
8
+ const when = require('./when.cjs');
4
9
 
5
- class TabPanel extends vividElement.VividElement {
10
+ const styles = ":host(.disabled){cursor:not-allowed}.control.connotation-cta{--_connotation-color-primary-text: var(--vvd-switch-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-increment: var(--vvd-switch-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-firm: var(--vvd-switch-cta-firm, var(--vvd-color-cta-600));--_connotation-color-intermediate: var(--vvd-switch-cta-intermediate, var(--vvd-color-cta-500));--_connotation-color-fierce: var(--vvd-switch-cta-fierce, var(--vvd-color-cta-700))}.control.connotation-alert{--_connotation-color-primary-text: var(--vvd-switch-alert-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-alert-primary, var(--vvd-color-alert-500));--_connotation-color-primary-increment: var(--vvd-switch-alert-primary-increment, var(--vvd-color-alert-600));--_connotation-color-firm: var(--vvd-switch-alert-firm, var(--vvd-color-alert-600));--_connotation-color-intermediate: var(--vvd-switch-alert-intermediate, var(--vvd-color-alert-500));--_connotation-color-fierce: var(--vvd-switch-alert-fierce, var(--vvd-color-alert-700))}.control.connotation-success{--_connotation-color-primary-text: var(--vvd-switch-success-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-success-primary, var(--vvd-color-success-500));--_connotation-color-primary-increment: var(--vvd-switch-success-primary-increment, var(--vvd-color-success-600));--_connotation-color-firm: var(--vvd-switch-success-firm, var(--vvd-color-success-600));--_connotation-color-intermediate: var(--vvd-switch-success-intermediate, var(--vvd-color-success-500));--_connotation-color-fierce: var(--vvd-switch-success-fierce, var(--vvd-color-success-700))}.control.connotation-announcement{--_connotation-color-primary-text: var(--vvd-switch-announcement-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-announcement-primary, var(--vvd-color-announcement-500));--_connotation-color-primary-increment: var(--vvd-switch-announcement-primary-increment, var(--vvd-color-announcement-600));--_connotation-color-firm: var(--vvd-switch-announcement-firm, var(--vvd-color-announcement-600));--_connotation-color-intermediate: var(--vvd-switch-announcement-intermediate, var(--vvd-color-announcement-500));--_connotation-color-fierce: var(--vvd-switch-announcement-fierce, var(--vvd-color-announcement-700))}.control:not(.connotation-cta,.connotation-alert,.connotation-success,.connotation-announcement){--_connotation-color-primary-text: var(--vvd-switch-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-increment: var(--vvd-switch-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-switch-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-intermediate: var(--vvd-switch-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-fierce: var(--vvd-switch-accent-fierce, var(--vvd-color-neutral-700))}.control{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.control.appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: transparent}.control:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:where(.disabled,:disabled).appearance-filled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: transparent}.control:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.control:where(.readonly):where(:not(.disabled,:disabled)).appearance-filled{--_appearance-color-text: var(--vvd-color-neutral-800);--_appearance-color-fill: var(--vvd-color-neutral-500);--_appearance-color-outline: transparent}.control{display:inline-flex;border-radius:16px;gap:8px;--focus-inset: -4px;--focus-stroke-gap-color: transparent}.control:focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}@supports (user-select: none){.control{user-select:none}}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}.switch{--_switch-inline-size: calc(1px*(20 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*1.8) ;display:flex;box-sizing:border-box;align-items:center;border-radius:40px;background-color:var(--_appearance-color-fill);block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);inline-size:var(--_switch-inline-size);transition:all .2s ease-in-out 0s}.checked-indicator{--_switch-checked-indicator-size: calc( calc(1px*(20 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) / 1.6667);--_switch-gutter: calc(var(--_switch-checked-indicator-size) / 3);border-radius:inherit;block-size:var(--_switch-checked-indicator-size);inline-size:var(--_switch-checked-indicator-size);margin-inline-start:auto;transition:all .2s ease-in-out 0s}.control:not(.appearance-filled) .checked-indicator{background-color:var(--_appearance-color-outline)}.control:not(.appearance-filled):where(.readonly) .checked-indicator{background-color:var(--vvd-color-neutral-600)}.control.appearance-filled .checked-indicator{background-color:var(--vvd-color-neutral-100)}.control:not(.checked) .checked-indicator{transform:translate(calc(-1 * var(--_switch-inline-size) + var(--_switch-checked-indicator-size) + var(--_switch-gutter)))}.control.checked .checked-indicator{transform:translate(calc(-1 * var(--_switch-gutter)))}.control.appearance-filled.disabled .checked-indicator{background-color:var(--_appearance-color-text)}.control.appearance-filled.readonly .checked-indicator{background-color:var(--vvd-color-neutral-50)}.label{color:var(--vvd-color-canvas-text);cursor:pointer;font:var(--vvd-typography-base)}";
11
+
12
+ class _Switch extends vividElement.VividElement {
13
+ }
14
+ class FormAssociatedSwitch extends formAssociated.CheckableFormAssociated(_Switch) {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.proxy = document.createElement("input");
18
+ }
6
19
  }
7
20
 
8
- const TabPanelTemplate = vividElement.html`
9
- <template slot="tabpanel" role="tabpanel">
10
- <slot></slot>
21
+ var __defProp = Object.defineProperty;
22
+ var __decorateClass = (decorators, target, key, kind) => {
23
+ var result = void 0 ;
24
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
25
+ if (decorator = decorators[i])
26
+ result = (decorator(target, key, result) ) || result;
27
+ if (result) __defProp(target, key, result);
28
+ return result;
29
+ };
30
+ class Switch extends FormAssociatedSwitch {
31
+ constructor() {
32
+ super();
33
+ this.ariaLabel = null;
34
+ /**
35
+ * The element's value to be included in form submission when checked.
36
+ * Default to "on" to reach parity with input[type="checkbox"]
37
+ *
38
+ * @internal
39
+ */
40
+ this.initialValue = "on";
41
+ /**
42
+ * @internal
43
+ */
44
+ this.keypressHandler = (e) => {
45
+ if (e.key === keyCodes.keySpace || e.key === keyCodes.keyEnter) {
46
+ this.checked = !this.checked;
47
+ }
48
+ };
49
+ /**
50
+ * @internal
51
+ */
52
+ this.clickHandler = () => {
53
+ if (!this.disabled && !this.readOnly) {
54
+ this.checked = !this.checked;
55
+ }
56
+ };
57
+ this.defaultChecked = !!this.checkedAttribute;
58
+ this.checked = this.defaultChecked;
59
+ }
60
+ // Map to proxy element
61
+ /**
62
+ * @internal
63
+ */
64
+ readOnlyChanged() {
65
+ if (this.proxy instanceof HTMLInputElement) {
66
+ this.proxy.readOnly = this.readOnly;
67
+ }
68
+ this.readOnly ? this.classList.add("readonly") : this.classList.remove("readonly");
69
+ }
70
+ /**
71
+ * @internal
72
+ */
73
+ connectedCallback() {
74
+ super.connectedCallback();
75
+ this.proxy.setAttribute("type", "checkbox");
76
+ this.updateForm();
77
+ }
78
+ updateForm() {
79
+ const value = this.checked ? this.value : null;
80
+ this.setFormValue(value, value);
81
+ }
82
+ }
83
+ __decorateClass([
84
+ vividElement.attr({ attribute: "aria-label" })
85
+ ], Switch.prototype, "ariaLabel");
86
+ __decorateClass([
87
+ vividElement.attr
88
+ ], Switch.prototype, "label");
89
+ __decorateClass([
90
+ vividElement.attr
91
+ ], Switch.prototype, "connotation");
92
+ __decorateClass([
93
+ vividElement.attr({ attribute: "readonly", mode: "boolean" })
94
+ ], Switch.prototype, "readOnly");
95
+ __decorateClass([
96
+ vividElement.observable
97
+ ], Switch.prototype, "defaultSlottedNodes");
98
+
99
+ const getClasses = (_) => classNames.classNames(
100
+ "control",
101
+ ["appearance-filled", _.checked],
102
+ ["checked", _.checked],
103
+ ["disabled", _.disabled],
104
+ ["readonly", _.readOnly],
105
+ [
106
+ `connotation-${_.connotation}`,
107
+ Boolean(_.checked) && Boolean(_.connotation)
108
+ ]
109
+ );
110
+ const SwitchTemplate = vividElement.html`
111
+ <template role="${(x) => x.ariaLabel ? "presentation" : null}">
112
+ <div
113
+ class="${getClasses}"
114
+ role="switch"
115
+ aria-label="${(x) => x.ariaLabel}"
116
+ aria-checked="${(x) => x.checked}"
117
+ aria-disabled="${(x) => x.disabled}"
118
+ aria-readonly="${(x) => x.readOnly}"
119
+ tabindex="${(x) => x.disabled ? null : 0}"
120
+ @keypress="${(x, c) => x.keypressHandler(c.event)}"
121
+ @click="${(x) => x.clickHandler()}"
122
+ >
123
+ <div class="switch">
124
+ <span class="checked-indicator"></span>
125
+ </div>
126
+ ${when.when(
127
+ (x) => x.label,
128
+ vividElement.html`<div class="label">${(x) => x.label}</div>`
129
+ )}
130
+ </div>
11
131
  </template>
12
132
  `;
13
133
 
14
- const tabPanelDefinition = vividElement.defineVividComponent(
15
- "tab-panel",
16
- TabPanel,
17
- TabPanelTemplate,
18
- [],
19
- {}
134
+ const switchDefinition = vividElement.defineVividComponent(
135
+ "switch",
136
+ Switch,
137
+ SwitchTemplate,
138
+ [definition.iconDefinition],
139
+ {
140
+ styles,
141
+ shadowOptions: {
142
+ delegatesFocus: true
143
+ }
144
+ }
20
145
  );
21
- const registerTabPanel = vividElement.createRegisterFunction(tabPanelDefinition);
146
+ const registerSwitch = vividElement.createRegisterFunction(switchDefinition);
22
147
 
23
- exports.registerTabPanel = registerTabPanel;
24
- exports.tabPanelDefinition = tabPanelDefinition;
148
+ exports.Switch = Switch;
149
+ exports.registerSwitch = registerSwitch;
150
+ exports.switchDefinition = switchDefinition;
@@ -1,21 +1,146 @@
1
- import { V as VividElement, h as html, d as defineVividComponent, f as createRegisterFunction } from './vivid-element.js';
1
+ import { i as iconDefinition } from './definition27.js';
2
+ import { V as VividElement, a as attr, o as observable, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
3
+ import { C as CheckableFormAssociated } from './form-associated.js';
4
+ import { a as keySpace, k as keyEnter } from './key-codes.js';
5
+ import { c as classNames } from './class-names.js';
6
+ import { w as when } from './when.js';
2
7
 
3
- class TabPanel extends VividElement {
8
+ const styles = ":host(.disabled){cursor:not-allowed}.control.connotation-cta{--_connotation-color-primary-text: var(--vvd-switch-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-increment: var(--vvd-switch-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-firm: var(--vvd-switch-cta-firm, var(--vvd-color-cta-600));--_connotation-color-intermediate: var(--vvd-switch-cta-intermediate, var(--vvd-color-cta-500));--_connotation-color-fierce: var(--vvd-switch-cta-fierce, var(--vvd-color-cta-700))}.control.connotation-alert{--_connotation-color-primary-text: var(--vvd-switch-alert-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-alert-primary, var(--vvd-color-alert-500));--_connotation-color-primary-increment: var(--vvd-switch-alert-primary-increment, var(--vvd-color-alert-600));--_connotation-color-firm: var(--vvd-switch-alert-firm, var(--vvd-color-alert-600));--_connotation-color-intermediate: var(--vvd-switch-alert-intermediate, var(--vvd-color-alert-500));--_connotation-color-fierce: var(--vvd-switch-alert-fierce, var(--vvd-color-alert-700))}.control.connotation-success{--_connotation-color-primary-text: var(--vvd-switch-success-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-success-primary, var(--vvd-color-success-500));--_connotation-color-primary-increment: var(--vvd-switch-success-primary-increment, var(--vvd-color-success-600));--_connotation-color-firm: var(--vvd-switch-success-firm, var(--vvd-color-success-600));--_connotation-color-intermediate: var(--vvd-switch-success-intermediate, var(--vvd-color-success-500));--_connotation-color-fierce: var(--vvd-switch-success-fierce, var(--vvd-color-success-700))}.control.connotation-announcement{--_connotation-color-primary-text: var(--vvd-switch-announcement-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-announcement-primary, var(--vvd-color-announcement-500));--_connotation-color-primary-increment: var(--vvd-switch-announcement-primary-increment, var(--vvd-color-announcement-600));--_connotation-color-firm: var(--vvd-switch-announcement-firm, var(--vvd-color-announcement-600));--_connotation-color-intermediate: var(--vvd-switch-announcement-intermediate, var(--vvd-color-announcement-500));--_connotation-color-fierce: var(--vvd-switch-announcement-fierce, var(--vvd-color-announcement-700))}.control:not(.connotation-cta,.connotation-alert,.connotation-success,.connotation-announcement){--_connotation-color-primary-text: var(--vvd-switch-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary: var(--vvd-switch-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-increment: var(--vvd-switch-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-switch-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-intermediate: var(--vvd-switch-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-fierce: var(--vvd-switch-accent-fierce, var(--vvd-color-neutral-700))}.control{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.control.appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-filled{--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: transparent}.control:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.control:where(.disabled,:disabled).appearance-filled{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: transparent}.control:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.control:where(.readonly):where(:not(.disabled,:disabled)).appearance-filled{--_appearance-color-text: var(--vvd-color-neutral-800);--_appearance-color-fill: var(--vvd-color-neutral-500);--_appearance-color-outline: transparent}.control{display:inline-flex;border-radius:16px;gap:8px;--focus-inset: -4px;--focus-stroke-gap-color: transparent}.control:focus-visible{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}@supports (user-select: none){.control{user-select:none}}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}.switch{--_switch-inline-size: calc(1px*(20 + 4*clamp(-1, var(--vvd-size-density, 0), 2))*1.8) ;display:flex;box-sizing:border-box;align-items:center;border-radius:40px;background-color:var(--_appearance-color-fill);block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);inline-size:var(--_switch-inline-size);transition:all .2s ease-in-out 0s}.checked-indicator{--_switch-checked-indicator-size: calc( calc(1px*(20 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) / 1.6667);--_switch-gutter: calc(var(--_switch-checked-indicator-size) / 3);border-radius:inherit;block-size:var(--_switch-checked-indicator-size);inline-size:var(--_switch-checked-indicator-size);margin-inline-start:auto;transition:all .2s ease-in-out 0s}.control:not(.appearance-filled) .checked-indicator{background-color:var(--_appearance-color-outline)}.control:not(.appearance-filled):where(.readonly) .checked-indicator{background-color:var(--vvd-color-neutral-600)}.control.appearance-filled .checked-indicator{background-color:var(--vvd-color-neutral-100)}.control:not(.checked) .checked-indicator{transform:translate(calc(-1 * var(--_switch-inline-size) + var(--_switch-checked-indicator-size) + var(--_switch-gutter)))}.control.checked .checked-indicator{transform:translate(calc(-1 * var(--_switch-gutter)))}.control.appearance-filled.disabled .checked-indicator{background-color:var(--_appearance-color-text)}.control.appearance-filled.readonly .checked-indicator{background-color:var(--vvd-color-neutral-50)}.label{color:var(--vvd-color-canvas-text);cursor:pointer;font:var(--vvd-typography-base)}";
9
+
10
+ class _Switch extends VividElement {
11
+ }
12
+ class FormAssociatedSwitch extends CheckableFormAssociated(_Switch) {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.proxy = document.createElement("input");
16
+ }
4
17
  }
5
18
 
6
- const TabPanelTemplate = html`
7
- <template slot="tabpanel" role="tabpanel">
8
- <slot></slot>
19
+ var __defProp = Object.defineProperty;
20
+ var __decorateClass = (decorators, target, key, kind) => {
21
+ var result = void 0 ;
22
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
23
+ if (decorator = decorators[i])
24
+ result = (decorator(target, key, result) ) || result;
25
+ if (result) __defProp(target, key, result);
26
+ return result;
27
+ };
28
+ class Switch extends FormAssociatedSwitch {
29
+ constructor() {
30
+ super();
31
+ this.ariaLabel = null;
32
+ /**
33
+ * The element's value to be included in form submission when checked.
34
+ * Default to "on" to reach parity with input[type="checkbox"]
35
+ *
36
+ * @internal
37
+ */
38
+ this.initialValue = "on";
39
+ /**
40
+ * @internal
41
+ */
42
+ this.keypressHandler = (e) => {
43
+ if (e.key === keySpace || e.key === keyEnter) {
44
+ this.checked = !this.checked;
45
+ }
46
+ };
47
+ /**
48
+ * @internal
49
+ */
50
+ this.clickHandler = () => {
51
+ if (!this.disabled && !this.readOnly) {
52
+ this.checked = !this.checked;
53
+ }
54
+ };
55
+ this.defaultChecked = !!this.checkedAttribute;
56
+ this.checked = this.defaultChecked;
57
+ }
58
+ // Map to proxy element
59
+ /**
60
+ * @internal
61
+ */
62
+ readOnlyChanged() {
63
+ if (this.proxy instanceof HTMLInputElement) {
64
+ this.proxy.readOnly = this.readOnly;
65
+ }
66
+ this.readOnly ? this.classList.add("readonly") : this.classList.remove("readonly");
67
+ }
68
+ /**
69
+ * @internal
70
+ */
71
+ connectedCallback() {
72
+ super.connectedCallback();
73
+ this.proxy.setAttribute("type", "checkbox");
74
+ this.updateForm();
75
+ }
76
+ updateForm() {
77
+ const value = this.checked ? this.value : null;
78
+ this.setFormValue(value, value);
79
+ }
80
+ }
81
+ __decorateClass([
82
+ attr({ attribute: "aria-label" })
83
+ ], Switch.prototype, "ariaLabel");
84
+ __decorateClass([
85
+ attr
86
+ ], Switch.prototype, "label");
87
+ __decorateClass([
88
+ attr
89
+ ], Switch.prototype, "connotation");
90
+ __decorateClass([
91
+ attr({ attribute: "readonly", mode: "boolean" })
92
+ ], Switch.prototype, "readOnly");
93
+ __decorateClass([
94
+ observable
95
+ ], Switch.prototype, "defaultSlottedNodes");
96
+
97
+ const getClasses = (_) => classNames(
98
+ "control",
99
+ ["appearance-filled", _.checked],
100
+ ["checked", _.checked],
101
+ ["disabled", _.disabled],
102
+ ["readonly", _.readOnly],
103
+ [
104
+ `connotation-${_.connotation}`,
105
+ Boolean(_.checked) && Boolean(_.connotation)
106
+ ]
107
+ );
108
+ const SwitchTemplate = html`
109
+ <template role="${(x) => x.ariaLabel ? "presentation" : null}">
110
+ <div
111
+ class="${getClasses}"
112
+ role="switch"
113
+ aria-label="${(x) => x.ariaLabel}"
114
+ aria-checked="${(x) => x.checked}"
115
+ aria-disabled="${(x) => x.disabled}"
116
+ aria-readonly="${(x) => x.readOnly}"
117
+ tabindex="${(x) => x.disabled ? null : 0}"
118
+ @keypress="${(x, c) => x.keypressHandler(c.event)}"
119
+ @click="${(x) => x.clickHandler()}"
120
+ >
121
+ <div class="switch">
122
+ <span class="checked-indicator"></span>
123
+ </div>
124
+ ${when(
125
+ (x) => x.label,
126
+ html`<div class="label">${(x) => x.label}</div>`
127
+ )}
128
+ </div>
9
129
  </template>
10
130
  `;
11
131
 
12
- const tabPanelDefinition = defineVividComponent(
13
- "tab-panel",
14
- TabPanel,
15
- TabPanelTemplate,
16
- [],
17
- {}
132
+ const switchDefinition = defineVividComponent(
133
+ "switch",
134
+ Switch,
135
+ SwitchTemplate,
136
+ [iconDefinition],
137
+ {
138
+ styles,
139
+ shadowOptions: {
140
+ delegatesFocus: true
141
+ }
142
+ }
18
143
  );
19
- const registerTabPanel = createRegisterFunction(tabPanelDefinition);
144
+ const registerSwitch = createRegisterFunction(switchDefinition);
20
145
 
21
- export { registerTabPanel as r, tabPanelDefinition as t };
146
+ export { Switch as S, registerSwitch as r, switchDefinition as s };
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const definition$1 = require('./definition11.cjs');
4
- const definition$2 = require('./definition46.cjs');
4
+ const definition$2 = require('./definition47.cjs');
5
5
  const definition = require('./definition29.cjs');
6
6
  const vividElement = require('./vivid-element.cjs');
7
7
  const enums = require('./enums.cjs');
@@ -9,8 +9,8 @@ const applyMixins = require('./apply-mixins.cjs');
9
9
  const localized = require('./localized.cjs');
10
10
  const playbackRates = require('./playbackRates.cjs');
11
11
  const repeat = require('./repeat.cjs');
12
- const when = require('./when.cjs');
13
12
  const classNames = require('./class-names.cjs');
13
+ const when = require('./when.cjs');
14
14
 
15
15
  const styles = ":host{display:block}.wrapper{container-type:inline-size}.base{display:inline-flex;box-sizing:border-box;align-items:center;padding:8px;color:var(--vvd-color-canvas-text);gap:8px;inline-size:100%;user-select:none}.base.disabled{color:var(--vvd-color-neutral-300)}.base .slider{flex:1;grid-area:slider}.base .controls{display:flex;align-items:center;justify-content:center;gap:8px;grid-area:controls}.base .time-stamp{display:inline-flex}.base .time-stamp .current-time,.base .time-stamp .total-time{margin-inline:6px;min-inline-size:32px}.base .playback-button{grid-area:playback}@container (max-width: 500px){.base.two-lines{display:inline-grid;grid-template:auto auto/1fr;grid-template-areas:\"slider\" \"controls\";inline-size:100%;row-gap:4px}.base.two-lines .time-stamp{margin-inline:auto 2px}.base.two-lines.playback{grid-template-areas:\"slider slider\" \"controls playback\";grid-template-columns:1fr auto}.base.two-lines.playback .time-stamp{margin-inline:auto}.base .slider{box-sizing:border-box;min-inline-size:auto;padding-inline:2px}}";
16
16
 
@@ -358,5 +358,6 @@ const registerAudioPlayer = vividElement.createRegisterFunction(
358
358
  audioPlayerDefinition
359
359
  );
360
360
 
361
+ exports.AudioPlayer = AudioPlayer;
361
362
  exports.audioPlayerDefinition = audioPlayerDefinition;
362
363
  exports.registerAudioPlayer = registerAudioPlayer;
@@ -1,14 +1,14 @@
1
1
  import { B as Button, b as buttonDefinition } from './definition11.js';
2
- import { S as Slider, s as sliderDefinition } from './definition46.js';
3
- import { d as Menu, e as MenuItem, b as menuDefinition, m as menuItemDefinition } from './definition29.js';
4
- import { V as VividElement, O as Observable, a as attr, h as html, d as defineVividComponent, f as createRegisterFunction } from './vivid-element.js';
2
+ import { S as Slider, s as sliderDefinition } from './definition47.js';
3
+ import { e as Menu, M as MenuItem, c as menuDefinition, m as menuItemDefinition } from './definition29.js';
4
+ import { V as VividElement, O as Observable, a as attr, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
5
5
  import { M as MediaSkipBy } from './enums.js';
6
6
  import { a as applyMixins } from './apply-mixins.js';
7
7
  import { L as Localized } from './localized.js';
8
8
  import { g as getPlaybackRatesArray } from './playbackRates.js';
9
9
  import { r as repeat } from './repeat.js';
10
- import { w as when } from './when.js';
11
10
  import { c as classNames } from './class-names.js';
11
+ import { w as when } from './when.js';
12
12
 
13
13
  const styles = ":host{display:block}.wrapper{container-type:inline-size}.base{display:inline-flex;box-sizing:border-box;align-items:center;padding:8px;color:var(--vvd-color-canvas-text);gap:8px;inline-size:100%;user-select:none}.base.disabled{color:var(--vvd-color-neutral-300)}.base .slider{flex:1;grid-area:slider}.base .controls{display:flex;align-items:center;justify-content:center;gap:8px;grid-area:controls}.base .time-stamp{display:inline-flex}.base .time-stamp .current-time,.base .time-stamp .total-time{margin-inline:6px;min-inline-size:32px}.base .playback-button{grid-area:playback}@container (max-width: 500px){.base.two-lines{display:inline-grid;grid-template:auto auto/1fr;grid-template-areas:\"slider\" \"controls\";inline-size:100%;row-gap:4px}.base.two-lines .time-stamp{margin-inline:auto 2px}.base.two-lines.playback{grid-template-areas:\"slider slider\" \"controls playback\";grid-template-columns:1fr auto}.base.two-lines.playback .time-stamp{margin-inline:auto}.base .slider{box-sizing:border-box;min-inline-size:auto;padding-inline:2px}}";
14
14
 
@@ -356,4 +356,4 @@ const registerAudioPlayer = createRegisterFunction(
356
356
  audioPlayerDefinition
357
357
  );
358
358
 
359
- export { audioPlayerDefinition as a, registerAudioPlayer as r };
359
+ export { AudioPlayer as A, audioPlayerDefinition as a, registerAudioPlayer as r };
@@ -1,123 +1,25 @@
1
1
  'use strict';
2
2
 
3
- const definition = require('./definition27.cjs');
4
3
  const vividElement = require('./vivid-element.cjs');
5
- const applyMixins = require('./apply-mixins.cjs');
6
- const affix = require('./affix.cjs');
7
- const localized = require('./localized.cjs');
8
- const classNames = require('./class-names.cjs');
9
4
 
10
- const styles = ":host{--_vvd-tab-accent-firm-wrapper: var( --vvd-tab-accent-firm );--_vvd-tab-cta-firm-wrapper: var( --vvd-tab-cta-firm )}.base{--vvd-tab-accent-firm: var( --_vvd-tab-accent-firm-wrapper, var(--vvd-tab-accent-primary) );--vvd-tab-cta-firm: var( --_vvd-tab-cta-firm-wrapper, var(--vvd-tab-cta-primary) )}:host(.vertical){justify-content:end;grid-column:1/auto}:host([disabled]){cursor:not-allowed}:host([removable]){position:relative}:host(:focus-visible){outline:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary-text: var(--vvd-tab-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-tab-cta-faint, var(--vvd-color-cta-50));--_connotation-color-fierce: var(--vvd-tab-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-pale: var(--vvd-tab-cta-pale, var(--vvd-color-cta-300));--_connotation-color-soft: var(--vvd-tab-cta-soft, var(--vvd-color-cta-100))}.base:not(.connotation-cta){--_connotation-color-primary-text: var(--vvd-tab-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-firm: var(--vvd-tab-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-tab-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-fierce: var(--vvd-tab-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-pale: var(--vvd-tab-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-soft: var(--vvd-tab-accent-soft, var(--vvd-color-neutral-100))}.base{position:relative;display:flex;box-sizing:border-box;align-items:center;justify-content:var(--_tab-justify-content);padding:var(--_tabs-tablist-gutter);background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base-bold);gap:var(--_tabs-tablist-gutter);min-block-size:40px;vertical-align:middle;white-space:nowrap}@supports (user-select: none){.base{user-select:none}}.base:not(.shape-sharp){border-radius:8px}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}.base.removable{padding-inline-end:40px}:host(:focus-visible) .base{--focus-stroke-gap-color: transparent;box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px))}:host(.vertical) .base{margin-inline-start:var(--_tabs-active-indicator-stroke-width)}slot[name=icon]{font-size:20px;line-height:1}.icon-trailing slot[name=icon]{display:inline-block;order:1;margin-inline-start:auto}.close{position:absolute;display:flex;align-items:center;justify-content:center;block-size:24px;inline-size:24px;inset-block-start:50%;inset-inline-end:4px;transform:translateY(-50%)}.close vwc-icon{font-size:12px}.close .icon{display:flex;align-items:center;justify-content:center}";
11
-
12
- var __defProp = Object.defineProperty;
13
- var __decorateClass = (decorators, target, key, kind) => {
14
- var result = void 0 ;
15
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
16
- if (decorator = decorators[i])
17
- result = (decorator(target, key, result) ) || result;
18
- if (result) __defProp(target, key, result);
19
- return result;
20
- };
21
- class Tab extends vividElement.VividElement {
22
- constructor() {
23
- super(...arguments);
24
- this.removable = false;
25
- this.tabIndex = "-1";
26
- this.ariaSelected = null;
27
- }
28
- _handleCloseClick(e) {
29
- e.stopImmediatePropagation();
30
- this.$emit("close");
31
- }
32
- _onKeyDown(e) {
33
- if (!this.removable || e.key !== "Delete") return true;
34
- e.stopImmediatePropagation();
35
- this.$emit("close");
36
- return false;
37
- }
5
+ class TabPanel extends vividElement.VividElement {
38
6
  }
39
- __decorateClass([
40
- vividElement.attr({ mode: "boolean" })
41
- ], Tab.prototype, "disabled");
42
- __decorateClass([
43
- vividElement.attr
44
- ], Tab.prototype, "connotation");
45
- __decorateClass([
46
- vividElement.attr
47
- ], Tab.prototype, "shape");
48
- __decorateClass([
49
- vividElement.attr
50
- ], Tab.prototype, "label");
51
- __decorateClass([
52
- vividElement.attr({ mode: "boolean" })
53
- ], Tab.prototype, "removable");
54
- __decorateClass([
55
- vividElement.attr({ mode: "fromView" })
56
- ], Tab.prototype, "tabIndex");
57
- __decorateClass([
58
- vividElement.attr({ attribute: "aria-selected" })
59
- ], Tab.prototype, "ariaSelected");
60
- applyMixins.applyMixins(Tab, affix.AffixIconWithTrailing);
61
- applyMixins.applyMixins(Tab, localized.Localized);
62
7
 
63
- const getClasses = ({
64
- connotation,
65
- disabled,
66
- ariaSelected,
67
- iconTrailing,
68
- shape,
69
- removable
70
- }) => classNames.classNames(
71
- "base",
72
- [
73
- `connotation-${connotation}`,
74
- Boolean(connotation) && ariaSelected === "true"
75
- ],
76
- [`shape-${shape}`, Boolean(shape)],
77
- ["disabled", Boolean(disabled)],
78
- ["selected", ariaSelected === "true"],
79
- ["icon-trailing", iconTrailing],
80
- ["removable", removable]
81
- );
82
- function renderDismissButton(context) {
83
- const affixIconTemplate = affix.affixIconTemplateFactory(context);
84
- return vividElement.html` <span
85
- aria-label="${(x) => x.locale.tab.dismissButtonLabel}"
86
- class="close"
87
- id="close-btn"
88
- @click="${(x, c) => x._handleCloseClick(c.event)}"
89
- >
90
- ${() => affixIconTemplate("close-line", affix.IconWrapper.Span)}
91
- </span>`;
92
- }
93
- const TabTemplate = (context) => {
94
- const affixIconTemplate = affix.affixIconTemplateFactory(context);
95
- return vividElement.html`
96
- <template
97
- slot="tab"
98
- role="tab"
99
- aria-disabled="${(x) => x.disabled}"
100
- aria-selected="${(x) => x.ariaSelected}"
101
- @keydown="${(x, c) => x._onKeyDown(c.event)}"
102
- >
103
- <div class="${getClasses}">
104
- ${(x) => affixIconTemplate(x.icon, affix.IconWrapper.Slot)} ${(x) => x.label}
105
- ${(x) => x.removable ? renderDismissButton(context) : null}
106
- </div>
107
- </template>
108
- `;
109
- };
8
+ const TabPanelTemplate = vividElement.html`
9
+ <template slot="tabpanel" role="tabpanel">
10
+ <slot></slot>
11
+ </template>
12
+ `;
110
13
 
111
- const tabDefinition = vividElement.defineVividComponent(
112
- "tab",
113
- Tab,
114
- TabTemplate,
115
- [definition.iconDefinition],
116
- {
117
- styles
118
- }
14
+ const tabPanelDefinition = vividElement.defineVividComponent(
15
+ "tab-panel",
16
+ TabPanel,
17
+ TabPanelTemplate,
18
+ [],
19
+ {}
119
20
  );
120
- const registerTab = vividElement.createRegisterFunction(tabDefinition);
21
+ const registerTabPanel = vividElement.createRegisterFunction(tabPanelDefinition);
121
22
 
122
- exports.registerTab = registerTab;
123
- exports.tabDefinition = tabDefinition;
23
+ exports.TabPanel = TabPanel;
24
+ exports.registerTabPanel = registerTabPanel;
25
+ exports.tabPanelDefinition = tabPanelDefinition;