q2-tecton-elements 1.70.1 → 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 (361) hide show
  1. package/dist/bundle-report.json +576 -245
  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 -6
  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 +30 -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 +65 -15
  67. package/dist/collection/components/q2-btn/q2-btn.js +1 -6
  68. package/dist/collection/components/q2-btn/test/q2-btn-test.vr.js +45 -6
  69. package/dist/collection/components/q2-calendar/q2-calendar.css +26 -4
  70. package/dist/collection/components/q2-calendar/q2-calendar.js +7 -5
  71. package/dist/collection/components/q2-calendar/q2-month-picker.css +22 -0
  72. package/dist/collection/components/q2-calendar/test/q2-calendar-test.vr.js +34 -1
  73. package/dist/collection/components/q2-card/q2-card.css +23 -1
  74. package/dist/collection/components/q2-card/test/q2-card-test.vr.js +10 -1
  75. package/dist/collection/components/q2-card-image/q2-card-image.css +23 -1
  76. package/dist/collection/components/q2-card-image/test/q2-card-image-test.vr.js +9 -1
  77. package/dist/collection/components/q2-carousel/q2-carousel.css +29 -39
  78. package/dist/collection/components/q2-carousel/q2-carousel.js +122 -69
  79. package/dist/collection/components/q2-carousel/test/q2-carousel-test.vr.js +5 -4
  80. package/dist/collection/components/q2-carousel-pane/q2-carousel-pane.css +22 -0
  81. package/dist/collection/components/q2-chart-area/q2-chart-area.css +22 -0
  82. package/dist/collection/components/q2-chart-bar/q2-chart-bar.css +22 -0
  83. package/dist/collection/components/q2-chart-donut/q2-chart-donut.css +24 -2
  84. package/dist/collection/components/q2-chart-donut/test/q2-chart-donut-test.vr.js +13 -1
  85. package/dist/collection/components/q2-checkbox/q2-checkbox.css +23 -1
  86. package/dist/collection/components/q2-checkbox/test/q2-checkbox-test.vr.js +11 -1
  87. package/dist/collection/components/q2-checkbox-group/q2-checkbox-group.css +23 -1
  88. package/dist/collection/components/q2-checkbox-group/test/q2-checkbox-group-test.vr.js +11 -1
  89. package/dist/collection/components/q2-currency/q2-currency.css +25 -3
  90. package/dist/collection/components/q2-currency/test/q2-currency-test.vr.js +13 -1
  91. package/dist/collection/components/q2-data-table/q2-data-table.css +24 -2
  92. package/dist/collection/components/q2-data-table/test/q2-data-table-test.vr.js +11 -1
  93. package/dist/collection/components/q2-detail/q2-detail.css +32 -10
  94. package/dist/collection/components/q2-dropdown/q2-dropdown.css +22 -0
  95. package/dist/collection/components/q2-dropdown-item/q2-dropdown-item.css +22 -0
  96. package/dist/collection/components/q2-editable-field/q2-editable-field.css +22 -0
  97. package/dist/collection/components/q2-editable-field/q2-editable-field.js +2 -2
  98. package/dist/collection/components/q2-example/q2-example.css +23 -0
  99. package/dist/collection/components/q2-file-picker/q2-file-picker.css +57 -10
  100. package/dist/collection/components/q2-file-picker/test/q2-file-picker-test.vr.js +14 -1
  101. package/dist/collection/components/q2-form/q2-form.css +22 -0
  102. package/dist/collection/components/q2-formatted-text/q2-formatted-text.css +25 -3
  103. package/dist/collection/components/q2-formatted-text/test/q2-formatted-text-test.vr.js +13 -1
  104. package/dist/collection/components/q2-icon/assets/standard.symbol.svg +1 -1
  105. package/dist/collection/components/q2-icon/q2-icon.css +22 -0
  106. package/dist/collection/components/q2-input/q2-input.css +26 -4
  107. package/dist/collection/components/q2-input/q2-input.js +39 -7
  108. package/dist/collection/components/q2-input/test/q2-input-test.vr.js +36 -1
  109. package/dist/collection/components/q2-item/q2-item.css +46 -2
  110. package/dist/collection/components/q2-item/test/q2-item-test.vr.js +12 -1
  111. package/dist/collection/components/q2-legend/q2-legend.css +24 -2
  112. package/dist/collection/components/q2-link/q2-link.css +22 -0
  113. package/dist/collection/components/q2-list/q2-list.css +46 -2
  114. package/dist/collection/components/q2-list/test/q2-list-test.vr.js +12 -1
  115. package/dist/collection/components/q2-loading/q2-loading.css +23 -0
  116. package/dist/collection/components/q2-message/q2-message.css +22 -0
  117. package/dist/collection/components/q2-meter/q2-meter.css +25 -3
  118. package/dist/collection/components/q2-meter/test/q2-meter-test.vr.js +12 -1
  119. package/dist/collection/components/q2-modal/q2-modal.css +23 -1
  120. package/dist/collection/components/q2-modal/test/q2-modal-test.vr.js +12 -1
  121. package/dist/collection/components/q2-optgroup/q2-optgroup.css +23 -1
  122. package/dist/collection/components/q2-option/q2-option.css +22 -0
  123. package/dist/collection/components/q2-option-list/q2-option-list.css +22 -0
  124. package/dist/collection/components/q2-otp/q2-otp.css +27 -4
  125. package/dist/collection/components/q2-otp/test/q2-otp-test.vr.js +12 -1
  126. package/dist/collection/components/q2-pagination/q2-pagination.css +22 -0
  127. package/dist/collection/components/q2-pill/q2-pill.css +42 -2
  128. package/dist/collection/components/q2-pill/q2-pill.js +30 -1
  129. package/dist/collection/components/q2-pill/test/q2-pill-test.vr.js +27 -1
  130. package/dist/collection/components/q2-popover/q2-popover.css +22 -7
  131. package/dist/collection/components/q2-radio/q2-radio.css +24 -2
  132. package/dist/collection/components/q2-radio/test/q2-radio-test.vr.js +12 -1
  133. package/dist/collection/components/q2-radio-group/q2-radio-group.css +23 -1
  134. package/dist/collection/components/q2-radio-group/test/q2-radio-group-test.vr.js +11 -1
  135. package/dist/collection/components/q2-relative-time/q2-relative-time.css +22 -0
  136. package/dist/collection/components/q2-relative-time/q2-relative-time.js +1 -1
  137. package/dist/collection/components/q2-resize-observer/q2-resize-observer.css +22 -0
  138. package/dist/collection/components/q2-resize-observer/q2-resize-observer.js +1 -1
  139. package/dist/collection/components/q2-search/q2-search.css +22 -0
  140. package/dist/collection/components/q2-search/q2-search.js +1 -1
  141. package/dist/collection/components/q2-section/q2-section.css +23 -1
  142. package/dist/collection/components/q2-section/q2-section.js +2 -2
  143. package/dist/collection/components/q2-section/test/q2-section-test.vr.js +11 -1
  144. package/dist/collection/components/q2-select/q2-select.css +22 -0
  145. package/dist/collection/components/q2-stepper/q2-stepper.css +38 -4
  146. package/dist/collection/components/q2-stepper/q2-stepper.js +17 -3
  147. package/dist/collection/components/q2-stepper/test/q2-stepper-test.vr.js +12 -1
  148. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.css +22 -0
  149. package/dist/collection/components/q2-stepper-pane/q2-stepper-pane.js +1 -1
  150. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.css +39 -5
  151. package/dist/collection/components/q2-stepper-vertical/q2-stepper-vertical.js +31 -8
  152. package/dist/collection/components/q2-stepper-vertical/test/q2-stepper-vertical-test.vr.js +16 -1
  153. package/dist/collection/components/q2-surface/q2-surface.css +71 -32
  154. package/dist/collection/components/q2-surface/q2-surface.js +7 -7
  155. package/dist/collection/components/q2-surface/test/q2-surface-test.vr.js +54 -0
  156. package/dist/collection/components/q2-tab-container/q2-tab-container.css +112 -6
  157. package/dist/collection/components/q2-tab-container/q2-tab-container.js +114 -21
  158. package/dist/collection/components/q2-tab-container/test/q2-tab-container-test.vr.js +24 -1
  159. package/dist/collection/components/q2-tab-pane/q2-tab-pane.css +22 -0
  160. package/dist/collection/components/q2-tab-pane/q2-tab-pane.js +1 -1
  161. package/dist/collection/components/q2-tag/q2-tag.css +25 -2
  162. package/dist/collection/components/q2-tag/q2-tag.js +1 -1
  163. package/dist/collection/components/q2-tag/test/q2-tag-test.vr.js +21 -1
  164. package/dist/collection/components/q2-textarea/q2-textarea.css +24 -2
  165. package/dist/collection/components/q2-textarea/q2-textarea.js +2 -2
  166. package/dist/collection/components/q2-textarea/test/q2-textarea-test.vr.js +16 -1
  167. package/dist/collection/components/q2-toast/q2-toast.css +22 -0
  168. package/dist/collection/components/q2-tooltip/q2-tooltip.css +27 -19
  169. package/dist/collection/components/q2-tooltip/q2-tooltip.js +32 -21
  170. package/dist/collection/components/q2-tooltip/test/q2-tooltip-test.vr.js +13 -1
  171. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.css +22 -0
  172. package/dist/collection/components/tecton-tab-pane/tecton-tab-pane.js +2 -2
  173. package/dist/collection/utils/helpers.js +29 -6
  174. package/dist/collection/utils/test/vr-helpers.js +7 -0
  175. package/dist/components/q2-action-group2.js +1 -1
  176. package/dist/components/q2-action-sheet.js +21 -18
  177. package/dist/components/q2-avatar2.js +1 -1
  178. package/dist/components/q2-badge2.js +1 -1
  179. package/dist/components/q2-btn2.js +15 -19
  180. package/dist/components/q2-calendar.js +306 -301
  181. package/dist/components/q2-card-image.js +6 -6
  182. package/dist/components/q2-card.js +14 -14
  183. package/dist/components/q2-carousel-pane2.js +1 -1
  184. package/dist/components/q2-carousel.js +633 -585
  185. package/dist/components/q2-chart-area.js +1 -1
  186. package/dist/components/q2-chart-bar.js +70 -70
  187. package/dist/components/q2-chart-donut.js +1 -1
  188. package/dist/components/q2-checkbox-group.js +42 -42
  189. package/dist/components/q2-checkbox2.js +1 -1
  190. package/dist/components/q2-currency.js +32 -32
  191. package/dist/components/q2-data-table.js +34 -34
  192. package/dist/components/q2-detail.js +5 -5
  193. package/dist/components/q2-dropdown-item2.js +11 -11
  194. package/dist/components/q2-dropdown.js +17 -17
  195. package/dist/components/q2-editable-field.js +12 -11
  196. package/dist/components/q2-example.js +15 -15
  197. package/dist/components/q2-file-picker.js +25 -25
  198. package/dist/components/q2-form.js +11 -11
  199. package/dist/components/q2-formatted-text.js +5 -5
  200. package/dist/components/q2-icon2.js +1 -1
  201. package/dist/components/q2-input2.js +24 -13
  202. package/dist/components/q2-item2.js +1 -1
  203. package/dist/components/q2-legend2.js +56 -56
  204. package/dist/components/q2-link2.js +6 -6
  205. package/dist/components/q2-list2.js +22 -22
  206. package/dist/components/q2-loading2.js +1 -1
  207. package/dist/components/q2-message2.js +20 -20
  208. package/dist/components/q2-meter.js +1 -1
  209. package/dist/components/q2-modal.js +3 -3
  210. package/dist/components/q2-month-picker.js +10 -10
  211. package/dist/components/q2-optgroup2.js +7 -7
  212. package/dist/components/q2-option-list2.js +34 -34
  213. package/dist/components/q2-option2.js +13 -13
  214. package/dist/components/q2-otp.js +5 -5
  215. package/dist/components/q2-pagination.js +58 -58
  216. package/dist/components/q2-pill.js +71 -52
  217. package/dist/components/q2-popover2.js +1 -1
  218. package/dist/components/q2-radio-group.js +5 -5
  219. package/dist/components/q2-radio.js +14 -14
  220. package/dist/components/q2-relative-time.js +10 -10
  221. package/dist/components/q2-resize-observer2.js +9 -9
  222. package/dist/components/q2-search.js +5 -5
  223. package/dist/components/q2-section.js +22 -22
  224. package/dist/components/q2-select2.js +1 -1
  225. package/dist/components/q2-stepper-pane.js +33 -33
  226. package/dist/components/q2-stepper-vertical.js +84 -60
  227. package/dist/components/q2-stepper.js +79 -65
  228. package/dist/components/q2-surface.js +14 -14
  229. package/dist/components/q2-tab-container.js +110 -55
  230. package/dist/components/q2-tab-pane.js +7 -7
  231. package/dist/components/q2-tag2.js +39 -39
  232. package/dist/components/q2-textarea.js +16 -16
  233. package/dist/components/q2-toast.js +22 -22
  234. package/dist/components/q2-tooltip2.js +26 -25
  235. package/dist/components/tecton-tab-pane.js +11 -11
  236. package/dist/esm/click-elsewhere_3.entry.js +2 -2
  237. package/dist/esm/loader.js +1 -1
  238. package/dist/esm/q2-action-group_2.entry.js +3 -3
  239. package/dist/esm/q2-action-sheet.entry.js +4 -3
  240. package/dist/esm/q2-avatar.entry.js +1 -1
  241. package/dist/esm/q2-badge_2.entry.js +17 -8
  242. package/dist/esm/q2-btn_2.entry.js +2 -6
  243. package/dist/esm/q2-calendar.entry.js +8 -6
  244. package/dist/esm/q2-card-image.entry.js +1 -1
  245. package/dist/esm/q2-card.entry.js +1 -1
  246. package/dist/esm/q2-carousel-pane.entry.js +1 -1
  247. package/dist/esm/q2-carousel.entry.js +104 -70
  248. package/dist/esm/q2-chart-area.entry.js +1 -1
  249. package/dist/esm/q2-chart-bar.entry.js +1 -1
  250. package/dist/esm/q2-chart-donut.entry.js +1 -1
  251. package/dist/esm/q2-checkbox-group.entry.js +1 -1
  252. package/dist/esm/q2-checkbox_2.entry.js +3 -3
  253. package/dist/esm/q2-currency.entry.js +1 -1
  254. package/dist/esm/q2-data-table.entry.js +1 -1
  255. package/dist/esm/q2-detail.entry.js +1 -1
  256. package/dist/esm/q2-dropdown-item.entry.js +1 -1
  257. package/dist/esm/q2-dropdown.entry.js +1 -1
  258. package/dist/esm/q2-editable-field.entry.js +3 -3
  259. package/dist/esm/q2-example.entry.js +1 -1
  260. package/dist/esm/q2-file-picker.entry.js +1 -1
  261. package/dist/esm/q2-form.entry.js +1 -1
  262. package/dist/esm/q2-formatted-text.entry.js +1 -1
  263. package/dist/esm/q2-icon.entry.js +1 -1
  264. package/dist/esm/q2-item.entry.js +1 -1
  265. package/dist/esm/q2-legend.entry.js +1 -1
  266. package/dist/esm/q2-link_2.entry.js +2 -2
  267. package/dist/esm/q2-message.entry.js +1 -1
  268. package/dist/esm/q2-meter.entry.js +1 -1
  269. package/dist/esm/q2-modal.entry.js +1 -1
  270. package/dist/esm/q2-month-picker.entry.js +1 -1
  271. package/dist/esm/q2-optgroup.entry.js +1 -1
  272. package/dist/esm/q2-option.entry.js +1 -1
  273. package/dist/esm/q2-otp.entry.js +1 -1
  274. package/dist/esm/q2-pagination.entry.js +1 -1
  275. package/dist/esm/q2-pill.entry.js +30 -2
  276. package/dist/esm/q2-radio-group.entry.js +1 -1
  277. package/dist/esm/q2-radio.entry.js +1 -1
  278. package/dist/esm/q2-relative-time.entry.js +2 -2
  279. package/dist/esm/q2-search.entry.js +2 -2
  280. package/dist/esm/q2-section.entry.js +3 -3
  281. package/dist/esm/q2-select.entry.js +1 -1
  282. package/dist/esm/q2-stepper-pane.entry.js +2 -2
  283. package/dist/esm/q2-stepper-vertical.entry.js +32 -9
  284. package/dist/esm/q2-stepper.entry.js +18 -4
  285. package/dist/esm/q2-surface.entry.js +3 -3
  286. package/dist/esm/q2-tab-container.entry.js +89 -20
  287. package/dist/esm/q2-tab-pane.entry.js +2 -2
  288. package/dist/esm/q2-tecton-elements.js +1 -1
  289. package/dist/esm/q2-textarea.entry.js +3 -3
  290. package/dist/esm/q2-toast.entry.js +1 -1
  291. package/dist/esm/q2-tooltip.entry.js +27 -16
  292. package/dist/esm/tecton-tab-pane.entry.js +3 -3
  293. package/dist/q2-tecton-elements/assets/standard.symbol.svg +1 -1
  294. package/dist/q2-tecton-elements/click-elsewhere_3.entry.js +23 -23
  295. package/dist/q2-tecton-elements/q2-action-group_2.entry.js +42 -42
  296. package/dist/q2-tecton-elements/q2-action-sheet.entry.js +21 -18
  297. package/dist/q2-tecton-elements/q2-avatar.entry.js +1 -1
  298. package/dist/q2-tecton-elements/q2-badge_2.entry.js +25 -15
  299. package/dist/q2-tecton-elements/q2-btn_2.entry.js +2 -6
  300. package/dist/q2-tecton-elements/q2-calendar.entry.js +120 -115
  301. package/dist/q2-tecton-elements/q2-card-image.entry.js +1 -1
  302. package/dist/q2-tecton-elements/q2-card.entry.js +1 -1
  303. package/dist/q2-tecton-elements/q2-carousel-pane.entry.js +11 -11
  304. package/dist/q2-tecton-elements/q2-carousel.entry.js +572 -540
  305. package/dist/q2-tecton-elements/q2-chart-area.entry.js +166 -166
  306. package/dist/q2-tecton-elements/q2-chart-bar.entry.js +190 -190
  307. package/dist/q2-tecton-elements/q2-chart-donut.entry.js +1 -1
  308. package/dist/q2-tecton-elements/q2-checkbox-group.entry.js +8 -8
  309. package/dist/q2-tecton-elements/q2-checkbox_2.entry.js +7 -7
  310. package/dist/q2-tecton-elements/q2-currency.entry.js +40 -40
  311. package/dist/q2-tecton-elements/q2-data-table.entry.js +64 -64
  312. package/dist/q2-tecton-elements/q2-detail.entry.js +1 -1
  313. package/dist/q2-tecton-elements/q2-dropdown-item.entry.js +5 -5
  314. package/dist/q2-tecton-elements/q2-dropdown.entry.js +21 -21
  315. package/dist/q2-tecton-elements/q2-editable-field.entry.js +18 -17
  316. package/dist/q2-tecton-elements/q2-example.entry.js +5 -5
  317. package/dist/q2-tecton-elements/q2-file-picker.entry.js +6 -6
  318. package/dist/q2-tecton-elements/q2-form.entry.js +3 -3
  319. package/dist/q2-tecton-elements/q2-formatted-text.entry.js +3 -3
  320. package/dist/q2-tecton-elements/q2-icon.entry.js +1 -1
  321. package/dist/q2-tecton-elements/q2-item.entry.js +1 -1
  322. package/dist/q2-tecton-elements/q2-legend.entry.js +8 -8
  323. package/dist/q2-tecton-elements/q2-link_2.entry.js +5 -5
  324. package/dist/q2-tecton-elements/q2-message.entry.js +23 -23
  325. package/dist/q2-tecton-elements/q2-meter.entry.js +4 -4
  326. package/dist/q2-tecton-elements/q2-modal.entry.js +3 -3
  327. package/dist/q2-tecton-elements/q2-month-picker.entry.js +39 -39
  328. package/dist/q2-tecton-elements/q2-optgroup.entry.js +13 -13
  329. package/dist/q2-tecton-elements/q2-option.entry.js +22 -22
  330. package/dist/q2-tecton-elements/q2-otp.entry.js +1 -1
  331. package/dist/q2-tecton-elements/q2-pagination.entry.js +11 -11
  332. package/dist/q2-tecton-elements/q2-pill.entry.js +44 -25
  333. package/dist/q2-tecton-elements/q2-radio-group.entry.js +1 -1
  334. package/dist/q2-tecton-elements/q2-radio.entry.js +24 -24
  335. package/dist/q2-tecton-elements/q2-relative-time.entry.js +21 -21
  336. package/dist/q2-tecton-elements/q2-search.entry.js +12 -12
  337. package/dist/q2-tecton-elements/q2-section.entry.js +25 -25
  338. package/dist/q2-tecton-elements/q2-select.entry.js +5 -5
  339. package/dist/q2-tecton-elements/q2-stepper-pane.entry.js +16 -16
  340. package/dist/q2-tecton-elements/q2-stepper-vertical.entry.js +77 -53
  341. package/dist/q2-tecton-elements/q2-stepper.entry.js +44 -30
  342. package/dist/q2-tecton-elements/q2-surface.entry.js +5 -5
  343. package/dist/q2-tecton-elements/q2-tab-container.entry.js +109 -56
  344. package/dist/q2-tecton-elements/q2-tab-pane.entry.js +13 -13
  345. package/dist/q2-tecton-elements/q2-tecton-elements.esm.js +1 -1
  346. package/dist/q2-tecton-elements/q2-textarea.entry.js +14 -14
  347. package/dist/q2-tecton-elements/q2-toast.entry.js +6 -6
  348. package/dist/q2-tecton-elements/q2-tooltip.entry.js +25 -24
  349. package/dist/q2-tecton-elements/tecton-tab-pane.entry.js +11 -11
  350. package/dist/types/components/q2-carousel/q2-carousel.d.ts +14 -0
  351. package/dist/types/components/q2-input/q2-input.d.ts +7 -1
  352. package/dist/types/components/q2-pill/q2-pill.d.ts +4 -0
  353. package/dist/types/components/q2-stepper/q2-stepper.d.ts +1 -0
  354. package/dist/types/components/q2-stepper-vertical/q2-stepper-vertical.d.ts +3 -2
  355. package/dist/types/components/q2-surface/q2-surface.d.ts +3 -3
  356. package/dist/types/components/q2-tab-container/q2-tab-container.d.ts +17 -3
  357. package/dist/types/components/q2-tooltip/q2-tooltip.d.ts +2 -1
  358. package/dist/types/components.d.ts +50 -23
  359. package/dist/types/utils/helpers.d.ts +16 -1
  360. package/dist/types/utils/test/vr-helpers.d.ts +11 -0
  361. 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
  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-btn-border?: (*) Controls the optional border shorthand of the button.
