@vonage/vivid 5.17.0 → 5.18.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 (459) hide show
  1. package/accordion/definition.cjs +6 -6
  2. package/accordion/definition.js +1 -1
  3. package/accordion/index.cjs +1 -1
  4. package/accordion/index.js +2 -2
  5. package/accordion-item/definition.cjs +5 -5
  6. package/accordion-item/definition.js +1 -1
  7. package/accordion-item/index.cjs +1 -1
  8. package/accordion-item/index.js +2 -2
  9. package/alert/definition.cjs +5 -5
  10. package/alert/definition.js +1 -1
  11. package/alert/index.cjs +2 -2
  12. package/alert/index.js +6 -5
  13. package/audio-player/definition.cjs +5 -5
  14. package/audio-player/definition.js +1 -1
  15. package/audio-player/index.cjs +1 -1
  16. package/audio-player/index.js +2 -1
  17. package/avatar/definition.cjs +5 -5
  18. package/avatar/definition.js +1 -1
  19. package/avatar/index.cjs +3 -3
  20. package/avatar/index.js +6 -5
  21. package/badge/definition.cjs +5 -5
  22. package/badge/definition.js +1 -1
  23. package/badge/index.cjs +1 -4
  24. package/badge/index.js +4 -20
  25. package/banner/definition.cjs +5 -5
  26. package/banner/definition.js +1 -1
  27. package/banner/index.cjs +2 -2
  28. package/banner/index.js +5 -4
  29. package/breadcrumb-item/definition.cjs +4 -4
  30. package/breadcrumb-item/definition.js +1 -1
  31. package/breadcrumb-item/index.cjs +1 -1
  32. package/breadcrumb-item/index.js +1 -0
  33. package/bundled/affix.cjs +1 -1
  34. package/bundled/affix.js +5 -5
  35. package/bundled/definition11.cjs +2 -2
  36. package/bundled/definition11.js +5 -5
  37. package/bundled/definition12.cjs +3 -3
  38. package/bundled/definition12.js +5 -5
  39. package/bundled/definition13.cjs +2 -2
  40. package/bundled/definition13.js +4 -4
  41. package/bundled/definition15.cjs +3 -3
  42. package/bundled/definition15.js +7 -7
  43. package/bundled/definition17.cjs +3 -3
  44. package/bundled/definition17.js +8 -8
  45. package/bundled/definition18.cjs +2 -2
  46. package/bundled/definition18.js +6 -6
  47. package/bundled/definition2.cjs +3 -14
  48. package/bundled/definition2.js +15 -48
  49. package/bundled/definition20.cjs +5 -5
  50. package/bundled/definition20.js +8 -8
  51. package/bundled/definition22.cjs +4 -39
  52. package/bundled/definition22.js +18 -70
  53. package/bundled/definition23.cjs +12 -0
  54. package/bundled/definition23.js +37 -0
  55. package/bundled/definition24.cjs +39 -0
  56. package/bundled/definition24.js +72 -0
  57. package/bundled/definition3.cjs +1 -1
  58. package/bundled/definition3.js +9 -6
  59. package/bundled/definition4.cjs +2 -2
  60. package/bundled/definition4.js +5 -5
  61. package/bundled/definition6.cjs +11 -11
  62. package/bundled/definition6.js +45 -29
  63. package/bundled/localized.cjs +1 -1
  64. package/bundled/localized.js +1 -0
  65. package/bundled/mixins.cjs +4 -4
  66. package/bundled/mixins.js +7 -7
  67. package/bundled/numberConverter.cjs +12 -0
  68. package/bundled/numberConverter.js +38 -0
  69. package/bundled/picker-field.template.cjs +2 -1
  70. package/bundled/picker-field.template.js +2 -1
  71. package/bundled/utils.cjs +1 -0
  72. package/bundled/utils.js +1420 -0
  73. package/bundled/vivid-element.cjs +1 -1
  74. package/bundled/vivid-element.js +1 -1
  75. package/button/definition.cjs +5 -5
  76. package/button/definition.js +1 -1
  77. package/button/index.cjs +1 -1
  78. package/button/index.js +1 -1
  79. package/card/definition.cjs +5 -5
  80. package/card/definition.js +1 -1
  81. package/card/index.cjs +4 -4
  82. package/card/index.js +7 -6
  83. package/checkbox/definition.cjs +5 -5
  84. package/checkbox/definition.js +1 -1
  85. package/checkbox/index.cjs +1 -1
  86. package/checkbox/index.js +1 -1
  87. package/color-picker/definition.cjs +5 -5
  88. package/color-picker/definition.js +1 -1
  89. package/color-picker/index.cjs +7 -7
  90. package/color-picker/index.js +55 -54
  91. package/combobox/definition.cjs +5 -5
  92. package/combobox/definition.js +1 -1
  93. package/combobox/index.cjs +2 -2
  94. package/combobox/index.js +8 -7
  95. package/contextual-help/definition.cjs +5 -5
  96. package/contextual-help/definition.js +1 -1
  97. package/contextual-help/index.cjs +1 -1
  98. package/contextual-help/index.js +1 -1
  99. package/country/definition.cjs +5 -5
  100. package/country/definition.js +1 -1
  101. package/country/index.cjs +1 -12
  102. package/country/index.js +4 -1216
  103. package/country-group/definition.cjs +6 -0
  104. package/country-group/definition.js +3 -0
  105. package/country-group/index.cjs +43 -0
  106. package/country-group/index.js +166 -0
  107. package/custom-elements.json +1112 -450
  108. package/data-grid/definition.cjs +9 -9
  109. package/data-grid/definition.js +2 -2
  110. package/data-grid/index.cjs +4 -4
  111. package/data-grid/index.js +47 -46
  112. package/date-picker/definition.cjs +5 -5
  113. package/date-picker/definition.js +2 -2
  114. package/date-picker/index.cjs +1 -1
  115. package/date-picker/index.js +1 -1
  116. package/date-range-picker/definition.cjs +5 -5
  117. package/date-range-picker/definition.js +2 -2
  118. package/date-range-picker/index.cjs +1 -1
  119. package/date-range-picker/index.js +1 -1
  120. package/date-time-picker/definition.cjs +5 -5
  121. package/date-time-picker/definition.js +2 -2
  122. package/date-time-picker/index.cjs +1 -1
  123. package/date-time-picker/index.js +1 -1
  124. package/dial-pad/definition.cjs +5 -5
  125. package/dial-pad/definition.js +2 -2
  126. package/dial-pad/index.cjs +4 -4
  127. package/dial-pad/index.js +9 -8
  128. package/dialog/definition.cjs +5 -5
  129. package/dialog/definition.js +2 -2
  130. package/dialog/index.cjs +4 -4
  131. package/dialog/index.js +12 -11
  132. package/divider/definition.cjs +1 -1
  133. package/divider/definition.js +1 -1
  134. package/empty-state/definition.cjs +5 -5
  135. package/empty-state/definition.js +2 -2
  136. package/empty-state/index.cjs +2 -2
  137. package/empty-state/index.js +6 -5
  138. package/fab/definition.cjs +5 -5
  139. package/fab/definition.js +2 -2
  140. package/fab/index.cjs +2 -2
  141. package/fab/index.js +5 -4
  142. package/file-picker/definition.cjs +5 -5
  143. package/file-picker/definition.js +2 -2
  144. package/file-picker/index.cjs +6 -6
  145. package/file-picker/index.js +9 -8
  146. package/flag/definition.cjs +6 -0
  147. package/flag/definition.js +3 -0
  148. package/flag/index.cjs +10 -0
  149. package/flag/index.js +61 -0
  150. package/header/definition.cjs +1 -1
  151. package/header/definition.js +1 -1
  152. package/icon/definition.cjs +1 -0
  153. package/icon/definition.js +1 -0
  154. package/icon/index.cjs +1 -1
  155. package/icon/index.js +1 -0
  156. package/index.cjs +183 -174
  157. package/index.js +48 -45
  158. package/layout/definition.cjs +1 -1
  159. package/layout/definition.js +1 -1
  160. package/lib/button/button.d.ts +1 -0
  161. package/lib/components.d.ts +2 -0
  162. package/lib/country/countries-data.d.ts +1 -0
  163. package/lib/country/{country-code-to-flag-icon.d.ts → utils.d.ts} +0 -3
  164. package/lib/country-group/country-group.d.ts +829 -0
  165. package/lib/country-group/country-group.template.d.ts +3 -0
  166. package/lib/country-group/definition.d.ts +3 -0
  167. package/lib/country-group/index.d.ts +1 -0
  168. package/lib/country-group/locale.d.ts +3 -0
  169. package/lib/date-picker/date-picker.d.ts +4 -0
  170. package/lib/date-range-picker/date-range-picker.d.ts +2 -0
  171. package/lib/date-time-picker/date-time-picker.d.ts +4 -0
  172. package/lib/flag/definition.d.ts +3 -0
  173. package/lib/flag/flag.d.ts +8 -0
  174. package/lib/flag/flag.template.d.ts +3 -0
  175. package/lib/flag/index.d.ts +1 -0
  176. package/lib/icon/icon.d.ts +1 -2
  177. package/lib/searchable-select/option-tag.d.ts +3 -1
  178. package/lib/searchable-select/searchable-select.d.ts +3 -1
  179. package/lib/tag-name-map.d.ts +2 -1
  180. package/lib/time-picker/time-picker.d.ts +2 -0
  181. package/locales/de-DE.cjs +1 -0
  182. package/locales/de-DE.js +1 -0
  183. package/locales/en-GB.cjs +1 -0
  184. package/locales/en-GB.js +1 -0
  185. package/locales/en-US.cjs +1 -0
  186. package/locales/en-US.js +1 -0
  187. package/locales/ja-JP.cjs +1 -0
  188. package/locales/ja-JP.js +1 -0
  189. package/locales/zh-CN.cjs +1 -0
  190. package/locales/zh-CN.js +1 -0
  191. package/menu/definition.cjs +5 -5
  192. package/menu/definition.js +1 -1
  193. package/menu/index.cjs +1 -1
  194. package/menu/index.js +1 -1
  195. package/menu-item/definition.cjs +6 -6
  196. package/menu-item/definition.js +1 -1
  197. package/menu-item/index.cjs +1 -1
  198. package/menu-item/index.js +1 -1
  199. package/nav/definition.cjs +1 -1
  200. package/nav/definition.js +1 -1
  201. package/nav-disclosure/definition.cjs +5 -5
  202. package/nav-disclosure/definition.js +2 -2
  203. package/nav-disclosure/index.cjs +2 -2
  204. package/nav-disclosure/index.js +6 -5
  205. package/nav-item/definition.cjs +5 -5
  206. package/nav-item/definition.js +2 -2
  207. package/nav-item/index.cjs +2 -2
  208. package/nav-item/index.js +5 -4
  209. package/note/definition.cjs +5 -5
  210. package/note/definition.js +2 -2
  211. package/note/index.cjs +2 -2
  212. package/note/index.js +5 -4
  213. package/number-field/definition.cjs +5 -5
  214. package/number-field/definition.js +2 -2
  215. package/number-field/index.cjs +2 -2
  216. package/number-field/index.js +6 -5
  217. package/option/definition.cjs +5 -5
  218. package/option/definition.js +1 -1
  219. package/option/index.cjs +1 -1
  220. package/option/index.js +1 -1
  221. package/package.json +4 -4
  222. package/pagination/definition.cjs +5 -5
  223. package/pagination/definition.js +2 -2
  224. package/pagination/index.cjs +1 -1
  225. package/pagination/index.js +1 -1
  226. package/popover/definition.cjs +5 -5
  227. package/popover/definition.js +2 -2
  228. package/popover/index.cjs +4 -4
  229. package/popover/index.js +7 -6
  230. package/popup/definition.cjs +4 -4
  231. package/popup/definition.js +1 -1
  232. package/popup/index.cjs +1 -1
  233. package/popup/index.js +1 -1
  234. package/progress/definition.cjs +1 -1
  235. package/progress/definition.js +1 -1
  236. package/radio/definition.cjs +1 -1
  237. package/radio/definition.js +1 -1
  238. package/radio-group/definition.cjs +5 -5
  239. package/radio-group/definition.js +2 -2
  240. package/radio-group/index.cjs +1 -1
  241. package/radio-group/index.js +1 -1
  242. package/range-slider/definition.cjs +5 -5
  243. package/range-slider/definition.js +2 -2
  244. package/range-slider/index.cjs +1 -1
  245. package/range-slider/index.js +22 -19
  246. package/rich-text-editor/definition.cjs +32 -32
  247. package/rich-text-editor/definition.js +2 -2
  248. package/rich-text-editor/index.cjs +1 -1
  249. package/rich-text-editor/index.js +2 -2
  250. package/rich-text-view/definition.cjs +1 -1
  251. package/rich-text-view/definition.js +1 -1
  252. package/searchable-select/definition.cjs +4 -4
  253. package/searchable-select/definition.js +2 -2
  254. package/searchable-select/index.cjs +6 -4
  255. package/searchable-select/index.js +76 -73
  256. package/select/definition.cjs +5 -5
  257. package/select/definition.js +2 -2
  258. package/select/index.cjs +1 -1
  259. package/select/index.js +1 -1
  260. package/selectable-box/definition.cjs +5 -5
  261. package/selectable-box/definition.js +2 -2
  262. package/selectable-box/index.cjs +1 -1
  263. package/selectable-box/index.js +1 -1
  264. package/shared/icon/utils.d.ts +1 -0
  265. package/shared/localization/Locale.d.ts +2 -0
  266. package/shared/picker-field/mixins/calendar-picker.d.ts +1 -0
  267. package/shared/picker-field/mixins/calendar-picker.template.d.ts +1 -0
  268. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +1 -0
  269. package/shared/picker-field/mixins/single-date-picker.d.ts +1 -0
  270. package/shared/picker-field/mixins/single-value-picker.d.ts +1 -0
  271. package/shared/picker-field/mixins/time-selection-picker.d.ts +1 -0
  272. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +2 -0
  273. package/shared/picker-field/picker-field.d.ts +2 -0
  274. package/side-drawer/definition.cjs +1 -1
  275. package/side-drawer/definition.js +1 -1
  276. package/simple-color-picker/definition.cjs +5 -5
  277. package/simple-color-picker/definition.js +2 -2
  278. package/simple-color-picker/index.cjs +2 -2
  279. package/simple-color-picker/index.js +6 -5
  280. package/slider/definition.cjs +5 -5
  281. package/slider/definition.js +1 -1
  282. package/slider/index.cjs +1 -1
  283. package/slider/index.js +1 -1
  284. package/split-button/definition.cjs +5 -5
  285. package/split-button/definition.js +2 -2
  286. package/split-button/index.cjs +2 -2
  287. package/split-button/index.js +7 -6
  288. package/status/definition.cjs +5 -5
  289. package/status/definition.js +2 -2
  290. package/status/index.cjs +2 -2
  291. package/status/index.js +5 -4
  292. package/switch/definition.cjs +5 -5
  293. package/switch/definition.js +2 -2
  294. package/switch/index.cjs +2 -2
  295. package/switch/index.js +6 -5
  296. package/tab/definition.cjs +5 -5
  297. package/tab/definition.js +2 -2
  298. package/tab/index.cjs +1 -1
  299. package/tab/index.js +1 -1
  300. package/tab-panel/definition.cjs +1 -1
  301. package/tab-panel/definition.js +1 -1
  302. package/table/definition.cjs +17 -17
  303. package/table/definition.js +2 -2
  304. package/table/index.cjs +3 -3
  305. package/table/index.js +6 -5
  306. package/tabs/definition.cjs +6 -6
  307. package/tabs/definition.js +2 -2
  308. package/tabs/index.cjs +1 -1
  309. package/tabs/index.js +1 -1
  310. package/tag/definition.cjs +5 -5
  311. package/tag/definition.js +2 -2
  312. package/tag/index.cjs +4 -4
  313. package/tag/index.js +6 -5
  314. package/tag-group/definition.cjs +1 -1
  315. package/tag-group/definition.js +1 -1
  316. package/text-area/definition.cjs +5 -5
  317. package/text-area/definition.js +2 -2
  318. package/text-area/index.cjs +1 -1
  319. package/text-area/index.js +1 -1
  320. package/text-field/definition.cjs +5 -5
  321. package/text-field/definition.js +1 -1
  322. package/text-field/index.cjs +1 -1
  323. package/text-field/index.js +1 -1
  324. package/time-picker/definition.cjs +4 -4
  325. package/time-picker/definition.js +2 -2
  326. package/time-picker/index.cjs +1 -1
  327. package/time-picker/index.js +1 -1
  328. package/toggletip/definition.cjs +5 -5
  329. package/toggletip/definition.js +1 -1
  330. package/toggletip/index.cjs +1 -1
  331. package/toggletip/index.js +1 -1
  332. package/tooltip/definition.cjs +5 -5
  333. package/tooltip/definition.js +1 -1
  334. package/tooltip/index.cjs +1 -1
  335. package/tooltip/index.js +1 -1
  336. package/tree-item/definition.cjs +5 -5
  337. package/tree-item/definition.js +2 -2
  338. package/tree-item/index.cjs +1 -1
  339. package/tree-item/index.js +1 -1
  340. package/tree-view/definition.cjs +5 -5
  341. package/tree-view/definition.js +2 -2
  342. package/tree-view/index.cjs +1 -1
  343. package/tree-view/index.js +1 -1
  344. package/unbundled/definition11.cjs +6 -0
  345. package/unbundled/definition11.js +6 -0
  346. package/unbundled/definition14.cjs +1 -0
  347. package/unbundled/definition14.js +1 -0
  348. package/unbundled/definition2.cjs +5 -75
  349. package/unbundled/definition2.js +1 -71
  350. package/unbundled/definition28.cjs +1 -0
  351. package/unbundled/definition28.js +1 -0
  352. package/unbundled/definition31.cjs +2 -1189
  353. package/unbundled/definition31.js +1 -1188
  354. package/unbundled/definition32.cjs +207 -1835
  355. package/unbundled/definition32.js +203 -1807
  356. package/unbundled/definition33.cjs +83 -311
  357. package/unbundled/definition33.js +79 -235
  358. package/unbundled/definition34.cjs +1887 -25
  359. package/unbundled/definition34.js +1857 -24
  360. package/unbundled/definition35.cjs +315 -121
  361. package/unbundled/definition35.js +236 -114
  362. package/unbundled/definition36.cjs +25 -405
  363. package/unbundled/definition36.js +22 -397
  364. package/unbundled/definition37.cjs +47 -142
  365. package/unbundled/definition37.js +44 -139
  366. package/unbundled/definition38.cjs +345 -330
  367. package/unbundled/definition38.js +343 -328
  368. package/unbundled/definition39.cjs +183 -235
  369. package/unbundled/definition39.js +181 -233
  370. package/unbundled/definition40.cjs +377 -47
  371. package/unbundled/definition40.js +372 -42
  372. package/unbundled/definition41.cjs +256 -57
  373. package/unbundled/definition41.js +255 -56
  374. package/unbundled/definition42.cjs +45 -432
  375. package/unbundled/definition42.js +41 -428
  376. package/unbundled/definition43.cjs +63 -49
  377. package/unbundled/definition43.js +61 -47
  378. package/unbundled/definition44.cjs +438 -30
  379. package/unbundled/definition44.js +434 -25
  380. package/unbundled/definition45.cjs +46 -84
  381. package/unbundled/definition45.js +43 -81
  382. package/unbundled/definition46.cjs +29 -54
  383. package/unbundled/definition46.js +24 -50
  384. package/unbundled/definition47.cjs +93 -21
  385. package/unbundled/definition47.js +91 -16
  386. package/unbundled/definition48.cjs +49 -33
  387. package/unbundled/definition48.js +46 -30
  388. package/unbundled/definition49.cjs +22 -347
  389. package/unbundled/definition49.js +16 -344
  390. package/unbundled/definition50.cjs +34 -211
  391. package/unbundled/definition50.js +30 -207
  392. package/unbundled/definition51.cjs +282 -242
  393. package/unbundled/definition51.js +275 -235
  394. package/unbundled/definition52.cjs +211 -51
  395. package/unbundled/definition52.js +209 -48
  396. package/unbundled/definition53.cjs +275 -131
  397. package/unbundled/definition53.js +272 -127
  398. package/unbundled/definition54.cjs +50 -261
  399. package/unbundled/definition54.js +48 -260
  400. package/unbundled/definition55.cjs +126 -443
  401. package/unbundled/definition55.js +123 -441
  402. package/unbundled/definition56.cjs +234 -3596
  403. package/unbundled/definition56.js +229 -3428
  404. package/unbundled/definition57.cjs +407 -728
  405. package/unbundled/definition57.js +405 -726
  406. package/unbundled/definition58.cjs +3618 -106
  407. package/unbundled/definition58.js +3449 -100
  408. package/unbundled/definition59.cjs +624 -868
  409. package/unbundled/definition59.js +619 -863
  410. package/unbundled/definition60.cjs +106 -108
  411. package/unbundled/definition60.js +102 -104
  412. package/unbundled/definition61.cjs +1040 -71
  413. package/unbundled/definition61.js +1035 -65
  414. package/unbundled/definition62.cjs +105 -169
  415. package/unbundled/definition62.js +101 -165
  416. package/unbundled/definition63.cjs +70 -113
  417. package/unbundled/definition63.js +65 -109
  418. package/unbundled/definition64.cjs +181 -53
  419. package/unbundled/definition64.js +178 -50
  420. package/unbundled/definition65.cjs +109 -76
  421. package/unbundled/definition65.js +109 -75
  422. package/unbundled/definition66.cjs +58 -21
  423. package/unbundled/definition66.js +55 -15
  424. package/unbundled/definition67.cjs +81 -74
  425. package/unbundled/definition67.js +79 -73
  426. package/unbundled/definition68.cjs +19 -344
  427. package/unbundled/definition68.js +14 -335
  428. package/unbundled/definition69.cjs +88 -26
  429. package/unbundled/definition69.js +85 -22
  430. package/unbundled/definition7.cjs +18 -3
  431. package/unbundled/definition7.js +18 -3
  432. package/unbundled/definition70.cjs +330 -111
  433. package/unbundled/definition70.js +320 -108
  434. package/unbundled/definition71.cjs +26 -271
  435. package/unbundled/definition71.js +21 -267
  436. package/unbundled/definition72.cjs +134 -27
  437. package/unbundled/definition72.js +125 -25
  438. package/unbundled/definition73.cjs +245 -113
  439. package/unbundled/definition73.js +242 -104
  440. package/unbundled/definition74.cjs +28 -212
  441. package/unbundled/definition74.js +26 -202
  442. package/unbundled/definition75.cjs +117 -479
  443. package/unbundled/definition75.js +109 -475
  444. package/unbundled/definition76.cjs +232 -0
  445. package/unbundled/definition76.js +213 -0
  446. package/unbundled/definition77.cjs +533 -0
  447. package/unbundled/definition77.js +513 -0
  448. package/unbundled/numberConverter.cjs +91 -0
  449. package/unbundled/numberConverter.js +74 -0
  450. package/unbundled/picker-field.template.cjs +2 -0
  451. package/unbundled/picker-field.template.js +2 -0
  452. package/unbundled/utils.cjs +1439 -0
  453. package/unbundled/utils.js +1428 -0
  454. package/unbundled/vivid-element.cjs +1 -1
  455. package/unbundled/vivid-element.js +1 -1
  456. package/video-player/definition.cjs +1 -1
  457. package/video-player/definition.js +1 -1
  458. package/vivid.api.json +513 -0
  459. /package/{lib/icon/icon.placeholder.d.ts → shared/icon/icon-placeholder.d.ts} +0 -0
