q2-tecton-elements 1.67.2 → 1.68.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 (807) hide show
  1. package/dist/bundle-report.json +22598 -10670
  2. package/dist/cjs/click-elsewhere.q2-option-list.q2-popover.entry.cjs.js.map +1 -1
  3. package/dist/cjs/click-elsewhere_3.cjs.entry.js +46 -32
  4. package/dist/cjs/click-elsewhere_3.cjs.entry.js.map +1 -1
  5. package/dist/cjs/{component-DRAntnCA.js → component-iASoq6gx.js} +9 -3
  6. package/dist/cjs/component-iASoq6gx.js.map +1 -0
  7. package/dist/cjs/{index-YvKoRT-t.js → index-DmGkqdX2.js} +3 -3
  8. package/dist/cjs/index-DmGkqdX2.js.map +1 -0
  9. package/dist/cjs/loader.cjs.js +1 -1
  10. package/dist/cjs/q2-action-group.q2-resize-observer.entry.cjs.js.map +1 -1
  11. package/dist/cjs/q2-action-group_2.cjs.entry.js +2 -2
  12. package/dist/cjs/q2-action-group_2.cjs.entry.js.map +1 -1
  13. package/dist/cjs/q2-action-sheet.cjs.entry.js +109 -4
  14. package/dist/cjs/q2-action-sheet.cjs.entry.js.map +1 -1
  15. package/dist/cjs/q2-action-sheet.entry.cjs.js.map +1 -1
  16. package/dist/cjs/q2-avatar.cjs.entry.js.map +1 -1
  17. package/dist/cjs/q2-avatar.entry.cjs.js.map +1 -1
  18. package/dist/cjs/q2-badge.cjs.entry.js +1 -1
  19. package/dist/cjs/q2-badge.cjs.entry.js.map +1 -1
  20. package/dist/cjs/q2-badge.entry.cjs.js.map +1 -1
  21. package/dist/cjs/q2-btn.q2-loading.entry.cjs.js.map +1 -1
  22. package/dist/cjs/q2-btn_2.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-btn_2.cjs.entry.js.map +1 -1
  24. package/dist/cjs/q2-calendar.cjs.entry.js +6 -3
  25. package/dist/cjs/q2-calendar.cjs.entry.js.map +1 -1
  26. package/dist/cjs/q2-calendar.entry.cjs.js.map +1 -1
  27. package/dist/cjs/q2-card-image.cjs.entry.js +2 -2
  28. package/dist/cjs/q2-card-image.cjs.entry.js.map +1 -1
  29. package/dist/cjs/q2-card-image.entry.cjs.js.map +1 -1
  30. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-card.cjs.entry.js.map +1 -1
  32. package/dist/cjs/q2-card.entry.cjs.js.map +1 -1
  33. package/dist/cjs/q2-carousel-pane.cjs.entry.js +3 -3
  34. package/dist/cjs/q2-carousel-pane.cjs.entry.js.map +1 -1
  35. package/dist/cjs/q2-carousel-pane.entry.cjs.js.map +1 -1
  36. package/dist/cjs/q2-carousel.cjs.entry.js +162 -29
  37. package/dist/cjs/q2-carousel.cjs.entry.js.map +1 -1
  38. package/dist/cjs/q2-carousel.entry.cjs.js.map +1 -1
  39. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  40. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  41. package/dist/cjs/q2-chart-donut.cjs.entry.js +3 -2
  42. package/dist/cjs/q2-chart-donut.cjs.entry.js.map +1 -1
  43. package/dist/cjs/q2-chart-donut.entry.cjs.js.map +1 -1
  44. package/dist/cjs/q2-checkbox-group.cjs.entry.js +2 -2
  45. package/dist/cjs/q2-checkbox-group.cjs.entry.js.map +1 -1
  46. package/dist/cjs/q2-checkbox-group.entry.cjs.js.map +1 -1
  47. package/dist/cjs/q2-checkbox.q2-tag.entry.cjs.js.map +1 -1
  48. package/dist/cjs/q2-checkbox_2.cjs.entry.js +3 -3
  49. package/dist/cjs/q2-checkbox_2.cjs.entry.js.map +1 -1
  50. package/dist/cjs/q2-context.cjs.entry.js +2 -2
  51. package/dist/cjs/q2-context.cjs.entry.js.map +1 -1
  52. package/dist/cjs/q2-context.entry.cjs.js.map +1 -1
  53. package/dist/cjs/q2-currency.cjs.entry.js +2 -3
  54. package/dist/cjs/q2-currency.cjs.entry.js.map +1 -1
  55. package/dist/cjs/q2-currency.entry.cjs.js.map +1 -1
  56. package/dist/cjs/q2-data-table.cjs.entry.js +2 -2
  57. package/dist/cjs/q2-data-table.cjs.entry.js.map +1 -1
  58. package/dist/cjs/q2-data-table.entry.cjs.js.map +1 -1
  59. package/dist/cjs/q2-detail.cjs.entry.js +2 -2
  60. package/dist/cjs/q2-detail.cjs.entry.js.map +1 -1
  61. package/dist/cjs/q2-detail.entry.cjs.js.map +1 -1
  62. package/dist/cjs/q2-dropdown-item.cjs.entry.js +2 -2
  63. package/dist/cjs/q2-dropdown-item.cjs.entry.js.map +1 -1
  64. package/dist/cjs/q2-dropdown-item.entry.cjs.js.map +1 -1
  65. package/dist/cjs/q2-dropdown.cjs.entry.js +3 -5
  66. package/dist/cjs/q2-dropdown.cjs.entry.js.map +1 -1
  67. package/dist/cjs/q2-dropdown.entry.cjs.js.map +1 -1
  68. package/dist/cjs/q2-editable-field.cjs.entry.js +1 -1
  69. package/dist/cjs/q2-editable-field.cjs.entry.js.map +1 -1
  70. package/dist/cjs/q2-editable-field.entry.cjs.js.map +1 -1
  71. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  72. package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
  73. package/dist/cjs/q2-file-picker.cjs.entry.js.map +1 -1
  74. package/dist/cjs/q2-file-picker.entry.cjs.js.map +1 -1
  75. package/dist/cjs/q2-form.cjs.entry.js +2 -2
  76. package/dist/cjs/q2-form.cjs.entry.js.map +1 -1
  77. package/dist/cjs/q2-form.entry.cjs.js.map +1 -1
  78. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  79. package/dist/cjs/q2-formatted-text.cjs.entry.js.map +1 -1
  80. package/dist/cjs/q2-formatted-text.entry.cjs.js.map +1 -1
  81. package/dist/cjs/q2-grid-area.cjs.entry.js +1 -1
  82. package/dist/cjs/q2-grid.cjs.entry.js +32 -8
  83. package/dist/cjs/q2-grid.cjs.entry.js.map +1 -1
  84. package/dist/cjs/q2-grid.entry.cjs.js.map +1 -1
  85. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  86. package/dist/cjs/q2-icon.cjs.entry.js.map +1 -1
  87. package/dist/cjs/q2-icon.entry.cjs.js.map +1 -1
  88. package/dist/cjs/q2-input.cjs.entry.js +8 -5
  89. package/dist/cjs/q2-input.cjs.entry.js.map +1 -1
  90. package/dist/cjs/q2-input.entry.cjs.js.map +1 -1
  91. package/dist/cjs/q2-item.cjs.entry.js +2 -2
  92. package/dist/cjs/q2-item.cjs.entry.js.map +1 -1
  93. package/dist/cjs/q2-item.entry.cjs.js.map +1 -1
  94. package/dist/cjs/q2-legend.cjs.entry.js +2 -3
  95. package/dist/cjs/q2-legend.cjs.entry.js.map +1 -1
  96. package/dist/cjs/q2-legend.entry.cjs.js.map +1 -1
  97. package/dist/cjs/q2-link.q2-list.entry.cjs.js.map +1 -1
  98. package/dist/cjs/q2-link_2.cjs.entry.js +2 -2
  99. package/dist/cjs/q2-link_2.cjs.entry.js.map +1 -1
  100. package/dist/cjs/q2-loc.cjs.entry.js +1 -1
  101. package/dist/cjs/q2-message.cjs.entry.js +3 -3
  102. package/dist/cjs/q2-message.cjs.entry.js.map +1 -1
  103. package/dist/cjs/q2-message.entry.cjs.js.map +1 -1
  104. package/dist/cjs/q2-meter.cjs.entry.js +2 -2
  105. package/dist/cjs/q2-meter.cjs.entry.js.map +1 -1
  106. package/dist/cjs/q2-meter.entry.cjs.js.map +1 -1
  107. package/dist/cjs/q2-modal.cjs.entry.js +3 -3
  108. package/dist/cjs/q2-modal.cjs.entry.js.map +1 -1
  109. package/dist/cjs/q2-modal.entry.cjs.js.map +1 -1
  110. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  111. package/dist/cjs/q2-mutation-observer.cjs.entry.js +1 -1
  112. package/dist/cjs/q2-optgroup.cjs.entry.js +3 -3
  113. package/dist/cjs/q2-optgroup.cjs.entry.js.map +1 -1
  114. package/dist/cjs/q2-optgroup.entry.cjs.js.map +1 -1
  115. package/dist/cjs/q2-option.cjs.entry.js +3 -3
  116. package/dist/cjs/q2-option.cjs.entry.js.map +1 -1
  117. package/dist/cjs/q2-option.entry.cjs.js.map +1 -1
  118. package/dist/cjs/q2-otp.cjs.entry.js +373 -0
  119. package/dist/cjs/q2-otp.cjs.entry.js.map +1 -0
  120. package/dist/cjs/q2-otp.entry.cjs.js.map +1 -0
  121. package/dist/cjs/q2-pagination.cjs.entry.js +4 -4
  122. package/dist/cjs/q2-pagination.cjs.entry.js.map +1 -1
  123. package/dist/cjs/q2-pagination.entry.cjs.js.map +1 -1
  124. package/dist/cjs/q2-pill.cjs.entry.js +24 -15
  125. package/dist/cjs/q2-pill.cjs.entry.js.map +1 -1
  126. package/dist/cjs/q2-pill.entry.cjs.js.map +1 -1
  127. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  128. package/dist/cjs/q2-radio-group.cjs.entry.js.map +1 -1
  129. package/dist/cjs/q2-radio-group.entry.cjs.js.map +1 -1
  130. package/dist/cjs/q2-radio.cjs.entry.js +3 -3
  131. package/dist/cjs/q2-radio.cjs.entry.js.map +1 -1
  132. package/dist/cjs/q2-radio.entry.cjs.js.map +1 -1
  133. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  134. package/dist/cjs/q2-section-container.cjs.entry.js +1 -1
  135. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  136. package/dist/cjs/q2-section.cjs.entry.js.map +1 -1
  137. package/dist/cjs/q2-section.entry.cjs.js.map +1 -1
  138. package/dist/cjs/q2-select.cjs.entry.js +1 -1
  139. package/dist/cjs/q2-select.cjs.entry.js.map +1 -1
  140. package/dist/cjs/q2-select.entry.cjs.js.map +1 -1
  141. package/dist/cjs/q2-stepper-pane.cjs.entry.js +3 -3
  142. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +2 -2
  143. package/dist/cjs/q2-stepper-vertical.cjs.entry.js.map +1 -1
  144. package/dist/cjs/q2-stepper-vertical.entry.cjs.js.map +1 -1
  145. package/dist/cjs/q2-stepper.cjs.entry.js +2 -2
  146. package/dist/cjs/q2-stepper.cjs.entry.js.map +1 -1
  147. package/dist/cjs/q2-stepper.entry.cjs.js.map +1 -1
  148. package/dist/cjs/q2-tab-container.cjs.entry.js +3 -3
  149. package/dist/cjs/q2-tab-container.cjs.entry.js.map +1 -1
  150. package/dist/cjs/q2-tab-container.entry.cjs.js.map +1 -1
  151. package/dist/cjs/q2-tab-pane.cjs.entry.js +2 -2
  152. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  153. package/dist/cjs/q2-textarea.cjs.entry.js +1 -1
  154. package/dist/cjs/q2-textarea.cjs.entry.js.map +1 -1
  155. package/dist/cjs/q2-textarea.entry.cjs.js.map +1 -1
  156. package/dist/cjs/q2-toast.cjs.entry.js +1 -1
  157. package/dist/cjs/q2-toast.cjs.entry.js.map +1 -1
  158. package/dist/cjs/q2-toast.entry.cjs.js.map +1 -1
  159. package/dist/cjs/q2-tooltip.cjs.entry.js +124 -5
  160. package/dist/cjs/q2-tooltip.cjs.entry.js.map +1 -1
  161. package/dist/cjs/q2-tooltip.entry.cjs.js.map +1 -1
  162. package/dist/cjs/{sanitize-html-string-CW6y5624.js → sanitize-html-string-D17Pr7-c.js} +21 -4
  163. package/dist/cjs/{sanitize-html-string-CW6y5624.js.map → sanitize-html-string-D17Pr7-c.js.map} +1 -1
  164. package/dist/cjs/tecton-tab-pane.cjs.entry.js +2 -2
  165. package/dist/collection/collection-manifest.json +1 -0
  166. package/dist/collection/components/click-elsewhere/click-elsewhere.js +2 -0
  167. package/dist/collection/components/click-elsewhere/click-elsewhere.js.map +1 -1
  168. package/dist/collection/components/q2-action-group/q2-action-group.css +14 -0
  169. package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +16 -0
  170. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +107 -2
  171. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js.map +1 -1
  172. package/dist/collection/components/q2-avatar/q2-avatar.css +24 -0
  173. package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js +61 -0
  174. package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js.map +1 -0
  175. package/dist/collection/components/q2-badge/q2-badge.css +30 -0
  176. package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js +34 -0
  177. package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js.map +1 -0
  178. package/dist/collection/components/q2-btn/q2-btn.css +279 -0
  179. package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js +80 -0
  180. package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js.map +1 -0
  181. package/dist/collection/components/q2-calendar/q2-calendar.css +36 -0
  182. package/dist/collection/components/q2-calendar/q2-calendar.js +5 -2
  183. package/dist/collection/components/q2-calendar/q2-calendar.js.map +1 -1
  184. package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +170 -0
  185. package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js.map +1 -0
  186. package/dist/collection/components/q2-card/q2-card.css +62 -0
  187. package/dist/collection/components/q2-card/test/q2-card-test.vr.js +72 -0
  188. package/dist/collection/components/q2-card/test/q2-card-test.vr.js.map +1 -0
  189. package/dist/collection/components/q2-card-image/q2-card-image.css +74 -13
  190. package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js +152 -0
  191. package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js.map +1 -0
  192. package/dist/collection/components/q2-carousel/q2-carousel.css +78 -13
  193. package/dist/collection/components/q2-carousel/q2-carousel.js +241 -27
  194. package/dist/collection/components/q2-carousel/q2-carousel.js.map +1 -1
  195. package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js +104 -0
  196. package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js.map +1 -0
  197. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +26 -1
  198. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js +126 -0
  199. package/dist/collection/components/q2-chart-area/test/q2-chart-area-test.vr.js.map +1 -0
  200. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js +105 -0
  201. package/dist/collection/components/q2-chart-bar/test/q2-chart-bar-test.vr.js.map +1 -0
  202. package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +29 -0
  203. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js +21 -1
  204. package/dist/collection/components/q2-chart-donut/q2-chart-donut.js.map +1 -1
  205. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js +151 -0
  206. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js.map +1 -0
  207. package/dist/collection/components/q2-checkbox/q2-checkbox.css +128 -0
  208. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js +69 -0
  209. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js.map +1 -0
  210. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +21 -0
  211. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js +61 -0
  212. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js.map +1 -0
  213. package/dist/collection/components/q2-context/q2-context.css +16 -0
  214. package/dist/collection/components/q2-context/test/q2-context-test.vr.js +95 -0
  215. package/dist/collection/components/q2-context/test/q2-context-test.vr.js.map +1 -0
  216. package/dist/collection/components/q2-currency/q2-currency.css +31 -0
  217. package/dist/collection/components/q2-currency/q2-currency.js +3 -4
  218. package/dist/collection/components/q2-currency/q2-currency.js.map +1 -1
  219. package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js +79 -0
  220. package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js.map +1 -0
  221. package/dist/collection/components/q2-data-table/q2-data-table.css +51 -0
  222. package/dist/collection/components/q2-data-table/q2-data-table.js +1 -1
  223. package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js +79 -0
  224. package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js.map +1 -0
  225. package/dist/collection/components/q2-detail/q2-detail.css +42 -0
  226. package/dist/collection/components/q2-detail/q2-detail.js +1 -1
  227. package/dist/collection/components/q2-dropdown/q2-dropdown.css +8 -0
  228. package/dist/collection/components/q2-dropdown/q2-dropdown.js +2 -4
  229. package/dist/collection/components/q2-dropdown/q2-dropdown.js.map +1 -1
  230. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +11 -0
  231. package/dist/collection/components/q2-editable-field/q2-editable-field.css +5 -0
  232. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.vr.js +89 -0
  233. package/dist/collection/components/q2-editable-field/test/q2-editable-field-test.vr.js.map +1 -0
  234. package/dist/collection/components/q2-example/q2-example.js +1 -1
  235. package/dist/collection/components/q2-file-picker/q2-file-picker.css +64 -0
  236. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js +92 -0
  237. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js.map +1 -0
  238. package/dist/collection/components/q2-form/q2-form.css +34 -20
  239. package/dist/collection/components/q2-form/q2-form.js +1 -1
  240. package/dist/collection/components/q2-formatted-text/q2-formatted-text.css +14 -0
  241. package/dist/collection/components/q2-formatted-text/q2-formatted-text.js +1 -1
  242. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js +55 -0
  243. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js.map +1 -0
  244. package/dist/collection/components/q2-grid/q2-grid.css +13 -0
  245. package/dist/collection/components/q2-grid/q2-grid.js +31 -7
  246. package/dist/collection/components/q2-grid/q2-grid.js.map +1 -1
  247. package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
  248. package/dist/collection/components/q2-icon/q2-icon.css +15 -0
  249. package/dist/collection/components/q2-icon/test/q2-icon-test.vr.js +55 -0
  250. package/dist/collection/components/q2-icon/test/q2-icon-test.vr.js.map +1 -0
  251. package/dist/collection/components/q2-input/q2-input.css +104 -0
  252. package/dist/collection/components/q2-input/q2-input.js +6 -3
  253. package/dist/collection/components/q2-input/q2-input.js.map +1 -1
  254. package/dist/collection/components/q2-input/test/q2-input-test.vr.js +97 -0
  255. package/dist/collection/components/q2-input/test/q2-input-test.vr.js.map +1 -0
  256. package/dist/collection/components/q2-item/q2-item.css +28 -0
  257. package/dist/collection/components/q2-item/q2-item.js +1 -1
  258. package/dist/collection/components/q2-legend/q2-legend.css +16 -0
  259. package/dist/collection/components/q2-legend/q2-legend.js +21 -3
  260. package/dist/collection/components/q2-legend/q2-legend.js.map +1 -1
  261. package/dist/collection/components/q2-link/q2-link.css +20 -0
  262. package/dist/collection/components/q2-link/test/q2-link-test.vr.js +70 -0
  263. package/dist/collection/components/q2-link/test/q2-link-test.vr.js.map +1 -0
  264. package/dist/collection/components/q2-list/q2-list.css +14 -0
  265. package/dist/collection/components/q2-list/q2-list.js +1 -1
  266. package/dist/collection/components/q2-list/test/q2-list-test.vr.js +58 -0
  267. package/dist/collection/components/q2-list/test/q2-list-test.vr.js.map +1 -0
  268. package/dist/collection/components/q2-loading/q2-loading.css +9 -0
  269. package/dist/collection/components/q2-message/q2-message.css +29 -1
  270. package/dist/collection/components/q2-message/q2-message.js +1 -1
  271. package/dist/collection/components/q2-message/test/q2-message-test.vr.js +57 -0
  272. package/dist/collection/components/q2-message/test/q2-message-test.vr.js.map +1 -0
  273. package/dist/collection/components/q2-meter/q2-meter.css +40 -0
  274. package/dist/collection/components/q2-meter/q2-meter.js +1 -1
  275. package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js +78 -0
  276. package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js.map +1 -0
  277. package/dist/collection/components/q2-modal/q2-modal.css +21 -0
  278. package/dist/collection/components/q2-modal/q2-modal.js +1 -1
  279. package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js +107 -0
  280. package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js.map +1 -0
  281. package/dist/collection/components/q2-mutation-observer/q2-mutation-observer.js +1 -1
  282. package/dist/collection/components/q2-optgroup/q2-optgroup.css +11 -0
  283. package/dist/collection/components/q2-optgroup/q2-optgroup.js +1 -1
  284. package/dist/collection/components/q2-option/q2-option.css +9 -0
  285. package/dist/collection/components/q2-option/q2-option.js +1 -1
  286. package/dist/collection/components/q2-option/q2-option.js.map +1 -1
  287. package/dist/collection/components/q2-option-list/q2-option-list.css +3 -0
  288. package/dist/collection/components/q2-option-list/q2-option-list.js +37 -28
  289. package/dist/collection/components/q2-option-list/q2-option-list.js.map +1 -1
  290. package/dist/collection/components/q2-otp/q2-otp.css +312 -0
  291. package/dist/collection/components/q2-otp/q2-otp.js +873 -0
  292. package/dist/collection/components/q2-otp/q2-otp.js.map +1 -0
  293. package/dist/collection/components/q2-pagination/q2-pagination.css +22 -0
  294. package/dist/collection/components/q2-pagination/q2-pagination.js +3 -3
  295. package/dist/collection/components/q2-pagination/test/q2-pagination-test.vr.js +145 -0
  296. package/dist/collection/components/q2-pagination/test/q2-pagination-test.vr.js.map +1 -0
  297. package/dist/collection/components/q2-pill/q2-pill.css +53 -0
  298. package/dist/collection/components/q2-pill/q2-pill.js +23 -14
  299. package/dist/collection/components/q2-pill/q2-pill.js.map +1 -1
  300. package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js +110 -0
  301. package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js.map +1 -0
  302. package/dist/collection/components/q2-popover/q2-popover.css +20 -0
  303. package/dist/collection/components/q2-popover/q2-popover.js +5 -2
  304. package/dist/collection/components/q2-popover/q2-popover.js.map +1 -1
  305. package/dist/collection/components/q2-radio/q2-radio.css +52 -1
  306. package/dist/collection/components/q2-radio/q2-radio.js +2 -2
  307. package/dist/collection/components/q2-radio/q2-radio.js.map +1 -1
  308. package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js +73 -0
  309. package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js.map +1 -0
  310. package/dist/collection/components/q2-radio-group/q2-radio-group.css +22 -0
  311. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js +99 -0
  312. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js.map +1 -0
  313. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  314. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  315. package/dist/collection/components/q2-section/q2-section.css +26 -0
  316. package/dist/collection/components/q2-section/q2-section.js +2 -2
  317. package/dist/collection/components/q2-section/test/q2-section-test.vr.js +68 -0
  318. package/dist/collection/components/q2-section/test/q2-section-test.vr.js.map +1 -0
  319. package/dist/collection/components/q2-select/q2-select.css +17 -0
  320. package/dist/collection/components/q2-select/test/q2-select-test.vr.js +107 -0
  321. package/dist/collection/components/q2-select/test/q2-select-test.vr.js.map +1 -0
  322. package/dist/collection/components/q2-stepper/q2-stepper.css +36 -0
  323. package/dist/collection/components/q2-stepper/q2-stepper.js +1 -1
  324. package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js +86 -0
  325. package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js.map +1 -0
  326. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +1 -1
  327. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +31 -0
  328. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +1 -1
  329. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js +97 -0
  330. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js.map +1 -0
  331. package/dist/collection/components/q2-tab-container/q2-tab-container.css +38 -0
  332. package/dist/collection/components/q2-tab-container/q2-tab-container.js +1 -1
  333. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js +78 -0
  334. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js.map +1 -0
  335. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  336. package/dist/collection/components/q2-tag/q2-tag.css +30 -1
  337. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  338. package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js +83 -0
  339. package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js.map +1 -0
  340. package/dist/collection/components/q2-textarea/q2-textarea.css +80 -0
  341. package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js +102 -0
  342. package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js.map +1 -0
  343. package/dist/collection/components/q2-toast/q2-toast.css +15 -0
  344. package/dist/collection/components/q2-tooltip/q2-tooltip.css +31 -0
  345. package/dist/collection/components/q2-tooltip/q2-tooltip.js +135 -4
  346. package/dist/collection/components/q2-tooltip/q2-tooltip.js.map +1 -1
  347. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js +76 -0
  348. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js.map +1 -0
  349. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  350. package/dist/collection/utils/component.js +7 -1
  351. package/dist/collection/utils/component.js.map +1 -1
  352. package/dist/collection/utils/index.js +1 -1
  353. package/dist/collection/utils/index.js.map +1 -1
  354. package/dist/collection/utils/sanitize-html-string.js +19 -2
  355. package/dist/collection/utils/sanitize-html-string.js.map +1 -1
  356. package/dist/collection/utils/test/vr-helpers.js +98 -0
  357. package/dist/collection/utils/test/vr-helpers.js.map +1 -0
  358. package/dist/components/click-elsewhere2.js +2 -0
  359. package/dist/components/click-elsewhere2.js.map +1 -1
  360. package/dist/components/component.js +7 -1
  361. package/dist/components/component.js.map +1 -1
  362. package/dist/components/index.js +2 -0
  363. package/dist/components/index.js.map +1 -1
  364. package/dist/components/index2.js +1 -1
  365. package/dist/components/index2.js.map +1 -1
  366. package/dist/components/q2-action-group2.js.map +1 -1
  367. package/dist/components/q2-action-sheet.js +107 -2
  368. package/dist/components/q2-action-sheet.js.map +1 -1
  369. package/dist/components/q2-avatar2.js.map +1 -1
  370. package/dist/components/q2-badge2.js.map +1 -1
  371. package/dist/components/q2-btn2.js.map +1 -1
  372. package/dist/components/q2-calendar.js +5 -2
  373. package/dist/components/q2-calendar.js.map +1 -1
  374. package/dist/components/q2-card-image.js +1 -1
  375. package/dist/components/q2-card-image.js.map +1 -1
  376. package/dist/components/q2-card.js.map +1 -1
  377. package/dist/components/q2-carousel-pane.js +1 -135
  378. package/dist/components/q2-carousel-pane.js.map +1 -1
  379. package/dist/components/q2-carousel-pane2.js +140 -0
  380. package/dist/components/q2-carousel-pane2.js.map +1 -0
  381. package/dist/components/q2-carousel.js +173 -29
  382. package/dist/components/q2-carousel.js.map +1 -1
  383. package/dist/components/q2-chart-donut.js +3 -1
  384. package/dist/components/q2-chart-donut.js.map +1 -1
  385. package/dist/components/q2-checkbox-group.js.map +1 -1
  386. package/dist/components/q2-checkbox2.js.map +1 -1
  387. package/dist/components/q2-context.js +1 -1
  388. package/dist/components/q2-context.js.map +1 -1
  389. package/dist/components/q2-currency.js +3 -4
  390. package/dist/components/q2-currency.js.map +1 -1
  391. package/dist/components/q2-data-table.js +1 -1
  392. package/dist/components/q2-data-table.js.map +1 -1
  393. package/dist/components/q2-detail.js +1 -1
  394. package/dist/components/q2-detail.js.map +1 -1
  395. package/dist/components/q2-dropdown-item2.js.map +1 -1
  396. package/dist/components/q2-dropdown.js +2 -4
  397. package/dist/components/q2-dropdown.js.map +1 -1
  398. package/dist/components/q2-editable-field.js.map +1 -1
  399. package/dist/components/q2-example.js +1 -1
  400. package/dist/components/q2-file-picker.js.map +1 -1
  401. package/dist/components/q2-form.js +2 -2
  402. package/dist/components/q2-form.js.map +1 -1
  403. package/dist/components/q2-formatted-text.js +1 -1
  404. package/dist/components/q2-formatted-text.js.map +1 -1
  405. package/dist/components/q2-grid.js +32 -8
  406. package/dist/components/q2-grid.js.map +1 -1
  407. package/dist/components/q2-icon2.js.map +1 -1
  408. package/dist/components/q2-input2.js +7 -4
  409. package/dist/components/q2-input2.js.map +1 -1
  410. package/dist/components/q2-item2.js +1 -1
  411. package/dist/components/q2-item2.js.map +1 -1
  412. package/dist/components/q2-legend2.js +3 -3
  413. package/dist/components/q2-legend2.js.map +1 -1
  414. package/dist/components/q2-link2.js.map +1 -1
  415. package/dist/components/q2-list2.js +1 -1
  416. package/dist/components/q2-list2.js.map +1 -1
  417. package/dist/components/q2-loading2.js.map +1 -1
  418. package/dist/components/q2-message2.js +2 -2
  419. package/dist/components/q2-message2.js.map +1 -1
  420. package/dist/components/q2-meter.js +1 -1
  421. package/dist/components/q2-meter.js.map +1 -1
  422. package/dist/components/q2-modal.js +1 -1
  423. package/dist/components/q2-modal.js.map +1 -1
  424. package/dist/components/q2-mutation-observer.js +1 -1
  425. package/dist/components/q2-optgroup2.js +1 -1
  426. package/dist/components/q2-optgroup2.js.map +1 -1
  427. package/dist/components/q2-option-list2.js +37 -28
  428. package/dist/components/q2-option-list2.js.map +1 -1
  429. package/dist/components/q2-option2.js +1 -1
  430. package/dist/components/q2-option2.js.map +1 -1
  431. package/dist/components/q2-otp.d.ts +11 -0
  432. package/dist/components/q2-otp.js +439 -0
  433. package/dist/components/q2-otp.js.map +1 -0
  434. package/dist/components/q2-pagination.js +3 -3
  435. package/dist/components/q2-pagination.js.map +1 -1
  436. package/dist/components/q2-pill.js +23 -14
  437. package/dist/components/q2-pill.js.map +1 -1
  438. package/dist/components/q2-popover2.js +5 -2
  439. package/dist/components/q2-popover2.js.map +1 -1
  440. package/dist/components/q2-radio-group.js.map +1 -1
  441. package/dist/components/q2-radio.js +2 -2
  442. package/dist/components/q2-radio.js.map +1 -1
  443. package/dist/components/q2-relative-time.js +1 -1
  444. package/dist/components/q2-resize-observer2.js +1 -1
  445. package/dist/components/q2-section.js +2 -2
  446. package/dist/components/q2-section.js.map +1 -1
  447. package/dist/components/q2-select2.js.map +1 -1
  448. package/dist/components/q2-stepper-pane.js +1 -1
  449. package/dist/components/q2-stepper-vertical.js +1 -1
  450. package/dist/components/q2-stepper-vertical.js.map +1 -1
  451. package/dist/components/q2-stepper.js +1 -1
  452. package/dist/components/q2-stepper.js.map +1 -1
  453. package/dist/components/q2-tab-container.js +1 -1
  454. package/dist/components/q2-tab-container.js.map +1 -1
  455. package/dist/components/q2-tab-pane.js +1 -1
  456. package/dist/components/q2-tag2.js +2 -2
  457. package/dist/components/q2-tag2.js.map +1 -1
  458. package/dist/components/q2-textarea.js.map +1 -1
  459. package/dist/components/q2-toast.js.map +1 -1
  460. package/dist/components/q2-tooltip2.js +124 -5
  461. package/dist/components/q2-tooltip2.js.map +1 -1
  462. package/dist/components/sanitize-html-string.js +19 -2
  463. package/dist/components/sanitize-html-string.js.map +1 -1
  464. package/dist/components/tecton-tab-pane.js +2 -2
  465. package/dist/esm/click-elsewhere.q2-option-list.q2-popover.entry.js.map +1 -1
  466. package/dist/esm/click-elsewhere_3.entry.js +46 -32
  467. package/dist/esm/click-elsewhere_3.entry.js.map +1 -1
  468. package/dist/esm/{component-DVxzK3WH.js → component-DaQM9u3s.js} +9 -3
  469. package/dist/esm/component-DaQM9u3s.js.map +1 -0
  470. package/dist/esm/{index-C4PILj1_.js → index-C5gj0T_3.js} +4 -4
  471. package/dist/esm/index-C5gj0T_3.js.map +1 -0
  472. package/dist/esm/loader.js +1 -1
  473. package/dist/esm/q2-action-group.q2-resize-observer.entry.js.map +1 -1
  474. package/dist/esm/q2-action-group_2.entry.js +2 -2
  475. package/dist/esm/q2-action-group_2.entry.js.map +1 -1
  476. package/dist/esm/q2-action-sheet.entry.js +109 -4
  477. package/dist/esm/q2-action-sheet.entry.js.map +1 -1
  478. package/dist/esm/q2-avatar.entry.js.map +1 -1
  479. package/dist/esm/q2-badge.entry.js +1 -1
  480. package/dist/esm/q2-badge.entry.js.map +1 -1
  481. package/dist/esm/q2-btn.q2-loading.entry.js.map +1 -1
  482. package/dist/esm/q2-btn_2.entry.js +1 -1
  483. package/dist/esm/q2-btn_2.entry.js.map +1 -1
  484. package/dist/esm/q2-calendar.entry.js +6 -3
  485. package/dist/esm/q2-calendar.entry.js.map +1 -1
  486. package/dist/esm/q2-card-image.entry.js +2 -2
  487. package/dist/esm/q2-card-image.entry.js.map +1 -1
  488. package/dist/esm/q2-card.entry.js +1 -1
  489. package/dist/esm/q2-card.entry.js.map +1 -1
  490. package/dist/esm/q2-carousel-pane.entry.js +3 -3
  491. package/dist/esm/q2-carousel-pane.entry.js.map +1 -1
  492. package/dist/esm/q2-carousel.entry.js +162 -29
  493. package/dist/esm/q2-carousel.entry.js.map +1 -1
  494. package/dist/esm/q2-chart-area.entry.js +1 -1
  495. package/dist/esm/q2-chart-bar.entry.js +1 -1
  496. package/dist/esm/q2-chart-donut.entry.js +3 -2
  497. package/dist/esm/q2-chart-donut.entry.js.map +1 -1
  498. package/dist/esm/q2-checkbox-group.entry.js +2 -2
  499. package/dist/esm/q2-checkbox-group.entry.js.map +1 -1
  500. package/dist/esm/q2-checkbox.q2-tag.entry.js.map +1 -1
  501. package/dist/esm/q2-checkbox_2.entry.js +3 -3
  502. package/dist/esm/q2-checkbox_2.entry.js.map +1 -1
  503. package/dist/esm/q2-context.entry.js +2 -2
  504. package/dist/esm/q2-context.entry.js.map +1 -1
  505. package/dist/esm/q2-currency.entry.js +3 -4
  506. package/dist/esm/q2-currency.entry.js.map +1 -1
  507. package/dist/esm/q2-data-table.entry.js +2 -2
  508. package/dist/esm/q2-data-table.entry.js.map +1 -1
  509. package/dist/esm/q2-detail.entry.js +2 -2
  510. package/dist/esm/q2-detail.entry.js.map +1 -1
  511. package/dist/esm/q2-dropdown-item.entry.js +2 -2
  512. package/dist/esm/q2-dropdown-item.entry.js.map +1 -1
  513. package/dist/esm/q2-dropdown.entry.js +3 -5
  514. package/dist/esm/q2-dropdown.entry.js.map +1 -1
  515. package/dist/esm/q2-editable-field.entry.js +1 -1
  516. package/dist/esm/q2-editable-field.entry.js.map +1 -1
  517. package/dist/esm/q2-example.entry.js +1 -1
  518. package/dist/esm/q2-file-picker.entry.js +1 -1
  519. package/dist/esm/q2-file-picker.entry.js.map +1 -1
  520. package/dist/esm/q2-form.entry.js +2 -2
  521. package/dist/esm/q2-form.entry.js.map +1 -1
  522. package/dist/esm/q2-formatted-text.entry.js +1 -1
  523. package/dist/esm/q2-formatted-text.entry.js.map +1 -1
  524. package/dist/esm/q2-grid-area.entry.js +1 -1
  525. package/dist/esm/q2-grid.entry.js +33 -9
  526. package/dist/esm/q2-grid.entry.js.map +1 -1
  527. package/dist/esm/q2-icon.entry.js +1 -1
  528. package/dist/esm/q2-icon.entry.js.map +1 -1
  529. package/dist/esm/q2-input.entry.js +8 -5
  530. package/dist/esm/q2-input.entry.js.map +1 -1
  531. package/dist/esm/q2-item.entry.js +2 -2
  532. package/dist/esm/q2-item.entry.js.map +1 -1
  533. package/dist/esm/q2-legend.entry.js +2 -3
  534. package/dist/esm/q2-legend.entry.js.map +1 -1
  535. package/dist/esm/q2-link.q2-list.entry.js.map +1 -1
  536. package/dist/esm/q2-link_2.entry.js +2 -2
  537. package/dist/esm/q2-link_2.entry.js.map +1 -1
  538. package/dist/esm/q2-loc.entry.js +1 -1
  539. package/dist/esm/q2-message.entry.js +3 -3
  540. package/dist/esm/q2-message.entry.js.map +1 -1
  541. package/dist/esm/q2-meter.entry.js +2 -2
  542. package/dist/esm/q2-meter.entry.js.map +1 -1
  543. package/dist/esm/q2-modal.entry.js +3 -3
  544. package/dist/esm/q2-modal.entry.js.map +1 -1
  545. package/dist/esm/q2-month-picker.entry.js +1 -1
  546. package/dist/esm/q2-mutation-observer.entry.js +1 -1
  547. package/dist/esm/q2-optgroup.entry.js +3 -3
  548. package/dist/esm/q2-optgroup.entry.js.map +1 -1
  549. package/dist/esm/q2-option.entry.js +3 -3
  550. package/dist/esm/q2-option.entry.js.map +1 -1
  551. package/dist/esm/q2-otp.entry.js +371 -0
  552. package/dist/esm/q2-otp.entry.js.map +1 -0
  553. package/dist/esm/q2-pagination.entry.js +4 -4
  554. package/dist/esm/q2-pagination.entry.js.map +1 -1
  555. package/dist/esm/q2-pill.entry.js +24 -15
  556. package/dist/esm/q2-pill.entry.js.map +1 -1
  557. package/dist/esm/q2-radio-group.entry.js +1 -1
  558. package/dist/esm/q2-radio-group.entry.js.map +1 -1
  559. package/dist/esm/q2-radio.entry.js +3 -3
  560. package/dist/esm/q2-radio.entry.js.map +1 -1
  561. package/dist/esm/q2-relative-time.entry.js +2 -2
  562. package/dist/esm/q2-section-container.entry.js +1 -1
  563. package/dist/esm/q2-section.entry.js +3 -3
  564. package/dist/esm/q2-section.entry.js.map +1 -1
  565. package/dist/esm/q2-select.entry.js +1 -1
  566. package/dist/esm/q2-select.entry.js.map +1 -1
  567. package/dist/esm/q2-stepper-pane.entry.js +3 -3
  568. package/dist/esm/q2-stepper-vertical.entry.js +2 -2
  569. package/dist/esm/q2-stepper-vertical.entry.js.map +1 -1
  570. package/dist/esm/q2-stepper.entry.js +2 -2
  571. package/dist/esm/q2-stepper.entry.js.map +1 -1
  572. package/dist/esm/q2-tab-container.entry.js +3 -3
  573. package/dist/esm/q2-tab-container.entry.js.map +1 -1
  574. package/dist/esm/q2-tab-pane.entry.js +2 -2
  575. package/dist/esm/q2-tecton-elements.js +1 -1
  576. package/dist/esm/q2-textarea.entry.js +1 -1
  577. package/dist/esm/q2-textarea.entry.js.map +1 -1
  578. package/dist/esm/q2-toast.entry.js +1 -1
  579. package/dist/esm/q2-toast.entry.js.map +1 -1
  580. package/dist/esm/q2-tooltip.entry.js +124 -5
  581. package/dist/esm/q2-tooltip.entry.js.map +1 -1
  582. package/dist/esm/{sanitize-html-string-B35VmRc9.js → sanitize-html-string-DPHNpMWE.js} +21 -4
  583. package/dist/{q2-tecton-elements/sanitize-html-string-B35VmRc9.js.map → esm/sanitize-html-string-DPHNpMWE.js.map} +1 -1
  584. package/dist/esm/tecton-tab-pane.entry.js +2 -2
  585. package/dist/playwright.config.js +12 -0
  586. package/dist/playwright.config.js.map +1 -0
  587. package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
  588. package/dist/q2-tecton-elements/click-elsewhere.q2-option-list.q2-popover.entry.esm.js.map +1 -1
  589. package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +44 -35
  590. package/dist/q2-tecton-elements/click-elsewhere_3.entry.js.map +1 -1
  591. package/dist/q2-tecton-elements/component-DaQM9u3s.js +46 -0
  592. package/dist/q2-tecton-elements/component-DaQM9u3s.js.map +1 -0
  593. package/dist/q2-tecton-elements/{index-C4PILj1_.js → index-C5gj0T_3.js} +4 -4
  594. package/dist/q2-tecton-elements/index-C5gj0T_3.js.map +1 -0
  595. package/dist/q2-tecton-elements/q2-action-group.q2-resize-observer.entry.esm.js.map +1 -1
  596. package/dist/q2-tecton-elements/q2-action-group_2.entry.js +2 -2
  597. package/dist/q2-tecton-elements/q2-action-group_2.entry.js.map +1 -1
  598. package/dist/q2-tecton-elements/q2-action-sheet.entry.esm.js.map +1 -1
  599. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +166 -70
  600. package/dist/q2-tecton-elements/q2-action-sheet.entry.js.map +1 -1
  601. package/dist/q2-tecton-elements/q2-avatar.entry.esm.js.map +1 -1
  602. package/dist/q2-tecton-elements/q2-avatar.entry.js.map +1 -1
  603. package/dist/q2-tecton-elements/q2-badge.entry.esm.js.map +1 -1
  604. package/dist/q2-tecton-elements/q2-badge.entry.js +1 -1
  605. package/dist/q2-tecton-elements/q2-badge.entry.js.map +1 -1
  606. package/dist/q2-tecton-elements/q2-btn.q2-loading.entry.esm.js.map +1 -1
  607. package/dist/q2-tecton-elements/q2-btn_2.entry.js +1 -1
  608. package/dist/q2-tecton-elements/q2-btn_2.entry.js.map +1 -1
  609. package/dist/q2-tecton-elements/q2-calendar.entry.esm.js.map +1 -1
  610. package/dist/q2-tecton-elements/q2-calendar.entry.js +4 -4
  611. package/dist/q2-tecton-elements/q2-calendar.entry.js.map +1 -1
  612. package/dist/q2-tecton-elements/q2-card-image.entry.esm.js.map +1 -1
  613. package/dist/q2-tecton-elements/q2-card-image.entry.js +2 -2
  614. package/dist/q2-tecton-elements/q2-card-image.entry.js.map +1 -1
  615. package/dist/q2-tecton-elements/q2-card.entry.esm.js.map +1 -1
  616. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  617. package/dist/q2-tecton-elements/q2-card.entry.js.map +1 -1
  618. package/dist/q2-tecton-elements/q2-carousel-pane.entry.esm.js.map +1 -1
  619. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +6 -6
  620. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js.map +1 -1
  621. package/dist/q2-tecton-elements/q2-carousel.entry.esm.js.map +1 -1
  622. package/dist/q2-tecton-elements/q2-carousel.entry.js +402 -271
  623. package/dist/q2-tecton-elements/q2-carousel.entry.js.map +1 -1
  624. package/dist/q2-tecton-elements/q2-chart-area.entry.js +1 -1
  625. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +1 -1
  626. package/dist/q2-tecton-elements/q2-chart-donut.entry.esm.js.map +1 -1
  627. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +18 -16
  628. package/dist/q2-tecton-elements/q2-chart-donut.entry.js.map +1 -1
  629. package/dist/q2-tecton-elements/q2-checkbox-group.entry.esm.js.map +1 -1
  630. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +2 -2
  631. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js.map +1 -1
  632. package/dist/q2-tecton-elements/q2-checkbox.q2-tag.entry.esm.js.map +1 -1
  633. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +7 -7
  634. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js.map +1 -1
  635. package/dist/q2-tecton-elements/q2-context.entry.esm.js.map +1 -1
  636. package/dist/q2-tecton-elements/q2-context.entry.js +2 -2
  637. package/dist/q2-tecton-elements/q2-context.entry.js.map +1 -1
  638. package/dist/q2-tecton-elements/q2-currency.entry.esm.js.map +1 -1
  639. package/dist/q2-tecton-elements/q2-currency.entry.js +34 -33
  640. package/dist/q2-tecton-elements/q2-currency.entry.js.map +1 -1
  641. package/dist/q2-tecton-elements/q2-data-table.entry.esm.js.map +1 -1
  642. package/dist/q2-tecton-elements/q2-data-table.entry.js +4 -4
  643. package/dist/q2-tecton-elements/q2-data-table.entry.js.map +1 -1
  644. package/dist/q2-tecton-elements/q2-detail.entry.esm.js.map +1 -1
  645. package/dist/q2-tecton-elements/q2-detail.entry.js +4 -4
  646. package/dist/q2-tecton-elements/q2-detail.entry.js.map +1 -1
  647. package/dist/q2-tecton-elements/q2-dropdown-item.entry.esm.js.map +1 -1
  648. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +2 -2
  649. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js.map +1 -1
  650. package/dist/q2-tecton-elements/q2-dropdown.entry.esm.js.map +1 -1
  651. package/dist/q2-tecton-elements/q2-dropdown.entry.js +18 -19
  652. package/dist/q2-tecton-elements/q2-dropdown.entry.js.map +1 -1
  653. package/dist/q2-tecton-elements/q2-editable-field.entry.esm.js.map +1 -1
  654. package/dist/q2-tecton-elements/q2-editable-field.entry.js +1 -1
  655. package/dist/q2-tecton-elements/q2-editable-field.entry.js.map +1 -1
  656. package/dist/q2-tecton-elements/q2-example.entry.js +1 -1
  657. package/dist/q2-tecton-elements/q2-file-picker.entry.esm.js.map +1 -1
  658. package/dist/q2-tecton-elements/q2-file-picker.entry.js +1 -1
  659. package/dist/q2-tecton-elements/q2-file-picker.entry.js.map +1 -1
  660. package/dist/q2-tecton-elements/q2-form.entry.esm.js.map +1 -1
  661. package/dist/q2-tecton-elements/q2-form.entry.js +9 -9
  662. package/dist/q2-tecton-elements/q2-form.entry.js.map +1 -1
  663. package/dist/q2-tecton-elements/q2-formatted-text.entry.esm.js.map +1 -1
  664. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +2 -2
  665. package/dist/q2-tecton-elements/q2-formatted-text.entry.js.map +1 -1
  666. package/dist/q2-tecton-elements/q2-grid-area.entry.js +1 -1
  667. package/dist/q2-tecton-elements/q2-grid.entry.esm.js.map +1 -1
  668. package/dist/q2-tecton-elements/q2-grid.entry.js +39 -14
  669. package/dist/q2-tecton-elements/q2-grid.entry.js.map +1 -1
  670. package/dist/q2-tecton-elements/q2-icon.entry.esm.js.map +1 -1
  671. package/dist/q2-tecton-elements/q2-icon.entry.js +52 -52
  672. package/dist/q2-tecton-elements/q2-icon.entry.js.map +1 -1
  673. package/dist/q2-tecton-elements/q2-input.entry.esm.js.map +1 -1
  674. package/dist/q2-tecton-elements/q2-input.entry.js +10 -6
  675. package/dist/q2-tecton-elements/q2-input.entry.js.map +1 -1
  676. package/dist/q2-tecton-elements/q2-item.entry.esm.js.map +1 -1
  677. package/dist/q2-tecton-elements/q2-item.entry.js +14 -14
  678. package/dist/q2-tecton-elements/q2-item.entry.js.map +1 -1
  679. package/dist/q2-tecton-elements/q2-legend.entry.esm.js.map +1 -1
  680. package/dist/q2-tecton-elements/q2-legend.entry.js +4 -5
  681. package/dist/q2-tecton-elements/q2-legend.entry.js.map +1 -1
  682. package/dist/q2-tecton-elements/q2-link.q2-list.entry.esm.js.map +1 -1
  683. package/dist/q2-tecton-elements/q2-link_2.entry.js +7 -7
  684. package/dist/q2-tecton-elements/q2-link_2.entry.js.map +1 -1
  685. package/dist/q2-tecton-elements/q2-loc.entry.js +1 -1
  686. package/dist/q2-tecton-elements/q2-message.entry.esm.js.map +1 -1
  687. package/dist/q2-tecton-elements/q2-message.entry.js +28 -28
  688. package/dist/q2-tecton-elements/q2-message.entry.js.map +1 -1
  689. package/dist/q2-tecton-elements/q2-meter.entry.esm.js.map +1 -1
  690. package/dist/q2-tecton-elements/q2-meter.entry.js +8 -8
  691. package/dist/q2-tecton-elements/q2-meter.entry.js.map +1 -1
  692. package/dist/q2-tecton-elements/q2-modal.entry.esm.js.map +1 -1
  693. package/dist/q2-tecton-elements/q2-modal.entry.js +53 -53
  694. package/dist/q2-tecton-elements/q2-modal.entry.js.map +1 -1
  695. package/dist/q2-tecton-elements/q2-month-picker.entry.js +1 -1
  696. package/dist/q2-tecton-elements/q2-mutation-observer.entry.js +1 -1
  697. package/dist/q2-tecton-elements/q2-optgroup.entry.esm.js.map +1 -1
  698. package/dist/q2-tecton-elements/q2-optgroup.entry.js +6 -6
  699. package/dist/q2-tecton-elements/q2-optgroup.entry.js.map +1 -1
  700. package/dist/q2-tecton-elements/q2-option.entry.esm.js.map +1 -1
  701. package/dist/q2-tecton-elements/q2-option.entry.js +3 -3
  702. package/dist/q2-tecton-elements/q2-option.entry.js.map +1 -1
  703. package/dist/q2-tecton-elements/q2-otp.entry.esm.js.map +1 -0
  704. package/dist/q2-tecton-elements/q2-otp.entry.js +453 -0
  705. package/dist/q2-tecton-elements/q2-otp.entry.js.map +1 -0
  706. package/dist/q2-tecton-elements/q2-pagination.entry.esm.js.map +1 -1
  707. package/dist/q2-tecton-elements/q2-pagination.entry.js +29 -29
  708. package/dist/q2-tecton-elements/q2-pagination.entry.js.map +1 -1
  709. package/dist/q2-tecton-elements/q2-pill.entry.esm.js.map +1 -1
  710. package/dist/q2-tecton-elements/q2-pill.entry.js +43 -28
  711. package/dist/q2-tecton-elements/q2-pill.entry.js.map +1 -1
  712. package/dist/q2-tecton-elements/q2-radio-group.entry.esm.js.map +1 -1
  713. package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
  714. package/dist/q2-tecton-elements/q2-radio-group.entry.js.map +1 -1
  715. package/dist/q2-tecton-elements/q2-radio.entry.esm.js.map +1 -1
  716. package/dist/q2-tecton-elements/q2-radio.entry.js +10 -10
  717. package/dist/q2-tecton-elements/q2-radio.entry.js.map +1 -1
  718. package/dist/q2-tecton-elements/q2-relative-time.entry.js +2 -2
  719. package/dist/q2-tecton-elements/q2-section-container.entry.js +1 -1
  720. package/dist/q2-tecton-elements/q2-section.entry.esm.js.map +1 -1
  721. package/dist/q2-tecton-elements/q2-section.entry.js +21 -21
  722. package/dist/q2-tecton-elements/q2-section.entry.js.map +1 -1
  723. package/dist/q2-tecton-elements/q2-select.entry.esm.js.map +1 -1
  724. package/dist/q2-tecton-elements/q2-select.entry.js +1 -1
  725. package/dist/q2-tecton-elements/q2-select.entry.js.map +1 -1
  726. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +10 -10
  727. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.esm.js.map +1 -1
  728. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +5 -5
  729. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js.map +1 -1
  730. package/dist/q2-tecton-elements/q2-stepper.entry.esm.js.map +1 -1
  731. package/dist/q2-tecton-elements/q2-stepper.entry.js +33 -33
  732. package/dist/q2-tecton-elements/q2-stepper.entry.js.map +1 -1
  733. package/dist/q2-tecton-elements/q2-tab-container.entry.esm.js.map +1 -1
  734. package/dist/q2-tecton-elements/q2-tab-container.entry.js +14 -14
  735. package/dist/q2-tecton-elements/q2-tab-container.entry.js.map +1 -1
  736. package/dist/q2-tecton-elements/q2-tab-pane.entry.js +6 -6
  737. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  738. package/dist/q2-tecton-elements/q2-textarea.entry.esm.js.map +1 -1
  739. package/dist/q2-tecton-elements/q2-textarea.entry.js +1 -1
  740. package/dist/q2-tecton-elements/q2-textarea.entry.js.map +1 -1
  741. package/dist/q2-tecton-elements/q2-toast.entry.esm.js.map +1 -1
  742. package/dist/q2-tecton-elements/q2-toast.entry.js +1 -1
  743. package/dist/q2-tecton-elements/q2-toast.entry.js.map +1 -1
  744. package/dist/q2-tecton-elements/q2-tooltip.entry.esm.js.map +1 -1
  745. package/dist/q2-tecton-elements/q2-tooltip.entry.js +136 -20
  746. package/dist/q2-tecton-elements/q2-tooltip.entry.js.map +1 -1
  747. package/dist/q2-tecton-elements/{sanitize-html-string-B35VmRc9.js → sanitize-html-string-DPHNpMWE.js} +147 -142
  748. package/dist/{esm/sanitize-html-string-B35VmRc9.js.map → q2-tecton-elements/sanitize-html-string-DPHNpMWE.js.map} +1 -1
  749. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +6 -6
  750. package/dist/types/builds/q2e/development/tecton/tecton/packages/q2-tecton-elements/.stencil/playwright.config.d.ts +2 -0
  751. package/dist/types/components/q2-action-sheet/q2-action-sheet.d.ts +22 -0
  752. package/dist/types/components/q2-avatar/test/q2-avatar-test.vr.d.ts +1 -0
  753. package/dist/types/components/q2-badge/test/q2-badge-test.vr.d.ts +1 -0
  754. package/dist/types/components/q2-btn/test/q2-btn-test.vr.d.ts +1 -0
  755. package/dist/types/components/q2-calendar/test/q2-calendar-test.vr.d.ts +1 -0
  756. package/dist/types/components/q2-card/test/q2-card-test.vr.d.ts +1 -0
  757. package/dist/types/components/q2-card-image/test/q2-card-image-test.vr.d.ts +1 -0
  758. package/dist/types/components/q2-carousel/q2-carousel.d.ts +29 -0
  759. package/dist/types/components/q2-carousel/test/q2-carousel-test.vr.d.ts +1 -0
  760. package/dist/types/components/q2-chart-area/test/q2-chart-area-test.vr.d.ts +1 -0
  761. package/dist/types/components/q2-chart-bar/test/q2-chart-bar-test.vr.d.ts +1 -0
  762. package/dist/types/components/q2-chart-donut/q2-chart-donut.d.ts +2 -0
  763. package/dist/types/components/q2-chart-donut/test/q2-chart-donut-test.vr.d.ts +1 -0
  764. package/dist/types/components/q2-checkbox/test/q2-checkbox-test.vr.d.ts +1 -0
  765. package/dist/types/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.d.ts +1 -0
  766. package/dist/types/components/q2-context/test/q2-context-test.vr.d.ts +1 -0
  767. package/dist/types/components/q2-currency/test/q2-currency-test.vr.d.ts +1 -0
  768. package/dist/types/components/q2-data-table/test/q2-data-table-test.vr.d.ts +1 -0
  769. package/dist/types/components/q2-editable-field/test/q2-editable-field-test.vr.d.ts +1 -0
  770. package/dist/types/components/q2-file-picker/test/q2-file-picker-test.vr.d.ts +1 -0
  771. package/dist/types/components/q2-formatted-text/test/q2-formatted-text-test.vr.d.ts +1 -0
  772. package/dist/types/components/q2-grid/q2-grid.d.ts +10 -0
  773. package/dist/types/components/q2-icon/test/q2-icon-test.vr.d.ts +1 -0
  774. package/dist/types/components/q2-input/test/q2-input-test.vr.d.ts +1 -0
  775. package/dist/types/components/q2-legend/q2-legend.d.ts +2 -0
  776. package/dist/types/components/q2-link/test/q2-link-test.vr.d.ts +1 -0
  777. package/dist/types/components/q2-list/test/q2-list-test.vr.d.ts +1 -0
  778. package/dist/types/components/q2-message/test/q2-message-test.vr.d.ts +1 -0
  779. package/dist/types/components/q2-meter/test/q2-meter-test.vr.d.ts +1 -0
  780. package/dist/types/components/q2-modal/test/q2-modal-test.vr.d.ts +1 -0
  781. package/dist/types/components/q2-otp/q2-otp.d.ts +159 -0
  782. package/dist/types/components/q2-pagination/test/q2-pagination-test.vr.d.ts +1 -0
  783. package/dist/types/components/q2-pill/q2-pill.d.ts +5 -2
  784. package/dist/types/components/q2-pill/test/q2-pill-test.vr.d.ts +1 -0
  785. package/dist/types/components/q2-radio/q2-radio.d.ts +1 -1
  786. package/dist/types/components/q2-radio/test/q2-radio-test.vr.d.ts +1 -0
  787. package/dist/types/components/q2-radio-group/test/q2-radio-group-test.vr.d.ts +1 -0
  788. package/dist/types/components/q2-section/test/q2-section-test.vr.d.ts +1 -0
  789. package/dist/types/components/q2-select/test/q2-select-test.vr.d.ts +1 -0
  790. package/dist/types/components/q2-stepper/test/q2-stepper-test.vr.d.ts +1 -0
  791. package/dist/types/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.d.ts +1 -0
  792. package/dist/types/components/q2-tab-container/test/q2-tab-container-test.vr.d.ts +1 -0
  793. package/dist/types/components/q2-tag/test/q2-tag-test.vr.d.ts +1 -0
  794. package/dist/types/components/q2-textarea/test/q2-textarea-test.vr.d.ts +1 -0
  795. package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +4 -0
  796. package/dist/types/components/q2-tooltip/test/q2-tooltip-test.vr.d.ts +1 -0
  797. package/dist/types/components.d.ts +306 -2
  798. package/dist/types/utils/component.d.ts +1 -1
  799. package/dist/types/utils/test/vr-helpers.d.ts +14 -0
  800. package/package.json +12 -3
  801. package/dist/cjs/component-DRAntnCA.js.map +0 -1
  802. package/dist/cjs/index-YvKoRT-t.js.map +0 -1
  803. package/dist/esm/component-DVxzK3WH.js.map +0 -1
  804. package/dist/esm/index-C4PILj1_.js.map +0 -1
  805. package/dist/q2-tecton-elements/component-DVxzK3WH.js +0 -40
  806. package/dist/q2-tecton-elements/component-DVxzK3WH.js.map +0 -1
  807. package/dist/q2-tecton-elements/index-C4PILj1_.js.map +0 -1
