q2-tecton-elements 1.70.2 → 1.71.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 (360) hide show
  1. package/dist/bundle-report.json +556 -231
  2. package/dist/cjs/click-elsewhere_3.cjs.entry.js +2 -2
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/q2-action-group_2.cjs.entry.js +3 -3
  5. package/dist/cjs/q2-action-sheet.cjs.entry.js +4 -3
  6. package/dist/cjs/q2-avatar.cjs.entry.js +1 -1
  7. package/dist/cjs/q2-badge_2.cjs.entry.js +17 -8
  8. package/dist/cjs/q2-btn_2.cjs.entry.js +2 -2
  9. package/dist/cjs/q2-calendar.cjs.entry.js +8 -6
  10. package/dist/cjs/q2-card-image.cjs.entry.js +1 -1
  11. package/dist/cjs/q2-card.cjs.entry.js +1 -1
  12. package/dist/cjs/q2-carousel-pane.cjs.entry.js +1 -1
  13. package/dist/cjs/q2-carousel.cjs.entry.js +108 -74
  14. package/dist/cjs/q2-chart-area.cjs.entry.js +1 -1
  15. package/dist/cjs/q2-chart-bar.cjs.entry.js +1 -1
  16. package/dist/cjs/q2-chart-donut.cjs.entry.js +1 -1
  17. package/dist/cjs/q2-checkbox-group.cjs.entry.js +1 -1
  18. package/dist/cjs/q2-checkbox_2.cjs.entry.js +3 -3
  19. package/dist/cjs/q2-currency.cjs.entry.js +1 -1
  20. package/dist/cjs/q2-data-table.cjs.entry.js +1 -1
  21. package/dist/cjs/q2-detail.cjs.entry.js +1 -1
  22. package/dist/cjs/q2-dropdown-item.cjs.entry.js +1 -1
  23. package/dist/cjs/q2-dropdown.cjs.entry.js +1 -1
  24. package/dist/cjs/q2-editable-field.cjs.entry.js +3 -3
  25. package/dist/cjs/q2-example.cjs.entry.js +1 -1
  26. package/dist/cjs/q2-file-picker.cjs.entry.js +1 -1
  27. package/dist/cjs/q2-form.cjs.entry.js +1 -1
  28. package/dist/cjs/q2-formatted-text.cjs.entry.js +1 -1
  29. package/dist/cjs/q2-icon.cjs.entry.js +1 -1
  30. package/dist/cjs/q2-item.cjs.entry.js +1 -1
  31. package/dist/cjs/q2-legend.cjs.entry.js +1 -1
  32. package/dist/cjs/q2-link_2.cjs.entry.js +2 -2
  33. package/dist/cjs/q2-message.cjs.entry.js +1 -1
  34. package/dist/cjs/q2-meter.cjs.entry.js +1 -1
  35. package/dist/cjs/q2-modal.cjs.entry.js +1 -1
  36. package/dist/cjs/q2-month-picker.cjs.entry.js +1 -1
  37. package/dist/cjs/q2-optgroup.cjs.entry.js +1 -1
  38. package/dist/cjs/q2-option.cjs.entry.js +1 -1
  39. package/dist/cjs/q2-otp.cjs.entry.js +1 -1
  40. package/dist/cjs/q2-pagination.cjs.entry.js +1 -1
  41. package/dist/cjs/q2-pill.cjs.entry.js +18 -2
  42. package/dist/cjs/q2-radio-group.cjs.entry.js +1 -1
  43. package/dist/cjs/q2-radio.cjs.entry.js +1 -1
  44. package/dist/cjs/q2-relative-time.cjs.entry.js +2 -2
  45. package/dist/cjs/q2-search.cjs.entry.js +2 -2
  46. package/dist/cjs/q2-section.cjs.entry.js +3 -3
  47. package/dist/cjs/q2-select.cjs.entry.js +1 -1
  48. package/dist/cjs/q2-stepper-pane.cjs.entry.js +2 -2
  49. package/dist/cjs/q2-stepper-vertical.cjs.entry.js +32 -9
  50. package/dist/cjs/q2-stepper.cjs.entry.js +18 -4
  51. package/dist/cjs/q2-surface.cjs.entry.js +3 -3
  52. package/dist/cjs/q2-tab-container.cjs.entry.js +89 -20
  53. package/dist/cjs/q2-tab-pane.cjs.entry.js +2 -2
  54. package/dist/cjs/q2-tecton-elements.cjs.js +1 -1
  55. package/dist/cjs/q2-textarea.cjs.entry.js +3 -3
  56. package/dist/cjs/q2-toast.cjs.entry.js +1 -1
  57. package/dist/cjs/q2-tooltip.cjs.entry.js +26 -15
  58. package/dist/cjs/tecton-tab-pane.cjs.entry.js +3 -3
  59. package/dist/collection/components/q2-action-group/q2-action-group.css +22 -0
  60. package/dist/collection/components/q2-action-sheet/q2-action-sheet.css +24 -1
  61. package/dist/collection/components/q2-action-sheet/q2-action-sheet.js +3 -2
  62. package/dist/collection/components/q2-avatar/q2-avatar.css +23 -1
  63. package/dist/collection/components/q2-avatar/test/q2-avatar-test.vr.js +13 -1
  64. package/dist/collection/components/q2-badge/q2-badge.css +26 -4
  65. package/dist/collection/components/q2-badge/test/q2-badge-test.vr.js +13 -1
  66. package/dist/collection/components/q2-btn/q2-btn.css +53 -9
  67. package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js +19 -1
  68. package/dist/collection/components/q2-calendar/q2-calendar.css +26 -4
  69. package/dist/collection/components/q2-calendar/q2-calendar.js +7 -5
  70. package/dist/collection/components/q2-calendar/q2-month-picker.css +22 -0
  71. package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +34 -1
  72. package/dist/collection/components/q2-card/q2-card.css +23 -1
  73. package/dist/collection/components/q2-card/test/q2-card-test.vr.js +10 -1
  74. package/dist/collection/components/q2-card-image/q2-card-image.css +23 -1
  75. package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js +9 -1
  76. package/dist/collection/components/q2-carousel/q2-carousel.css +29 -39
  77. package/dist/collection/components/q2-carousel/q2-carousel.js +122 -69
  78. package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js +5 -4
  79. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +22 -0
  80. package/dist/collection/components/q2-chart-area/q2-chart-area.css +22 -0
  81. package/dist/collection/components/q2-chart-bar/q2-chart-bar.css +22 -0
  82. package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +24 -2
  83. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js +13 -1
  84. package/dist/collection/components/q2-checkbox/q2-checkbox.css +23 -1
  85. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js +11 -1
  86. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +23 -1
  87. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js +11 -1
  88. package/dist/collection/components/q2-currency/q2-currency.css +25 -3
  89. package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js +13 -1
  90. package/dist/collection/components/q2-data-table/q2-data-table.css +24 -2
  91. package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js +11 -1
  92. package/dist/collection/components/q2-detail/q2-detail.css +32 -10
  93. package/dist/collection/components/q2-dropdown/q2-dropdown.css +22 -0
  94. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +22 -0
  95. package/dist/collection/components/q2-editable-field/q2-editable-field.css +22 -0
  96. package/dist/collection/components/q2-editable-field/q2-editable-field.js +2 -2
  97. package/dist/collection/components/q2-example/q2-example.css +23 -0
  98. package/dist/collection/components/q2-file-picker/q2-file-picker.css +57 -10
  99. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js +14 -1
  100. package/dist/collection/components/q2-form/q2-form.css +22 -0
  101. package/dist/collection/components/q2-formatted-text/q2-formatted-text.css +25 -3
  102. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js +13 -1
  103. package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
  104. package/dist/collection/components/q2-icon/q2-icon.css +22 -0
  105. package/dist/collection/components/q2-input/q2-input.css +26 -4
  106. package/dist/collection/components/q2-input/q2-input.js +39 -7
  107. package/dist/collection/components/q2-input/test/q2-input-test.vr.js +36 -1
  108. package/dist/collection/components/q2-item/q2-item.css +46 -2
  109. package/dist/collection/components/q2-item/test/q2-item-test.vr.js +12 -1
  110. package/dist/collection/components/q2-legend/q2-legend.css +24 -2
  111. package/dist/collection/components/q2-link/q2-link.css +22 -0
  112. package/dist/collection/components/q2-list/q2-list.css +46 -2
  113. package/dist/collection/components/q2-list/test/q2-list-test.vr.js +12 -1
  114. package/dist/collection/components/q2-loading/q2-loading.css +23 -0
  115. package/dist/collection/components/q2-message/q2-message.css +22 -0
  116. package/dist/collection/components/q2-meter/q2-meter.css +25 -3
  117. package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js +12 -1
  118. package/dist/collection/components/q2-modal/q2-modal.css +23 -1
  119. package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js +12 -1
  120. package/dist/collection/components/q2-optgroup/q2-optgroup.css +23 -1
  121. package/dist/collection/components/q2-option/q2-option.css +22 -0
  122. package/dist/collection/components/q2-option-list/q2-option-list.css +22 -0
  123. package/dist/collection/components/q2-otp/q2-otp.css +27 -4
  124. package/dist/collection/components/q2-otp/test/q2-otp-test.vr.js +12 -1
  125. package/dist/collection/components/q2-pagination/q2-pagination.css +22 -0
  126. package/dist/collection/components/q2-pill/q2-pill.css +42 -2
  127. package/dist/collection/components/q2-pill/q2-pill.js +18 -1
  128. package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js +27 -1
  129. package/dist/collection/components/q2-popover/q2-popover.css +22 -7
  130. package/dist/collection/components/q2-radio/q2-radio.css +24 -2
  131. package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js +12 -1
  132. package/dist/collection/components/q2-radio-group/q2-radio-group.css +23 -1
  133. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js +11 -1
  134. package/dist/collection/components/q2-relative-time/q2-relative-time.css +22 -0
  135. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  136. package/dist/collection/components/q2-resize-observer/q2-resize-observer.css +22 -0
  137. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  138. package/dist/collection/components/q2-search/q2-search.css +22 -0
  139. package/dist/collection/components/q2-search/q2-search.js +1 -1
  140. package/dist/collection/components/q2-section/q2-section.css +23 -1
  141. package/dist/collection/components/q2-section/q2-section.js +2 -2
  142. package/dist/collection/components/q2-section/test/q2-section-test.vr.js +11 -1
  143. package/dist/collection/components/q2-select/q2-select.css +22 -0
  144. package/dist/collection/components/q2-stepper/q2-stepper.css +38 -4
  145. package/dist/collection/components/q2-stepper/q2-stepper.js +17 -3
  146. package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js +12 -1
  147. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.css +22 -0
  148. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +1 -1
  149. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +39 -5
  150. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +31 -8
  151. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js +16 -1
  152. package/dist/collection/components/q2-surface/q2-surface.css +71 -32
  153. package/dist/collection/components/q2-surface/q2-surface.js +7 -7
  154. package/dist/collection/components/q2-surface/test/q2-surface-test.vr.js +54 -0
  155. package/dist/collection/components/q2-tab-container/q2-tab-container.css +112 -6
  156. package/dist/collection/components/q2-tab-container/q2-tab-container.js +114 -21
  157. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js +24 -1
  158. package/dist/collection/components/q2-tab-pane/q2-tab-pane.css +22 -0
  159. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  160. package/dist/collection/components/q2-tag/q2-tag.css +25 -2
  161. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  162. package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js +21 -1
  163. package/dist/collection/components/q2-textarea/q2-textarea.css +24 -2
  164. package/dist/collection/components/q2-textarea/q2-textarea.js +2 -2
  165. package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js +16 -1
  166. package/dist/collection/components/q2-toast/q2-toast.css +22 -0
  167. package/dist/collection/components/q2-tooltip/q2-tooltip.css +27 -19
  168. package/dist/collection/components/q2-tooltip/q2-tooltip.js +32 -21
  169. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js +13 -1
  170. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.css +22 -0
  171. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  172. package/dist/collection/utils/helpers.js +29 -6
  173. package/dist/collection/utils/test/vr-helpers.js +7 -0
  174. package/dist/components/q2-action-group2.js +1 -1
  175. package/dist/components/q2-action-sheet.js +21 -18
  176. package/dist/components/q2-avatar2.js +1 -1
  177. package/dist/components/q2-badge2.js +1 -1
  178. package/dist/components/q2-btn2.js +15 -15
  179. package/dist/components/q2-calendar.js +306 -301
  180. package/dist/components/q2-card-image.js +6 -6
  181. package/dist/components/q2-card.js +14 -14
  182. package/dist/components/q2-carousel-pane2.js +1 -1
  183. package/dist/components/q2-carousel.js +633 -585
  184. package/dist/components/q2-chart-area.js +1 -1
  185. package/dist/components/q2-chart-bar.js +70 -70
  186. package/dist/components/q2-chart-donut.js +1 -1
  187. package/dist/components/q2-checkbox-group.js +42 -42
  188. package/dist/components/q2-checkbox2.js +1 -1
  189. package/dist/components/q2-currency.js +32 -32
  190. package/dist/components/q2-data-table.js +34 -34
  191. package/dist/components/q2-detail.js +5 -5
  192. package/dist/components/q2-dropdown-item2.js +11 -11
  193. package/dist/components/q2-dropdown.js +17 -17
  194. package/dist/components/q2-editable-field.js +12 -11
  195. package/dist/components/q2-example.js +15 -15
  196. package/dist/components/q2-file-picker.js +25 -25
  197. package/dist/components/q2-form.js +11 -11
  198. package/dist/components/q2-formatted-text.js +5 -5
  199. package/dist/components/q2-icon2.js +1 -1
  200. package/dist/components/q2-input2.js +24 -13
  201. package/dist/components/q2-item2.js +1 -1
  202. package/dist/components/q2-legend2.js +56 -56
  203. package/dist/components/q2-link2.js +6 -6
  204. package/dist/components/q2-list2.js +22 -22
  205. package/dist/components/q2-loading2.js +1 -1
  206. package/dist/components/q2-message2.js +20 -20
  207. package/dist/components/q2-meter.js +1 -1
  208. package/dist/components/q2-modal.js +3 -3
  209. package/dist/components/q2-month-picker.js +10 -10
  210. package/dist/components/q2-optgroup2.js +7 -7
  211. package/dist/components/q2-option-list2.js +34 -34
  212. package/dist/components/q2-option2.js +13 -13
  213. package/dist/components/q2-otp.js +5 -5
  214. package/dist/components/q2-pagination.js +58 -58
  215. package/dist/components/q2-pill.js +66 -54
  216. package/dist/components/q2-popover2.js +1 -1
  217. package/dist/components/q2-radio-group.js +5 -5
  218. package/dist/components/q2-radio.js +14 -14
  219. package/dist/components/q2-relative-time.js +10 -10
  220. package/dist/components/q2-resize-observer2.js +9 -9
  221. package/dist/components/q2-search.js +5 -5
  222. package/dist/components/q2-section.js +22 -22
  223. package/dist/components/q2-select2.js +1 -1
  224. package/dist/components/q2-stepper-pane.js +33 -33
  225. package/dist/components/q2-stepper-vertical.js +84 -60
  226. package/dist/components/q2-stepper.js +79 -65
  227. package/dist/components/q2-surface.js +14 -14
  228. package/dist/components/q2-tab-container.js +110 -55
  229. package/dist/components/q2-tab-pane.js +7 -7
  230. package/dist/components/q2-tag2.js +39 -39
  231. package/dist/components/q2-textarea.js +16 -16
  232. package/dist/components/q2-toast.js +22 -22
  233. package/dist/components/q2-tooltip2.js +26 -25
  234. package/dist/components/tecton-tab-pane.js +11 -11
  235. package/dist/esm/click-elsewhere_3.entry.js +2 -2
  236. package/dist/esm/loader.js +1 -1
  237. package/dist/esm/q2-action-group_2.entry.js +3 -3
  238. package/dist/esm/q2-action-sheet.entry.js +4 -3
  239. package/dist/esm/q2-avatar.entry.js +1 -1
  240. package/dist/esm/q2-badge_2.entry.js +17 -8
  241. package/dist/esm/q2-btn_2.entry.js +2 -2
  242. package/dist/esm/q2-calendar.entry.js +8 -6
  243. package/dist/esm/q2-card-image.entry.js +1 -1
  244. package/dist/esm/q2-card.entry.js +1 -1
  245. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  246. package/dist/esm/q2-carousel.entry.js +104 -70
  247. package/dist/esm/q2-chart-area.entry.js +1 -1
  248. package/dist/esm/q2-chart-bar.entry.js +1 -1
  249. package/dist/esm/q2-chart-donut.entry.js +1 -1
  250. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  251. package/dist/esm/q2-checkbox_2.entry.js +3 -3
  252. package/dist/esm/q2-currency.entry.js +1 -1
  253. package/dist/esm/q2-data-table.entry.js +1 -1
  254. package/dist/esm/q2-detail.entry.js +1 -1
  255. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  256. package/dist/esm/q2-dropdown.entry.js +1 -1
  257. package/dist/esm/q2-editable-field.entry.js +3 -3
  258. package/dist/esm/q2-example.entry.js +1 -1
  259. package/dist/esm/q2-file-picker.entry.js +1 -1
  260. package/dist/esm/q2-form.entry.js +1 -1
  261. package/dist/esm/q2-formatted-text.entry.js +1 -1
  262. package/dist/esm/q2-icon.entry.js +1 -1
  263. package/dist/esm/q2-item.entry.js +1 -1
  264. package/dist/esm/q2-legend.entry.js +1 -1
  265. package/dist/esm/q2-link_2.entry.js +2 -2
  266. package/dist/esm/q2-message.entry.js +1 -1
  267. package/dist/esm/q2-meter.entry.js +1 -1
  268. package/dist/esm/q2-modal.entry.js +1 -1
  269. package/dist/esm/q2-month-picker.entry.js +1 -1
  270. package/dist/esm/q2-optgroup.entry.js +1 -1
  271. package/dist/esm/q2-option.entry.js +1 -1
  272. package/dist/esm/q2-otp.entry.js +1 -1
  273. package/dist/esm/q2-pagination.entry.js +1 -1
  274. package/dist/esm/q2-pill.entry.js +18 -2
  275. package/dist/esm/q2-radio-group.entry.js +1 -1
  276. package/dist/esm/q2-radio.entry.js +1 -1
  277. package/dist/esm/q2-relative-time.entry.js +2 -2
  278. package/dist/esm/q2-search.entry.js +2 -2
  279. package/dist/esm/q2-section.entry.js +3 -3
  280. package/dist/esm/q2-select.entry.js +1 -1
  281. package/dist/esm/q2-stepper-pane.entry.js +2 -2
  282. package/dist/esm/q2-stepper-vertical.entry.js +32 -9
  283. package/dist/esm/q2-stepper.entry.js +18 -4
  284. package/dist/esm/q2-surface.entry.js +3 -3
  285. package/dist/esm/q2-tab-container.entry.js +89 -20
  286. package/dist/esm/q2-tab-pane.entry.js +2 -2
  287. package/dist/esm/q2-tecton-elements.js +1 -1
  288. package/dist/esm/q2-textarea.entry.js +3 -3
  289. package/dist/esm/q2-toast.entry.js +1 -1
  290. package/dist/esm/q2-tooltip.entry.js +27 -16
  291. package/dist/esm/tecton-tab-pane.entry.js +3 -3
  292. package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
  293. package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +23 -23
  294. package/dist/q2-tecton-elements/q2-action-group_2.entry.js +42 -42
  295. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +21 -18
  296. package/dist/q2-tecton-elements/q2-avatar.entry.js +1 -1
  297. package/dist/q2-tecton-elements/q2-badge_2.entry.js +25 -15
  298. package/dist/q2-tecton-elements/q2-btn_2.entry.js +2 -2
  299. package/dist/q2-tecton-elements/q2-calendar.entry.js +120 -115
  300. package/dist/q2-tecton-elements/q2-card-image.entry.js +1 -1
  301. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  302. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +11 -11
  303. package/dist/q2-tecton-elements/q2-carousel.entry.js +572 -540
  304. package/dist/q2-tecton-elements/q2-chart-area.entry.js +166 -166
  305. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +190 -190
  306. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +1 -1
  307. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +8 -8
  308. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +7 -7
  309. package/dist/q2-tecton-elements/q2-currency.entry.js +40 -40
  310. package/dist/q2-tecton-elements/q2-data-table.entry.js +64 -64
  311. package/dist/q2-tecton-elements/q2-detail.entry.js +1 -1
  312. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +5 -5
  313. package/dist/q2-tecton-elements/q2-dropdown.entry.js +21 -21
  314. package/dist/q2-tecton-elements/q2-editable-field.entry.js +18 -17
  315. package/dist/q2-tecton-elements/q2-example.entry.js +5 -5
  316. package/dist/q2-tecton-elements/q2-file-picker.entry.js +6 -6
  317. package/dist/q2-tecton-elements/q2-form.entry.js +3 -3
  318. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +3 -3
  319. package/dist/q2-tecton-elements/q2-icon.entry.js +1 -1
  320. package/dist/q2-tecton-elements/q2-item.entry.js +1 -1
  321. package/dist/q2-tecton-elements/q2-legend.entry.js +8 -8
  322. package/dist/q2-tecton-elements/q2-link_2.entry.js +5 -5
  323. package/dist/q2-tecton-elements/q2-message.entry.js +23 -23
  324. package/dist/q2-tecton-elements/q2-meter.entry.js +4 -4
  325. package/dist/q2-tecton-elements/q2-modal.entry.js +3 -3
  326. package/dist/q2-tecton-elements/q2-month-picker.entry.js +39 -39
  327. package/dist/q2-tecton-elements/q2-optgroup.entry.js +13 -13
  328. package/dist/q2-tecton-elements/q2-option.entry.js +22 -22
  329. package/dist/q2-tecton-elements/q2-otp.entry.js +1 -1
  330. package/dist/q2-tecton-elements/q2-pagination.entry.js +11 -11
  331. package/dist/q2-tecton-elements/q2-pill.entry.js +30 -18
  332. package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
  333. package/dist/q2-tecton-elements/q2-radio.entry.js +24 -24
  334. package/dist/q2-tecton-elements/q2-relative-time.entry.js +21 -21
  335. package/dist/q2-tecton-elements/q2-search.entry.js +12 -12
  336. package/dist/q2-tecton-elements/q2-section.entry.js +25 -25
  337. package/dist/q2-tecton-elements/q2-select.entry.js +5 -5
  338. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +16 -16
  339. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +77 -53
  340. package/dist/q2-tecton-elements/q2-stepper.entry.js +44 -30
  341. package/dist/q2-tecton-elements/q2-surface.entry.js +5 -5
  342. package/dist/q2-tecton-elements/q2-tab-container.entry.js +109 -56
  343. package/dist/q2-tecton-elements/q2-tab-pane.entry.js +13 -13
  344. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  345. package/dist/q2-tecton-elements/q2-textarea.entry.js +14 -14
  346. package/dist/q2-tecton-elements/q2-toast.entry.js +6 -6
  347. package/dist/q2-tecton-elements/q2-tooltip.entry.js +25 -24
  348. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +11 -11
  349. package/dist/types/components/q2-carousel/q2-carousel.d.ts +14 -0
  350. package/dist/types/components/q2-input/q2-input.d.ts +7 -1
  351. package/dist/types/components/q2-pill/q2-pill.d.ts +2 -0
  352. package/dist/types/components/q2-stepper/q2-stepper.d.ts +1 -0
  353. package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +3 -2
  354. package/dist/types/components/q2-surface/q2-surface.d.ts +3 -3
  355. package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +17 -3
  356. package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +2 -1
  357. package/dist/types/components.d.ts +50 -21
  358. package/dist/types/utils/helpers.d.ts +16 -1
  359. package/dist/types/utils/test/vr-helpers.d.ts +11 -0
  360. package/package.json +12 -5