@@ -1,349 +1,28 @@
1
1
  import { o as defineVividComponent, s as createRegisterFunction, t as VividElement } from "./vivid-element.js";
2
- import { t as __decorate } from "./decorate.js";
3
- import { n as keyArrowRight$1, t as keyArrowLeft$1 } from "./key-codes.js";
4
- import { n as tabPanelDefinition } from "./definition66.js";
5
- import { n as tabDefinition, r as Tab } from "./definition67.js";
6
- import { Updates, attr, html, observable, ref, slotted } from "@microsoft/fast-element";
7
- import { classNames, keyArrowDown, keyArrowUp, keyEnd, keyHome, limit, uniqueId } from "@microsoft/fast-web-utilities";
8
- //#region src/lib/tabs/tabs.scss?inline
9
- var tabs_default = ":host{display:block}.base{--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.base.connotation-cta{--_connotation-color-firm:var(--vvd-tabs-cta-firm,var(--vvd-color-cta-600))}.base:not(.connotation-cta){--_connotation-color-firm:var(--vvd-tabs-accent-firm,var(--vvd-color-canvas-text))}.base{--_tabs-tablist-gutter:8px;--_tabs-active-indicator-stroke-width:2px;box-sizing:border-box;display:grid}.base.orientation-vertical{block-size:inherit;grid-template-rows:1fr;grid-template-columns:auto 1fr;overflow:hidden}.base:not(.orientation-vertical){block-size:var(--tabs-block-size,auto);grid-template-rows:auto 1fr;grid-template-columns:1fr;max-block-size:100%}.base.layout-stretch .scroll-shadow{flex:1}.base:not(.orientation-vertical) .scroll-shadow{isolation:isolate;position:relative;overflow:hidden}.base:not(.orientation-vertical) .scroll-shadow.start-scroll:before,.base:not(.orientation-vertical) .scroll-shadow.start-scroll:after,.base:not(.orientation-vertical) .scroll-shadow.end-scroll:before,.base:not(.orientation-vertical) .scroll-shadow.end-scroll:after{content:\"\";opacity:0;inline-size:10px;transition:opacity .1s;position:absolute;inset-block:0}.base:not(.orientation-vertical) .scroll-shadow.start-scroll:before{z-index:1;box-shadow:inset 7px 1px 5px -3px var(--vvd-color-neutral-950);opacity:.2;inset-inline-start:0}.base:not(.orientation-vertical) .scroll-shadow.end-scroll:after{box-shadow:inset -7px 1px 5px -3px var(--vvd-color-neutral-950);opacity:.2;inset-inline-end:0}.tabs{display:flex;overflow:hidden}.base.orientation-vertical .tabs{box-shadow:1px 0 0 0 var(--vvd-color-neutral-300);flex-direction:column}.base.orientation-horizontal .tabs{border-bottom:1px solid var(--vvd-color-neutral-300);flex-direction:row}.tablist{box-sizing:border-box;color:var(--_appearance-color-text);display:grid;position:relative;overflow:hidden}.base.layout-stretch .tablist{--_tab-justify-content:center;--_tabs-tablist-column:1fr}.tablist .base:not(.layout-stretch){--_tabs-tablist-column:auto}.base.orientation-vertical .tablist{padding:var(--_tabs-tablist-gutter);place-self:flex-start end;row-gap:var(--_tabs-tablist-gutter);grid-row:1/2;grid-template-rows:auto;grid-template-columns:auto 1fr;block-size:fit-content;min-block-size:100%;inline-size:100%}.base:not(.orientation-vertical) .tablist{justify-content:flex-start;column-gap:var(--_tabs-tablist-gutter);grid-auto-columns:var(--_tabs-tablist-column);inline-size:fit-content;min-inline-size:100%;padding-inline:var(--_tabs-tablist-gutter);grid-template-rows:auto auto;grid-auto-flow:column}.base.has-action-items.orientation-vertical .tablist{padding-block-end:0}.base.has-action-items:not(.orientation-vertical) .tablist{padding-inline-end:0}.tablist-wrapper{--scrollbar-track-color:transparent;--scrollbar-thumb-color:color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%);scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin}.tablist-wrapper ::-webkit-scrollbar{width:4px}.tablist-wrapper ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.tablist-wrapper ::-webkit-scrollbar-thumb{background-color:var(--scrollbar-fallback-track-color,var(--scrollbar-thumb-color));border:0;border-radius:4px}.base:not(.orientation-vertical) .tablist-wrapper{align-self:end;inline-size:100%;overflow:auto hidden}.base.orientation-vertical .tablist-wrapper{block-size:100%;overflow:hidden auto}.tablist-wrapper::-webkit-scrollbar{display:none}slot[name=action-items]{display:flex}.base.has-action-items.orientation-horizontal slot[name=action-items]{margin-inline:var(--_tabs-tablist-gutter);align-items:center}.base.has-action-items.orientation-vertical slot[name=action-items]{margin-block:var(--_tabs-tablist-gutter)}.tabpanel{box-sizing:border-box;block-size:100%;min-block-size:0;min-inline-size:0}.base.scroll .tabpanel{--scrollbar-track-color:transparent;--scrollbar-thumb-color:color-mix(in srgb, var(--vvd-color-neutral-950), transparent 70%);scrollbar-color:var(--scrollbar-thumb-color) var(--scrollbar-track-color);scrollbar-width:thin;overflow-y:auto}.base.scroll .tabpanel ::-webkit-scrollbar{width:4px}.base.scroll .tabpanel ::-webkit-scrollbar-track{background:var(--scrollbar-track-color)}.base.scroll .tabpanel ::-webkit-scrollbar-thumb{background-color:var(--scrollbar-fallback-track-color,var(--scrollbar-thumb-color));border:0;border-radius:4px}.base.gutters-small .tabpanel{padding:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) - calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)))}.active-indicator{background:currentColor;margin-inline-start:calc(var(--_tabs-tablist-gutter) * -1)}.base.orientation-vertical .active-indicator{block-size:80%;inline-size:var(--_tabs-active-indicator-stroke-width);border-radius:2px;grid-area:1/1;align-self:center}.base:not(.orientation-vertical) .active-indicator{z-index:1;block-size:var(--_tabs-active-indicator-stroke-width);inline-size:calc(var(--_tabs-active-tab-inline-size));border-radius:2px;grid-area:2/1;position:absolute;inset-block-end:0;inset-inline-start:8px}.activeIndicatorTransition{transition:transform .2s ease-out,inline-size .2s ease-out}";
10
- //#endregion
11
- //#region src/lib/tabs/tabs.ts
12
- var ACTIVE_TAB_WIDTH = "--_tabs-active-tab-inline-size";
13
- var TabsGutters = {
14
- None: "none",
15
- Small: "small"
16
- };
17
- var TabsOrientation = {
18
- vertical: "vertical",
19
- horizontal: "horizontal"
20
- };
21
- var oppositeOrientation = (orientation) => orientation === TabsOrientation.horizontal ? TabsOrientation.vertical : TabsOrientation.horizontal;
22
- var gridProperty = (orientation) => orientation === TabsOrientation.horizontal ? "gridColumn" : "gridRow";
23
- var translateProperty = (orientation) => orientation === TabsOrientation.horizontal ? "translateX" : "translateY";
24
- var offsetProperty = (orientation) => orientation === TabsOrientation.horizontal ? "offsetLeft" : "offsetTop";
25
- var isFocusableElement = (el) => el.getAttribute("aria-disabled") !== "true" && !el.disabled && !el.hasAttribute("hidden");
26
- var arrayShallowEquals = (a, b) => a.length === b.length && a.every((v, i) => v === b[i]);
2
+ import { n as applyHostSemantics, t as HostSemantics } from "./host-semantics.js";
3
+ import { html } from "@microsoft/fast-element";
4
+ //#region src/lib/tab-panel/tab-panel.ts
27
5
  /**
28
6
  * @public
29
- * @component tabs
30
- * @slot - Default slot for tab and tab-panel elements.
31
- * @slot action-items - Slot for action items such as buttons or controls.
32
- * @event {CustomEvent<HTMLElement>} change - Fires a custom 'change' event when a tab is clicked or during keyboard navigation
7
+ * @component tab-panel
8
+ * @slot - Default slot.
33
9
  */