@@ -0,0 +1,107 @@
1
+ import { expect } from "@playwright/test";
2
+ import { test } from "@stencil/playwright";
3
+ import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
4
+ const OPTIONS = `
5
+ <q2-option value="1">Option 1</q2-option>
6
+ <q2-option value="2">Option 2</q2-option>
7
+ <q2-option value="3">Option 3</q2-option>
8
+ `;
9
+ const OPTIONS_LONG = `
10
+ <q2-option value="1">Option 1 with a much longer label that will wrap across multiple lines</q2-option>
11
+ <q2-option value="2">Option 2 with a much longer label that will wrap across multiple lines</q2-option>
12
+ <q2-option value="3">Option 3</q2-option>
13
+ `;
14
+ const ERRORS = ['This field is required.', 'The value entered is invalid.', 'The value offends me.'];
15
+ const VARIANTS = [
16
+ {
17
+ name: 'default',
18
+ html: `<q2-select label="My select" placeholder="Select an option">${OPTIONS}</q2-select>`,
19
+ states: ['resting', 'focus', 'expanded-option-hover', 'expanded-option-focus'],
20
+ },
21
+ {
22
+ name: 'multiple',
23
+ html: `<q2-select label="My select" placeholder="Select an option" multiple>${OPTIONS}</q2-select>`,
24
+ states: ['expanded-option-hover', 'expanded-option-focus'],
25
+ },
26
+ {
27
+ name: 'multiline-options',
28
+ html: `<q2-select label="My select" placeholder="Select an option" multiline-options>${OPTIONS_LONG}</q2-select>`,
29
+ states: ['expanded-option-hover', 'expanded-option-focus'],
30
+ },
31
+ {
32
+ name: 'disabled',
33
+ html: `<q2-select label="My select" placeholder="Select an option" disabled>${OPTIONS}</q2-select>`,
34
+ states: ['resting'],
35
+ },
36
+ {
37
+ name: 'clearable',
38
+ html: `<q2-select label="My select" clearable value="2">${OPTIONS}</q2-select>`,
39
+ states: ['resting', 'focus'],
40
+ },
41
+ {
42
+ name: 'errored',
43
+ html: `<q2-select label="My select" placeholder="Select an option">${OPTIONS}</q2-select>`,
44
+ states: ['resting'],
45
+ setup: 'errors',
46
+ },
47
+ ];
48
+ const applySelectSetup = async (page, setup) => {
49
+ if (!setup)
50
+ return;
51
+ await page.evaluate(({ setup, errors }) => {
52
+ const el = document.querySelector('q2-select');
53
+ if (setup === 'errors')
54
+ el.errors = errors;
55
+ }, { setup, errors: ERRORS });
56
+ };
57
+ const expandSelect = async (page) => {
58
+ await page.locator('q2-select').click();
59
+ await page.locator('q2-option[value="1"]').waitFor({ state: 'visible' });
60
+ };
61
+ const setup = (page, variant, theme) => setupPage(page, variant.html, { theme, setupLoc: true }).then(() => applySelectSetup(page, variant.setup));
62
+ const restingCase = (variant, theme) => {
63
+ test(`q2-select--${variant.name}--resting — ${theme}`, async ({ page }) => {
64
+ await setup(page, variant, theme);
65
+ await expect(page).toHaveScreenshot(`q2-select--${variant.name}--resting--${theme}.png`);
66
+ });
67
+ };
68
+ const focusCase = (variant, theme) => {
69
+ test(`q2-select--${variant.name}--focus — ${theme}`, async ({ page }) => {
70
+ await setup(page, variant, theme);
71
+ await page.keyboard.press('Tab');
72
+ await expect(page).toHaveScreenshot(`q2-select--${variant.name}--focus--${theme}.png`);
73
+ });
74
+ };
75
+ const expandedOptionHoverCase = (variant, theme) => {
76
+ test(`q2-select--${variant.name}--expanded-option-hover — ${theme}`, async ({ page }) => {
77
+ await setup(page, variant, theme);
78
+ await expandSelect(page);
79
+ await page.locator('q2-option[value="1"]').hover();
80
+ await expect(page).toHaveScreenshot(`q2-select--${variant.name}--expanded-option-hover--${theme}.png`);
81
+ });
82
+ };
83
+ // Option focus uses keyboard navigation (click to open, then ArrowDown) so :focus-visible fires.
84
+ const expandedOptionFocusCase = (variant, theme) => {
85
+ test(`q2-select--${variant.name}--expanded-option-focus — ${theme}`, async ({ page }) => {
86
+ await setup(page, variant, theme);
87
+ await expandSelect(page);
88
+ await page.keyboard.press('ArrowDown');
89
+ await expect(page).toHaveScreenshot(`q2-select--${variant.name}--expanded-option-focus--${theme}.png`);
90
+ });
91
+ };
92
+ const CASE_MAP = {
93
+ resting: restingCase,
94
+ focus: focusCase,
95
+ 'expanded-option-hover': expandedOptionHoverCase,
96
+ 'expanded-option-focus': expandedOptionFocusCase,
97
+ };
98
+ test.describe('q2-select — variants × themes', () => {
99
+ for (const variant of VARIANTS) {
100
+ for (const theme of THEMES) {
101
+ for (const state of variant.states) {
102
+ CASE_MAP[state](variant, theme);
103
+ }
104
+ }
105
+ }
106
+ });
107
+ //# sourceMappingURL=q2-select-test.vr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-select-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-select/test/q2-select-test.vr.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, Page } from '@playwright/test';\nimport { test } from '@stencil/playwright';\nimport { setupPage, THEMES, Theme } from '../../../utils/test/vr-helpers';\n\nconst OPTIONS = `\n <q2-option value=\"1\">Option 1</q2-option>\n <q2-option value=\"2\">Option 2</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n`;\n\nconst OPTIONS_LONG = `\n <q2-option value=\"1\">Option 1 with a much longer label that will wrap across multiple lines</q2-option>\n <q2-option value=\"2\">Option 2 with a much longer label that will wrap across multiple lines</q2-option>\n <q2-option value=\"3\">Option 3</q2-option>\n`;\n\ntype Variant = {\n name: string;\n html: string;\n states: Array<'resting' | 'focus' | 'expanded-option-hover' | 'expanded-option-focus'>;\n // Post-setup hook for props that aren't serializable as attributes (errors)\n setup?: 'errors';\n};\n\nconst ERRORS = ['This field is required.', 'The value entered is invalid.', 'The value offends me.'];\n\nconst VARIANTS: Variant[] = [\n {\n name: 'default',\n html: `<q2-select label=\"My select\" placeholder=\"Select an option\">${OPTIONS}</q2-select>`,\n states: ['resting', 'focus', 'expanded-option-hover', 'expanded-option-focus'],\n },\n {\n name: 'multiple',\n html: `<q2-select label=\"My select\" placeholder=\"Select an option\" multiple>${OPTIONS}</q2-select>`,\n states: ['expanded-option-hover', 'expanded-option-focus'],\n },\n {\n name: 'multiline-options',\n html: `<q2-select label=\"My select\" placeholder=\"Select an option\" multiline-options>${OPTIONS_LONG}</q2-select>`,\n states: ['expanded-option-hover', 'expanded-option-focus'],\n },\n {\n name: 'disabled',\n html: `<q2-select label=\"My select\" placeholder=\"Select an option\" disabled>${OPTIONS}</q2-select>`,\n states: ['resting'],\n },\n {\n name: 'clearable',\n html: `<q2-select label=\"My select\" clearable value=\"2\">${OPTIONS}</q2-select>`,\n states: ['resting', 'focus'],\n },\n {\n name: 'errored',\n html: `<q2-select label=\"My select\" placeholder=\"Select an option\">${OPTIONS}</q2-select>`,\n states: ['resting'],\n setup: 'errors',\n },\n];\n\nconst applySelectSetup = async (page: Page, setup?: 'errors') => {\n if (!setup) return;\n await page.evaluate(\n ({ setup, errors }) => {\n const el = document.querySelector('q2-select') as HTMLElement & { errors?: string[] };\n if (setup === 'errors') el.errors = errors;\n },\n { setup, errors: ERRORS }\n );\n};\n\nconst expandSelect = async (page: Page) => {\n await page.locator('q2-select').click();\n await page.locator('q2-option[value=\"1\"]').waitFor({ state: 'visible' });\n};\n\nconst setup = (page: Page, variant: Variant, theme: Theme) =>\n setupPage(page, variant.html, { theme, setupLoc: true }).then(() => applySelectSetup(page, variant.setup));\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-select--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await setup(page, variant, theme);\n await expect(page).toHaveScreenshot(`q2-select--${variant.name}--resting--${theme}.png`);\n });\n};\n\nconst focusCase = (variant: Variant, theme: Theme) => {\n test(`q2-select--${variant.name}--focus — ${theme}`, async ({ page }) => {\n await setup(page, variant, theme);\n await page.keyboard.press('Tab');\n await expect(page).toHaveScreenshot(`q2-select--${variant.name}--focus--${theme}.png`);\n });\n};\n\nconst expandedOptionHoverCase = (variant: Variant, theme: Theme) => {\n test(`q2-select--${variant.name}--expanded-option-hover — ${theme}`, async ({ page }) => {\n await setup(page, variant, theme);\n await expandSelect(page);\n await page.locator('q2-option[value=\"1\"]').hover();\n await expect(page).toHaveScreenshot(`q2-select--${variant.name}--expanded-option-hover--${theme}.png`);\n });\n};\n\n// Option focus uses keyboard navigation (click to open, then ArrowDown) so :focus-visible fires.\nconst expandedOptionFocusCase = (variant: Variant, theme: Theme) => {\n test(`q2-select--${variant.name}--expanded-option-focus — ${theme}`, async ({ page }) => {\n await setup(page, variant, theme);\n await expandSelect(page);\n await page.keyboard.press('ArrowDown');\n await expect(page).toHaveScreenshot(`q2-select--${variant.name}--expanded-option-focus--${theme}.png`);\n });\n};\n\nconst CASE_MAP = {\n resting: restingCase,\n focus: focusCase,\n 'expanded-option-hover': expandedOptionHoverCase,\n 'expanded-option-focus': expandedOptionFocusCase,\n} as const;\n\ntest.describe('q2-select — variants × themes', () => {\n for (const variant of VARIANTS) {\n for (const theme of THEMES) {\n for (const state of variant.states) {\n CASE_MAP[state](variant, theme);\n }\n }\n }\n});\n"]}
@@ -65,6 +65,42 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ /**
69
+ * @prop --tct-stepper-min-height: (<length>) Controls the minimum height of each step list item.
70
+ * @prop --tct-stepper-list-padding: (<length-percentage>+) Controls the inner padding of the step list.
71
+ * @prop --tct-stepper-step-width: (<length>) Controls the width of each step within the list.
72
+ * @prop --tct-stepper-step-gap: (<length-percentage>) Controls the gap between adjacent steps.
73
+ * @prop --tct-stepper-tween: (*) Controls the transition timing for stepper animations.
74
+ * @prop --tct-stepper-scroll-arrow-color: (<color>) Controls the stroke color of the scroll arrow icons.
75
+ * @prop --tct-stepper-btn-border-radius?: (<length-percentage>) Controls the optional corner radius of the step button.
76
+ * @prop --tct-stepper-btn-focus-visible-box-shadow: (*) Controls the box shadow of the step button when focused via keyboard.
77
+ * @prop --tct-stepper-btn-icon-size: (<length>) Controls the size of the step bullet icon.
78
+ * @prop --tct-stepper-btn-icon-visibility: (<custom-ident>) Controls the visibility of the step bullet icons.
79
+ * @prop --tct-stepper-btn-gap: (<length-percentage>) Controls the gap between the step bullet and the step label.
80
+ * @prop --tct-stepper-btn-label-font-size: (<length-percentage>) Controls the font size of the step bullet text.
81
+ * @prop --tct-stepper-active-font-weight: (<number>) Controls the font weight applied to active step labels.
82
+ * @prop --tct-stepper-bullet-active-background: (<color>) Controls the background color of the active step bullet.
83
+ * @prop --tct-stepper-bullet-active-font-color: (<color>) Controls the text color inside the active step bullet.
84
+ * @prop --tct-stepper-bullet-active-font-weight: (<number>) Controls the font weight inside the active step bullet when selected.
85
+ * @prop --tct-stepper-bullet-active-divider-color: (<color>) Controls the color of the divider line between the active step and adjacent steps.
86
+ * @prop --tct-stepper-bullet-active-box-shadow: (*) Controls the box shadow of the selected step bullet.
87
+ * @prop --tct-stepper-bullet-complete-box-shadow: (*) Controls the box shadow of completed step bullets.
88
+ * @prop --tct-stepper-bullet-error-box-shadow: (*) Controls the box shadow of step bullets in the error state.
89
+ * @prop --tct-stepper-bullet-inactive-background: (<color>) Controls the background color of inactive step bullets.
90
+ * @prop --tct-stepper-bullet-inactive-font-color: (<color>) Controls the text color inside inactive step bullets.
91
+ * @prop --tct-stepper-bullet-disabled-background: (<color>) Controls the background color of disabled step bullets.
92
+ * @prop --tct-stepper-bullet-disabled-font-color: (<color>) Controls the text color inside disabled step bullets.
93
+ * @prop --tct-stepper-bullet-disabled-divider-color: (<color>) Controls the color of the divider line adjacent to disabled steps.
94
+ * @prop --tct-stepper-bullet-disabled-box-shadow?: (*) Controls the optional box shadow of disabled step bullets.
95
+ * @prop --tct-stepper-label-color: (<color>) Controls the text color of step labels.
96
+ * @prop --tct-stepper-label-font-size: (<length-percentage>) Controls the font size of step labels.
97
+ * @prop --tct-stepper-label-font-weight: (<number>) Controls the font weight of step labels.
98
+ * @prop --tct-stepper-label-line-height: (<number> | <length-percentage>) Controls the line height of step labels.
99
+ * @prop --tct-stepper-label-line-count: (<integer>) Controls the maximum number of lines for the step label before clamping.
100
+ * @prop --tct-stepper-description-color: (<color>) Controls the text color of step descriptions.
101
+ * @prop --tct-stepper-description-font-size: (<length-percentage>) Controls the font size of step descriptions.
102
+ * @prop --tct-stepper-description-line-count: (<integer>) Controls the maximum number of lines for the step description before clamping.
103
+ */
68
104
  :host {
69
105
  display: block;
70
106
  position: relative;
@@ -280,7 +280,7 @@ export class Q2Stepper {
280
280
  const containerClasses = ['step-container'];
281
281
  if (scrollEnabled)
282
282
  containerClasses.push('has-scroll');
283
- return (h(Fragment, { key: '860f07cdd262a6b6710864c1e7fb977cd6c2aeda' }, h("div", { key: 'a77509faf317305acd39cf6ff8e4fac153b68208', class: containerClasses.join(' ') }, scrollEnabled && (h(Fragment, { key: 'e77c847ebb1f29b188d8bf0169edfeff45c80a00' }, h("div", { key: '7ccd141727448a90c00dc605add06333ef3d4a44', class: "gradient-left", hidden: !showScrollLeft }), h("div", { key: '4daefeb015ad3d7556cf0db26355c15c2d710c98', class: "gradient-right", hidden: !showScrollRight }), h("q2-btn", { key: '874809c160bef85f7cd4b8876d6d32bd17c2d2ae', class: "btn-left", hideLabel: true, hidden: !this.showScrollLeft, label: loc('tecton.element.stepper.scrollLeft'), onTctClick: () => this.onScrollBtnClick('left') }, h("q2-icon", { key: '2aecd51118a8523b6a78a1cd4816d68a235cbb03', type: "chevron-left" })), h("q2-btn", { key: '78ed0c8b483ef82a7ff09a129ad728722813e8fc', class: "btn-right", hideLabel: true, hidden: !this.showScrollRight, label: loc('tecton.element.stepper.scrollRight'), onTctClick: () => this.onScrollBtnClick('right') }, h("q2-icon", { key: 'a1641d530c74285bc7e36e3b43a8a37a4292ccba', type: "chevron-right" })))), h("ul", { key: '3f7359edc49e615acc1eb9296537f5eb27fea68b', onScroll: this.checkScrollState, ref: el => (this.listElement = el), role: "tablist" }, stepCount > 0 && [...Array(stepCount).keys()].map(stepIndex => this.renderStepBtn(stepIndex)))), h("div", { key: 'c54a3fa9a910a5bf16e8fa0622c8b81d1631c38b', role: "list" }, h("slot", { key: 'f58510d079329d251e6c92bdee54151cdee699bf', onSlotchange: () => this.onSlotChange() }))));
283
+ return (h(Fragment, { key: '34233b3c925a12fbedfc3922a2cedc9686fce462' }, h("div", { key: '10e2762661ebb376975f414b70959a8db4105e4f', class: containerClasses.join(' ') }, scrollEnabled && (h(Fragment, { key: 'b34df8429791cc81f709fb09a4f2f30f6de93ba8' }, h("div", { key: '0eea730d963032c238beb5563164c92818c2d4c4', class: "gradient-left", hidden: !showScrollLeft }), h("div", { key: '5df60884494a4fb1b5466fe7e46a9f3d7ce1c183', class: "gradient-right", hidden: !showScrollRight }), h("q2-btn", { key: 'af0e916faec0f3bae4f2296875bc362529d363f5', class: "btn-left", hideLabel: true, hidden: !this.showScrollLeft, label: loc('tecton.element.stepper.scrollLeft'), onTctClick: () => this.onScrollBtnClick('left') }, h("q2-icon", { key: 'f657b0533d9fe9fac814560387f04a4ff205362f', type: "chevron-left" })), h("q2-btn", { key: 'a227eee9a8e5a872e0e8cb60e27e03ddc71110fc', class: "btn-right", hideLabel: true, hidden: !this.showScrollRight, label: loc('tecton.element.stepper.scrollRight'), onTctClick: () => this.onScrollBtnClick('right') }, h("q2-icon", { key: '399596fd1b63e1ffad02e0708f2a7167296f54ac', type: "chevron-right" })))), h("ul", { key: '8d57f0ed69b880eb8d7125a8002f80d3861a7df6', onScroll: this.checkScrollState, ref: el => (this.listElement = el), role: "tablist" }, stepCount > 0 && [...Array(stepCount).keys()].map(stepIndex => this.renderStepBtn(stepIndex)))), h("div", { key: '72cf5bfc72de940d5847a3febd4837cc4075e84f', role: "list" }, h("slot", { key: 'b8a9d655a307712bceb369be2c00971103fbb94e', onSlotchange: () => this.onSlotChange() }))));
284
284
  }
285
285
  static get is() { return "q2-stepper"; }
286
286
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,86 @@
1
+ import { expect } from "@playwright/test";
2
+ import { test } from "@stencil/playwright";
3
+ import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
4
+ const PANE = (label, body = 'Pane content') => `
5
+ <q2-stepper-pane label="${label}">${body}</q2-stepper-pane>
6
+ `;
7
+ const PANES_3 = `${PANE('Step 1')}${PANE('Step 2')}${PANE('Step 3')}`;
8
+ const PANES_5 = `${PANE('Step 1')}${PANE('Step 2')}${PANE('Step 3')}${PANE('Step 4')}${PANE('Step 5')}`;
9
+ const PANE_DESC = (label, description) => `
10
+ <q2-stepper-pane label="${label}" description="${description}">Pane content</q2-stepper-pane>
11
+ `;
12
+ const PANES_DESC = `
13
+ ${PANE_DESC('Step 1', '1 of 3 steps')}
14
+ ${PANE_DESC('Step 2', '2 of 3 steps')}
15
+ ${PANE_DESC('Step 3', '3 of 3 steps')}
16
+ `;
17
+ const VARIANTS = [
18
+ {
19
+ name: 'step-1-of-3',
20
+ html: `<q2-stepper current-step="1">${PANES_3}</q2-stepper>`,
21
+ states: ['resting'],
22
+ },
23
+ {
24
+ name: 'step-2-of-3',
25
+ html: `<q2-stepper current-step="2">${PANES_3}</q2-stepper>`,
26
+ states: ['resting'],
27
+ },
28
+ {
29
+ name: 'step-3-of-3',
30
+ html: `<q2-stepper current-step="3">${PANES_3}</q2-stepper>`,
31
+ states: ['resting'],
32
+ },
33
+ {
34
+ name: 'last-enabled-step',
35
+ html: `<q2-stepper current-step="2" last-enabled-step="4">${PANES_5}</q2-stepper>`,
36
+ states: ['resting', 'hover', 'focus'],
37
+ },
38
+ {
39
+ name: 'with-descriptions',
40
+ html: `<q2-stepper current-step="2">${PANES_DESC}</q2-stepper>`,
41
+ states: ['resting'],
42
+ },
43
+ ];
44
+ const restingCase = (variant, theme) => {
45
+ test(`q2-stepper--${variant.name}--resting — ${theme}`, async ({ page }) => {
46
+ await setupPage(page, variant.html, { theme });
47
+ await expect(page).toHaveScreenshot(`q2-stepper--${variant.name}--resting--${theme}.png`);
48
+ });
49
+ };
50
+ const hoverCase = (variant, theme) => {
51
+ test(`q2-stepper--${variant.name}--hover — ${theme}`, async ({ page }) => {
52
+ await setupPage(page, variant.html, { theme });
53
+ // Step buttons live in q2-stepper's shadow root; hover the third one.
54
+ const box = await page.locator('q2-stepper').evaluate((el) => {
55
+ var _a;
56
+ const btns = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('button');
57
+ if (!btns || btns.length < 3)
58
+ throw new Error('q2-stepper step buttons not found in shadow DOM');
59
+ const r = btns[2].getBoundingClientRect();
60
+ return { x: r.x, y: r.y, width: r.width, height: r.height };
61
+ });
62
+ await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);
63
+ await page.waitForTimeout(50);
64
+ await expect(page).toHaveScreenshot(`q2-stepper--${variant.name}--hover--${theme}.png`);
65
+ });
66
+ };
67
+ const focusCase = (variant, theme) => {
68
+ test(`q2-stepper--${variant.name}--focus — ${theme}`, async ({ page }) => {
69
+ await setupPage(page, variant.html, { theme });
70
+ await page.keyboard.press('Tab');
71
+ await expect(page).toHaveScreenshot(`q2-stepper--${variant.name}--focus--${theme}.png`);
72
+ });
73
+ };
74
+ test.describe('q2-stepper — variants × themes', () => {
75
+ for (const variant of VARIANTS) {
76
+ for (const theme of THEMES) {
77
+ if (variant.states.includes('resting'))
78
+ restingCase(variant, theme);
79
+ if (variant.states.includes('hover'))
80
+ hoverCase(variant, theme);
81
+ if (variant.states.includes('focus'))
82
+ focusCase(variant, theme);
83
+ }
84
+ }
85
+ });
86
+ //# sourceMappingURL=q2-stepper-test.vr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-stepper-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-stepper/test/q2-stepper-test.vr.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@playwright/test';\nimport { test } from '@stencil/playwright';\nimport { setupPage, THEMES, Theme } from '../../../utils/test/vr-helpers';\n\ntype State = 'resting' | 'hover' | 'focus';\ntype Variant = { name: string; html: string; states: State[] };\n\nconst PANE = (label: string, body: string = 'Pane content') => `\n <q2-stepper-pane label=\"${label}\">${body}</q2-stepper-pane>\n`;\n\nconst PANES_3 = `${PANE('Step 1')}${PANE('Step 2')}${PANE('Step 3')}`;\nconst PANES_5 = `${PANE('Step 1')}${PANE('Step 2')}${PANE('Step 3')}${PANE('Step 4')}${PANE('Step 5')}`;\n\nconst PANE_DESC = (label: string, description: string) => `\n <q2-stepper-pane label=\"${label}\" description=\"${description}\">Pane content</q2-stepper-pane>\n`;\n\nconst PANES_DESC = `\n ${PANE_DESC('Step 1', '1 of 3 steps')}\n ${PANE_DESC('Step 2', '2 of 3 steps')}\n ${PANE_DESC('Step 3', '3 of 3 steps')}\n`;\n\nconst VARIANTS: Variant[] = [\n {\n name: 'step-1-of-3',\n html: `<q2-stepper current-step=\"1\">${PANES_3}</q2-stepper>`,\n states: ['resting'],\n },\n {\n name: 'step-2-of-3',\n html: `<q2-stepper current-step=\"2\">${PANES_3}</q2-stepper>`,\n states: ['resting'],\n },\n {\n name: 'step-3-of-3',\n html: `<q2-stepper current-step=\"3\">${PANES_3}</q2-stepper>`,\n states: ['resting'],\n },\n {\n name: 'last-enabled-step',\n html: `<q2-stepper current-step=\"2\" last-enabled-step=\"4\">${PANES_5}</q2-stepper>`,\n states: ['resting', 'hover', 'focus'],\n },\n {\n name: 'with-descriptions',\n html: `<q2-stepper current-step=\"2\">${PANES_DESC}</q2-stepper>`,\n states: ['resting'],\n },\n];\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-stepper--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await expect(page).toHaveScreenshot(`q2-stepper--${variant.name}--resting--${theme}.png`);\n });\n};\n\nconst hoverCase = (variant: Variant, theme: Theme) => {\n test(`q2-stepper--${variant.name}--hover — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n // Step buttons live in q2-stepper's shadow root; hover the third one.\n const box = await page.locator('q2-stepper').evaluate((el: HTMLElement) => {\n const btns = el.shadowRoot?.querySelectorAll<HTMLButtonElement>('button');\n if (!btns || btns.length < 3) throw new Error('q2-stepper step buttons not found in shadow DOM');\n const r = btns[2].getBoundingClientRect();\n return { x: r.x, y: r.y, width: r.width, height: r.height };\n });\n await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);\n await page.waitForTimeout(50);\n await expect(page).toHaveScreenshot(`q2-stepper--${variant.name}--hover--${theme}.png`);\n });\n};\n\nconst focusCase = (variant: Variant, theme: Theme) => {\n test(`q2-stepper--${variant.name}--focus — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await page.keyboard.press('Tab');\n await expect(page).toHaveScreenshot(`q2-stepper--${variant.name}--focus--${theme}.png`);\n });\n};\n\ntest.describe('q2-stepper — variants × themes', () => {\n for (const variant of VARIANTS) {\n for (const theme of THEMES) {\n if (variant.states.includes('resting')) restingCase(variant, theme);\n if (variant.states.includes('hover')) hoverCase(variant, theme);\n if (variant.states.includes('focus')) focusCase(variant, theme);\n }\n }\n});\n"]}
@@ -73,7 +73,7 @@ export class Q2StepperPane {
73
73
  // #region Render Methods
74
74
  render() {
75
75
  const { label, isActive } = this;
76
- return (h(Host, { key: '390b7605500bc2f04851fbae962543c92f8b9bb4', role: "listitem" }, h(Fragment, { key: 'a4835085304254d9b9c390c9bee29b67f6e9e1c4' }, h("div", { key: '0a8500ab3d69e3b43945451d9b3b310a05e2d67a', "aria-label": label && loc(label), tabindex: "0", hidden: !isActive && !(this.isChildActive && this.showWithChildren) }, h("slot", { key: '3b0622f4661ce6d3737580244dccb33c648238b3' })), h("div", { key: 'a1ffd3ac9ecedc149bf8da797bafd76dc4c8b3e7', hidden: true }, h("slot", { key: '437c72da16cd6e8f4c216f6a0e3255b45f3853b4', name: "label", onSlotchange: () => this.contentChange.emit() }), h("slot", { key: 'b8c9d86ffd8ede0a8203aea50eb175beee077f6a', name: "description", onSlotchange: () => this.contentChange.emit() })), h("slot", { key: 'aac91a3bc78567b297f930b5c61178d9d04381bf', name: "children" }))));
76
+ return (h(Host, { key: '2b2d2ec65ab23f005a4e648e0afc7a90b0530caa', role: "listitem" }, h(Fragment, { key: 'e90487511e6d10527cff42673ebdd46650523069' }, h("div", { key: 'a96a140d38a8a7a01afbc448cb8f7d5d1fa79397', "aria-label": label && loc(label), tabindex: "0", hidden: !isActive && !(this.isChildActive && this.showWithChildren) }, h("slot", { key: '379b2102390641f92864a848ffbcefcea5deac11' })), h("div", { key: '4b00ef58d54afa7b011a22fec7a3fa7cb04f387c', hidden: true }, h("slot", { key: '7d4896c01b27561fc5e1f46a8c3b81dd9c35477c', name: "label", onSlotchange: () => this.contentChange.emit() }), h("slot", { key: '1403e0718cedb039ee33ba01df91e288b7464730', name: "description", onSlotchange: () => this.contentChange.emit() })), h("slot", { key: '0d95f987e005b73343ffe8bb38ba86c2671efb1d', name: "children" }))));
77
77
  }
78
78
  static get is() { return "q2-stepper-pane"; }
79
79
  static get encapsulation() { return "shadow"; }
@@ -65,6 +65,37 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ /**
69
+ * @prop --tct-stepper-vertical-layout-gap: (<length-percentage>) Controls the gap between the step list and step content columns.
70
+ * @prop --tct-stepper-vertical-list-width: (<length-percentage>) Controls the width of the step list column.
71
+ * @prop --tct-stepper-vertical-tween: (*) Controls the transition timing for vertical stepper animations.
72
+ * @prop --tct-stepper-vertical-spacer-height: (<length>) Controls the height of the spacer between sibling step groups.
73
+ * @prop --tct-stepper-vertical-bullet-active-background: (<color>) Controls the background color of the active step bullet.
74
+ * @prop --tct-stepper-vertical-label-color: (<color>) Controls the text color of the step label in its default state.
75
+ * @prop --tct-stepper-vertical-description-color: (<color>) Controls the text color of the step description.
76
+ * @prop --tct-stepper-vertical-description-font-size: (<length-percentage>) Controls the font size of the step description.
77
+ * @prop --tct-stepper-vertical-btn-height: (<length>) Controls the minimum height of the top-level step button.
78
+ * @prop --tct-stepper-vertical-btn-font-size: (<length-percentage>) Controls the font size of the top-level step button.
79
+ * @prop --tct-stepper-vertical-btn-label-font-size: (<length-percentage>) Controls the font size of the step button label text.
80
+ * @prop --tct-stepper-vertical-btn-active-font-weight: (<number>) Controls the font weight of the step label when the step is selected.
81
+ * @prop --tct-stepper-vertical-btn-locked-color: (<color>) Controls the text color of the step label when the step is locked or disabled.
82
+ * @prop --tct-stepper-vertical-btn-text-align: (<custom-ident>) Controls the text alignment of the step button content.
83
+ * @prop --tct-stepper-vertical-btn-gap: (<length-percentage>) Controls the gap between the step icon and step label.
84
+ * @prop --tct-stepper-vertical-btn-icon-size: (<length>) Controls the size of the top-level step icon.
85
+ * @prop --tct-stepper-vertical-btn-icon-visibility: (<custom-ident>) Controls the visibility of the step icons.
86
+ * @prop --tct-stepper-vertical-child-btn-height: (<length>) Controls the minimum height of child step buttons.
87
+ * @prop --tct-stepper-vertical-child-btn-font-size: (<length-percentage>) Controls the font size of child step buttons.
88
+ * @prop --tct-stepper-vertical-child-btn-label-font-size: (<length-percentage>) Controls the font size of child step button labels.
89
+ * @prop --tct-stepper-vertical-child-btn-icon-size: (<length>) Controls the size of child step icons.
90
+ * @prop --tct-stepper-vertical-child-btn-left-padding: (<length-percentage>) Controls the left padding of child step buttons.
91
+ * @prop --tct-stepper-vertical-child-btn-left-border-style: (<custom-ident>) Controls the left border style of child step buttons.
92
+ * @prop --tct-stepper-vertical-child-btn-left-border-width: (<length>) Controls the left border width of child step buttons.
93
+ * @prop --tct-stepper-vertical-child-border-color: (<color>) Controls the color of the connecting border between child steps.
94
+ * @prop --tct-stepper-vertical-child-border-style: (<custom-ident>) Controls the style of the connecting border between child steps.
95
+ * @prop --tct-stepper-vertical-child-border-width: (<length>) Controls the width of the connecting border between child steps.
96
+ * @prop --tct-stepper-vertical-step-focus-visible-border-radius?: (<length-percentage>) Controls the optional corner radius applied to the step button when focused via keyboard.
97
+ * @prop --tct-stepper-vertical-step-focus-visible-box-shadow: (*) Controls the box shadow applied to the step button when focused via keyboard.
98
+ */
68
99
  :host {
69
100
  display: grid;
70
101
  grid-template-columns: var(--tct-stepper-vertical-list-width, var(--tct-advanced-stepper-list-width, var(--t-advanced-stepper-list-width, 180px))) 1fr;
@@ -296,7 +296,7 @@ export class Q2StepperVertical {
296
296
  return (h("li", { role: "presentation" }, h("button", { class: stepClasses.join(' '), type: "button", "aria-labelledby": labelId, "aria-describedBy": descriptionId, "aria-label": btnLabel, "aria-selected": `${isCurrentStep}`, "aria-expanded": !!pane.children.length ? `${isExpanded}` : null, id: id, "aria-disabled": isLocked ? 'true' : null, role: "tab", tabIndex: isCurrentStep ? 0 : -1, onKeyDown: ev => !isLocked && this.onStepKeyDown(ev, id), onClick: ev => !isPaneDisabled && !isLocked && this.onStepClick(ev, id) }, statusIcon ? (h("div", { class: "step-icon" }, h("q2-icon", { type: statusIcon }))) : (h("div", { class: "step-bubble" }, stepNumber)), label && (h("div", null, h("div", { class: "step-label", id: labelId }, stepLabel), description && (h("div", { class: "step-description", id: descriptionId }, loc(description)))))), this.renderSpacer(pane, stepLabel, isExpanded, isLastStep)));
297
297
  }
298
298
  render() {
299
- return (h(Fragment, { key: 'a790b8dd9980fb56e96b103dbb52b89df222e349' }, h("ul", { key: '25b087f9746601005b9591139f2c13387c75f76a', role: "tablist" }, this.structuredPanes.map((pane, index) => this.renderStepBtn(pane, index))), h("div", { key: 'ee1b1f825884fde53c3975c66c60523b28fb87c7', role: "list" }, h("slot", { key: '27b316593c07cd178d0d46f6cc4531ab3a7e89ec' }))));
299
+ return (h(Fragment, { key: 'b74806bb316b43d35b187507dd784c91ecd9d145' }, h("ul", { key: 'fc2bbe45f3001f32a0d43819aa1e6d6bab24864d', role: "tablist" }, this.structuredPanes.map((pane, index) => this.renderStepBtn(pane, index))), h("div", { key: 'f9a80a02cade13ddf7ddbc4bc5f60d0b7dd6ebb1', role: "list" }, h("slot", { key: 'ff6ea3a8a330c204aedd87f77c6cc7eda8bdbdb9' }))));
300
300
  }
301
301
  static get is() { return "q2-stepper-vertical"; }
302
302
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,97 @@
1
+ import { expect } from "@playwright/test";
2
+ import { test } from "@stencil/playwright";
3
+ import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
4
+ const DEFAULT_PANES = `
5
+ <q2-stepper-pane label="Step 1" id="step-1">Pane content</q2-stepper-pane>
6
+ <q2-stepper-pane label="Step 2" id="step-2">Pane content</q2-stepper-pane>
7
+ <q2-stepper-pane label="Step 3" id="step-3">Pane content</q2-stepper-pane>
8
+ <q2-stepper-pane label="Step 4" id="step-4">Pane content</q2-stepper-pane>
9
+ `;
10
+ const MIXED_STATUS_PANES = `
11
+ <q2-stepper-pane label="Completed step" id="s1" status="complete">Pane content</q2-stepper-pane>
12
+ <q2-stepper-pane label="Error step" id="s2" status="error">Pane content</q2-stepper-pane>
13
+ <q2-stepper-pane label="Active step" id="s3">Pane content</q2-stepper-pane>
14
+ <q2-stepper-pane label="Locked step" id="s4" status="locked">Pane content</q2-stepper-pane>
15
+ `;
16
+ const DESC_PANES = `
17
+ <q2-stepper-pane label="Start here" id="s1" description="A completed step" status="complete">Content</q2-stepper-pane>
18
+ <q2-stepper-pane label="Continue" id="s2" description="The active step">Content</q2-stepper-pane>
19
+ <q2-stepper-pane label="Finish" id="s3" description="The final step">Content</q2-stepper-pane>
20
+ `;
21
+ const NESTED_PANES = `
22
+ <q2-stepper-pane label="Step 1" id="s1" status="complete">Content</q2-stepper-pane>
23
+ <q2-stepper-pane label="Parent step" id="parent">
24
+ <q2-stepper-pane label="Child A" id="child-a" status="complete">Content</q2-stepper-pane>
25
+ <q2-stepper-pane label="Child B" id="child-b">Content</q2-stepper-pane>
26
+ <q2-stepper-pane label="Child C" id="child-c">Content</q2-stepper-pane>
27
+ </q2-stepper-pane>
28
+ <q2-stepper-pane label="Final step" id="s3">Content</q2-stepper-pane>
29
+ `;
30
+ const SHOW_WITH_CHILDREN_PANES = `
31
+ <q2-stepper-pane label="Step 1" id="s1" status="complete">Content</q2-stepper-pane>
32
+ <q2-stepper-pane label="Parent step" id="parent" show-with-children>
33
+ <q2-stepper-pane label="Child A" id="child-a">Content</q2-stepper-pane>
34
+ <q2-stepper-pane label="Child B" id="child-b">Content</q2-stepper-pane>
35
+ </q2-stepper-pane>
36
+ `;
37
+ const VARIANTS = [
38
+ {
39
+ name: 'default',
40
+ html: `<q2-stepper-vertical current-step-id="step-2">${DEFAULT_PANES}</q2-stepper-vertical>`,
41
+ states: ['resting'],
42
+ },
43
+ {
44
+ name: 'mixed-statuses',
45
+ html: `<q2-stepper-vertical current-step-id="s3">${MIXED_STATUS_PANES}</q2-stepper-vertical>`,
46
+ states: ['resting', 'hover', 'focus'],
47
+ },
48
+ {
49
+ name: 'with-descriptions',
50
+ html: `<q2-stepper-vertical current-step-id="s2">${DESC_PANES}</q2-stepper-vertical>`,
51
+ states: ['resting'],
52
+ },
53
+ {
54
+ name: 'with-children',
55
+ html: `<q2-stepper-vertical current-step-id="child-b">${NESTED_PANES}</q2-stepper-vertical>`,
56
+ states: ['resting'],
57
+ },
58
+ {
59
+ name: 'show-with-children',
60
+ html: `<q2-stepper-vertical current-step-id="child-a">${SHOW_WITH_CHILDREN_PANES}</q2-stepper-vertical>`,
61
+ states: ['resting'],
62
+ },
63
+ ];
64
+ const restingCase = (variant, theme) => {
65
+ test(`q2-stepper-vertical--${variant.name}--resting — ${theme}`, async ({ page }) => {
66
+ await setupPage(page, variant.html, { theme });
67
+ await expect(page).toHaveScreenshot(`q2-stepper-vertical--${variant.name}--resting--${theme}.png`);
68
+ });
69
+ };
70
+ const hoverCase = (variant, theme) => {
71
+ test(`q2-stepper-vertical--${variant.name}--hover — ${theme}`, async ({ page }) => {
72
+ await setupPage(page, variant.html, { theme });
73
+ // Hover the third pane (the active default-status pane in the mixed-statuses variant).
74
+ await page.locator('q2-stepper-vertical > q2-stepper-pane').nth(2).hover();
75
+ await expect(page).toHaveScreenshot(`q2-stepper-vertical--${variant.name}--hover--${theme}.png`);
76
+ });
77
+ };
78
+ const focusCase = (variant, theme) => {
79
+ test(`q2-stepper-vertical--${variant.name}--focus — ${theme}`, async ({ page }) => {
80
+ await setupPage(page, variant.html, { theme });
81
+ await page.keyboard.press('Tab');
82
+ await expect(page).toHaveScreenshot(`q2-stepper-vertical--${variant.name}--focus--${theme}.png`);
83
+ });
84
+ };
85
+ test.describe('q2-stepper-vertical — variants × themes', () => {
86
+ for (const variant of VARIANTS) {
87
+ for (const theme of THEMES) {
88
+ if (variant.states.includes('resting'))
89
+ restingCase(variant, theme);
90
+ if (variant.states.includes('hover'))
91
+ hoverCase(variant, theme);
92
+ if (variant.states.includes('focus'))
93
+ focusCase(variant, theme);
94
+ }
95
+ }
96
+ });
97
+ //# sourceMappingURL=q2-stepper-vertical-test.vr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-stepper-vertical-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@playwright/test';\nimport { test } from '@stencil/playwright';\nimport { setupPage, THEMES, Theme } from '../../../utils/test/vr-helpers';\n\ntype State = 'resting' | 'hover' | 'focus';\ntype Variant = { name: string; html: string; states: State[] };\n\nconst DEFAULT_PANES = `\n <q2-stepper-pane label=\"Step 1\" id=\"step-1\">Pane content</q2-stepper-pane>\n <q2-stepper-pane label=\"Step 2\" id=\"step-2\">Pane content</q2-stepper-pane>\n <q2-stepper-pane label=\"Step 3\" id=\"step-3\">Pane content</q2-stepper-pane>\n <q2-stepper-pane label=\"Step 4\" id=\"step-4\">Pane content</q2-stepper-pane>\n`;\n\nconst MIXED_STATUS_PANES = `\n <q2-stepper-pane label=\"Completed step\" id=\"s1\" status=\"complete\">Pane content</q2-stepper-pane>\n <q2-stepper-pane label=\"Error step\" id=\"s2\" status=\"error\">Pane content</q2-stepper-pane>\n <q2-stepper-pane label=\"Active step\" id=\"s3\">Pane content</q2-stepper-pane>\n <q2-stepper-pane label=\"Locked step\" id=\"s4\" status=\"locked\">Pane content</q2-stepper-pane>\n`;\n\nconst DESC_PANES = `\n <q2-stepper-pane label=\"Start here\" id=\"s1\" description=\"A completed step\" status=\"complete\">Content</q2-stepper-pane>\n <q2-stepper-pane label=\"Continue\" id=\"s2\" description=\"The active step\">Content</q2-stepper-pane>\n <q2-stepper-pane label=\"Finish\" id=\"s3\" description=\"The final step\">Content</q2-stepper-pane>\n`;\n\nconst NESTED_PANES = `\n <q2-stepper-pane label=\"Step 1\" id=\"s1\" status=\"complete\">Content</q2-stepper-pane>\n <q2-stepper-pane label=\"Parent step\" id=\"parent\">\n <q2-stepper-pane label=\"Child A\" id=\"child-a\" status=\"complete\">Content</q2-stepper-pane>\n <q2-stepper-pane label=\"Child B\" id=\"child-b\">Content</q2-stepper-pane>\n <q2-stepper-pane label=\"Child C\" id=\"child-c\">Content</q2-stepper-pane>\n </q2-stepper-pane>\n <q2-stepper-pane label=\"Final step\" id=\"s3\">Content</q2-stepper-pane>\n`;\n\nconst SHOW_WITH_CHILDREN_PANES = `\n <q2-stepper-pane label=\"Step 1\" id=\"s1\" status=\"complete\">Content</q2-stepper-pane>\n <q2-stepper-pane label=\"Parent step\" id=\"parent\" show-with-children>\n <q2-stepper-pane label=\"Child A\" id=\"child-a\">Content</q2-stepper-pane>\n <q2-stepper-pane label=\"Child B\" id=\"child-b\">Content</q2-stepper-pane>\n </q2-stepper-pane>\n`;\n\nconst VARIANTS: Variant[] = [\n {\n name: 'default',\n html: `<q2-stepper-vertical current-step-id=\"step-2\">${DEFAULT_PANES}</q2-stepper-vertical>`,\n states: ['resting'],\n },\n {\n name: 'mixed-statuses',\n html: `<q2-stepper-vertical current-step-id=\"s3\">${MIXED_STATUS_PANES}</q2-stepper-vertical>`,\n states: ['resting', 'hover', 'focus'],\n },\n {\n name: 'with-descriptions',\n html: `<q2-stepper-vertical current-step-id=\"s2\">${DESC_PANES}</q2-stepper-vertical>`,\n states: ['resting'],\n },\n {\n name: 'with-children',\n html: `<q2-stepper-vertical current-step-id=\"child-b\">${NESTED_PANES}</q2-stepper-vertical>`,\n states: ['resting'],\n },\n {\n name: 'show-with-children',\n html: `<q2-stepper-vertical current-step-id=\"child-a\">${SHOW_WITH_CHILDREN_PANES}</q2-stepper-vertical>`,\n states: ['resting'],\n },\n];\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-stepper-vertical--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await expect(page).toHaveScreenshot(`q2-stepper-vertical--${variant.name}--resting--${theme}.png`);\n });\n};\n\nconst hoverCase = (variant: Variant, theme: Theme) => {\n test(`q2-stepper-vertical--${variant.name}--hover — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n // Hover the third pane (the active default-status pane in the mixed-statuses variant).\n await page.locator('q2-stepper-vertical > q2-stepper-pane').nth(2).hover();\n await expect(page).toHaveScreenshot(`q2-stepper-vertical--${variant.name}--hover--${theme}.png`);\n });\n};\n\nconst focusCase = (variant: Variant, theme: Theme) => {\n test(`q2-stepper-vertical--${variant.name}--focus — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await page.keyboard.press('Tab');\n await expect(page).toHaveScreenshot(`q2-stepper-vertical--${variant.name}--focus--${theme}.png`);\n });\n};\n\ntest.describe('q2-stepper-vertical — variants × themes', () => {\n for (const variant of VARIANTS) {\n for (const theme of THEMES) {\n if (variant.states.includes('resting')) restingCase(variant, theme);\n if (variant.states.includes('hover')) hoverCase(variant, theme);\n if (variant.states.includes('focus')) focusCase(variant, theme);\n }\n }\n});\n"]}
@@ -65,6 +65,44 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ /**
69
+ * @prop --tct-tab-container-padding: (<length-percentage>+) Controls the inner padding of the tab container list.
70
+ * @prop --tct-tab-container-margin?: (<length-percentage>+) Controls the optional outer margin of the tab container list.
71
+ * @prop --tct-tab-container-border-width: (<length>+) Controls the bottom border width of the tab container list.
72
+ * @prop --tct-tab-container-border-style: (<custom-ident>) Controls the bottom border style of the tab container list.
73
+ * @prop --tct-tab-container-border-color: (<color>) Controls the bottom border color of the tab container list.
74
+ * @prop --tct-tab-container-content-padding: (<length-percentage>+) Controls the inner padding of the tab content area.
75
+ * @prop --tct-tab-container-content-backgrond?: (<color>) Controls the optional background color of the tab content area.
76
+ * @prop --tct-tab-content-padding: (<length-percentage>+) Controls the inner padding of the tab content area when --tct-tab-container-content-padding is not set.
77
+ * @prop --tct-tab-focus-visible-box-shadow: (*) Controls the box shadow of a tab button when focused via keyboard.
78
+ * @prop --tct-tab-gap: (<length-percentage>) Controls the gap between adjacent tab buttons.
79
+ * @prop --tct-tab-width: (<length-percentage>) Controls the width of inactive tab buttons.
80
+ * @prop --tct-tab-padding: (<length-percentage>+) Controls the inner padding of tab buttons.
81
+ * @prop --tct-tab-text-align: (<custom-ident>) Controls the text alignment within tab buttons.
82
+ * @prop --tct-tab-text-decoration?: (<custom-ident>) Controls the optional text decoration of inactive tab buttons.
83
+ * @prop --tct-tab-font-size: (<length-percentage>) Controls the font size of tab button text.
84
+ * @prop --tct-tab-line-height: (<number> | <length-percentage>) Controls the line height of tab button text.
85
+ * @prop --tct-tab-border-radius?: (<length-percentage>) Controls the optional corner radius of tab buttons.
86
+ * @prop --tct-tab-inactive-color?: (<color>) Controls the optional text color of inactive tab buttons.
87
+ * @prop --tct-tab-inactive-background?: (<color>) Controls the optional background color of inactive tab buttons.
88
+ * @prop --tct-tab-inactive-border-color?: (<color>) Controls the optional border color of inactive tab buttons.
89
+ * @prop --tct-tab-inactive-border-style: (<custom-ident>) Controls the border style of inactive tab buttons.
90
+ * @prop --tct-tab-inactive-border-width: (<length>+) Controls the border width of inactive tab buttons.
91
+ * @prop --tct-tab-hover-color: (<color>) Controls the text color of tab buttons on hover.
92
+ * @prop --tct-tab-hover-background?: (<color>) Controls the optional background color of tab buttons on hover.
93
+ * @prop --tct-tab-hover-width: (<length-percentage>) Controls the width of tab buttons on hover.
94
+ * @prop --tct-tab-active-color: (<color>) Controls the text color of the active tab button.
95
+ * @prop --tct-tab-active-background?: (<color>) Controls the optional background color of the active tab button.
96
+ * @prop --tct-tab-active-border-color: (<color>) Controls the border color of the active tab button.
97
+ * @prop --tct-tab-active-border-style: (<custom-ident>) Controls the border style of the active tab button.
98
+ * @prop --tct-tab-active-text-decoration?: (<custom-ident>) Controls the optional text decoration of the active tab button.
99
+ * @prop --tct-tab-active-width: (<length-percentage>) Controls the width of the active tab button.
100
+ * @prop --tct-tab-alt-active-color?: (<color>) Controls the optional text color of the active tab button when color="alt".
101
+ * @prop --tct-tab-alt-inactive-color?: (<color>) Controls the optional text color of inactive tab buttons when color="alt".
102
+ * @prop --tct-tab-section-padding: (<length-percentage>+) Controls the inner padding of tab buttons when type="section".
103
+ * @prop --tct-tab-section-font-size: (<length-percentage>) Controls the font size of tab buttons when type="section".
104
+ * @prop --tct-tab-section-line-height: (<number> | <length-percentage>) Controls the line height of tab buttons when type="section".
105
+ */
68
106
  :host {
69
107
  display: block;
70
108
  position: relative;
@@ -266,7 +266,7 @@ export class Q2TabContainer {
266
266
  return (h("div", { class: "tab-pane-badge", "aria-label": `${tab.label}, ${tab.badgeCount} ${description}` }, tab.label, h("q2-badge", { value: tab.badgeCount, theme: theme, status: tab.badgeStatus })));
267
267
  }
268
268
  render() {
269
- return (h(Fragment, { key: 'c5efef8307eeed7d15fa97b5a9047f4fc3ceae35' }, h("div", { key: '55200a6028630d7e70f116ace930a09820c096ce', class: "tab-container" }, this.scrollEnabled && (h(Fragment, { key: 'c4b8b65a9a4309d5e64a7e25532d63a9d5f6c94a' }, h("div", { key: '8696d2ac259cf64e45f9b709a1ff803efb05c628', class: "gradient-left", hidden: !this.showScrollLeft }), h("div", { key: '9dec12e80440127cf874ff19c409fdd431acaad6', class: "gradient-right", hidden: !this.showScrollRight }), h("q2-btn", { key: '5e5da65b962028501f8d2f81d23982ff9bbcab93', class: "btn-left", hidden: !this.showScrollLeft, onTctClick: () => this.onScrollBtnClick('left') }, h("q2-icon", { key: '10647cdbf45e406fd74521657db1d54d896edbcf', type: "chevron-left", label: "scroll left" })), h("q2-btn", { key: 'be6a46650c0e1b465589a1aeacf57ca54d19ddcf', class: "btn-right", hidden: !this.showScrollRight, onTctClick: () => this.onScrollBtnClick('right') }, h("q2-icon", { key: 'fa5f6c394e07b52dd6ec84d161d395d9f09bac75', type: "chevron-right", label: "scroll right" })))), h("ul", { key: '187492abc7df25789f0caef9afa6c8c9532b3a06', onScroll: this.checkScrollState, ref: el => (this.listElement = el), class: this.noPrint ? 'no-print' : null, role: "tablist" }, this.tabs.map((tab, index) => this.renderTab(tab, index)))), h("div", { key: '5d703304c29dbbb30264f23b2596ea9f872a15f4', class: "tab-content" }, h("slot", { key: '8d3a5a5b7df932e558fbed17c87a6e8365b51516', onSlotchange: () => this.onSlotChange() }))));
269
+ return (h(Fragment, { key: '16187eefd602ce118d150287bc8fcac139d73ac0' }, h("div", { key: '14e00ef9c5d3fadbaae3f424a8bae7121276ad70', class: "tab-container" }, this.scrollEnabled && (h(Fragment, { key: '12c710d0e0a13952c97105a396434cf7cba72845' }, h("div", { key: '8b21adb9b139fa95c4448cc5d13fe13052b1b692', class: "gradient-left", hidden: !this.showScrollLeft }), h("div", { key: '5ad7e3da6fcc47508b74a3f2c0207a0b9ba50e51', class: "gradient-right", hidden: !this.showScrollRight }), h("q2-btn", { key: 'f6a5748de11988791e3c0fc7e981a841c452fde7', class: "btn-left", hidden: !this.showScrollLeft, onTctClick: () => this.onScrollBtnClick('left') }, h("q2-icon", { key: '1862e33ad014a187d9e4061bd8fb13eb90ea85ae', type: "chevron-left", label: "scroll left" })), h("q2-btn", { key: '0d45040890928446450d372182293350a7a45bb8', class: "btn-right", hidden: !this.showScrollRight, onTctClick: () => this.onScrollBtnClick('right') }, h("q2-icon", { key: '856ce61ef014fea06abd60d855aa5cff6dfb90b8', type: "chevron-right", label: "scroll right" })))), h("ul", { key: '16e31f57ca849a1ee004932b5bec7b293dc791cf', onScroll: this.checkScrollState, ref: el => (this.listElement = el), class: this.noPrint ? 'no-print' : null, role: "tablist" }, this.tabs.map((tab, index) => this.renderTab(tab, index)))), h("div", { key: '67768f102c97303cd79f4f229b0c139dc5d6458d', class: "tab-content" }, h("slot", { key: '9dc9d71d0126502c5465da730ea6615a45d6a3f4', onSlotchange: () => this.onSlotChange() }))));
270
270
  }
271
271
  static get is() { return "q2-tab-container"; }
272
272
  static get encapsulation() { return "shadow"; }