@@ -65,6 +65,28 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ @container style(--t-prefers-motion: "reduced") {
69
+ *,
70
+ *::before,
71
+ *::after {
72
+ animation-duration: 0.01ms !important;
73
+ transition-duration: 0.01ms !important;
74
+ animation-delay: 0ms !important;
75
+ transition-delay: 0ms !important;
76
+ }
77
+ }
78
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
79
+ @media (prefers-reduced-motion: reduce) {
80
+ *,
81
+ *::before,
82
+ *::after {
83
+ animation-duration: 0.01ms !important;
84
+ transition-duration: 0.01ms !important;
85
+ animation-delay: 0ms !important;
86
+ transition-delay: 0ms !important;
87
+ }
88
+ }
89
+ }
68
90
  /**
69
91
  * @prop --tct-icon-size: (<length>) Controls the height and width of the icon.
70
92
  * @prop --tct-icon-stroke-primary: (<color>) Controls the primary stroke color of the icon paths.
@@ -65,6 +65,28 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ @container style(--t-prefers-motion: "reduced") {
69
+ *,
70
+ *::before,
71
+ *::after {
72
+ animation-duration: 0.01ms !important;
73
+ transition-duration: 0.01ms !important;
74
+ animation-delay: 0ms !important;
75
+ transition-delay: 0ms !important;
76
+ }
77
+ }
78
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
79
+ @media (prefers-reduced-motion: reduce) {
80
+ *,
81
+ *::before,
82
+ *::after {
83
+ animation-duration: 0.01ms !important;
84
+ transition-duration: 0.01ms !important;
85
+ animation-delay: 0ms !important;
86
+ transition-delay: 0ms !important;
87
+ }
88
+ }
89
+ }
68
90
  /**
69
91
  * @prop --tct-input-margin: (<length-percentage>+) Controls the outer margin of the input host.
70
92
  * @prop --tct-input-margin-top: (<length-percentage>) Controls the top margin of the input host when --tct-input-margin is not set.
@@ -207,14 +229,14 @@ button {
207
229
  --comp-label-optional-margin: var(--tct-input-label-optional-margin, 0 0 0 var(--tct-input-label-optional-margin-left, var(--t-input-label-optional-margin-left, var(--tct-scale-1, var(--app-scale-1x, 5px)))));
208
230
  margin: var(--comp-label-optional-margin);
209
231
  color: var(--tct-input-label-optional-font-color, var(--t-input-label-optional-font-color, var(--t-textA, var(--t-a11y-gray-color, rgba(77, 77, 77, 0.77)))));
210
- font-size: var(--tct-input-label-optional-font-size, var(--t-input-label-optional-font-size, var(--app-font-size-small, 12px)));
232
+ font-size: var(--tct-input-label-optional-font-size, var(--t-input-label-optional-font-size, var(--app-font-size-small, var(--const-px-12, 12px))));
211
233
  font-weight: var(--tct-input-label-optional-font-weight, var(--t-input-label-optional-font-weight, 400));
212
234
  line-height: 1em;
213
235
  }
214
236
 
215
237
  .count-tag {
216
238
  color: var(--tct-input-count-font-color, var(--t-textA, var(--t-a11y-gray-color, rgba(77, 77, 77, 0.77))));
217
- font-size: var(--tct-input-count-font-size, var(--app-font-size-small, 12px));
239
+ font-size: var(--tct-input-count-font-size, var(--app-font-size-small, var(--const-px-12, 12px)));
218
240
  font-weight: var(--tct-input-count-font-weight, 400);
219
241
  text-align: right;
220
242
  width: var(--tct-input-count-width, auto);
@@ -258,7 +280,7 @@ button {
258
280
  --comp-input-border-width: var(--tct-input-border-top-width, 1px) var(--tct-input-border-right-width, 1px)
259
281
  var(--tct-input-border-bottom-width, 1px) var(--tct-input-border-left-width, 1px);
260
282
  --comp-input-border-color: var(--tct-input-border-color, var(--t-input-border-color, var(--t-a11y-gray-color-AA, #404040)));
261
- --comp-input-prefix-clearance: calc(3 * var(--tct-input-prefix-font-size, 14px) + var(--tct-scale-1, 5px));
283
+ --comp-input-prefix-clearance: calc(3 * var(--tct-input-prefix-font-size, var(--const-px-14, 14px)) + var(--tct-scale-1, 5px));
262
284
  --comp-input-icon-clearance: 34px;
263
285
  --comp-input-min-height: var(--tct-input-min-height, var(--t-input-min-height, 44px));
264
286
  --comp-input-max-height: var(--tct-input-max-height, var(--t-input-max-height));
@@ -469,7 +491,7 @@ button {
469
491
  --tct-btn-padding-inline: var(--tct-input-visibility-toggle-padding, var(--app-scale-2x, 10px));
470
492
  --tct-btn-font-weight: var(--tct-input-visibility-toggle-font-weight, 400);
471
493
  color: var(--tct-input-visibility-toggle-font-color, var(--t-primary, #0079c1));
472
- font-size: var(--tct-input-visibility-toggle-font-size, var(--app-font-size-small, 12px));
494
+ font-size: var(--tct-input-visibility-toggle-font-size, var(--app-font-size-small, var(--const-px-12, 12px)));
473
495
  }
474
496
 
475
497
  q2-icon {
@@ -76,6 +76,12 @@ export class Q2Input {
76
76
  * Will assign role to combobox when used inside q2-select and q2-calendar.
77
77
  */