34
- var Tabs = class extends VividElement {
35
- constructor(..._args) {
36
- super(..._args);
37
- this.orientation = TabsOrientation.horizontal;
38
- this.tabs = [];
39
- this.tabpanels = [];
40
- this.scrollablePanel = false;
41
- this._actionItemsSlottedContent = [];
42
- this.activeindicator = true;
43
- }
44
- /**
45
- * @internal
46
- */
47
- orientationChanged() {
48
- this._registerTabsChange();
49
- if (this.$fastController.isConnected) Updates.enqueue(() => this.#moveActiveIndicator(false));
50
- }
51
- /**
52
- * @internal
53
- */
54
- tabsChanged() {
55
- for (const tab of this.tabs) {
56
- if (!tab.id) tab.id = `tab-${uniqueId()}`;
57
- tab.addEventListener("click", this.#onTabClick);
58
- tab.addEventListener("keydown", this.#onTabKeyDown);
59
- }
60
- this._registerTabsChange();
61
- }
62
- /**
63
- * @internal
64
- */
65
- tabpanelsChanged() {
66
- for (const panel of this.tabpanels) if (!panel.id) panel.id = `panel-${uniqueId()}`;
67
- this._registerTabsChange();
68
- }
69
- #areSlotsSynced() {
70
- return arrayShallowEquals(this.tabs, this._tabsSlot.assignedNodes()) && arrayShallowEquals(this.tabpanels, this._tabPanelsSlot.assignedNodes());
71
- }
72
- /**
73
- * Tabs that are paired with a tabpanel. Ignore any excess tabs or panels.
74
- */
75
- get _pairedTabs() {
76
- return this.tabs.slice(0, Math.min(this.tabs.length, this.tabpanels.length));
77
- }
78
- /**
79
- * Tabs that are eligible to become active.
80
- */
81
- get _validTabs() {
82
- return this._pairedTabs.filter(isFocusableElement);
83
- }
84
- /**
85
- * @internal
86
- */
87
- activeidChanged() {
88
- this._registerTabsChange();
89
- }
90
- /**
91
- * A reference to the active tab
92
- * @public
93
- */
94
- get activetab() {
95
- return this._validTabs.find((tab) => tab.id === this.activeid) ?? null;
96
- }
97
- #setActiveTabDueToUserInteraction(tab) {
98
- this.activeid = tab.id;
99
- tab.focus();
100
- this.$emit("change", tab);
101
- }
102
- #isTabsChangeQueued = false;
103
- /**
104
- * Defer actual processing of changes into a microtask to wait for all DOM changes to complete. E.g. when tabs and
105
- * active id are updated at the same time.
106
- */
107
- _registerTabsChange() {
108
- if (this.#isTabsChangeQueued) return;
109
- this.#isTabsChangeQueued = true;
110
- window.queueMicrotask(() => {
111
- if (this.$fastController.isConnected && this.#areSlotsSynced()) this.#handleTabsChange();
112
- this.#isTabsChangeQueued = false;
113
- });
114
- }
115
- #lastActiveId = void 0;
116
- #handleTabsChange() {
117
- const validTabs = this._validTabs;
118
- let newActiveId = this.activeid;
119
- if (!validTabs.length || newActiveId && !validTabs.find((t) => t.id === newActiveId)) newActiveId = void 0;
120
- if (!newActiveId && validTabs.length) newActiveId = validTabs[0].id;
121
- if (this.activeid !== newActiveId) {
122
- this.activeid = newActiveId;
123
- this.$emit("change", this.activetab);
124
- }
125
- this.#updateSlottedChildren();
126
- if (this.activeid !== this.#lastActiveId) {
127
- if (this.activetab) {
128
- const shouldAnimate = this.#lastActiveId !== void 0;
129
- this.#scrollToTab(this.activetab, shouldAnimate);
130
- this.#moveActiveIndicator(shouldAnimate);
131
- }
132
- this.#lastActiveId = this.activeid;
133
- } else this.#moveActiveIndicator(this.#isTransitioningTransform);
134
- }
135
- /**
136
- * Updates the tabs and their panels according to the current state of the component.
137
- */
138
- #updateSlottedChildren() {
139
- for (const [index, tab] of this._pairedTabs.entries()) {
140
- const panel = this.tabpanels[index];
141
- const isActiveTab = tab.id === this.activeid;
142
- /* v8 ignore else -- @preserve */
143
- if (tab instanceof Tab) tab.active = isActiveTab;
144
- tab.setAttribute("aria-controls", panel.id);
145
- tab.setAttribute("tabindex", isActiveTab ? "0" : "-1");
146
- if (isActiveTab && this.connotation) tab.setAttribute("connotation", this.connotation);
147
- else tab.removeAttribute("connotation");
148
- tab.classList.toggle("vertical", this.orientation === TabsOrientation.vertical);
149
- tab.style[gridProperty(oppositeOrientation(this.orientation))] = "";
150
- tab.style[gridProperty(this.orientation)] = `${index + 1}`;
151
- panel.setAttribute("aria-labelledby", tab.id);
152
- panel.hidden = !isActiveTab;
153
- }
154
- }
155
- #onTabClick = (event) => {
156
- const selectedTab = event.currentTarget;
157
- if (this._validTabs.includes(selectedTab)) this.#setActiveTabDueToUserInteraction(selectedTab);
158
- };
159
- #onTabKeyDown = (event) => {
160
- const tabs = this._validTabs;
161
- const activeTab = this.activetab;
162
- if (!activeTab) return;
163
- const [arrowKeyPrev, arrowKeyNext] = this.orientation === TabsOrientation.horizontal ? [keyArrowLeft$1, keyArrowRight$1] : [keyArrowUp, keyArrowDown];
164
- const keyToNextTab = {
165
- [arrowKeyPrev]: () => tabs[(tabs.indexOf(activeTab) - 1 + tabs.length) % tabs.length],
166
- [arrowKeyNext]: () => tabs[(tabs.indexOf(activeTab) + 1) % tabs.length],
167
- [keyHome]: () => tabs[0],
168
- [keyEnd]: () => tabs[tabs.length - 1]
169
- };
170
- if (keyToNextTab[event.key]) {
171
- event.preventDefault();
172
- this.#setActiveTabDueToUserInteraction(keyToNextTab[event.key]());
173
- }
174
- };
175
- /**
176
- * Adjusts the active index by numerical increments.
177
- * Only enabled tabs are considered.
178
- * @public
179
- * @remarks
180
- */
181
- adjust(adjustment) {
182
- const focusableTabs = this._validTabs;
183
- const currentActiveTabIndex = focusableTabs.findIndex((t) => t.id === this.activeid);
184
- if (currentActiveTabIndex === -1) return;
185
- const nextTabIndex = limit(0, focusableTabs.length - 1, currentActiveTabIndex + adjustment);
186
- this.#setActiveTabDueToUserInteraction(focusableTabs[nextTabIndex]);
187
- }
188
- #isTransitioningTransform = false;
189
- /**
190
- * @internal
191
- */
192
- _onActiveIndicatorTransitionend(event) {
193
- /* v8 ignore else -- @preserve */
194
- if (event.propertyName === "transform") this.#isTransitioningTransform = false;
195
- }
196
- #cancelAnimationIfNeeded() {
197
- this.#isTransitioningTransform = false;
198
- this.activeIndicatorRef.classList.remove("activeIndicatorTransition");
199
- }
200
- #moveActiveIndicator(shouldAnimate) {
201
- const activeTabIndex = this._pairedTabs.findIndex((tab) => tab.id === this.activeid);
202
- if (activeTabIndex === -1) return;
203
- const indicatorEl = this.activeIndicatorRef;
204
- const currentOffset = indicatorEl[offsetProperty(this.orientation)];
205
- indicatorEl.style[gridProperty(this.orientation)] = `${activeTabIndex + 1}`;
206
- const targetOffset = indicatorEl[offsetProperty(this.orientation)];
207
- indicatorEl.style[gridProperty(this.orientation)] = "";
208
- const relativeOffset = targetOffset - currentOffset;
209
- const currentTransform = indicatorEl.style.transform;
210
- const targetTransform = `${translateProperty(this.orientation)}(${relativeOffset}px)`;
211
- if (shouldAnimate) {
212
- indicatorEl.classList.add("activeIndicatorTransition");
213
- if (currentTransform !== targetTransform) this.#isTransitioningTransform = true;
214
- } else this.#cancelAnimationIfNeeded();
215
- indicatorEl.style.transform = targetTransform;
216
- indicatorEl.style.setProperty(ACTIVE_TAB_WIDTH, this.tabs[activeTabIndex].getBoundingClientRect().width + "px");
217
- }
218
- /**
219
- * @internal
220
- */
221
- connotationChanged() {
222
- this._registerTabsChange();
223
- }
224
- #updateScrollStatus() {
225
- this.#tabListScrollWrapper.dispatchEvent(new Event("scroll"));
226
- }
227
- #resizeObserver;
228
- connectedCallback() {
229
- super.connectedCallback();
230
- this._registerTabsChange();
231
- requestAnimationFrame(() => this.#updateScrollStatus());
232
- this.#resizeObserver = new ResizeObserver(() => {
233
- this.#moveActiveIndicator(this.#isTransitioningTransform);
234
- this.#updateScrollStatus();
235
- });
236
- this.#resizeObserver.observe(this.#tabListScrollWrapper);
237
- this.#resizeObserver.observe(this.tablist);
238
- }
239
- disconnectedCallback() {
240
- super.disconnectedCallback();
241
- this.#resizeObserver.disconnect();
242
- }
243
- get #tabListWrapper() {
244
- return this.shadowRoot.querySelector(".tablist-wrapper");
245
- }
246
- get #tabListScrollWrapper() {
247
- return this.tablist.parentElement;
248
- }
249
- #scrollToTab(tab, shouldAnimate = true) {
250
- const index = this.tabs.findIndex((t) => t === tab);
251
- let left = 0;
252
- let top = 0;
253
- if (this.orientation === TabsOrientation.vertical) {
254
- if (index === this.tabs.length - 1) top = this.#tabListWrapper.scrollHeight;
255
- if (index > 0 && index < this.tabs.length - 1) top = tab.offsetTop - this.#tabListWrapper.offsetHeight / 2 + tab.offsetHeight / 2;
256
- } else {
257
- if (index === this.tabs.length - 1) left = this.#tabListWrapper.scrollWidth;
258
- if (index > 0 && index < this.tabs.length - 1) left = tab.offsetLeft - this.#tabListWrapper.offsetWidth / 2 + tab.offsetWidth / 2;
259
- }
260
- this.#tabListWrapper.scrollTo({
261
- top,
262
- left,
263
- behavior: shouldAnimate ? "smooth" : "instant"
264
- });
265
- }
266
- };
267
- __decorate([attr], Tabs.prototype, "orientation", void 0);
268
- __decorate([observable], Tabs.prototype, "tabs", void 0);
269
- __decorate([observable], Tabs.prototype, "tabpanels", void 0);
270
- __decorate([attr], Tabs.prototype, "activeid", void 0);
271
- __decorate([observable], Tabs.prototype, "activeIndicatorRef", void 0);
272
- __decorate([observable], Tabs.prototype, "tablist", void 0);
273
- __decorate([attr], Tabs.prototype, "connotation", void 0);
274
- __decorate([attr], Tabs.prototype, "gutters", void 0);
275
- __decorate([attr({
276
- mode: "boolean",
277
- attribute: "scrollable-panel"
278
- })], Tabs.prototype, "scrollablePanel", void 0);
279
- __decorate([attr({ attribute: "tabs-layout" })], Tabs.prototype, "tabsLayout", void 0);
280
- __decorate([observable], Tabs.prototype, "_actionItemsSlottedContent", void 0);
281
- __decorate([attr({ mode: "boolean" })], Tabs.prototype, "activeindicator", void 0);
282
- //#endregion
283
- //#region src/lib/tabs/tabs.template.ts
284
- var getClasses = ({ connotation, orientation, gutters, scrollablePanel, tabsLayout, _actionItemsSlottedContent }) => classNames("base", `layout-${tabsLayout ?? "align-start"}`, [`connotation-${connotation}`, Boolean(connotation)], [`orientation-${orientation}`, Boolean(orientation)], `gutters-${gutters ?? "small"}`, ["scroll", Boolean(scrollablePanel)], ["has-action-items", Boolean(_actionItemsSlottedContent.length)]);
285
- function setNoScrollState(scrollShadow, scrollWrapper) {
286
- if (scrollWrapper.scrollWidth <= scrollWrapper.clientWidth) {
287
- scrollShadow.classList.toggle("start-scroll", false);
288
- scrollShadow.classList.toggle("end-scroll", false);
289
- return true;
290
- }
291
- return false;
292
- }
293
- function addStartShadow(scrollShadow, scrollWrapper) {
294
- scrollShadow.classList.toggle("start-scroll", scrollWrapper.scrollLeft > 0);
295
- }
296
- function addEndShadow(scrollShadow, scrollWrapper) {
297
- scrollShadow.classList.toggle("end-scroll", scrollWrapper.scrollLeft + 1 < scrollWrapper.scrollWidth - scrollWrapper.clientWidth);
298
- }
299
- function setShadowWhenScrollTabs(_, { event }) {
300
- const scrollWrapper = event.currentTarget;
301
- const scrollShadow = scrollWrapper.parentElement;
302
- if (setNoScrollState(scrollShadow, scrollWrapper)) return;
303
- addStartShadow(scrollShadow, scrollWrapper);
304
- addEndShadow(scrollShadow, scrollWrapper);
305
- }
10
+ var TabPanel = class extends HostSemantics(VividElement) {};
306
11
  //#endregion
