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,78 @@
1
+ import { expect } from "@playwright/test";
2
+ import { test } from "@stencil/playwright";
3
+ import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
4
+ const PANES = (name) => `
5
+ <q2-tab-pane name="${name}" value="1" label="Tab One"><p>Content one</p></q2-tab-pane>
6
+ <q2-tab-pane name="${name}" value="2" label="Tab Two"><p>Content two</p></q2-tab-pane>
7
+ <q2-tab-pane name="${name}" value="3" label="Tab Three"><p>Content three</p></q2-tab-pane>
8
+ `;
9
+ const BADGE_PANES = (name) => `
10
+ <q2-tab-pane name="${name}" value="1" label="Inbox" badge-count="5"><p>Inbox</p></q2-tab-pane>
11
+ <q2-tab-pane name="${name}" value="2" label="Sent"><p>Sent</p></q2-tab-pane>
12
+ <q2-tab-pane name="${name}" value="3" label="Alerts" badge-count="2" badge-status="warning"><p>Alerts</p></q2-tab-pane>
13
+ `;
14
+ const VARIANTS = [
15
+ {
16
+ name: 'default-main',
17
+ html: `<q2-tab-container name="main-tabs" value="1">${PANES('main-tabs')}</q2-tab-container>`,
18
+ states: ['resting', 'hover', 'focus'],
19
+ },
20
+ {
21
+ name: 'type-section',
22
+ html: `<q2-tab-container name="section-tabs" value="1" type="section">${PANES('section-tabs')}</q2-tab-container>`,
23
+ states: ['resting'],
24
+ },
25
+ {
26
+ name: 'color-alt',
27
+ html: `<q2-tab-container name="alt-tabs" value="1" color="alt">${PANES('alt-tabs')}</q2-tab-container>`,
28
+ states: ['resting'],
29
+ },
30
+ {
31
+ name: 'with-badges',
32
+ html: `<q2-tab-container name="badge-tabs" value="1">${BADGE_PANES('badge-tabs')}</q2-tab-container>`,
33
+ states: ['resting'],
34
+ },
35
+ ];
36
+ const restingCase = (variant, theme) => {
37
+ test(`q2-tab-container--${variant.name}--resting — ${theme}`, async ({ page }) => {
38
+ await setupPage(page, variant.html, { theme });
39
+ await expect(page).toHaveScreenshot(`q2-tab-container--${variant.name}--resting--${theme}.png`);
40
+ });
41
+ };
42
+ const hoverCase = (variant, theme) => {
43
+ test(`q2-tab-container--${variant.name}--hover — ${theme}`, async ({ page }) => {
44
+ await setupPage(page, variant.html, { theme });
45
+ // Tab buttons live in q2-tab-container's shadow root; hover the second one.
46
+ const box = await page.locator('q2-tab-container').evaluate((el) => {
47
+ var _a;
48
+ const btns = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('button');
49
+ if (!btns || btns.length < 2)
50
+ throw new Error('q2-tab-container tab buttons not found in shadow DOM');
51
+ const r = btns[1].getBoundingClientRect();
52
+ return { x: r.x, y: r.y, width: r.width, height: r.height };
53
+ });
54
+ await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);
55
+ await page.waitForTimeout(50);
56
+ await expect(page).toHaveScreenshot(`q2-tab-container--${variant.name}--hover--${theme}.png`);
57
+ });
58
+ };
59
+ const focusCase = (variant, theme) => {
60
+ test(`q2-tab-container--${variant.name}--focus — ${theme}`, async ({ page }) => {
61
+ await setupPage(page, variant.html, { theme });
62
+ await page.keyboard.press('Tab');
63
+ await expect(page).toHaveScreenshot(`q2-tab-container--${variant.name}--focus--${theme}.png`);
64
+ });
65
+ };
66
+ test.describe('q2-tab-container — variants × themes', () => {
67
+ for (const variant of VARIANTS) {
68
+ for (const theme of THEMES) {
69
+ if (variant.states.includes('resting'))
70
+ restingCase(variant, theme);
71
+ if (variant.states.includes('hover'))
72
+ hoverCase(variant, theme);
73
+ if (variant.states.includes('focus'))
74
+ focusCase(variant, theme);
75
+ }
76
+ }
77
+ });
78
+ //# sourceMappingURL=q2-tab-container-test.vr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-tab-container-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-tab-container/test/q2-tab-container-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 PANES = (name: string) => `\n <q2-tab-pane name=\"${name}\" value=\"1\" label=\"Tab One\"><p>Content one</p></q2-tab-pane>\n <q2-tab-pane name=\"${name}\" value=\"2\" label=\"Tab Two\"><p>Content two</p></q2-tab-pane>\n <q2-tab-pane name=\"${name}\" value=\"3\" label=\"Tab Three\"><p>Content three</p></q2-tab-pane>\n`;\n\nconst BADGE_PANES = (name: string) => `\n <q2-tab-pane name=\"${name}\" value=\"1\" label=\"Inbox\" badge-count=\"5\"><p>Inbox</p></q2-tab-pane>\n <q2-tab-pane name=\"${name}\" value=\"2\" label=\"Sent\"><p>Sent</p></q2-tab-pane>\n <q2-tab-pane name=\"${name}\" value=\"3\" label=\"Alerts\" badge-count=\"2\" badge-status=\"warning\"><p>Alerts</p></q2-tab-pane>\n`;\n\nconst VARIANTS: Variant[] = [\n {\n name: 'default-main',\n html: `<q2-tab-container name=\"main-tabs\" value=\"1\">${PANES('main-tabs')}</q2-tab-container>`,\n states: ['resting', 'hover', 'focus'],\n },\n {\n name: 'type-section',\n html: `<q2-tab-container name=\"section-tabs\" value=\"1\" type=\"section\">${PANES('section-tabs')}</q2-tab-container>`,\n states: ['resting'],\n },\n {\n name: 'color-alt',\n html: `<q2-tab-container name=\"alt-tabs\" value=\"1\" color=\"alt\">${PANES('alt-tabs')}</q2-tab-container>`,\n states: ['resting'],\n },\n {\n name: 'with-badges',\n html: `<q2-tab-container name=\"badge-tabs\" value=\"1\">${BADGE_PANES('badge-tabs')}</q2-tab-container>`,\n states: ['resting'],\n },\n];\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-tab-container--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await expect(page).toHaveScreenshot(`q2-tab-container--${variant.name}--resting--${theme}.png`);\n });\n};\n\nconst hoverCase = (variant: Variant, theme: Theme) => {\n test(`q2-tab-container--${variant.name}--hover — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n // Tab buttons live in q2-tab-container's shadow root; hover the second one.\n const box = await page.locator('q2-tab-container').evaluate((el: HTMLElement) => {\n const btns = el.shadowRoot?.querySelectorAll<HTMLButtonElement>('button');\n if (!btns || btns.length < 2) throw new Error('q2-tab-container tab buttons not found in shadow DOM');\n const r = btns[1].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-tab-container--${variant.name}--hover--${theme}.png`);\n });\n};\n\nconst focusCase = (variant: Variant, theme: Theme) => {\n test(`q2-tab-container--${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-tab-container--${variant.name}--focus--${theme}.png`);\n });\n};\n\ntest.describe('q2-tab-container — 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"]}
@@ -19,7 +19,7 @@ export class Q2TabPane {
19
19
  // #endregion
20
20
  // #region Render Methods
21
21
  render() {
22
- return (h("div", { key: '9e30ea978de56faef92a68fe53d20bb3c691472e', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, h("slot", { key: '0e89751c2212dfb0a7668c7cb720460022960618' })));
22
+ return (h("div", { key: '9708be0237a811a3ee3b1b4a4c308bae1032aee9', id: `tab-pane-${this.guid}-${this.index}`, class: `tab-pane${this.selected ? '' : ' hidden'}`, role: "tabpanel", tabindex: "-1", "aria-hidden": `${!this.selected}`, "aria-labelledby": `tab-${this.guid}-${this.index}` }, h("slot", { key: 'ce7039cace68374f14982564041f18e08dac9eb7' })));
23
23
  }
24
24
  static get is() { return "q2-tab-pane"; }
25
25
  static get encapsulation() { return "shadow"; }
@@ -65,6 +65,35 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ /**
69
+ * @prop --tct-tag-background: (<color>) Controls the background color of the tag in its default state.
70
+ * @prop --tct-tag-color: (<color>) Controls the text color of the tag in its default state.
71
+ * @prop --tct-tag-border-color?: (<color>) Controls the optional border color of the tag in its default state.
72
+ * @prop --tct-tag-border-radius: (<length-percentage>) Controls the corner radius of the tag.
73
+ * @prop --tct-tag-border-style?: (<custom-ident>) Controls the optional border style of the tag.
74
+ * @prop --tct-tag-border-width?: (<length>+) Controls the optional border width of the tag.
75
+ * @prop --tct-tag-font-size?: (<length-percentage>) Controls the optional font size of the tag label.
76
+ * @prop --tct-tag-font-weight?: (<number>) Controls the optional font weight of the tag label.
77
+ * @prop --tct-tag-height: (<length>) Controls the height of the tag pill.
78
+ * @prop --tct-tag-margin: (<length-percentage>+) Controls the trailing inline margin between sibling tags.
79
+ * @prop --tct-tag-padding-inline: (<length-percentage>+) Controls the inline padding of the tag label.
80
+ * @prop --tct-tag-btn-size: (<length>) Controls the size of the tag's close button icon.
81
+ * @prop --tct-tag-clickable-size: (<length>) Controls the size of the tag's close button hit target.
82
+ * @prop --tct-tag-focus-visible-box-shadow: (*) Controls the box shadow of the tag when focused via keyboard.
83
+ * @prop --tct-tag-decorator-icon-primary-stroke?: (<color>) Controls the optional primary stroke color of the slotted decorator icon in the default theme.
84
+ * @prop --tct-tag-decorator-icon-secondary-stroke?: (<color>) Controls the optional secondary stroke color of the slotted decorator icon in the default theme.
85
+ * @prop --tct-tag-primary-background: (<color>) Controls the background color of the tag when theme is primary.
86
+ * @prop --tct-tag-primary-font-color: (<color>) Controls the text color of the tag when theme is primary.
87
+ * @prop --tct-tag-primary-border-color: (<color>) Controls the border color of the tag when theme is primary.
88
+ * @prop --tct-tag-primary-decorator-icon-primary-stroke?: (<color>) Controls the optional primary stroke color of the slotted decorator icon when theme is primary.
89
+ * @prop --tct-tag-primary-decorator-icon-secondary-stroke?: (<color>) Controls the optional secondary stroke color of the slotted decorator icon when theme is primary.
90
+ * @prop --tct-tag-secondary-background: (<color>) Controls the background color of the tag when theme is secondary.
91
+ * @prop --tct-tag-secondary-font-color: (<color>) Controls the text color of the tag when theme is secondary.
92
+ * @prop --tct-tag-secondary-border-color: (<color>) Controls the border color of the tag when theme is secondary.
93
+ * @prop --tct-tag-tertiary-background: (<color>) Controls the background color of the tag when theme is tertiary.
94
+ * @prop --tct-tag-tertiary-font-color: (<color>) Controls the text color of the tag when theme is tertiary.
95
+ * @prop --tct-tag-tertiary-border-color: (<color>) Controls the border color of the tag when theme is tertiary.
96
+ */
68
97
  :host {
69
98
  display: inline-block;
70
99
  position: relative;
@@ -84,7 +113,7 @@ button {
84
113
  color: var(--comp-tag-color);
85
114
  border-radius: var(--tct-tag-border-radius, var(--t-tag-border-radius, var(--app-border-radius-1, 4px)));
86
115
  border-width: var(--tct-tag-border-width, 0);
87
- border-style: var(--tct-tag-border-style, 0);
116
+ border-style: var(--tct-tag-border-style, none);
88
117
  border-color: var(--comp-tag-border-color);
89
118
  font-size: var(--tct-tag-font-size, inherit);
90
119
  font-weight: var(--tct-tag-font-weight, inherit);
@@ -198,7 +198,7 @@ export class Q2Tag {
198
198
  if (this.optionCount)
199
199
  wrapperClassNames.push('has-options');
200
200
  const shouldShowOptions = this.optionCount > 0;
201
- return (h(Host, { key: '4c8e6f24bb68ab17d54896ad3ba6fb1f963f09e3' }, h("click-elsewhere", { key: '390cc4ed1ea29105303051d334752e8825a92d1b', onChange: this.onClickElsewhere }, shouldShowOptions ? (h(Fragment, null, h("div", { class: "btn-wrapper", onClick: this.handleWrapperClick }, h("button", { class: "tag-wrapper", ref: el => (this.dropdownBtn = el), "test-id": "btn-control", type: "button", role: "combobox", onClick: this.handleClick, onKeyDown: this.handleKeydown, onFocusout: this.handleButtonFocusout, "aria-controls": "option-list", "aria-expanded": open ? 'true' : 'false', "aria-describedby": "option-description", "aria-label": loc(this.label) }, h("div", { class: wrapperClassNames.join(' ') }, loc(this.label)), h("q2-icon", { type: "options" }))), this.renderHiddenElement())) : (h("div", { class: "tag-wrapper", onClick: e => e.stopPropagation() }, h("div", { class: wrapperClassNames.join(' ') }, h("slot", { name: "decorator" }), loc(this.label)))), shouldShowOptions && (h("q2-popover", { key: '47a36ed4d61e060057dfdd9ab5ea209210bae7b1', ref: el => (this.popoverElement = el), controlElement: this.dropdownBtn, open: this.open, maxHeight: this.popoverMaxHeight, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment }, h("q2-option-list", { key: 'fdb74513951317be67174d656f7b89e2e6ee5561', id: "option-list", ref: el => (this.optionList = el), onChange: this.handleChange, type: "menu", align: "right", label: loc('tecton.element.optionList.label', [this.optionListLabel]), "no-select": true }, h("slot", { key: '3848cc9302b88fac6abb996c9f0d91d6e71f9ae2' })))))));
201
+ return (h(Host, { key: 'ac010dec21b5c071855f2a504579aee1e75f7748' }, h("click-elsewhere", { key: 'fb32e3ba62d2cd1e9e2114c8891dc4a646a9c402', onChange: this.onClickElsewhere }, shouldShowOptions ? (h(Fragment, null, h("div", { class: "btn-wrapper", onClick: this.handleWrapperClick }, h("button", { class: "tag-wrapper", ref: el => (this.dropdownBtn = el), "test-id": "btn-control", type: "button", role: "combobox", onClick: this.handleClick, onKeyDown: this.handleKeydown, onFocusout: this.handleButtonFocusout, "aria-controls": "option-list", "aria-expanded": open ? 'true' : 'false', "aria-describedby": "option-description", "aria-label": loc(this.label) }, h("div", { class: wrapperClassNames.join(' ') }, loc(this.label)), h("q2-icon", { type: "options" }))), this.renderHiddenElement())) : (h("div", { class: "tag-wrapper", onClick: e => e.stopPropagation() }, h("div", { class: wrapperClassNames.join(' ') }, h("slot", { name: "decorator" }), loc(this.label)))), shouldShowOptions && (h("q2-popover", { key: '122b59874ab5674ac67e82ee4d489737394aad84', ref: el => (this.popoverElement = el), controlElement: this.dropdownBtn, open: this.open, maxHeight: this.popoverMaxHeight, minHeight: this.popoverMinHeight, direction: this.popoverDirection, align: this.popoverAlignment }, h("q2-option-list", { key: '7f6249e823190a11c5e28912b874393a970d7902', id: "option-list", ref: el => (this.optionList = el), onChange: this.handleChange, type: "menu", align: "right", label: loc('tecton.element.optionList.label', [this.optionListLabel]), "no-select": true }, h("slot", { key: 'a244785b7e8c4f626070e8389da3d74ca94fb717' })))))));
202
202
  }
203
203
  static get is() { return "q2-tag"; }
204
204
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,83 @@
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 VARIANTS = [
10
+ {
11
+ name: 'default',
12
+ html: `<q2-tag label="My Tag"></q2-tag>`,
13
+ states: ['resting', 'hover', 'focus'],
14
+ },
15
+ {
16
+ name: 'theme-primary',
17
+ html: `<q2-tag label="My Tag" theme="primary"></q2-tag>`,
18
+ states: ['resting', 'hover', 'focus'],
19
+ },
20
+ {
21
+ name: 'theme-secondary',
22
+ html: `<q2-tag label="My Tag" theme="secondary"></q2-tag>`,
23
+ states: ['resting', 'hover', 'focus'],
24
+ },
25
+ {
26
+ name: 'theme-tertiary',
27
+ html: `<q2-tag label="My Tag" theme="tertiary"></q2-tag>`,
28
+ states: ['resting', 'hover', 'focus'],
29
+ },
30
+ {
31
+ name: 'with-icon',
32
+ html: `<q2-tag label="My Tag"><q2-icon slot="decorator" type="star"></q2-icon></q2-tag>`,
33
+ states: ['resting'],
34
+ },
35
+ {
36
+ name: 'with-badge',
37
+ html: `<q2-tag label="My Tag"><q2-badge slot="decorator" value="TCT" theme="primary"></q2-badge></q2-tag>`,
38
+ states: ['resting'],
39
+ },
40
+ {
41
+ // popover-alignment="left" so the dropdown opens rightward into the viewport.
42
+ // Expanded state intentionally not snapshotted: the dropdown's text rendering
43
+ // against translucent backgrounds (glassmorphism, flat) drifts >0.1% between
44
+ // runs, which is too unstable for VR. Popover open behavior is covered by
45
+ // q2-pill and q2-select VR tests.
46
+ name: 'with-options',
47
+ html: `<q2-tag label="My Tag" popover-alignment="left">${OPTIONS}</q2-tag>`,
48
+ states: ['resting'],
49
+ },
50
+ ];
51
+ const restingCase = (variant, theme) => {
52
+ test(`q2-tag--${variant.name}--resting — ${theme}`, async ({ page }) => {
53
+ await setupPage(page, variant.html, { theme });
54
+ await expect(page).toHaveScreenshot(`q2-tag--${variant.name}--resting--${theme}.png`);
55
+ });
56
+ };
57
+ const hoverCase = (variant, theme) => {
58
+ test(`q2-tag--${variant.name}--hover — ${theme}`, async ({ page }) => {
59
+ await setupPage(page, variant.html, { theme });
60
+ await page.locator('q2-tag').hover();
61
+ await expect(page).toHaveScreenshot(`q2-tag--${variant.name}--hover--${theme}.png`);
62
+ });
63
+ };
64
+ const focusCase = (variant, theme) => {
65
+ test(`q2-tag--${variant.name}--focus — ${theme}`, async ({ page }) => {
66
+ await setupPage(page, variant.html, { theme });
67
+ await page.keyboard.press('Tab');
68
+ await expect(page).toHaveScreenshot(`q2-tag--${variant.name}--focus--${theme}.png`);
69
+ });
70
+ };
71
+ test.describe('q2-tag — variants × themes', () => {
72
+ for (const variant of VARIANTS) {
73
+ for (const theme of THEMES) {
74
+ if (variant.states.includes('resting'))
75
+ restingCase(variant, theme);
76
+ if (variant.states.includes('hover'))
77
+ hoverCase(variant, theme);
78
+ if (variant.states.includes('focus'))
79
+ focusCase(variant, theme);
80
+ }
81
+ }
82
+ });
83
+ //# sourceMappingURL=q2-tag-test.vr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-tag-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-tag/test/q2-tag-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 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 VARIANTS: Variant[] = [\n {\n name: 'default',\n html: `<q2-tag label=\"My Tag\"></q2-tag>`,\n states: ['resting', 'hover', 'focus'],\n },\n {\n name: 'theme-primary',\n html: `<q2-tag label=\"My Tag\" theme=\"primary\"></q2-tag>`,\n states: ['resting', 'hover', 'focus'],\n },\n {\n name: 'theme-secondary',\n html: `<q2-tag label=\"My Tag\" theme=\"secondary\"></q2-tag>`,\n states: ['resting', 'hover', 'focus'],\n },\n {\n name: 'theme-tertiary',\n html: `<q2-tag label=\"My Tag\" theme=\"tertiary\"></q2-tag>`,\n states: ['resting', 'hover', 'focus'],\n },\n {\n name: 'with-icon',\n html: `<q2-tag label=\"My Tag\"><q2-icon slot=\"decorator\" type=\"star\"></q2-icon></q2-tag>`,\n states: ['resting'],\n },\n {\n name: 'with-badge',\n html: `<q2-tag label=\"My Tag\"><q2-badge slot=\"decorator\" value=\"TCT\" theme=\"primary\"></q2-badge></q2-tag>`,\n states: ['resting'],\n },\n {\n // popover-alignment=\"left\" so the dropdown opens rightward into the viewport.\n // Expanded state intentionally not snapshotted: the dropdown's text rendering\n // against translucent backgrounds (glassmorphism, flat) drifts >0.1% between\n // runs, which is too unstable for VR. Popover open behavior is covered by\n // q2-pill and q2-select VR tests.\n name: 'with-options',\n html: `<q2-tag label=\"My Tag\" popover-alignment=\"left\">${OPTIONS}</q2-tag>`,\n states: ['resting'],\n },\n];\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-tag--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await expect(page).toHaveScreenshot(`q2-tag--${variant.name}--resting--${theme}.png`);\n });\n};\n\nconst hoverCase = (variant: Variant, theme: Theme) => {\n test(`q2-tag--${variant.name}--hover — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await page.locator('q2-tag').hover();\n await expect(page).toHaveScreenshot(`q2-tag--${variant.name}--hover--${theme}.png`);\n });\n};\n\nconst focusCase = (variant: Variant, theme: Theme) => {\n test(`q2-tag--${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-tag--${variant.name}--focus--${theme}.png`);\n });\n};\n\ntest.describe('q2-tag — 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,86 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ /**
69
+ * @prop --tct-textarea-margin: (<length-percentage>+) Controls the outer margin of the textarea host.
70
+ * @prop --tct-textarea-margin-top: (<length-percentage>) Controls the top margin of the textarea host when --tct-textarea-margin is not set.
71
+ * @prop --tct-textarea-margin-bottom: (<length-percentage>) Controls the bottom margin of the textarea host when --tct-textarea-margin is not set.
72
+ * @prop --tct-textarea-padding: (<length-percentage>+) Controls the inner padding of the textarea element.
73
+ * @prop --tct-textarea-font-color: (<color>) Controls the text color of the textarea content.
74
+ * @prop --tct-textarea-font-size?: (<length-percentage>) Controls the optional font size of the textarea content.
75
+ * @prop --tct-textarea-font-weight: (<number>) Controls the font weight of the textarea content.
76
+ * @prop --tct-textarea-background: (<color>) Controls the background color of the textarea in its default state.
77
+ * @prop --tct-textarea-backdrop-filter?: (*) Controls the optional backdrop-filter of the textarea in its default state.
78
+ * @prop --tct-textarea-border-color: (<color>) Controls the border color of the textarea in its default state.
79
+ * @prop --tct-textarea-border-top-width: (<length>) Controls the top border width of the textarea.
80
+ * @prop --tct-textarea-border-right-width: (<length>) Controls the right border width of the textarea.
81
+ * @prop --tct-textarea-border-bottom-width: (<length>) Controls the bottom border width of the textarea.
82
+ * @prop --tct-textarea-border-left-width: (<length>) Controls the left border width of the textarea.
83
+ * @prop --tct-textarea-border-top-left-radius: (<length-percentage>) Controls the top-left corner radius of the textarea.
84
+ * @prop --tct-textarea-border-top-right-radius: (<length-percentage>) Controls the top-right corner radius of the textarea.
85
+ * @prop --tct-textarea-border-bottom-right-radius: (<length-percentage>) Controls the bottom-right corner radius of the textarea.
86
+ * @prop --tct-textarea-border-bottom-left-radius: (<length-percentage>) Controls the bottom-left corner radius of the textarea.
87
+ * @prop --tct-textarea-box-shadow?: (*) Controls the optional box shadow of the textarea in its default state.
88
+ * @prop --tct-textarea-min-height: (<length>) Controls the minimum height of the textarea.
89
+ * @prop --tct-textarea-min-width: (<length>) Controls the minimum width of the textarea.
90
+ * @prop --tct-textarea-tween: (*) Controls the transition timing of textarea state changes (background, border, etc.).
91
+ * @prop --tct-textarea-placeholder-font-color: (<color>) Controls the placeholder text color of the textarea.
92
+ * @prop --tct-textarea-disabled-opacity: (<number>) Controls the opacity of the textarea when disabled.
93
+ * @prop --tct-textarea-disabled-backdrop-filter?: (*) Controls the optional backdrop-filter of the textarea when disabled.
94
+ * @prop --tct-textarea-hover-background: (<color>) Controls the background color of the textarea on hover.
95
+ * @prop --tct-textarea-hover-backdrop-filter?: (*) Controls the optional backdrop-filter of the textarea on hover.
96
+ * @prop --tct-textarea-hover-border-color: (<color>) Controls the border color of the textarea on hover.
97
+ * @prop --tct-textarea-hover-box-shadow: (*) Controls the box shadow of the textarea on hover.
98
+ * @prop --tct-textarea-hover-ring-color?: (<color>) Controls the optional outer ring color of the textarea hover effect.
99
+ * @prop --tct-textarea-hover-label-font-color?: (<color>) Controls the optional label text color when the textarea is hovered.
100
+ * @prop --tct-textarea-focus-background: (<color>) Controls the background color of the textarea on focus.
101
+ * @prop --tct-textarea-focus-backdrop-filter?: (*) Controls the optional backdrop-filter of the textarea on focus.
102
+ * @prop --tct-textarea-focus-border-color: (<color>) Controls the border color of the textarea on focus.
103
+ * @prop --tct-textarea-focus-box-shadow: (*) Controls the box shadow of the textarea on focus.
104
+ * @prop --tct-textarea-focus-label-font-color?: (<color>) Controls the optional label text color when the textarea is focused.
105
+ * @prop --tct-textarea-error-background: (<color>) Controls the background color of the textarea in the error state.
106
+ * @prop --tct-textarea-error-backdrop-filter?: (*) Controls the optional backdrop-filter of the textarea in the error state.
107
+ * @prop --tct-textarea-error-border-color: (<color>) Controls the border color of the textarea in the error state.
108
+ * @prop --tct-textarea-error-box-shadow?: (*) Controls the optional box shadow of the textarea in the error state.
109
+ * @prop --tct-textarea-error-label-font-color?: (<color>) Controls the optional label text color in the error state.
110
+ * @prop --tct-textarea-error-focus-background: (<color>) Controls the background color of the textarea in the error+focus state.
111
+ * @prop --tct-textarea-error-focus-backdrop-filter?: (*) Controls the optional backdrop-filter of the textarea in the error+focus state.
112
+ * @prop --tct-textarea-error-focus-border-color: (<color>) Controls the border color of the textarea in the error+focus state.
113
+ * @prop --tct-textarea-error-focus-box-shadow: (*) Controls the box shadow of the textarea in the error+focus state.
114
+ * @prop --tct-textarea-error-focus-label-font-color?: (<color>) Controls the optional label text color in the error+focus state.
115
+ * @prop --tct-textarea-error-hover-background: (<color>) Controls the background color of the textarea in the error+hover state.
116
+ * @prop --tct-textarea-error-hover-backdrop-filter?: (*) Controls the optional backdrop-filter of the textarea in the error+hover state.
117
+ * @prop --tct-textarea-error-hover-border-color: (<color>) Controls the border color of the textarea in the error+hover state.
118
+ * @prop --tct-textarea-error-hover-box-shadow: (*) Controls the box shadow of the textarea in the error+hover state.
119
+ * @prop --tct-textarea-error-hover-label-font-color?: (<color>) Controls the optional label text color in the error+hover state.
120
+ * @prop --tct-textarea-label-font-color?: (<color>) Controls the optional text color of the textarea label.
121
+ * @prop --tct-textarea-label-font-size?: (<length-percentage>) Controls the optional font size of the textarea label.
122
+ * @prop --tct-textarea-label-font-weight: (<number>) Controls the font weight of the textarea label.
123
+ * @prop --tct-textarea-label-letter-spacing?: (<length>) Controls the optional letter spacing of the textarea label.
124
+ * @prop --tct-textarea-label-text-transform?: (<custom-ident>) Controls the optional text transform of the textarea label.
125
+ * @prop --tct-textarea-label-padding: (<length-percentage>+) Controls the inner padding of the textarea label.
126
+ * @prop --tct-textarea-label-margin: (<length-percentage>+) Controls the outer margin of the textarea label.
127
+ * @prop --tct-textarea-label-optional-margin: (<length-percentage>+) Controls the outer margin of the "(optional)" indicator next to the label.
128
+ * @prop --tct-textarea-label-optional-font-color: (<color>) Controls the text color of the "(optional)" indicator next to the label.
129
+ * @prop --tct-textarea-label-optional-font-size: (<length-percentage>) Controls the font size of the "(optional)" indicator next to the label.
130
+ * @prop --tct-textarea-label-optional-font-weight: (<number>) Controls the font weight of the "(optional)" indicator next to the label.
131
+ * @prop --tct-textarea-icon-stroke-primary: (<color>) Controls the primary stroke color of icons inside the textarea.
132
+ * @prop --tct-textarea-message-box-shadow: (*) Controls the box shadow of the textarea messages container.
133
+ * @prop --tct-textarea-messages-font-color?: (<color>) Controls the optional text color of the textarea messages container.
134
+ * @prop --tct-textarea-messages-margin-top: (<length-percentage>) Controls the top margin of the textarea messages container.
135
+ * @prop --tct-textarea-messages-tween: (*) Controls the transition timing of the textarea messages container.
136
+ * @prop --tct-textarea-max-length-color: (<color>) Controls the text color of the max-length counter.
137
+ * @prop --tct-textarea-max-length-font-size: (<length-percentage>) Controls the font size of the max-length counter.
138
+ * @prop --tct-textarea-resize-btn-background?: (<color>) Controls the optional background color of the resize handle button.
139
+ * @prop --tct-textarea-resize-btn-height: (<length>) Controls the height of the resize handle button.
140
+ * @prop --tct-textarea-resize-btn-width: (<length>) Controls the width of the resize handle button.
141
+ * @prop --tct-textarea-resize-color: (<color>) Controls the stroke color of the resize handle icon.
142
+ * @prop --tct-textarea-resize-icon-size: (<length>) Controls the size of the resize handle icon.
143
+ * @prop --tct-textarea-resize-icon-padding: (<length-percentage>) Controls the padding around the resize handle icon.
144
+ * @prop --tct-textarea-resize-stroke-width: (<number>) Controls the stroke width of the resize handle icon.
145
+ * @prop --tct-textarea-resize-right: (<length-percentage>) Controls the right offset of the resize handle button.
146
+ * @prop --tct-textarea-resize-bottom: (<length-percentage>) Controls the bottom offset of the resize handle button.
147
+ */
68
148
  :host {
69
149
  --comp-default-textarea-margin: var(--tct-textarea-margin-top, var(--t-textarea-margin-top, var(--app-scale-5x, 25px))) 0 var(--tct-textarea-margin-bottom, var(--t-textarea-margin-bottom, var(--app-scale-5x, 25px)));
70
150
  display: block;
@@ -0,0 +1,102 @@
1
+ import { expect } from "@playwright/test";
2
+ import { test } from "@stencil/playwright";
3
+ import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
4
+ const VARIANTS = [
5
+ {
6
+ name: 'default',
7
+ html: `<q2-textarea label="Memo"></q2-textarea>`,
8
+ states: ['resting', 'focus'],
9
+ },
10
+ {
11
+ name: 'with-value',
12
+ html: `<q2-textarea label="Memo" value="Some content here"></q2-textarea>`,
13
+ states: ['resting', 'focus'],
14
+ },
15
+ {
16
+ name: 'optional',
17
+ html: `<q2-textarea label="Memo" optional></q2-textarea>`,
18
+ states: ['resting'],
19
+ },
20
+ {
21
+ name: 'readonly',
22
+ html: `<q2-textarea label="Memo" readonly value="Read-only content"></q2-textarea>`,
23
+ states: ['resting', 'focus'],
24
+ },
25
+ {
26
+ name: 'disabled',
27
+ html: `<q2-textarea label="Memo" disabled value="Disabled content"></q2-textarea>`,
28
+ states: ['resting'],
29
+ },
30
+ {
31
+ name: 'hide-label',
32
+ html: `<q2-textarea label="Hidden" hide-label placeholder="Type here..."></q2-textarea>`,
33
+ states: ['resting'],
34
+ },
35
+ {
36
+ name: 'with-maxlength',
37
+ html: `<q2-textarea label="Memo" maxlength="200" value="Some content"></q2-textarea>`,
38
+ states: ['resting', 'focus'],
39
+ },
40
+ {
41
+ name: 'with-hints',
42
+ html: `<q2-textarea label="Memo"></q2-textarea>`,
43
+ states: ['focus'],
44
+ setup: 'with-hints',
45
+ },
46
+ {
47
+ name: 'with-errors',
48
+ html: `<q2-textarea label="Memo"></q2-textarea>`,
49
+ states: ['resting', 'focus'],
50
+ setup: 'with-errors',
51
+ },
52
+ {
53
+ name: 'resize-none',
54
+ html: `<q2-textarea label="Memo" resize="none"></q2-textarea>`,
55
+ states: ['resting'],
56
+ },
57
+ {
58
+ name: 'rows-custom',
59
+ html: `<q2-textarea label="Memo" rows="5" value="Line one\nLine two\nLine three"></q2-textarea>`,
60
+ states: ['resting'],
61
+ },
62
+ ];
63
+ const applySetup = async (page, setup) => {
64
+ if (!setup)
65
+ return;
66
+ if (setup === 'with-hints') {
67
+ await page.locator('q2-textarea').evaluate((el) => {
68
+ el.hints = ['This is a helpful hint.', 'Another hint to consider.'];
69
+ });
70
+ }
71
+ else if (setup === 'with-errors') {
72
+ await page.locator('q2-textarea').evaluate((el) => {
73
+ el.errors = ['This field is required.', 'Value must be at least 10 characters.'];
74
+ });
75
+ }
76
+ };
77
+ const restingCase = (variant, theme) => {
78
+ test(`q2-textarea--${variant.name}--resting — ${theme}`, async ({ page }) => {
79
+ await setupPage(page, variant.html, { theme });
80
+ await applySetup(page, variant.setup);
81
+ await expect(page).toHaveScreenshot(`q2-textarea--${variant.name}--resting--${theme}.png`);
82
+ });
83
+ };
84
+ const focusCase = (variant, theme) => {
85
+ test(`q2-textarea--${variant.name}--focus — ${theme}`, async ({ page }) => {
86
+ await setupPage(page, variant.html, { theme });
87
+ await applySetup(page, variant.setup);
88
+ await page.keyboard.press('Tab');
89
+ await expect(page).toHaveScreenshot(`q2-textarea--${variant.name}--focus--${theme}.png`);
90
+ });
91
+ };
92
+ test.describe('q2-textarea — variants × themes', () => {
93
+ for (const variant of VARIANTS) {
94
+ for (const theme of THEMES) {
95
+ if (variant.states.includes('resting'))
96
+ restingCase(variant, theme);
97
+ if (variant.states.includes('focus'))
98
+ focusCase(variant, theme);
99
+ }
100
+ }
101
+ });
102
+ //# sourceMappingURL=q2-textarea-test.vr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"q2-textarea-test.vr.js","sourceRoot":"","sources":["../../../../../src/components/q2-textarea/test/q2-textarea-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' | 'focus';\ntype Variant = {\n name: string;\n html: string;\n states: State[];\n /** Optional setup hook to apply array props (errors/hints) after the element is in the DOM. */\n setup?: 'with-hints' | 'with-errors';\n};\n\nconst VARIANTS: Variant[] = [\n {\n name: 'default',\n html: `<q2-textarea label=\"Memo\"></q2-textarea>`,\n states: ['resting', 'focus'],\n },\n {\n name: 'with-value',\n html: `<q2-textarea label=\"Memo\" value=\"Some content here\"></q2-textarea>`,\n states: ['resting', 'focus'],\n },\n {\n name: 'optional',\n html: `<q2-textarea label=\"Memo\" optional></q2-textarea>`,\n states: ['resting'],\n },\n {\n name: 'readonly',\n html: `<q2-textarea label=\"Memo\" readonly value=\"Read-only content\"></q2-textarea>`,\n states: ['resting', 'focus'],\n },\n {\n name: 'disabled',\n html: `<q2-textarea label=\"Memo\" disabled value=\"Disabled content\"></q2-textarea>`,\n states: ['resting'],\n },\n {\n name: 'hide-label',\n html: `<q2-textarea label=\"Hidden\" hide-label placeholder=\"Type here...\"></q2-textarea>`,\n states: ['resting'],\n },\n {\n name: 'with-maxlength',\n html: `<q2-textarea label=\"Memo\" maxlength=\"200\" value=\"Some content\"></q2-textarea>`,\n states: ['resting', 'focus'],\n },\n {\n name: 'with-hints',\n html: `<q2-textarea label=\"Memo\"></q2-textarea>`,\n states: ['focus'],\n setup: 'with-hints',\n },\n {\n name: 'with-errors',\n html: `<q2-textarea label=\"Memo\"></q2-textarea>`,\n states: ['resting', 'focus'],\n setup: 'with-errors',\n },\n {\n name: 'resize-none',\n html: `<q2-textarea label=\"Memo\" resize=\"none\"></q2-textarea>`,\n states: ['resting'],\n },\n {\n name: 'rows-custom',\n html: `<q2-textarea label=\"Memo\" rows=\"5\" value=\"Line one\\nLine two\\nLine three\"></q2-textarea>`,\n states: ['resting'],\n },\n];\n\nconst applySetup = async (page: import('@playwright/test').Page, setup?: Variant['setup']) => {\n if (!setup) return;\n if (setup === 'with-hints') {\n await page.locator('q2-textarea').evaluate((el: HTMLElement & { hints: string[] }) => {\n el.hints = ['This is a helpful hint.', 'Another hint to consider.'];\n });\n } else if (setup === 'with-errors') {\n await page.locator('q2-textarea').evaluate((el: HTMLElement & { errors: string[] }) => {\n el.errors = ['This field is required.', 'Value must be at least 10 characters.'];\n });\n }\n};\n\nconst restingCase = (variant: Variant, theme: Theme) => {\n test(`q2-textarea--${variant.name}--resting — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await applySetup(page, variant.setup);\n await expect(page).toHaveScreenshot(`q2-textarea--${variant.name}--resting--${theme}.png`);\n });\n};\n\nconst focusCase = (variant: Variant, theme: Theme) => {\n test(`q2-textarea--${variant.name}--focus — ${theme}`, async ({ page }) => {\n await setupPage(page, variant.html, { theme });\n await applySetup(page, variant.setup);\n await page.keyboard.press('Tab');\n await expect(page).toHaveScreenshot(`q2-textarea--${variant.name}--focus--${theme}.png`);\n });\n};\n\ntest.describe('q2-textarea — 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('focus')) focusCase(variant, theme);\n }\n }\n});\n"]}
@@ -65,6 +65,21 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ /**
69
+ * @prop --tct-toast-background: (<color>) Controls the background color of the toast container.
70
+ * @prop --tct-toast-text: (<color>) Controls the primary text color of the toast.
71
+ * @prop --tct-toast-subtle: (<color>) Controls the subtle/secondary text color of the toast (description, footer).
72
+ * @prop --tct-toast-border: (<color>) Controls the border color of the toast container in its default theme.
73
+ * @prop --tct-toast-icon-bg: (<color>) Controls the background color of the toast leading icon circle in its default theme.
74
+ * @prop --tct-toast-shadow: (*) Controls the box shadow of the toast container.
75
+ * @prop --tct-toast-gap: (<length-percentage>) Controls the gap between the toast header and body.
76
+ * @prop --tct-toast-padding: (<length-percentage>+) Controls the inner padding of the toast content container.
77
+ * @prop --tct-toast-padding-small: (<length-percentage>+) Controls the inner padding of the toast content container in the small size.
78
+ * @prop --tct-toast-footer-gap: (<length-percentage>) Controls the top margin between the toast body and footer.
79
+ * @prop --tct-toast-footer-spacing: (<length-percentage>) Controls the gap between items within the toast footer.
80
+ * @prop --tct-toast-actions-gap: (<length-percentage>) Controls the gap between action buttons in the toast footer.
81
+ * @prop --tct-toast-close-offset: (<length>) Controls the left margin offset of the toast close button.
82
+ */
68
83
  :host {
69
84
  display: block;
70
85
  }
@@ -65,6 +65,22 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ /**
69
+ * @prop --tct-tooltip-background: (<color>) Controls the background color of the tooltip bubble and arrow.
70
+ * @prop --tct-tooltip-color: (<color>) Controls the text color of the tooltip bubble.
71
+ * @prop --tct-tooltip-font-size: (<length-percentage>) Controls the font size of the tooltip bubble text.
72
+ * @prop --tct-tooltip-font-weight: (<number>) Controls the font weight of the tooltip bubble text.
73
+ * @prop --tct-tooltip-padding: (<length-percentage>+) Controls the inner padding of the tooltip bubble.
74
+ * @prop --tct-tooltip-border-radius: (<length-percentage>) Controls the corner radius of the tooltip bubble.
75
+ * @prop --tct-tooltip-arrow-size: (<length>) Controls the size of the tooltip arrow.
76
+ * @prop --tct-tooltip-offset: (<length-percentage>) Controls the positional offset of the tooltip arrow relative to its target.
77
+ * @prop --tct-tooltip-body-offset: (<length-percentage>) Controls the positional offset of the tooltip bubble relative to its arrow.
78
+ * @prop --tct-tooltip-position: (<length-percentage>) Controls the distance the tooltip bubble sits away from its target.
79
+ * @prop --tct-tooltip-max-width: (<length-percentage>) Controls the maximum width of the tooltip bubble in multiline mode.
80
+ * @prop --tct-tooltip-transition-duration: (<time>) Controls the show/hide transition duration of the tooltip.
81
+ * @prop --tct-tooltip-transition-delay: (<time>) Controls the show/hide transition delay of the tooltip.
82
+ * @prop --tct-tooltip-transition-visible-duration: (<time>) Controls how long the tooltip remains visible after appearing via focus.
83
+ */
68
84
  :host {
69
85
  display: inline-block;
70
86
  }
@@ -159,6 +175,16 @@ button {
159
175
  animation-duration: var(--comp-duration);
160
176
  animation-delay: 0ms, calc(var(--comp-visible-duration) + var(--comp-duration));
161
177
  }
178
+ .tooltip.has-generic-focus:hover:focus-within:before, .tooltip.has-generic-focus:hover:focus-within:after {
179
+ animation-name: tooltippedFade;
180
+ animation-direction: normal;
181
+ animation-delay: 0ms;
182
+ }
183
+ :host([persist-on-hover]:not([persist-on-hover=false])) .tooltip.has-generic-focus:focus-within:before, :host([persist-on-hover]:not([persist-on-hover=false])) .tooltip.has-generic-focus:focus-within:after {
184
+ animation-name: tooltippedFade;
185
+ animation-direction: normal;
186
+ animation-delay: 0ms;
187
+ }
162
188
  .tooltip.has-generic-focus-out:before, .tooltip.has-generic-focus-out:after {
163
189
  visibility: visible;
164
190
  opacity: 0;
@@ -169,6 +195,11 @@ button {
169
195
  animation-direction: reverse;
170
196
  animation-duration: var(--comp-duration);
171
197
  }
198
+ .tooltip.dismissed:before, .tooltip.dismissed:after {
199
+ visibility: hidden;
200
+ opacity: 0;
201
+ animation-name: none;
202
+ }
172
203
  :host([multiline]) .tooltip:after {
173
204
  width: max-content;
174
205
  max-width: var(--tct-tooltip-max-width, var(--t-tooltip-max-width, 200px));