78
78
  this._role = undefined;
79
+ /**
80
+ * Determines whether the input updates its value property as native input occurs.
81
+ *
82
+ * @private
83
+ */
84
+ this._updateValueOnInput = true;
79
85
  /** Indicates the field cannot be focused or interacted with. */
80
86
  this.disabled = false;
81
87
  /**
@@ -104,12 +110,15 @@ export class Q2Input {
104
110
  // when type=number: returns only valid decimal on input event, should not update itself (e.g. typing "1." )
105
111
  if (this.type !== 'number')
106
112
  this.inputField.value = this.formattedValueObject.formattedValue;
107
- mirrorEmit(this, ['input', 'tctInput'], {
113
+ const eventDetail = {
108
114
  value: this.formattedValueObject.value,
109
115
  formattedValue: this.formattedValueObject.fullyFormattedValue,
110
116
  minFormattedLength: this.formattedValueObject.minFormattedLength,
111
117
  ...(this.formattedValueObject.type && { type: this.formattedValueObject.type }),
112
- });
118
+ };
119
+ if (this._updateValueOnInput)
120
+ this.value = eventDetail.value;
121
+ mirrorEmit(this, ['input', 'tctInput'], eventDetail);
113
122
  if (!this.formattedValueObject.value) {
114
123
  mirrorEmit(this, ['clear', 'tctClear'], { source: 'input' });
115
124
  }
@@ -448,7 +457,7 @@ export class Q2Input {
448
457
  return this.valid && !this.hasError;
449
458
  }
450
459
  get inputDescribedBy() {
451
- return this.showMessages ? `${this.inputId}-description` : undefined;
460
+ return this.showMessages || this.hasError ? `${this.inputId}-description` : undefined;
452
461
  }
453
462
  get inputField() {
454
463
  return this.hostElement.shadowRoot.querySelector('.input-field');
@@ -725,14 +734,14 @@ export class Q2Input {
725
734
  renderStandardInputDOM() {
726
735
  const { hasCustomDisplaySlot } = this;
727
736
  const inputClasses = ['input-field'];
728
- const { ariaOwns, ariaHaspopup, ariaActivedescendant } = this.ariaAttributes;
737
+ const { ariaOwns, ariaHaspopup, ariaActivedescendant, ariaExpanded } = this.ariaAttributes;
729
738
  if (hasCustomDisplaySlot)
730
739
  inputClasses.push('sr');
731
- return (h(Fragment, null, hasCustomDisplaySlot && (h("div", { class: "custom-display-container" }, h("slot", { name: "custom-display" }))), h("input", { ref: el => (this.inputRef = el), class: inputClasses.join(' '), id: this.inputId, type: this.computedType, size: this.formattedValueObject.prefix ? 10 : undefined, maxlength: ['date', 'currency'].includes(this.type) ? undefined : this.maxlength || undefined, max: this.max, min: this.min, step: this.step, "aria-current": this.current || undefined, "aria-describedby": this.inputDescribedBy, "aria-required": `${!this.optional}`, "aria-invalid": `${this.hasError}`, "aria-owns": ariaOwns, "aria-haspopup": ariaHaspopup, "aria-activedescendant": ariaActivedescendant, autocomplete: this.computedAutocomplete, autocapitalize: this.autocapitalize, autocorrect: this.autocorrect === 'on' ? 'on' : 'off', autofocus: this.autofocus, placeholder: (this.placeholder && loc(this.placeholder)) || undefined, "test-id": "inputField", readonly: this.readonly || this._preventEntry, disabled: !!this.disabled, onFocus: this.onInputFocus, onBlur: this.onInputBlur, onClick: this.onInputClick, onKeyDown: this.onInputKeydown, onMouseDown: this.onInputMousedown, onInput: this.onInputInput, onPaste: this.onInputPaste, inputmode: this.inputMode, pattern: this.pattern || undefined })));
740
+ return (h(Fragment, null, hasCustomDisplaySlot && (h("div", { class: "custom-display-container" }, h("slot", { name: "custom-display" }))), h("input", { ref: el => (this.inputRef = el), class: inputClasses.join(' '), id: this.inputId, type: this.computedType, size: this.formattedValueObject.prefix ? 10 : undefined, maxlength: ['date', 'currency'].includes(this.type) ? undefined : this.maxlength || undefined, max: this.max, min: this.min, step: this.step, "aria-current": this.current || undefined, "aria-describedby": this.inputDescribedBy, "aria-required": `${!this.optional}`, "aria-invalid": `${this.hasError}`, "aria-owns": ariaOwns, "aria-haspopup": ariaHaspopup, "aria-activedescendant": ariaActivedescendant, "aria-expanded": ariaExpanded || undefined, role: this._role || undefined, autocomplete: this.computedAutocomplete, autocapitalize: this.autocapitalize, autocorrect: this.autocorrect === 'on' ? 'on' : 'off', autofocus: this.autofocus, placeholder: (this.placeholder && loc(this.placeholder)) || undefined, "test-id": "inputField", readonly: this.readonly || this._preventEntry, disabled: !!this.disabled, onFocus: this.onInputFocus, onBlur: this.onInputBlur, onClick: this.onInputClick, onKeyDown: this.onInputKeydown, onMouseDown: this.onInputMousedown, onInput: this.onInputInput, onPaste: this.onInputPaste, inputmode: this.inputMode, pattern: this.pattern || undefined })));
732
741
  }
733
742
  render() {
734
743
  const { ariaControls, ariaExpanded } = this.ariaAttributes;
735
- return (h(Host, { key: 'edb58506d07e300340ece461b1788acfcbaf712a', role: this._role, "aria-controls": ariaControls, "aria-expanded": ariaExpanded }, h("div", { key: '10bcd4e4adb9614628958029aca0d7cb96593c31', class: this.wrapperClasses }, h("div", { key: 'bfad0e782b14bc1ab1c2fd01cacc79d76f82f6ab', class: "label-wrapper" }, renderLabel(this), this.renderCountDOM()), this.renderInputContainerDOM(), renderMessages(this))));
744
+ return (h(Host, { key: '5255e58159b3c614913fec22cc38f8a31d5553bb', role: this._role, "aria-controls": ariaControls, "aria-expanded": ariaExpanded }, h("div", { key: '2dfaa5f10b49bb4ddbfe4c73467c9615559becd8', class: this.wrapperClasses }, h("div", { key: '7995fb27f33ebfa79ace1e7cd0e737d8bd466978', class: "label-wrapper" }, renderLabel(this), this.renderCountDOM()), this.renderInputContainerDOM(), renderMessages(this))));
736
745
  }
737
746
  static get is() { return "q2-input"; }
738
747
  static get encapsulation() { return "shadow"; }
@@ -794,6 +803,29 @@ export class Q2Input {
794
803
  "attribute": "_role",
795
804
  "defaultValue": "undefined"
796
805
  },
806
+ "_updateValueOnInput": {
807
+ "type": "boolean",
808
+ "mutable": true,
809
+ "complexType": {
810
+ "original": "boolean",
811
+ "resolved": "boolean",
812
+ "references": {}
813
+ },
814
+ "required": false,
815
+ "optional": false,
816
+ "docs": {
817
+ "tags": [{
818
+ "name": "private",
819
+ "text": undefined
820
+ }],
821
+ "text": "Determines whether the input updates its value property as native input occurs."
822
+ },
823
+ "getter": false,
824
+ "setter": false,
825
+ "reflect": false,
826
+ "attribute": "_update-value-on-input",
827
+ "defaultValue": "true"
828
+ },
797
829
  "ariaActivedescendant": {
798
830
  "type": "string",
799
831
  "mutable": false,
@@ -1626,7 +1658,7 @@ export class Q2Input {
1626
1658
  "docs": {
1627
1659
  "tags": [{
1628
1660
  "name": "info",
1629
- "text": "The visible value of formatted input fields may not match the element's `value` property.\nWhen setting an input's value programmatically (e.g. pre-populating a form), ensure that the supplied value is in a format that can be handled by its consuming logic.\n`q2-input` does not change its own `value` outside of its default change event handler.\n\nIn `q2-input` where `type=\"currency\"`\n- element.value = 1234.56\n- visible value: $1,234.56"
1661
+ "text": "The visible value of formatted input fields may not match the element's `value` property.\nWhen setting an input's value programmatically (e.g. pre-populating a form), ensure that the supplied value is in a format that can be handled by its consuming logic.\n`q2-input` updates its own `value` through its default input and change event handlers.\n\nIn `q2-input` where `type=\"currency\"`\n- element.value = 1234.56\n- visible value: $1,234.56"
1630
1662
  }],
1631
1663
  "text": "The value of the input field."
1632
1664
  },
@@ -1,6 +1,6 @@
1
1
  import { expect } from "@playwright/test";
2
2
  import { test } from "@stencil/playwright";
3
- import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
3
+ import { setupPage, THEMES, FONT_SCALE_PX, FONT_SCALE_SUFFIX } from "../../../utils/test/vr-helpers";
4
4
  const HINTS = ['Save more than you spend.', 'Wear sunscreen.', 'Hug a panda.'];
5
5
  const ERRORS = ['This field is required.', 'The value entered is invalid.', 'The value offends me.'];
6
6
  const VARIANTS = [
@@ -102,3 +102,38 @@ test.describe('q2-input — variants × themes', () => {
102
102
  }
103
103
  }
104
104
  });
105
+ // 'optional' exercises --tct-input-font-size + --tct-input-label-font-size + --tct-input-label-optional-font-size.
106
+ // 'visibility-toggle' exercises --tct-input-visibility-toggle-font-size.
107
+ // New inline variants cover the remaining tokens:
108
+ // - maxlength + show-count: exercises --tct-input-count-font-size
109
+ // - icon-left: exercises --tct-input-icon-container-font-size
110
+ // - type=currency: exercises --tct-input-prefix-font-size (currency type auto-renders a prefix)
111
+ const INPUT_FONT_SCALE_CASES = [
112
+ { name: 'optional', html: '<q2-input label="My input" placeholder="Enter text here" optional></q2-input>' },
113
+ {
114
+ name: 'visibility-toggle',
115
+ html: '<q2-input label="My input" placeholder="Enter text here" type="password" show-visibility-toggle="true" value="hunter2"></q2-input>',
116
+ },
117
+ {
118
+ name: 'with-count',
119
+ html: '<q2-input label="My input" placeholder="Enter text here" maxlength="50" show-count></q2-input>',
120
+ },
121
+ {
122
+ name: 'with-icon-left',
123
+ html: '<q2-input label="My input" placeholder="Enter text here" icon-left="star"></q2-input>',
124
+ },
125
+ {
126
+ name: 'type-currency-prefix',
127
+ html: '<q2-input label="My input" placeholder="Enter text here" type="currency" value="12.34"></q2-input>',
128
+ },
129
+ ];
130
+ test.describe(`q2-input — scaled font size × themes`, () => {
131
+ for (const { name, html } of INPUT_FONT_SCALE_CASES) {
132
+ for (const theme of THEMES) {
133
+ test(`q2-input--${name}--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
134
+ await setupPage(page, html, { theme, setupLoc: true, fontSizePx: FONT_SCALE_PX });
135
+ await expect(page).toHaveScreenshot(`q2-input--${name}--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
136
+ });
137
+ }
138
+ }
139
+ });
@@ -65,6 +65,28 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ @container style(--t-prefers-motion: "reduced") {
69
+ *,
70
+ *::before,
71
+ *::after {
72
+ animation-duration: 0.01ms !important;
73
+ transition-duration: 0.01ms !important;
74
+ animation-delay: 0ms !important;
75
+ transition-delay: 0ms !important;
76
+ }
77
+ }
78
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
79
+ @media (prefers-reduced-motion: reduce) {
80
+ *,
81
+ *::before,
82
+ *::after {
83
+ animation-duration: 0.01ms !important;
84
+ transition-duration: 0.01ms !important;
85
+ animation-delay: 0ms !important;
86
+ transition-delay: 0ms !important;
87
+ }
88
+ }
89
+ }
68
90
  * {
69
91
  box-sizing: border-box;
70
92
  }
@@ -132,6 +154,28 @@ button {
132
154
  visibility: hidden;
133
155
  }
134
156
 
157
+ @container style(--t-prefers-motion: "reduced") {
158
+ *,
159
+ *::before,
160
+ *::after {
161
+ animation-duration: 0.01ms !important;
162
+ transition-duration: 0.01ms !important;
163
+ animation-delay: 0ms !important;
164
+ transition-delay: 0ms !important;
165
+ }
166
+ }
167
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
168
+ @media (prefers-reduced-motion: reduce) {
169
+ *,
170
+ *::before,
171
+ *::after {
172
+ animation-duration: 0.01ms !important;
173
+ transition-duration: 0.01ms !important;
174
+ animation-delay: 0ms !important;
175
+ transition-delay: 0ms !important;
176
+ }
177
+ }
178
+ }
135
179
  /**
136
180
  * @prop --tct-item-padding?: (<length-percentage>+) Controls the optional inner padding of the item grid.
137
181
  * @prop --tct-item-border?: (*) Controls the optional border shorthand applied to the item grid.
@@ -220,7 +264,7 @@ button {
220
264
 
221
265
  .body {
222
266
  color: var(--tct-item-body-color, inherit);
223
- font-size: var(--tct-item-body-font-size, var(--app-font-size, 14px));
267
+ font-size: var(--tct-item-body-font-size, var(--app-font-size, var(--const-px-14, 14px)));
224
268
  font-weight: var(--tct-item-body-font-weight, 400);
225
269
  font-style: var(--tct-item-body-font-style, inherit);
226
270
  }
@@ -288,7 +332,7 @@ button {
288
332
 
289
333
  .header {
290
334
  color: var(--tct-item-header-color, inherit);
291
- font-size: var(--tct-item-header-font-size, 16px);
335
+ font-size: var(--tct-item-header-font-size, var(--const-px-16, 16px));
292
336
  font-style: var(--tct-item-header-font-style, inherit);
293
337
  font-weight: var(--tct-item-header-font-weight, 600);
294
338
  line-height: var(--tct-item-header-line-height, 1.5);
@@ -1,6 +1,6 @@
1
1
  import { expect } from "@playwright/test";
2
2
  import { test } from "@stencil/playwright";
3
- import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
3
+ import { setupPage, THEMES, FONT_SCALE_PX, FONT_SCALE_SUFFIX } from "../../../utils/test/vr-helpers";
4
4
  const DROPDOWN_OPTIONS = `
5
5
  <q2-option value="first">First</q2-option>
6
6
  <q2-option value="second">Second</q2-option>
@@ -130,3 +130,14 @@ test.describe('q2-item — variants × themes', () => {
130
130
  }
131
131
  }
132
132
  });
133
+ // 'default' has both header and body slots, exercising
134
+ // --tct-item-header-font-size and --tct-item-body-font-size.
135
+ const DEFAULT_ITEM_VARIANT = VARIANTS.find(v => v.name === 'default');
136
+ test.describe(`q2-item — scaled font size × themes`, () => {
137
+ for (const theme of THEMES) {
138
+ test(`q2-item--default--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
139
+ await setupPage(page, DEFAULT_ITEM_VARIANT.html, { theme, fontSizePx: FONT_SCALE_PX });
140
+ await expect(page).toHaveScreenshot(`q2-item--default--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
141
+ });
142
+ }
143
+ });
@@ -65,6 +65,28 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ @container style(--t-prefers-motion: "reduced") {
69
+ *,
70
+ *::before,
71
+ *::after {
72
+ animation-duration: 0.01ms !important;
73
+ transition-duration: 0.01ms !important;
74
+ animation-delay: 0ms !important;
75
+ transition-delay: 0ms !important;
76
+ }
77
+ }
78
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
79
+ @media (prefers-reduced-motion: reduce) {
80
+ *,
81
+ *::before,
82
+ *::after {
83
+ animation-duration: 0.01ms !important;
84
+ transition-duration: 0.01ms !important;
85
+ animation-delay: 0ms !important;
86
+ transition-delay: 0ms !important;
87
+ }
88
+ }
89
+ }
68
90
  /**
69
91
  * @prop --tct-legend-item-gap: (<length-percentage>) Controls the column gap between elements within a legend item.
70
92
  * @prop --tct-legend-item-padding: (<length-percentage>+) Controls the inner padding of each legend item button.
@@ -127,7 +149,7 @@ ul {
127
149
  color: var(--tct-legend-item-name-font-color, inherit);
128
150
  display: inline-block;
129
151
  flex-grow: 1;
130
- font-size: var(--tct-legend-item-name-font-size, var(--app-font-size, 14px));
152
+ font-size: var(--tct-legend-item-name-font-size, var(--app-font-size, var(--const-px-14, 14px)));
131
153
  font-weight: var(--tct-legend-item-name-font-weight, 600);
132
154
  line-height: var(--tct-legend-item-name-line-height, 1);
133
155
  text-align: left;
@@ -138,7 +160,7 @@ ul {
138
160
  display: inline-block;
139
161
  margin-left: auto;
140
162
  flex-grow: 0;
141
- font-size: var(--tct-legend-item-value-font-size, var(--app-font-size, 14px));
163
+ font-size: var(--tct-legend-item-value-font-size, var(--app-font-size, var(--const-px-14, 14px)));
142
164
  font-weight: var(--tct-legend-item-value-font-weight, 400);
143
165
  line-height: var(--tct-legend-item-value-line-height, 1);
144
166
  text-align: right;
@@ -65,6 +65,28 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ @container style(--t-prefers-motion: "reduced") {
69
+ *,
70
+ *::before,
71
+ *::after {
72
+ animation-duration: 0.01ms !important;
73
+ transition-duration: 0.01ms !important;
74
+ animation-delay: 0ms !important;
75
+ transition-delay: 0ms !important;
76
+ }
77
+ }
78
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
79
+ @media (prefers-reduced-motion: reduce) {
80
+ *,
81
+ *::before,
82
+ *::after {
83
+ animation-duration: 0.01ms !important;
84
+ transition-duration: 0.01ms !important;
85
+ animation-delay: 0ms !important;
86
+ transition-delay: 0ms !important;
87
+ }
88
+ }
89
+ }
68
90
  /**
69
91
  * @prop --tct-link-color-inline: (<color>) Controls the text color of inline-style links.
70
92
  * @prop --tct-link-color-inline-active: (<color>) Controls the text color of inline-style links in the active state.
@@ -65,6 +65,28 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ @container style(--t-prefers-motion: "reduced") {
69
+ *,
70
+ *::before,
71
+ *::after {
72
+ animation-duration: 0.01ms !important;
73
+ transition-duration: 0.01ms !important;
74
+ animation-delay: 0ms !important;
75
+ transition-delay: 0ms !important;
76
+ }
77
+ }
78
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
79
+ @media (prefers-reduced-motion: reduce) {
80
+ *,
81
+ *::before,
82
+ *::after {
83
+ animation-duration: 0.01ms !important;
84
+ transition-duration: 0.01ms !important;
85
+ animation-delay: 0ms !important;
86
+ transition-delay: 0ms !important;
87
+ }
88
+ }
89
+ }
68
90
  * {
69
91
  box-sizing: border-box;
70
92
  }
@@ -132,6 +154,28 @@ button {
132
154
  visibility: hidden;
133
155
  }
134
156
 
157
+ @container style(--t-prefers-motion: "reduced") {
158
+ *,
159
+ *::before,
160
+ *::after {
161
+ animation-duration: 0.01ms !important;
162
+ transition-duration: 0.01ms !important;
163
+ animation-delay: 0ms !important;
164
+ transition-delay: 0ms !important;
165
+ }
166
+ }
167
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
168
+ @media (prefers-reduced-motion: reduce) {
169
+ *,
170
+ *::before,
171
+ *::after {
172
+ animation-duration: 0.01ms !important;
173
+ transition-duration: 0.01ms !important;
174
+ animation-delay: 0ms !important;
175
+ transition-delay: 0ms !important;
176
+ }
177
+ }
178
+ }
135
179
  /**
136
180
  * @prop --tct-list-header-min-height: (<length>) Controls the minimum height of the list header.
137
181
  * @prop --tct-list-header-padding: (<length-percentage>+) Controls the inner padding of the list header.
@@ -177,8 +221,8 @@ button {
177
221
  .header .label {
178
222
  width: 100%;
179
223
  height: var(--tct-list-label-height, 44px);
180
- line-height: var(--tct-list-label-line-height, 44px);
181
- font-size: var(--tct-list-label-font-size, var(--app-font-size, 14px));
224
+ line-height: var(--tct-list-label-line-height, var(--const-px-44, 44px));
225
+ font-size: var(--tct-list-label-font-size, var(--app-font-size, var(--const-px-14, 14px)));
182
226
  font-weight: var(--tct-list-label-font-weight, 600);
183
227
  color: var(--tct-list-label-font-color, inherit);
184
228
  }
@@ -1,6 +1,6 @@
1
1
  import { expect } from "@playwright/test";
2
2
  import { test } from "@stencil/playwright";
3
- import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
3
+ import { setupPage, THEMES, FONT_SCALE_PX, FONT_SCALE_SUFFIX } from "../../../utils/test/vr-helpers";
4
4
  const ITEMS = `
5
5
  <q2-item><span slot="header">Item one</span><span slot="body">Body content</span></q2-item>
6
6
  <q2-item><span slot="header">Item two</span><span slot="body">Body content</span></q2-item>
@@ -55,3 +55,14 @@ test.describe('q2-list — variants × themes', () => {
55
55
  }
56
56
  }
57
57
  });
58
+ // 'with-label' exercises --tct-list-label-font-size and --tct-list-label-line-height
59
+ // (both apply to the same .label element).
60
+ const WITH_LABEL_VARIANT = VARIANTS.find(v => v.name === 'with-label');
61
+ test.describe(`q2-list — scaled font size × themes`, () => {
62
+ for (const theme of THEMES) {
63
+ test(`q2-list--with-label--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
64
+ await setupPage(page, WITH_LABEL_VARIANT.html, { theme, fontSizePx: FONT_SCALE_PX });
65
+ await expect(page).toHaveScreenshot(`q2-list--with-label--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
66
+ });
67
+ }
68
+ });
@@ -66,6 +66,28 @@ button {
66
66
  visibility: hidden;
67
67
  }
68
68
 
69
+ @container style(--t-prefers-motion: "reduced") {
70
+ *,
71
+ *::before,
72
+ *::after {
73
+ animation-duration: 0.01ms !important;
74
+ transition-duration: 0.01ms !important;
75
+ animation-delay: 0ms !important;
76
+ transition-delay: 0ms !important;
77
+ }
78
+ }
79
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
80
+ @media (prefers-reduced-motion: reduce) {
81
+ *,
82
+ *::before,
83
+ *::after {
84
+ animation-duration: 0.01ms !important;
85
+ transition-duration: 0.01ms !important;
86
+ animation-delay: 0ms !important;
87
+ transition-delay: 0ms !important;
88
+ }
89
+ }
90
+ }
69
91
  .flex {
70
92
  display: flex;
71
93
  }
@@ -113,6 +135,7 @@ button {
113
135
  }
114
136
 
115
137
  :host(:not([inline]):not([modifiers*=inline])) {
138
+ /* stylelint-disable-next-line tecton/require-t-px-fallback */
116
139
  font-size: var(--tct-loading-spinner-size, var(--t-loading-spinner-size, var(--app-scale-12x, 60px)));