307
- //#region src/lib/tabs/definition.ts
12
+ //#region src/lib/tab-panel/definition.ts
308
13
  /**
309
14
  * @internal
310
15
  */
311
- var tabsDefinition = defineVividComponent("tabs", Tabs, html`
312
- <template>
313
- <div class="${getClasses}">
314
- <div class="tabs">
315
- <div class="scroll-shadow">
316
- <div class="tablist-wrapper" @scroll="${setShadowWhenScrollTabs}">
317
- <div class="tablist" role="tablist" ${ref("tablist")}>
318
- <slot name="tab" ${ref("_tabsSlot")} ${slotted("tabs")}></slot>
319
- <div
320
- ${ref("activeIndicatorRef")}
321
- class="active-indicator"
322
- @transitionend="${(x, c) => x._onActiveIndicatorTransitionend(c.event)}"
323
- ></div>
324
- </div>
325
- </div>
326
- </div>
327
- <slot
328
- name="action-items"
329
- ${slotted("_actionItemsSlottedContent")}
330
- ></slot>
331
- </div>
332
- <div class="tabpanel" part="tab-panel">
333
- <slot
334
- name="tabpanel"
335
- ${ref("_tabPanelsSlot")}
336
- ${slotted("tabpanels")}
337
- ></slot>
338
- </div>
339
- </div>
16
+ var tabPanelDefinition = defineVividComponent("tab-panel", TabPanel, html`
17
+ <template slot="tabpanel" ${applyHostSemantics({ role: "tabpanel" })}>
18
+ <slot></slot>
340
19
  </template>
341
- `, [tabDefinition, tabPanelDefinition], { styles: tabs_default });
20
+ `, [], {});
342
21
  /**
343
- * Registers the tabs elements with the design system.
22
+ * Registers the tab-panel elements with the design system.
344
23
  *
345
24
  * @param prefix - the prefix to use for the component name
346
25
  */