137
181
  * @prop --tct-btn-border-radius: (<length-percentage>) Controls the corner radius of the button.
@@ -150,6 +194,9 @@ button {
150
194
  * @prop --tct-btn-font-size-small: (<length-percentage>) Controls the font size of the button when size is small.
151
195
  * @prop --tct-btn-font-size-medium: (<length-percentage>) Controls the font size of the button when size is medium.
152
196
  * @prop --tct-btn-font-size-large: (<length-percentage>) Controls the font size of the button when size is large.
197
+ * @prop --tct-btn-line-height-small: (<length-percentage>) Controls the line height of the button when size is small.
198
+ * @prop --tct-btn-line-height-medium: (<length-percentage>) Controls the line height of the button when size is medium.
199
+ * @prop --tct-btn-line-height-large: (<length-percentage>) Controls the line height of the button when size is large.
153
200
  * @prop --tct-btn-min-height-small?: (<length>) Controls the optional minimum height of the button when size is small.
154
201
  * @prop --tct-btn-min-height-medium?: (<length>) Controls the optional minimum height of the button when size is medium.
155
202
  * @prop --tct-btn-min-height-large?: (<length>) Controls the optional minimum height of the button when size is large.
@@ -510,6 +557,7 @@ button {
510
557
  transition-property: background, color, box-shadow, fill, border-color, border-width;
511
558
  outline: 0;
512
559
  min-height: var(--tct-btn-min-height, none);
560
+ letter-spacing: var(--tct-btn-letter-spacing, inherit);
513
561
  }
514
562
  button:disabled {
515
563
  opacity: var(--tct-btn-disabled-opacity, var(--t-btn-disabled-opacity, var(--tct-disabled-opacity, var(--app-disabled-opacity, 0.4))));
@@ -519,7 +567,6 @@ button.has-color, button.has-intent {
519
567
  font-size: var(--tct-btn-font-size, var(--t-btn-font-size, inherit));
520
568
  border-radius: var(--tct-btn-border-radius, var(--comp-border-radius));
521
569
  text-transform: var(--tct-btn-text-transform);
522
- letter-spacing: var(--tct-btn-letter-spacing, inherit);
523
570
  }
524
571
  button.has-color:not(.has-size), button.has-intent:not(.has-size) {
525
572
  padding: var(--tct-btn-padding, var(--t-btn-padding, var(--tct-scale-2, var(--app-scale-2x, 10px))));
@@ -542,28 +589,31 @@ button:not(.has-size):not(.icon-only) ::slotted(q2-icon) {
542
589
  :host([size="4"]) button {
543
590
  padding: var(--tct-scale-6x, var(--app-scale-6x, 30px));
544
591
  }
545
- :host([size=small]) button:not(.intent-coin):not(.icon-only) {
546
- padding: var(--tct-btn-padding-size-small, var(--t-btn-padding-size-small, 0 15px));
547
- font-size: var(--tct-btn-font-size-small, var(--t-btn-font-size-small, 14px));
592
+ :host([size=small]) button.has-intent:not(.intent-coin):not(.icon-only) {
593
+ padding: var(--tct-btn-padding-size-small, var(--t-btn-padding-size-small, 6px 13px));
594
+ font-size: var(--tct-btn-font-size-small, var(--t-btn-font-size-small, var(--const-px-14, 14px)));
595
+ line-height: var(--tct-btn-line-height-small, var(--app-line-height, var(--const-px-14, 14px)));
548
596
  min-height: var(--tct-btn-min-height-small, 36px);
549
597
  }
550
- :host([size=small]) button:not(.intent-coin):not(.icon-only) ::slotted(q2-icon) {
598
+ :host([size=small]) button.has-intent:not(.intent-coin):not(.icon-only) ::slotted(q2-icon) {
551
599
  --tct-icon-size: var(--tct-btn-icon-size-small, 14px);
552
600
  }
553
- :host([size=medium]) button:not(.intent-coin):not(.icon-only) {
554
- padding: var(--tct-btn-padding-size-medium, var(--t-btn-padding-size-medium, 0 15px));
555
- font-size: var(--tct-btn-font-size-medium, var(--t-btn-font-size-medium, 14px));
601
+ :host(:is(:not([size]), [size=medium])) button.has-intent:not(.intent-coin):not(.icon-only) {
602
+ padding: var(--tct-btn-padding-size-medium, var(--t-btn-padding-size-medium, 10px 13px));
603
+ font-size: var(--tct-btn-font-size-medium, var(--t-btn-font-size-medium, var(--const-px-14, 14px)));
604
+ line-height: var(--tct-btn-line-height-medium, var(--app-line-height, var(--const-px-14, 14px)));
556
605
  min-height: var(--tct-btn-min-height-medium, 44px);
557
606
  }
558
- :host([size=medium]) button:not(.intent-coin):not(.icon-only) ::slotted(q2-icon) {
607
+ :host(:is(:not([size]), [size=medium])) button.has-intent:not(.intent-coin):not(.icon-only) ::slotted(q2-icon) {
559
608
  --tct-icon-size: var(--tct-btn-icon-size-medium, 16px);
560
609
  }
561
- :host([size=large]) button:not(.intent-coin):not(.icon-only) {
562
- padding: var(--tct-btn-padding-size-large, var(--t-btn-padding-size-large, 0 20px));
563
- font-size: var(--tct-btn-font-size-large, var(--t-btn-font-size-large, 14px));
610
+ :host([size=large]) button.has-intent:not(.intent-coin):not(.icon-only) {
611
+ padding: var(--tct-btn-padding-size-large, var(--t-btn-padding-size-large, 13px 18px));
612
+ font-size: var(--tct-btn-font-size-large, var(--t-btn-font-size-large, var(--const-px-14, 14px)));
613
+ line-height: var(--tct-btn-line-height-large, var(--app-line-height, var(--const-px-14, 14px)));
564
614
  min-height: var(--tct-btn-min-height-large, 50px);
565
615
  }
566
- :host([size=large]) button:not(.intent-coin):not(.icon-only) ::slotted(q2-icon) {
616
+ :host([size=large]) button.has-intent:not(.intent-coin):not(.icon-only) ::slotted(q2-icon) {
567
617
  --tct-icon-size: var(--tct-btn-icon-size-large, 18px);
568
618
  }
569
619
  :host(:not([intent])) button:focus-visible {
@@ -1177,7 +1227,7 @@ button.intent-coin:focus:active:not([disabled]) {
1177
1227
 
1178
1228
  .coin-label {
1179
1229
  color: var(--tct-btn-coin-label-color, var(--t-text, #4d4d4d));
1180
- font-size: var(--tct-btn-coin-label-font-size, var(--app-font-size, 14px));
1230
+ font-size: var(--tct-btn-coin-label-font-size, var(--app-font-size, var(--const-px-14, 14px)));
1181
1231
  max-width: 100px;
1182
1232
  text-align: center;
1183
1233
  text-overflow: ellipsis;
@@ -1206,7 +1256,7 @@ button.intent-coin:focus:active:not([disabled]) {
1206
1256
  }
1207
1257
  .coin-wrapper .coin-label {
1208
1258
  color: var(--tct-btn-coin-label-color, var(--t-text, #4d4d4d));
1209
- font-size: var(--tct-btn-coin-label-font-size, var(--app-font-size, 14px));
1259
+ font-size: var(--tct-btn-coin-label-font-size, var(--app-font-size, var(--const-px-14, 14px)));
1210
1260
  margin-top: var(--tct-btn-coin-gap, var(--app-scale-2x, 10px));
1211
1261
  max-width: 100px;
1212
1262
  text-align: center;
@@ -8,10 +8,6 @@ import { getAriaValueFromProp, handleAriaLabel, handleColor, isEventFromElement,
8
8
  */
9
9
  export class Q2Btn {
10
10
  constructor() {
11
- /**
12
- * Defines the size of q2-btn, it renders as default size if not provided.
13
- */
14
- this.size = 'medium';
15
11
  /** The default behavior of the button. */
16
12
  this.type = 'button';
17
13
  this.handleButtonSize = () => {
@@ -629,8 +625,7 @@ export class Q2Btn {
629
625
  "getter": false,
630
626
  "setter": false,
631
627
  "reflect": true,
632
- "attribute": "size",
633
- "defaultValue": "'medium'"
628
+ "attribute": "size"
634
629
  },
635
630
  "tabIndex": {
636
631
  "type": "number",
@@ -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 INTENTS = [
5
5
  'workflow-primary',
6
6
  'workflow-secondary',
@@ -10,13 +10,25 @@ const INTENTS = [
10
10
  'neutral-text',
11
11
  'coin',
12
12
  ];
13
- const SIZES = ['small', 'medium', 'large'];
13
+ const SIZES = ['small', 'medium', 'large', 'none'];
14
14
  const coinHtml = () => `<q2-btn intent="coin" label="My Button"><q2-avatar icon="star"></q2-avatar></q2-btn>`;
15
15
  const labelAndIconHtml = (intent) => intent === 'coin'
16
16
  ? coinHtml()
17
17
  : `<q2-btn intent="${intent}"><q2-icon type="edit"></q2-icon><span>My Button</span></q2-btn>`;
18
18
  const iconOnlyHtml = (intent) => intent === 'coin' ? coinHtml() : `<q2-btn intent="${intent}"><q2-icon type="edit"></q2-icon></q2-btn>`;
19
- const sizeHtml = (size) => `<q2-btn intent="workflow-primary" size="${size}"><q2-icon type="edit"></q2-icon><span>My Button</span></q2-btn>`;
19
+ const sizeHtml = (intent, size) => {
20
+ const sizeAttr = size === 'none' ? '' : ` size="${size}"`;
21
+ return `<q2-btn intent="${intent}"${sizeAttr}><q2-icon type="edit"></q2-icon><span>My Button</span></q2-btn>`;
22
+ };
23
+ const plainHtml = () => `<q2-btn><q2-icon type="edit"></q2-icon><span>My Button</span></q2-btn>`;
24
+ const SIZED_INTENTS = [
25
+ 'workflow-primary',
26
+ 'workflow-secondary',
27
+ 'workflow-destroy',
28
+ 'workflow-escape',
29
+ 'neutral',
30
+ 'neutral-text',
31
+ ];
20
32
  const restingCase = (name, html, theme) => {
21
33
  test(`${name} — ${theme}`, async ({ page }) => {
22
34
  await setupPage(page, html, { theme });
@@ -70,10 +82,37 @@ test.describe('q2-btn icon-only — intents × themes (resting)', () => {
70
82
  }
71
83
  }
72
84
  });
73
- test.describe('q2-btn workflow-primary — sizes × themes (resting)', () => {
74
- for (const size of SIZES) {
85
+ test.describe('q2-btn intents — sizes × themes (resting)', () => {
86
+ for (const intent of SIZED_INTENTS) {
87
+ for (const size of SIZES) {
88
+ for (const theme of THEMES) {
89
+ restingCase(`q2-btn--${intent}--size-${size}`, sizeHtml(intent, size), theme);
90
+ }
91
+ }
92
+ }
93
+ });
94
+ test.describe('q2-btn plain (no intent) — states × themes', () => {
95
+ for (const theme of THEMES) {
96
+ restingCase('q2-btn--plain--resting', plainHtml(), theme);
97
+ hoverCase('q2-btn--plain--hover', plainHtml(), theme);
98
+ focusCase('q2-btn--plain--focus', plainHtml(), theme);
99
+ }
100
+ });
101
+ // coin exercises --tct-btn-coin-label-font-size.
102
+ // workflow-primary at each size exercises --tct-btn-font-size-small/medium/large.
103
+ const BTN_FONT_SCALE_CASES = [
104
+ { name: 'coin', html: coinHtml() },
105
+ { name: 'workflow-primary--size-small', html: sizeHtml('workflow-primary', 'small') },
106
+ { name: 'workflow-primary--size-medium', html: sizeHtml('workflow-primary', 'medium') },
107
+ { name: 'workflow-primary--size-large', html: sizeHtml('workflow-primary', 'large') },
108
+ ];
109
+ test.describe(`q2-btn — scaled font size × themes`, () => {
110
+ for (const { name, html } of BTN_FONT_SCALE_CASES) {
75
111
  for (const theme of THEMES) {
76
- restingCase(`q2-btn--workflow-primary--size-${size}`, sizeHtml(size), theme);
112
+ test(`q2-btn--${name}--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
113
+ await setupPage(page, html, { theme, fontSizePx: FONT_SCALE_PX });
114
+ await expect(page).toHaveScreenshot(`q2-btn--${name}--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
115
+ });
77
116
  }
78
117
  }
79
118
  });
@@ -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-calendar-margin: (<length-percentage>+) Controls the outer margin of the calendar host.
70
92
  * @prop --tct-calendar-margin-top: (<length-percentage>) Controls the top margin of the calendar host when --tct-calendar-margin is not set.
@@ -143,7 +165,7 @@ q2-popover {
143
165
 
144
166
  .calendar-label {
145
167
  --comp-label-padding: var(--tct-calendar-label-padding, var(--tct-calendar-label-vertical-padding, var(--t-calendar-label-vertical-padding, var(--tct-scale-2, var(--app-scale-2x, 10px)))) 0);
146
- font-size: var(--tct-calendar-label-font-size, var(--t-calendar-label-font-size, 16px));
168
+ font-size: var(--tct-calendar-label-font-size, var(--t-calendar-label-font-size, var(--const-px-16, 16px)));
147
169
  flex: 1 1;
148
170
  flex-basis: calc(100% - var(--tct-btn-icon-width, 44px));
149
171
  margin: 0;
@@ -155,7 +177,7 @@ q2-popover {
155
177
  display: flex;
156
178
  justify-content: center;
157
179
  align-items: center;
158
- font-size: var(--tct-calendar-month-font-size, var(--t-calendar-month-font-size, 16px));
180
+ font-size: var(--tct-calendar-month-font-size, var(--t-calendar-month-font-size, var(--const-px-16, 16px)));
159
181
  font-weight: var(--tct-calendar-month-font-weight, var(--t-calendar-month-font-weight, 600));
160
182
  text-align: center;
161
183
  }
@@ -222,7 +244,7 @@ td:focus-visible {
222
244
  .today-decorator {
223
245
  text-transform: uppercase;
224
246
  font-weight: 700;
225
- font-size: var(--tct-calendar-today-decorator-font-size, 10px);
247
+ font-size: var(--tct-calendar-today-decorator-font-size, var(--const-px-10, 10px));
226
248
  height: 12px;
227
249
  }
228
250
 
@@ -231,7 +253,7 @@ td:focus-visible {
231
253
  }
232
254
 
233
255
  .calendar-disclaimer {
234
- font-size: var(--tct-calendar-disclaimer-font-size, var(--t-calendar-disclaimer-font-size, var(--tct-font-size-small, var(--app-font-size-small, 12px))));
256
+ font-size: var(--tct-calendar-disclaimer-font-size, var(--t-calendar-disclaimer-font-size, var(--tct-font-size-small, var(--app-font-size-small, var(--const-px-12, 12px)))));
235
257
  border-style: solid;
236
258
  border-width: var(--tct-calendar-disclaimer-border-width, var(--t-calendar-disclaimer-border-width, 1px 0 0 0));
237
259
  border-color: var(--tct-calendar-disclaimer-border-color, var(--t-calendar-disclaimer-border-color, var(--tct-gray-13, var(--t-gray-13, var(--tct-gray-l3, var(--app-gray-l3, #e6e6e6))))));
@@ -181,7 +181,7 @@ export class Q2Calendar {
181
181
  }
182
182
  };
183
183
  this.onInputClick = () => {
184
- if (this.disabled)
184
+ if (this.disabled || this.readonly)
185
185
  return;
186
186
  this.toggleCalendar();
187
187
  };
@@ -779,7 +779,7 @@ export class Q2Calendar {
779
779
  // #endregion
780
780
  // #region Render Methods
781
781
  renderCalendarDays() {
782
- return (h("table", { role: "grid", "aria-labelledby": "table-label", ref: ref => (this.calendarTable = ref) }, h("thead", null, h("tr", null, [...Array(7).keys()].map(index => (h("th", { scope: "col", "aria-label": this.dayStrings[index] }, this.dayAbbrStrings[index]))))), h("tbody", { onClick: this.onDateSelection, onKeyDown: this.onDateKeydown, ref: elm => (this.calendarBody = elm), "test-id": "calendarTableBody" }, this.currentWeeks.map(week => (h("tr", null, week.map(day => {
782
+ return (h("table", { role: "grid", "aria-labelledby": "table-label", ref: ref => (this.calendarTable = ref) }, h("caption", { class: "sr" }, loc('tecton.element.calendar.caption')), h("thead", null, h("tr", null, [...Array(7).keys()].map(index => (h("th", { scope: "col", "aria-label": this.dayStrings[index] }, this.dayAbbrStrings[index]))))), h("tbody", { onClick: this.onDateSelection, onKeyDown: this.onDateKeydown, ref: elm => (this.calendarBody = elm), "test-id": "calendarTableBody" }, this.currentWeeks.map(week => (h("tr", null, week.map(day => {
783
783
  var _a;
784
784
  let ariaLabel = '';
785
785
  if (day.isToday)
@@ -800,11 +800,13 @@ export class Q2Calendar {
800
800
  return (h("q2-message", { class: "calendar-hint sr", ref: el => (this.hintMessageElement = el), type: this.hintMessageType }, this.hintMessage));
801
801
  }
802
802
  renderInputField() {
803
- const { isTypeable } = this;
804
- return (h("q2-input", { ref: el => (this.controlElement = el), class: "calendar-input-field", value: this.formattedValue, label: loc(this.label), hideLabel: this.hideLabel, disabled: !!this.disabled, readonly: !!this.readonly, clearable: this.canClear, placeholder: this.computedPlaceholder, optional: !!this.optional, valid: this.valid, "aria-expanded": `${!!this.open}`, "aria-controls": "calendar-popover", hints: this.hintList, errors: this.errorList, onClick: isTypeable ? undefined : this.onInputClick, onChange: e => e.stopImmediatePropagation(), onTctChange: e => e.stopImmediatePropagation(), onInput: e => e.stopImmediatePropagation(), onTctInput: this.onInputInput, onKeyDown: this.onInputKeydown, onKeyUp: this.onInputKeyup, onBlur: this.onInputBlur, onFocus: this.onInputFocus, "icon-right": isTypeable ? undefined : 'calendar', "format-modifier": isTypeable ? this.formatModifier : this.displayFormat || this.formatModifier, type: "date", "hide-messages": !isTypeable, "test-id": "inputAndCalendarToggle", _role: "combobox", _preventEntry: !isTypeable }, isTypeable && (h("q2-btn", { ref: el => (this.btnCalendarToggle = el), slot: "input-right", onClick: this.onInputClick, "test-id": "calendarToggle", label: "tecton.element.calendar.toggleAriaLabel", "hide-label": true }, h("q2-icon", { type: "calendar" })))));
803
+ const { isTypeable, label } = this;
804
+ return (h("q2-input", { ref: el => (this.controlElement = el), class: "calendar-input-field", value: this.formattedValue, label: loc(label), hideLabel: this.hideLabel, disabled: !!this.disabled, readonly: !!this.readonly, clearable: this.canClear, placeholder: this.computedPlaceholder, optional: !!this.optional, valid: this.valid, ariaExpanded: `${!!this.open}`, ariaControls: "calendar-popover", ariaHaspopup: "dialog", hints: this.hintList, errors: this.errorList, onClick: isTypeable ? undefined : this.onInputClick, onChange: e => e.stopImmediatePropagation(), onTctChange: e => e.stopImmediatePropagation(), onInput: e => e.stopImmediatePropagation(), onTctInput: this.onInputInput, onKeyDown: this.onInputKeydown, onKeyUp: this.onInputKeyup, onBlur: this.onInputBlur, onFocus: this.onInputFocus, "icon-right": isTypeable ? undefined : 'calendar', "format-modifier": isTypeable ? this.formatModifier : this.displayFormat || this.formatModifier, type: "date", "hide-messages": !isTypeable, "test-id": "inputAndCalendarToggle", _role: "combobox", _preventEntry: !isTypeable }, isTypeable && (h("q2-btn", { ref: el => (this.btnCalendarToggle = el), slot: "input-right", onClick: this.onInputClick, "test-id": "calendarToggle", label: loc('tecton.element.calendar.toggleAriaLabel', [
805
+ label ? loc(label) : loc('tecton.element.calendar.defaultLabel'),
806
+ ]), ariaExpanded: `${!!this.open}`, "hide-label": true, disabled: !!this.disabled || !!this.readonly }, h("q2-icon", { type: "calendar" })))));
805
807
  }
806
808
  render() {
807
- return (h("click-elsewhere", { key: 'b13259be3c0d64bff32654faf0c738a7a7450c4e', class: this.open ? 'dropdown-open' : undefined, onChange: this.onClickElsewhere }, this.renderInputField(), h("q2-popover", { key: '2e183cd962e7abc4186b93da7edd835e0db5504a', ref: el => (this.popoverElement = el), id: "calendar-popover", controlElement: this.innerInputContainer, open: this.open, direction: this.popoverDirection, minHeight: this.popoverMinHeight, align: this.popoverAlignment, mode: this.popoverMode || undefined, block: true }, this.renderHintField(), this.renderCalendarPopover())));
809
+ return (h("click-elsewhere", { key: 'e7bcb2f1aec6ca1149742b0b3edc0a7bbf9ce925', class: this.open ? 'dropdown-open' : undefined, onChange: this.onClickElsewhere }, this.renderInputField(), h("q2-popover", { key: 'c80c5d1ecfb42a319bba294b20f519a2be6808e1', ref: el => (this.popoverElement = el), id: "calendar-popover", controlElement: this.innerInputContainer, open: this.open, direction: this.popoverDirection, minHeight: this.popoverMinHeight, align: this.popoverAlignment, mode: this.popoverMode || undefined, block: true }, this.renderHintField(), this.renderCalendarPopover())));
808
810
  }
809
811
  static get is() { return "q2-calendar"; }
810
812
  static get encapsulation() { return "shadow"; }
@@ -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
  .month-container {
69
91
  --comp-month-primary-background: var(--tct-btn-primary-background, var(--tct-btn-primary-bg, var(--t-btn-primary-bg, #2e2e2e)));
70
92
  --comp-month-primary-font-color: var(--tct-btn-primary-font-color, var(--t-btn-primary-font-color, var(--tct-white, var(--app-white, #ffffff))));
@@ -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
  // Resting variants — input field in its default closed state.
5
5
  // Note: variants that show the calendar popover use a fixed value (2025-05-20) so
6
6
  // the rendered month/year is stable across runs. Resting variants without a value
@@ -169,3 +169,36 @@ test.describe('q2-calendar — variants × themes', () => {
169
169
  dayHoverCase(POPOVER_VARIANT, theme);
170
170
  }
171
171
  });
172
+ // 'default' (resting, closed) exercises --tct-calendar-label-font-size.
173
+ // POPOVER_VARIANT (open) exercises --tct-calendar-month-font-size.
174
+ // disclaimer variant exercises --tct-calendar-disclaimer-font-size.
175
+ const CALENDAR_DISCLAIMER_VARIANT = {
176
+ name: 'with-disclaimer',
177
+ html: `<q2-calendar label="My calendar" disclaimer="Rates subject to change."></q2-calendar>`,
178
+ };
179
+ test.describe(`q2-calendar — scaled font size × themes`, () => {
180
+ for (const theme of THEMES) {
181
+ test(`q2-calendar--default--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
182
+ await setupPage(page, `<q2-calendar label="My calendar" placeholder="My date"></q2-calendar>`, {
183
+ theme,
184
+ setupLoc: true,
185
+ fontSizePx: FONT_SCALE_PX,
186
+ });
187
+ await expect(page).toHaveScreenshot(`q2-calendar--default--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
188
+ });
189
+ test(`q2-calendar--popover--expanded-default--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
190
+ await freezeClock(page);
191
+ await setupPage(page, POPOVER_VARIANT.html, { theme, setupLoc: true, fontSizePx: FONT_SCALE_PX });
192
+ await openPopoverViaKeyboard(page);
193
+ await expect(page).toHaveScreenshot(`q2-calendar--popover--expanded-default--${FONT_SCALE_SUFFIX}--${theme}.png`);
194
+ });
195
+ test(`q2-calendar--with-disclaimer--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
196
+ await setupPage(page, CALENDAR_DISCLAIMER_VARIANT.html, {
197
+ theme,
198
+ setupLoc: true,
199
+ fontSizePx: FONT_SCALE_PX,
200
+ });
201
+ await expect(page).toHaveScreenshot(`q2-calendar--with-disclaimer--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
202
+ });
203
+ }
204
+ });
@@ -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-card-background: (<color>) Controls the background color of the card container.
70
92
  * @prop --tct-card-backdrop-filter?: (*) Controls the optional backdrop-filter applied to the card container.
@@ -252,7 +274,7 @@ p {
252
274
 
253
275
  h3 {
254
276
  font-weight: var(--tct-card-font-weight, var(--t-card-font-weight, 600));
255
- font-size: var(--tct-card-font-size, var(--t-card-font-size, 17px));
277
+ font-size: var(--tct-card-font-size, var(--t-card-font-size, var(--const-px-17, 17px)));
256
278
  line-height: var(--tct-card-title-line-height, var(--app-line-height, 1.428571429em));
257
279
  text-overflow: ellipsis;
258
280
  overflow: hidden;
@@ -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 DESC = 'This is your card description which can be up to two lines long.';
5
5
  const SHORT_DESC = 'This is your card description';
6
6
  const VARIANTS = [
@@ -69,3 +69,12 @@ test.describe('q2-card — variants × themes', () => {
69
69
  focusCase(DEFAULT_VARIANT, theme);
70
70
  }
71
71
  });
72
+ // 'default' exercises --tct-card-font-size (card title h3).
73
+ test.describe(`q2-card — scaled font size × themes`, () => {
74
+ for (const theme of THEMES) {
75
+ test(`q2-card--default--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
76
+ await setupPage(page, DEFAULT_VARIANT.html, { theme, fontSizePx: FONT_SCALE_PX });
77
+ await expect(page).toHaveScreenshot(`q2-card--default--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
78
+ });
79
+ }
80
+ });
@@ -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
  :host {
69
91
  /**
70
92
  * @prop --tct-card-image-base-blur: (<length>) Controls the blur radius applied to the base card image layer.
@@ -360,7 +382,7 @@ button {
360
382
  }
361
383
 
362
384
  .card-status-text {
363
- font-size: 14px;
385
+ font-size: var(--const-px-14, 14px);
364
386
  font-family: var(--uux-app-fontFamily, OpenSans, Helvetica Neue, Helvetica, Arial, sans-serif);
365
387
  text-transform: uppercase;
366
388
  white-space: nowrap;
@@ -2,7 +2,7 @@ import { readFileSync } from "fs";
2
2
  import { join } from "path";
3
3
  import { expect } from "@playwright/test";
4
4
  import { test } from "@stencil/playwright";
5
- import { setupPage, THEMES } from "../../../utils/test/vr-helpers";
5
+ import { setupPage, THEMES, FONT_SCALE_PX, FONT_SCALE_SUFFIX } from "../../../utils/test/vr-helpers";
6
6
  // Inline FI logo as a data URI so the test stays hermetic — `setContent` runs
7
7
  // against `about:blank`, so relative paths from the .html playground would not
8
8
  // resolve here.
@@ -149,3 +149,11 @@ test.describe('q2-card-image — variants × themes', () => {
149
149
  focusCase(CLICKABLE_VARIANT, theme);
150
150
  }
151
151
  });
152
+ test.describe(`q2-card-image — font scale ${FONT_SCALE_PX}px × themes`, () => {
153
+ for (const theme of THEMES) {
154
+ test(`q2-card-image--status-enabled--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
155
+ await setupPage(page, `<q2-card-image background="primary" card-status="enabled" fi-logo="${FI_LOGO}" chip="gold" card-number="${NUMBER}" expiration-date="${EXP}" card-holder="${HOLDER}" vendor="mastercard" ${W_LG}></q2-card-image>`, { theme, fontSizePx: FONT_SCALE_PX });
156
+ await expect(page).toHaveScreenshot(`q2-card-image--status-enabled--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
157
+ });
158
+ }
159
+ });
@@ -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-carousel-background: (<color>) Controls the background color of the insufficient-pane feedback container.
70
92
  * @prop --tct-carousel-gap: (<length-percentage>) Controls the gap between the carousel content row and the pagination row.
@@ -93,8 +115,6 @@ button {
93
115
  * @prop --tct-carousel-navigation-arrow-opacity: (<number>) Controls the opacity of the navigation arrows.
94
116
  * @prop --tct-carousel-arrow-background: (<color>) Controls the background color of the navigation arrow buttons.
95
117
  * @prop --tct-carousel-arrow-hover-background: (<color>) Controls the background color of the navigation arrow buttons on hover and focus.
96
- * @prop --tct-carousel-arrow-font-color: (<color>) Controls the color of the icon inside the navigation arrow buttons.
97
- * @prop --tct-carousel-btn-icon-stroke-secondary: (<color>) Controls the secondary stroke color of the navigation arrow icon.
98
118
  * @prop --tct-carousel-autoplay-hover-background: (<color>) Controls the background color of the autoplay toggle button on hover and focus.
99
119
  * @prop --tct-carousel-autoplay-icon-color: (<color>) Controls the color of the autoplay toggle button icon.
100
120
  * @prop --tct-carousel-autoplay-icon-height: (<length>) Controls the height of the autoplay toggle button icon.
@@ -320,44 +340,14 @@ q2-carousel {
320
340
  }
321
341
 
322
342
  .q2-carousel-navigation-button {
323
- display: flex;
324
- align-items: center;
325
- justify-content: center;
326
- position: relative;
327
- width: 44px;
328
- height: 44px;
329
- padding: 0;
330
- border: none;
331
- background: transparent;
332
- cursor: pointer;
333
- opacity: var(--tct-carousel-navigation-arrow-opacity, 1);
334
- -webkit-tap-highlight-color: transparent;
335
- }
336
- .q2-carousel-navigation-button::before {
337
- content: "";
338
- position: absolute;
339
- width: 32px;
340
- height: 32px;
341
- border-radius: 50%;
342
- background-color: var(--tct-carousel-arrow-background, var(--t-primary, #6a4a9e));
343
- transition: background-color var(--t-tween-time-in-2, 200ms) var(--t-tween-ease-inout, cubic-bezier(0.4, 0, 0.2, 1));
344
- }
345
- .q2-carousel-navigation-button:hover::before, .q2-carousel-navigation-button:focus-visible::before {
346
- background-color: var(--tct-carousel-arrow-hover-background, var(--t-primary-d1, #5f438e));
347
- }
348
- .q2-carousel-navigation-button:focus-visible {
349
- outline: none;
350
- box-shadow: none;
351
- }
352
- .q2-carousel-navigation-button:focus-visible::before {
353
- outline: 2px solid var(--const-focus-color, #1a73e8);
354
- outline-offset: 2px;
355
- }
356
- .q2-carousel-navigation-button q2-icon {
357
- position: relative;
343
+ --tct-btn-icon-width: 32px;
344
+ --tct-btn-icon-height: 32px;
345
+ --tct-btn-icon-border-radius: 50%;
346
+ --tct-btn-icon-padding: 0;
358
347
  --tct-icon-size: 16px;
359
- --tct-icon-stroke-primary: var(--tct-carousel-arrow-font-color, var(--t-base, #ffffff));
360
- --tct-icon-stroke-secondary: var(--tct-carousel-btn-icon-stroke-secondary, var(--app-gray, #747474));
348
+ --tct-btn-primary-background: var(--tct-carousel-arrow-background, var(--tct-carousel-indicator-active, var(--t-primary, #6a4a9e)));
349
+ --tct-btn-primary-hover-background: var(--tct-carousel-arrow-hover-background, var(--t-primary-d1, #5f438e));
350
+ opacity: var(--tct-carousel-navigation-arrow-opacity, 1);
361
351
  }
362
352
 
363
353
  .q2-carousel-autoplay-control {