117
140
  }
118
141
 
@@ -65,6 +65,28 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ @container style(--t-prefers-motion: "reduced") {
69
+ *,
70
+ *::before,
71
+ *::after {
72
+ animation-duration: 0.01ms !important;
73
+ transition-duration: 0.01ms !important;
74
+ animation-delay: 0ms !important;
75
+ transition-delay: 0ms !important;
76
+ }
77
+ }
78
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
79
+ @media (prefers-reduced-motion: reduce) {
80
+ *,
81
+ *::before,
82
+ *::after {
83
+ animation-duration: 0.01ms !important;
84
+ transition-duration: 0.01ms !important;
85
+ animation-delay: 0ms !important;
86
+ transition-delay: 0ms !important;
87
+ }
88
+ }
89
+ }
68
90
  /**
69
91
  * @prop --tct-message-background: (<color>) Controls the background color of the message container.
70
92
  * @prop --tct-message-font-color?: (<color>) Controls the optional text color of the message content.
@@ -65,6 +65,28 @@ button {
65
65
  visibility: hidden;
66
66
  }
67
67
 
68
+ @container style(--t-prefers-motion: "reduced") {
69
+ *,
70
+ *::before,
71
+ *::after {
72
+ animation-duration: 0.01ms !important;
73
+ transition-duration: 0.01ms !important;
74
+ animation-delay: 0ms !important;
75
+ transition-delay: 0ms !important;
76
+ }
77
+ }
78
+ @container (not style(--t-prefers-motion: "normal")) and (not style(--t-prefers-motion: "reduced")) {
79
+ @media (prefers-reduced-motion: reduce) {
80
+ *,
81
+ *::before,
82
+ *::after {
83
+ animation-duration: 0.01ms !important;
84
+ transition-duration: 0.01ms !important;
85
+ animation-delay: 0ms !important;
86
+ transition-delay: 0ms !important;
87
+ }
88
+ }
89
+ }
68
90
  /**
69
91
  * @prop --tct-meter-bar-background-color: (<color>) Controls the background color of the meter track.
70
92
  * @prop --tct-meter-bar-border?: (*) Controls the optional border shorthand of the meter track.
@@ -133,16 +155,16 @@ button {
133
155
  --comp-meter-tick-visibility: visible;
134
156
  }
135
157
  .meter-container .label {
136
- font-size: var(--tct-meter-label-font-size, 14px);
158
+ font-size: var(--tct-meter-label-font-size, var(--const-px-14, 14px));
137
159
  font-weight: var(--tct-meter-label-font-weight, 600);
138
160
  color: var(--tct-meter-label-color, inherit);
139
161
  margin: var(--tct-meter-label-margin, 5px 0);
140
162
  }
141
163
  .meter-container .description {
142
- font-size: var(--tct-meter-description-font-size, 14px);
164
+ font-size: var(--tct-meter-description-font-size, var(--const-px-14, 14px));
143
165
  font-weight: var(--tct-meter-description-font-weight, 400);
144
166
  color: var(--tct-meter-description-color, inherit);
145
- line-height: var(--tct-meter-description-line-height, 21px);
167
+ line-height: var(--tct-meter-description-line-height, var(--const-px-21, 21px));
146
168
  margin: var(--tct-meter-description-margin, 5px 0);
147
169
  }
148
170
  .meter-container .bar-container {
@@ -1,6 +1,6 @@
1
1
  import { expect } from "@playwright/test";
2
2
  import { test } from "@stencil/playwright";
3
- import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
3
+ import { setupPage, THEMES, FONT_SCALE_PX, FONT_SCALE_SUFFIX } from "../../../utils/test/vr-helpers";
4
4
  // All variants set animated="false" to keep the loading shimmer out of the snapshot.
5
5
  const COMMON = `label="Balance" max-value="$1,000" max-label="Available" animated="false"`;
6
6
  const VARIANTS = [
@@ -75,3 +75,14 @@ test.describe('q2-meter — variants × themes', () => {
75
75
  }
76
76
  }
77
77
  });
78
+ const WITH_DESCRIPTION = VARIANTS.find(v => v.name === 'with-description');
79
+ test.describe(`q2-meter — scaled font size × themes`, () => {
80
+ if (WITH_DESCRIPTION) {
81
+ for (const theme of THEMES) {
82
+ test(`q2-meter--with-description--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
83
+ await setupPage(page, WITH_DESCRIPTION.html, { theme, fontSizePx: FONT_SCALE_PX, setupLoc: true });
84
+ await expect(page).toHaveScreenshot(`q2-meter--with-description--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
85
+ });
86
+ }
87
+ }
88
+ });