347
- var registerTabs = createRegisterFunction(tabsDefinition);
26
+ var registerTabPanel = createRegisterFunction(tabPanelDefinition);
348
27
  //#endregion
349
- export { TabsGutters as i, tabsDefinition as n, Tabs as r, registerTabs as t };
28
+ export { tabPanelDefinition as n, TabPanel as r, registerTabPanel as t };
@@ -1,57 +1,119 @@
1
1
  require("./chunk.cjs");
2
2
  const require_vivid_element = require("./vivid-element.cjs");
3
- const require_delegates_aria = require("./delegates-aria.cjs");
3
+ const require_definition = require("./definition2.cjs");
4
+ const require_decorate = require("./decorate.cjs");
5
+ const require_affix = require("./affix.cjs");
6
+ const require_localized = require("./localized.cjs");
7
+ const require_host_semantics = require("./host-semantics.cjs");
4
8
  let _microsoft_fast_element = require("@microsoft/fast-element");
5
9
  let _microsoft_fast_web_utilities = require("@microsoft/fast-web-utilities");
6
- //#region src/lib/tag-group/tag-group.scss?inline
7
- var tag_group_default = ".base{flex-wrap:wrap;gap:8px;display:flex}";
10
+ //#region src/lib/tab/tab.scss?inline
11
+ var tab_default = ":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){grid-column:1;justify-content:end}: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}@media (hover:hover){.base: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.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:disabled,.base.disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.base:active:where(:not(.disabled,:disabled)),.base.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{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);vertical-align:middle;white-space:nowrap;min-block-size:40px;display:flex;position:relative}@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:0 0 0 4px color-mix(in srgb, var(--focus-stroke-color,var(--vvd-color-cta-500)), transparent 85%), inset 0 0 0 3px var(--focus-stroke-gap-color,currentColor);outline:1px solid var(--focus-stroke-color,var(--vvd-color-cta-500));outline-offset:calc(-1px - 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]{order:1;margin-inline-start:auto;display:inline-block}.close{background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;block-size:24px;inline-size:24px;display:flex;position:absolute;inset-block-start:50%;inset-inline-end:4px;transform:translateY(-50%)}.close:focus-visible{--focus-stroke-gap-color:transparent;box-shadow:0 0 0 4px color-mix(in srgb, var(--focus-stroke-color,var(--vvd-color-cta-500)), transparent 85%), inset 0 0 0 3px var(--focus-stroke-gap-color,currentColor);outline:1px solid var(--focus-stroke-color,var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset,0px))}.close vwc-icon{font-size:12px}.close .icon{justify-content:center;align-items:center;display:flex}";
8
12
  //#endregion
9
- //#region src/lib/tag-group/tag-group.ts
13
+ //#region src/lib/tab/tab.ts
10
14
  /**
11
15
  * @public
12
- * @component tag-group
13
- * @slot - The content of the tag-group.
16
+ * @component tab
17
+ * @slot icon - The preferred way to add an icon to the component.
18
+ * @testSelector byLabel byLabel
19
+ * @testAction select click #base
20
+ * @testQuery active active true
21
+ * @testQuery inactive active false
22
+ * @testRef base shadow .base
14
23
  */
15
- var TagGroup = class extends require_delegates_aria.DelegatesAria(require_vivid_element.VividElement) {};
24
+ var Tab = class extends require_host_semantics.HostSemantics(require_affix.AffixIconWithTrailing(require_localized.Localized(require_vivid_element.VividElement))) {
25
+ constructor(..._args) {
26
+ super(..._args);
27
+ this.removable = false;
28
+ this.tabIndex = "-1";
29
+ this.active = false;
30
+ }
31
+ /**
32
+ * @internal
33
+ */
34
+ _handleCloseClick(e) {
35
+ e.stopImmediatePropagation();
36
+ this.$emit("close");
37
+ }
38
+ /**
39
+ * @internal
40
+ */
41
+ _onKeyDown(e) {
42
+ if (!this.removable || e.key !== "Delete") return true;
43
+ e.stopImmediatePropagation();
44
+ this.$emit("close");
45
+ return false;
46
+ }
47
+ };
48
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Tab.prototype, "disabled", void 0);
49
+ require_decorate.__decorate([_microsoft_fast_element.attr], Tab.prototype, "connotation", void 0);
50
+ require_decorate.__decorate([_microsoft_fast_element.attr], Tab.prototype, "shape", void 0);
51
+ require_decorate.__decorate([_microsoft_fast_element.attr], Tab.prototype, "label", void 0);
52
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Tab.prototype, "removable", void 0);
53
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "fromView" })], Tab.prototype, "tabIndex", void 0);
54
+ require_decorate.__decorate([_microsoft_fast_element.observable], Tab.prototype, "active", void 0);
16
55
  //#endregion
17
- //#region src/lib/tag-group/tag-group.template.ts
18
- var getClasses = (_) => (0, _microsoft_fast_web_utilities.classNames)("base");
19
- var TagGroupTemplate = _microsoft_fast_element.html`
20
- <div
21
- class="${getClasses}"
22
- ${require_delegates_aria.delegateAria({ role: "group" })}
56
+ //#region src/lib/tab/tab.template.ts
57
+ var getClasses = ({ connotation, disabled, active, iconTrailing, shape, removable }) => (0, _microsoft_fast_web_utilities.classNames)("base", [`connotation-${connotation}`, Boolean(connotation) && Boolean(active)], [`shape-${shape}`, Boolean(shape)], ["disabled", Boolean(disabled)], ["selected", Boolean(active)], ["icon-trailing", iconTrailing], ["removable", removable]);
58
+ function renderDismissButton(context) {
59
+ const affixIconTemplate = require_affix.affixIconTemplateFactory(context);
60
+ return _microsoft_fast_element.html`<button
61
+ aria-label="${(x) => x.locale.tab.dismissButtonLabel}"
62
+ class="close"
63
+ id="close-btn"
64
+ @click="${(x, c) => x._handleCloseClick(c.event)}"
23
65
  >
24
- <slot></slot>
25
- </div>
26
- `;
66
+ ${() => affixIconTemplate("close-line", require_affix.IconWrapper.Span)}
67
+ </button>`;
68
+ }
69
+ var TabTemplate = (context) => {
70
+ const affixIconTemplate = require_affix.affixIconTemplateFactory(context);
71
+ return _microsoft_fast_element.html`
72
+ <template
73
+ slot="tab"
74
+ ?active="${(x) => x.active}"
75
+ ${require_host_semantics.applyHostSemantics({
76
+ role: "tab",
77
+ ariaDisabled: (x) => x.disabled,
78
+ ariaSelected: (x) => x.active
79
+ })}
80
+ @keydown="${(x, c) => x._onKeyDown(c.event)}"
81
+ >
82
+ <div class="${getClasses}">
83
+ ${(x) => affixIconTemplate(x.icon, require_affix.IconWrapper.Slot)} ${(x) => x.label}
84
+ ${(x) => x.removable ? renderDismissButton(context) : null}
85
+ </div>
86
+ </template>
87
+ `;
88
+ };
27
89
  //#endregion
28
- //#region src/lib/tag-group/definition.ts
90
+ //#region src/lib/tab/definition.ts
29
91
  /**
30
92
  * @internal
31
93
  */
32
- var tagGroupDefinition = require_vivid_element.defineVividComponent("tag-group", TagGroup, TagGroupTemplate, [], { styles: tag_group_default });
94
+ var tabDefinition = require_vivid_element.defineVividComponent("tab", Tab, TabTemplate, [require_definition.iconDefinition], { styles: tab_default });
33
95
  /**
34
- * Registers the tag-group element with the design system.
96
+ * Registers the tab elements with the design system.
35
97
  *
36
98
  * @param prefix - the prefix to use for the component name
37
99
  */
38
- var registerTagGroup = require_vivid_element.createRegisterFunction(tagGroupDefinition);
100
+ var registerTab = require_vivid_element.createRegisterFunction(tabDefinition);
39
101
  //#endregion
40
- Object.defineProperty(exports, "TagGroup", {
102
+ Object.defineProperty(exports, "Tab", {
41
103
  enumerable: true,
42
104
  get: function() {
43
- return TagGroup;
105
+ return Tab;
44
106
  }
45
107
  });
46
- Object.defineProperty(exports, "registerTagGroup", {
108
+ Object.defineProperty(exports, "registerTab", {
47
109
  enumerable: true,
48
110
  get: function() {
49
- return registerTagGroup;
111
+ return registerTab;
50
112
  }
51
113
  });
52
- Object.defineProperty(exports, "tagGroupDefinition", {
114
+ Object.defineProperty(exports, "tabDefinition", {
53
115
  enumerable: true,
54
116
  get: function() {
55
- return tagGroupDefinition;
117
+ return tabDefinition;
56
118
  }
57
119
  });
@@ -1,38 +1,101 @@
1
1
  import { o as defineVividComponent, s as createRegisterFunction, t as VividElement } from "./vivid-element.js";
2
- import { n as delegateAria, t as DelegatesAria } from "./delegates-aria.js";
3
- import { html } from "@microsoft/fast-element";
2
+ import { t as iconDefinition } from "./definition2.js";
3
+ import { t as __decorate } from "./decorate.js";
4
+ import { a as affixIconTemplateFactory, i as IconWrapper, n as AffixIconWithTrailing } from "./affix.js";
5
+ import { t as Localized } from "./localized.js";
6
+ import { n as applyHostSemantics, t as HostSemantics } from "./host-semantics.js";
7
+ import { attr, html, observable } from "@microsoft/fast-element";
4
8
  import { classNames } from "@microsoft/fast-web-utilities";
5
- //#region src/lib/tag-group/tag-group.scss?inline
6
- var tag_group_default = ".base{flex-wrap:wrap;gap:8px;display:flex}";
9
+ //#region src/lib/tab/tab.scss?inline
10
+ var tab_default = ":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){grid-column:1;justify-content:end}: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}@media (hover:hover){.base: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.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:disabled,.base.disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}.base:active:where(:not(.disabled,:disabled)),.base.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{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);vertical-align:middle;white-space:nowrap;min-block-size:40px;display:flex;position:relative}@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:0 0 0 4px color-mix(in srgb, var(--focus-stroke-color,var(--vvd-color-cta-500)), transparent 85%), inset 0 0 0 3px var(--focus-stroke-gap-color,currentColor);outline:1px solid var(--focus-stroke-color,var(--vvd-color-cta-500));outline-offset:calc(-1px - 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]{order:1;margin-inline-start:auto;display:inline-block}.close{background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;block-size:24px;inline-size:24px;display:flex;position:absolute;inset-block-start:50%;inset-inline-end:4px;transform:translateY(-50%)}.close:focus-visible{--focus-stroke-gap-color:transparent;box-shadow:0 0 0 4px color-mix(in srgb, var(--focus-stroke-color,var(--vvd-color-cta-500)), transparent 85%), inset 0 0 0 3px var(--focus-stroke-gap-color,currentColor);outline:1px solid var(--focus-stroke-color,var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset,0px))}.close vwc-icon{font-size:12px}.close .icon{justify-content:center;align-items:center;display:flex}";
7
11
  //#endregion
8
- //#region src/lib/tag-group/tag-group.ts
12
+ //#region src/lib/tab/tab.ts
9
13
  /**
10
14
  * @public
11
- * @component tag-group
12
- * @slot - The content of the tag-group.
15
+ * @component tab
16
+ * @slot icon - The preferred way to add an icon to the component.
17
+ * @testSelector byLabel byLabel
18
+ * @testAction select click #base
19
+ * @testQuery active active true
20
+ * @testQuery inactive active false
21
+ * @testRef base shadow .base
13
22
  */
14
- var TagGroup = class extends DelegatesAria(VividElement) {};
23
+ var Tab = class extends HostSemantics(AffixIconWithTrailing(Localized(VividElement))) {
24
+ constructor(..._args) {
25
+ super(..._args);
26
+ this.removable = false;
27
+ this.tabIndex = "-1";
28
+ this.active = false;
29
+ }
30
+ /**
31
+ * @internal
32
+ */
33
+ _handleCloseClick(e) {
34
+ e.stopImmediatePropagation();
35
+ this.$emit("close");
36
+ }
37
+ /**
38
+ * @internal
39
+ */
40
+ _onKeyDown(e) {
41
+ if (!this.removable || e.key !== "Delete") return true;
42
+ e.stopImmediatePropagation();
43
+ this.$emit("close");
44
+ return false;
45
+ }
46
+ };
47
+ __decorate([attr({ mode: "boolean" })], Tab.prototype, "disabled", void 0);
48
+ __decorate([attr], Tab.prototype, "connotation", void 0);
49
+ __decorate([attr], Tab.prototype, "shape", void 0);
50
+ __decorate([attr], Tab.prototype, "label", void 0);
51
+ __decorate([attr({ mode: "boolean" })], Tab.prototype, "removable", void 0);
52
+ __decorate([attr({ mode: "fromView" })], Tab.prototype, "tabIndex", void 0);
53
+ __decorate([observable], Tab.prototype, "active", void 0);
15
54
  //#endregion
16
- //#region src/lib/tag-group/tag-group.template.ts
17
- var getClasses = (_) => classNames("base");
55
+ //#region src/lib/tab/tab.template.ts
56
+ var getClasses = ({ connotation, disabled, active, iconTrailing, shape, removable }) => classNames("base", [`connotation-${connotation}`, Boolean(connotation) && Boolean(active)], [`shape-${shape}`, Boolean(shape)], ["disabled", Boolean(disabled)], ["selected", Boolean(active)], ["icon-trailing", iconTrailing], ["removable", removable]);
57
+ function renderDismissButton(context) {
58
+ const affixIconTemplate = affixIconTemplateFactory(context);
59
+ return html`<button
60
+ aria-label="${(x) => x.locale.tab.dismissButtonLabel}"
61
+ class="close"
62
+ id="close-btn"
63
+ @click="${(x, c) => x._handleCloseClick(c.event)}"
64
+ >
65
+ ${() => affixIconTemplate("close-line", IconWrapper.Span)}
66
+ </button>`;
67
+ }
68
+ var TabTemplate = (context) => {
69
+ const affixIconTemplate = affixIconTemplateFactory(context);
70
+ return html`
71
+ <template
72
+ slot="tab"
73
+ ?active="${(x) => x.active}"
74
+ ${applyHostSemantics({
75
+ role: "tab",
76
+ ariaDisabled: (x) => x.disabled,
77
+ ariaSelected: (x) => x.active
78
+ })}
79
+ @keydown="${(x, c) => x._onKeyDown(c.event)}"
80
+ >
81
+ <div class="${getClasses}">
82
+ ${(x) => affixIconTemplate(x.icon, IconWrapper.Slot)} ${(x) => x.label}
83
+ ${(x) => x.removable ? renderDismissButton(context) : null}
84
+ </div>
85
+ </template>
86
+ `;
87
+ };
18
88
  //#endregion
19
- //#region src/lib/tag-group/definition.ts
89
+ //#region src/lib/tab/definition.ts
20
90
  /**
21
91
  * @internal
22
92
  */
23
- var tagGroupDefinition = defineVividComponent("tag-group", TagGroup, html`
24
- <div
25
- class="${getClasses}"
26
- ${delegateAria({ role: "group" })}
27
- >
28
- <slot></slot>
29
- </div>
30
- `, [], { styles: tag_group_default });
93
+ var tabDefinition = defineVividComponent("tab", Tab, TabTemplate, [iconDefinition], { styles: tab_default });
31
94
  /**
32
- * Registers the tag-group element with the design system.
95
+ * Registers the tab elements with the design system.
33
96
  *
34
97
  * @param prefix - the prefix to use for the component name
35
98
  */
36
- var registerTagGroup = createRegisterFunction(tagGroupDefinition);
99
+ var registerTab = createRegisterFunction(tabDefinition);
37
100
  //#endregion
38
- export { tagGroupDefinition as n, TagGroup as r, registerTagGroup as t };
101
+ export { tabDefinition as n, Tab as r, registerTab as t };