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
@@ -182,6 +182,11 @@ export class Q2StepperVertical {
182
182
  const slot = Array.from(pane.children).find(child => child.getAttribute('slot') === slotName);
183
183
  return (_a = slot === null || slot === void 0 ? void 0 : slot.outerHTML) !== null && _a !== void 0 ? _a : (pane[slotName] ? loc(pane[slotName]) : undefined);
184
184
  }
185
+ getStatusLabel(status) {
186
+ const statusKey = `tecton.element.stepper.status.${status}`;
187
+ const statusLabel = loc(statusKey);
188
+ return statusLabel === statusKey ? status : statusLabel;
189
+ }
185
190
  getStepId(currentStepId, goTo) {
186
191
  const allEnabledStepBtns = Array.from(this.hostElement.shadowRoot.querySelectorAll('ul:not([aria-hidden="true"]) > li > button:not([aria-disabled="true"])'));
187
192
  const currentStepIndex = allEnabledStepBtns.findIndex(btn => btn.getAttribute('id') === currentStepId);
@@ -251,14 +256,23 @@ export class Q2StepperVertical {
251
256
  }
252
257
  // #endregion
253
258
  // #region Render Methods
254
- renderChildStepBtn(pane, index, children, parentLabel) {
259
+ renderChildStepBtn(pane, index, children) {
255
260
  const { currentStepId } = this;
256
261
  const { id, label, status, disabled: isPaneDisabled } = pane;
257
262
  const stepNumber = index + 1;
258
263
  const labelId = label && `label-${id}`;
259
264
  const isCurrentStep = id === currentStepId;
260
265
  const isLocked = status === 'locked';
261
- const btnLabel = !label && loc('tecton.element.advancedStepper.childNumber', [`${stepNumber}`, `${children}`, parentLabel]);
266
+ const positionId = `position-${id}`;
267
+ const statusId = `status-${id}`;
268
+ const accessibleStatus = status === 'complete' || status === 'error' ? status : 'pending';
269
+ const positionLabel = loc('tecton.element.stepper.number', {
270
+ step: `${stepNumber}`,
271
+ total: `${children}`,
272
+ });
273
+ const statusLabel = this.getStatusLabel(accessibleStatus);
274
+ const labelledBy = label ? `${positionId} ${labelId} ${statusId}` : undefined;
275
+ const btnLabel = label ? undefined : `${positionLabel}, ${statusLabel}`;
262
276
  let statusIcon;
263
277
  if (status === 'error')
264
278
  statusIcon = 'warning-filled';
@@ -267,14 +281,14 @@ export class Q2StepperVertical {
267
281
  stepClasses.push(`status-${status}`);
268
282
  if (isPaneDisabled)
269
283
  stepClasses.push('pane-disabled');
270
- return (h("li", { role: "presentation" }, h("button", { class: stepClasses.join(' '), type: "button", "aria-labelledby": labelId, "aria-label": btnLabel, "aria-selected": `${isCurrentStep}`, id: id, "aria-disabled": isLocked ? 'true' : null, role: "tab", tabIndex: isCurrentStep ? 0 : -1, onKeyDown: ev => !isLocked && this.onStepKeyDown(ev, id), onClick: ev => !isPaneDisabled && !isLocked && this.onStepClick(ev, id) }, statusIcon && (h("div", { class: "step-child-icon" }, h("q2-icon", { type: statusIcon }))), label && (h("div", { class: "step-child-label", id: labelId, innerHTML: sanitizeHTMLString(label) })))));
284
+ return (h("li", { role: "presentation" }, h("button", { class: stepClasses.join(' '), type: "button", "aria-labelledby": labelledBy, "aria-label": btnLabel, "aria-selected": `${isCurrentStep}`, id: id, "aria-disabled": isLocked ? 'true' : null, role: "tab", tabIndex: isCurrentStep ? 0 : -1, onKeyDown: ev => !isLocked && this.onStepKeyDown(ev, id), onClick: ev => !isPaneDisabled && !isLocked && this.onStepClick(ev, id) }, label && (h(Fragment, null, h("span", { class: "sr-only", id: positionId }, positionLabel), h("span", { class: "sr-only", id: statusId }, statusLabel))), statusIcon && (h("div", { class: "step-child-icon" }, h("q2-icon", { "aria-hidden": "true", type: statusIcon }))), label && (h("div", { class: "step-child-label", id: labelId, innerHTML: sanitizeHTMLString(label) })))));
271
285
  }
272
- renderSpacer(pane, stepLabel, isExpanded, isLastStep) {
286
+ renderSpacer(pane, isExpanded, isLastStep) {
273
287
  const shouldRender = (isLastStep && !!pane.children.length) || !isLastStep;
274
288
  const spacerClasses = ['spacer'];
275
289
  if (!isLastStep)
276
290
  spacerClasses.push('has-sibling');
277
- return (shouldRender && (h("div", { class: spacerClasses.join(' ') }, !!pane.children.length && (h("ul", { ref: el => isExpanded && (this.expandedStepChildrenList = el), "aria-hidden": `${!isExpanded}` }, pane.children.map((child, index, children) => this.renderChildStepBtn(child, index, children.length, stepLabel)))))));
291
+ return (shouldRender && (h("div", { class: spacerClasses.join(' ') }, !!pane.children.length && (h("ul", { ref: el => isExpanded && (this.expandedStepChildrenList = el), "aria-hidden": `${!isExpanded}` }, pane.children.map((child, index, children) => this.renderChildStepBtn(child, index, children.length)))))));
278
292
  }
279
293
  renderStepBtn(pane, index) {
280
294
  const { currentStepId, structuredPanes } = this;
@@ -286,7 +300,16 @@ export class Q2StepperVertical {
286
300
  const isLocked = status === 'locked';
287
301
  const stepLabel = label;
288
302
  const descriptionId = label && description && `description-${id}`;
289
- const btnLabel = !label && loc('tecton.element.advancedStepper.number', [`${stepNumber}`, `${structuredPanes.length}`]);
303
+ const positionId = `position-${id}`;
304
+ const statusId = `status-${id}`;
305
+ const accessibleStatus = status === 'complete' || status === 'error' ? status : 'pending';
306
+ const positionLabel = loc('tecton.element.stepper.number', {
307
+ step: `${stepNumber}`,
308
+ total: `${structuredPanes.length}`,
309
+ });
310
+ const statusLabel = this.getStatusLabel(accessibleStatus);
311
+ const labelledBy = label ? `${positionId} ${labelId} ${statusId}` : undefined;
312
+ const btnLabel = label ? undefined : `${positionLabel}, ${statusLabel}`;
290
313
  let statusIcon;
291
314
  if (status === 'complete')
292
315
  statusIcon = 'success-filled';
@@ -299,10 +322,10 @@ export class Q2StepperVertical {
299
322
  stepClasses.push('pane-disabled');
300
323
  const childIds = pane.children.map(child => child.id);
301
324
  const isExpanded = isCurrentStep || childIds.includes(currentStepId);
302
- return (h("li", { role: "presentation" }, h("button", { class: stepClasses.join(' '), type: "button", "aria-labelledby": labelId, "aria-describedBy": descriptionId, "aria-label": btnLabel, "aria-selected": `${isCurrentStep}`, "aria-expanded": !!pane.children.length ? `${isExpanded}` : null, id: id, "aria-disabled": isLocked ? 'true' : null, role: "tab", tabIndex: isCurrentStep ? 0 : -1, onKeyDown: ev => !isLocked && this.onStepKeyDown(ev, id), onClick: ev => !isPaneDisabled && !isLocked && this.onStepClick(ev, id) }, statusIcon ? (h("div", { class: "step-icon" }, h("q2-icon", { type: statusIcon }))) : (h("div", { class: "step-bubble" }, stepNumber)), label && (h("div", null, h("div", { class: "step-label", id: labelId, innerHTML: sanitizeHTMLString(stepLabel) }), description && (h("div", { class: "step-description", id: descriptionId, innerHTML: sanitizeHTMLString(description) }))))), this.renderSpacer(pane, stepLabel, isExpanded, isLastStep)));
325
+ return (h("li", { role: "presentation" }, h("button", { class: stepClasses.join(' '), type: "button", "aria-labelledby": labelledBy, "aria-describedBy": descriptionId, "aria-label": btnLabel, "aria-selected": `${isCurrentStep}`, "aria-expanded": !!pane.children.length ? `${isExpanded}` : null, id: id, "aria-disabled": isLocked ? 'true' : null, role: "tab", tabIndex: isCurrentStep ? 0 : -1, onKeyDown: ev => !isLocked && this.onStepKeyDown(ev, id), onClick: ev => !isPaneDisabled && !isLocked && this.onStepClick(ev, id) }, label && (h(Fragment, null, h("span", { class: "sr-only", id: positionId }, positionLabel), h("span", { class: "sr-only", id: statusId }, statusLabel))), statusIcon ? (h("div", { class: "step-icon" }, h("q2-icon", { "aria-hidden": "true", type: statusIcon }))) : (h("div", { class: "step-bubble" }, stepNumber)), label && (h("div", null, h("div", { class: "step-label", id: labelId, innerHTML: sanitizeHTMLString(stepLabel) }), description && (h("div", { class: "step-description", id: descriptionId, innerHTML: sanitizeHTMLString(description) }))))), this.renderSpacer(pane, isExpanded, isLastStep)));
303
326
  }
304
327
  render() {
305
- return (h(Fragment, { key: '2771f649f3e5e8a37657d43678d83c67204ec466' }, h("ul", { key: 'f0909b76f95f6c3684a2cffa069d530be3d951ce', role: "tablist" }, this.structuredPanes.map((pane, index) => this.renderStepBtn(pane, index))), h("div", { key: '747eedecf0c9774439eb6ccf60528a521eb78685', role: "list" }, h("slot", { key: 'db02fc51b4811f510761365667516ce985c212d8' }))));
328
+ return (h(Fragment, { key: 'eab8d8816aebfb5aa104a17b75dc0e8b4ed4ce68' }, h("ul", { key: 'f155624641313e8375e6ee448fed150ae0c62cf1', role: "tablist" }, this.structuredPanes.map((pane, index) => this.renderStepBtn(pane, index))), h("div", { key: '1ff078e00dcb1e4c861bc691ccc31ec5c1436fac', role: "list" }, h("slot", { key: 'adf07ae0725ccc7c1ce149052f2325e6bfc01677' }))));
306
329
  }
307
330
  static get is() { return "q2-stepper-vertical"; }
308
331
  static get encapsulation() { return "shadow"; }
@@ -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 DEFAULT_PANES = `
5
5
  <q2-stepper-pane label="Step 1" id="step-1">Pane content</q2-stepper-pane>
6
6
  <q2-stepper-pane label="Step 2" id="step-2">Pane content</q2-stepper-pane>
@@ -94,3 +94,18 @@ test.describe('q2-stepper-vertical — variants × themes', () => {
94
94
  }
95
95
  }
96
96
  });
97
+ // 'with-children' exercises --tct-stepper-vertical-btn-font-size,
98
+ // --tct-stepper-vertical-btn-label-font-size, --tct-stepper-vertical-child-btn-font-size,
99
+ // and --tct-stepper-vertical-child-btn-label-font-size (top-level + nested step buttons).
100
+ // 'with-descriptions' exercises --tct-stepper-vertical-description-font-size.
101
+ const SV_FONT_SCALE_VARIANTS = VARIANTS.filter(v => v.name === 'with-children' || v.name === 'with-descriptions');
102
+ test.describe(`q2-stepper-vertical — scaled font size × themes`, () => {
103
+ for (const variant of SV_FONT_SCALE_VARIANTS) {
104
+ for (const theme of THEMES) {
105
+ test(`q2-stepper-vertical--${variant.name}--resting--${FONT_SCALE_SUFFIX} — ${theme}`, async ({ page }) => {
106
+ await setupPage(page, variant.html, { theme, fontSizePx: FONT_SCALE_PX });
107
+ await expect(page).toHaveScreenshot(`q2-stepper-vertical--${variant.name}--resting--${FONT_SCALE_SUFFIX}--${theme}.png`);
108
+ });
109
+ }
110
+ }
111
+ });
@@ -1,19 +1,27 @@
1
1
  /**
2
- * @prop --tct-surface-background-default: (<color>) Background color when background="default". Defaults to --t-base.
3
- * @prop --tct-surface-background-primary: (<color>) Background color when background="primary". Defaults to --t-primary.
4
- * @prop --tct-surface-background-secondary: (<color>) Background color when background="secondary". Defaults to --t-secondary.
5
- * @prop --tct-surface-background-tertiary: (<color>) Background color when background="tertiary". Defaults to --t-tertiary.
6
- * @prop --tct-surface-hover-background: (<color>) Hover background when clickable and no background is set. Defaults to --t-base-hover.
7
- * @prop --tct-surface-primary-hover-background: (<color>) Hover background when clickable and background="primary". Defaults to --t-primary-l2.
8
- * @prop --tct-surface-secondary-hover-background: (<color>) Hover background when clickable and background="secondary". Defaults to --t-secondary-l2.
9
- * @prop --tct-surface-tertiary-hover-background: (<color>) Hover background when clickable and background="tertiary". Defaults to --t-tertiary-l2.
2
+ * @prop --tct-surface-default-background: (<color>) Background color when background="default". Defaults to --t-base.
3
+ * @prop --tct-surface-primary-background: (<color>) Background color when background="primary". Defaults to --t-primary.
4
+ * @prop --tct-surface-secondary-background: (<color>) Background color when background="secondary". Defaults to --t-secondary.
5
+ * @prop --tct-surface-tertiary-background: (<color>) Background color when background="tertiary". Defaults to --t-tertiary.
6
+ * @prop --tct-surface-gray-background: (<color>) Background color when background="gray". Defaults to --t-base-gray1.
7
+ * @prop --tct-surface-default-hover-background: (<color>) Hover background when clickable and background="default" (or unset). Defaults to --t-base-primary1.
8
+ * @prop --tct-surface-primary-hover-background: (<color>) Hover background when clickable and background="primary". Defaults to --t-primary-d2.
9
+ * @prop --tct-surface-secondary-hover-background: (<color>) Hover background when clickable and background="secondary". Defaults to --t-secondary-d2.
10
+ * @prop --tct-surface-tertiary-hover-background: (<color>) Hover background when clickable and background="tertiary". Defaults to --t-tertiary-d2.
11
+ * @prop --tct-surface-gray-hover-background: (<color>) Hover background when clickable and background="gray". Defaults to --t-base-primary1 (matches --tct-surface-default-hover-background).
12
+ * @prop --tct-surface-default-active-background: (<color>) Active/pressed background when clickable and background="default" (or unset). Defaults to --t-base-primary2.
13
+ * @prop --tct-surface-primary-active-background: (<color>) Active/pressed background when clickable and background="primary". Defaults to --t-primary-d3.
14
+ * @prop --tct-surface-secondary-active-background: (<color>) Active/pressed background when clickable and background="secondary". Defaults to --t-secondary-d3.
15
+ * @prop --tct-surface-tertiary-active-background: (<color>) Active/pressed background when clickable and background="tertiary". Defaults to --t-tertiary-d3.
16
+ * @prop --tct-surface-gray-active-background: (<color>) Active/pressed background when clickable and background="gray". Defaults to --t-base-primary2 (matches --tct-surface-default-active-background).
10
17
  * @prop --tct-surface-primary-font-color: (<color>) Text color when background="primary". Defaults to --t-primary-text.
11
18
  * @prop --tct-surface-secondary-font-color: (<color>) Text color when background="secondary". Defaults to --t-secondary-text.
12
19
  * @prop --tct-surface-tertiary-font-color: (<color>) Text color when background="tertiary". Defaults to --t-tertiary-text.
13
- * @prop --tct-surface-border-color: (<color>) Border color when border="default". Defaults to --t-gray-12.
20
+ * @prop --tct-surface-default-border-color: (<color>) Border color when border="default". Defaults to --t-gray-12.
14
21
  * @prop --tct-surface-primary-border-color: (<color>) Border color when border="primary". Defaults to --t-primary.
15
22
  * @prop --tct-surface-secondary-border-color: (<color>) Border color when border="secondary" . Defaults to --t-secondary.
16
23
  * @prop --tct-surface-tertiary-border-color: (<color>) Border color when border="tertiary". Defaults to --t-tertiary.
24
+ * @prop --tct-surface-gray-border-color: (<color>) Border color when border="gray". Defaults to --t-gray-8.
17
25
  * @prop --tct-surface-border-radius-1: (<length>) Corner radius at radius=1. Defaults to --app-border-radius-1 (4px).
18
26
  * @prop --tct-surface-border-radius-2: (<length>) Corner radius at radius=2. Defaults to --app-border-radius-2 (8px).
19
27
  * @prop --tct-surface-border-radius-3: (<length>) Corner radius at radius=3. Defaults to --app-border-radius-3 (12px).
@@ -41,8 +49,8 @@
41
49
  */
42
50
  :host {
43
51
  --comp-surface-bg: transparent;
44
- --comp-surface-hover-background: var(--tct-surface-hover-background, var(--t-base-hover, #f2f2f2));
45
- --comp-surface-border-color: var(--tct-surface-border-color, var(--t-gray-12, #d9d9d9));
52
+ --comp-surface-hover-background: var(--tct-surface-default-hover-background, var(--t-base-primary1, #f2f2f2));
53
+ --comp-surface-border-color: var(--tct-surface-default-border-color, var(--t-gray-12, #d9d9d9));
46
54
  --comp-surface-animation-duration: var(--tct-surface-animation-duration, 1s);
47
55
  --comp-surface-gradient-direction: var(--tct-surface-background-gradient-direction, to right bottom);
48
56
  --comp-surface-radius: 0px;
@@ -119,30 +127,42 @@
119
127
  border-radius: var(--comp-surface-radius);
120
128
  }
121
129
 
122
- :host([background=default]) {
123
- --comp-surface-bg: var(--tct-surface-background-default, var(--t-base, #ffffff));
124
- --comp-surface-hover-background: var(--tct-surface-hover-background, var(--t-base-hover, #f2f2f2));
130
+ :host([background=default]),
131
+ :host([clickable]:not([clickable=false]):not([background])) {
132
+ --comp-surface-bg: var(--tct-surface-default-background, var(--t-base, #ffffff));
133
+ --comp-surface-hover-background: var(--tct-surface-default-hover-background, var(--t-base-primary1, #f2f2f2));
134
+ --comp-surface-active-background: var(--tct-surface-default-active-background, var(--t-base-primary2, #e6e6e6));
125
135
  }
126
136
 
127
137
  :host([background=primary]) {
128
- --comp-surface-bg: var(--tct-surface-background-primary, var(--t-primary, #6a4a9e));
129
- --comp-surface-hover-background: var(--tct-surface-primary-hover-background, var(--t-primary-l2, #7d5ab8));
138
+ --comp-surface-bg: var(--tct-surface-primary-background, var(--t-primary, #6a4a9e));
139
+ --comp-surface-hover-background: var(--tct-surface-primary-hover-background, var(--t-primary-d2, #533978));
140
+ --comp-surface-active-background: var(--tct-surface-primary-active-background, var(--t-primary-d3, #3d2a58));
130
141
  color: var(--tct-surface-primary-font-color, var(--t-primary-text, #ffffff));
131
142
  }
132
143
 
133
144
  :host([background=secondary]) {
134
- --comp-surface-bg: var(--tct-surface-background-secondary, var(--t-secondary, #b3c2cc));
135
- --comp-surface-hover-background: var(--tct-surface-secondary-hover-background, var(--t-secondary-l2, #c2cfd8));
145
+ --comp-surface-bg: var(--tct-surface-secondary-background, var(--t-secondary, #b3c2cc));
146
+ --comp-surface-hover-background: var(--tct-surface-secondary-hover-background, var(--t-secondary-d2, #8fa1ac));
147
+ --comp-surface-active-background: var(--tct-surface-secondary-active-background, var(--t-secondary-d3, #6b7d88));
136
148
  color: var(--tct-surface-secondary-font-color, var(--t-secondary-text, #1a1a1a));
137
149
  }
138
150
 
139
151
  :host([background=tertiary]) {
140
- --comp-surface-bg: var(--tct-surface-background-tertiary, var(--t-tertiary, #e8f5fc));
141
- --comp-surface-hover-background: var(--tct-surface-tertiary-hover-background, var(--t-tertiary-l2, #edf7fd));
152
+ --comp-surface-bg: var(--tct-surface-tertiary-background, var(--t-tertiary, #e8f5fc));
153
+ --comp-surface-hover-background: var(--tct-surface-tertiary-hover-background, var(--t-tertiary-d2, #b8dcef));
154
+ --comp-surface-active-background: var(--tct-surface-tertiary-active-background, var(--t-tertiary-d3, #88c4e2));
142
155
  color: var(--tct-surface-tertiary-font-color, var(--t-tertiary-text, #1a1a1a));
143
156
  }
144
157
 
145
- :host([background]) .container {
158
+ :host([background=gray]) {
159
+ --comp-surface-bg: var(--tct-surface-gray-background, var(--t-base-gray1, #f4f4f4));
160
+ --comp-surface-hover-background: var(--tct-surface-gray-hover-background, var(--t-base-primary1, #f2f2f2));
161
+ --comp-surface-active-background: var(--tct-surface-gray-active-background, var(--t-base-primary2, #e6e6e6));
162
+ }
163
+
164
+ :host([background]) .container,
165
+ :host([clickable]:not([clickable=false]):not([background])) .container {
146
166
  background: var(--comp-surface-bg);
147
167
  }
148
168
 
@@ -166,6 +186,10 @@
166
186
  border-color: var(--tct-surface-tertiary-border-color, var(--t-tertiary, #e8f5fc));
167
187
  }
168
188
 
189
+ :host([border=gray]) .container {
190
+ border-color: var(--tct-surface-gray-border-color, var(--t-gray-8, #808080));
191
+ }
192
+
169
193
  :host([border-gradient]) {
170
194
  padding: 2px;
171
195
  }
@@ -177,7 +201,7 @@
177
201
  }
178
202
 
179
203
  :host([border-gradient]:not([background])) {
180
- --comp-surface-bg: var(--tct-surface-background-default, var(--t-base, #ffffff));
204
+ --comp-surface-bg: var(--tct-surface-default-background, var(--t-base, #ffffff));
181
205
  }
182
206
  :host([border-gradient]:not([background])) .container {
183
207
  background: var(--comp-surface-bg);
@@ -185,7 +209,7 @@
185
209
 
186
210
  :host([border-gradient]:not([border])),
187
211
  :host([border-gradient][border=default]) {
188
- background: linear-gradient(in oklch var(--tct-surface-border-gradient-direction, var(--tct-surface-background-gradient-direction, to right bottom)), color-mix(in oklab, var(--tct-surface-border-color, var(--t-gray-12, #d9d9d9)), white 40%), var(--tct-surface-border-color, var(--t-gray-12, #d9d9d9)));
212
+ background: linear-gradient(in oklch var(--tct-surface-border-gradient-direction, var(--tct-surface-background-gradient-direction, to right bottom)), color-mix(in oklab, var(--tct-surface-default-border-color, var(--t-gray-12, #d9d9d9)), white 40%), var(--tct-surface-default-border-color, var(--t-gray-12, #d9d9d9)));
189
213
  }
190
214
 
191
215
  :host([border-gradient][border=primary]) {
@@ -200,6 +224,10 @@
200
224
  background: linear-gradient(in oklch var(--tct-surface-border-gradient-direction, var(--tct-surface-background-gradient-direction, to right bottom)), color-mix(in oklab, var(--tct-surface-tertiary-border-color, var(--t-tertiary, #e8f5fc)), white 40%), var(--tct-surface-tertiary-border-color, var(--t-tertiary, #e8f5fc)));
201
225
  }
202
226
 
227
+ :host([border-gradient][border=gray]) {
228
+ background: linear-gradient(in oklch var(--tct-surface-border-gradient-direction, var(--tct-surface-background-gradient-direction, to right bottom)), color-mix(in oklab, var(--tct-surface-gray-border-color, var(--t-gray-8, #808080)), white 40%), var(--tct-surface-gray-border-color, var(--t-gray-8, #808080)));
229
+ }
230
+
203
231
  :host([inset=compact]) .container {
204
232
  padding: var(--tct-surface-inset-compact, var(--app-scale-1x, 5px));
205
233
  }
@@ -244,31 +272,34 @@
244
272
  padding-block: var(--tct-surface-inset-comfortable, var(--app-scale-5x, 25px));
245
273
  }
246
274
 
247
- :host([clickable]) {
275
+ :host([clickable]:not([clickable=false])) {
248
276
  cursor: pointer;
249
277
  }
250
- :host([clickable]):hover .container {
278
+ :host([clickable]:not([clickable=false])) .container:hover {
251
279
  background: var(--comp-surface-hover-background);
252
280
  }
253
- :host([clickable])[elevation="0"]:hover .container, :host([clickable]):not([elevation]):hover .container {
281
+ :host([clickable]:not([clickable=false])) .container:active {
282
+ background: var(--comp-surface-active-background, var(--comp-surface-hover-background));
283
+ }
284
+ :host([clickable]:not([clickable=false]))[elevation="0"]:hover .container, :host([clickable]:not([clickable=false])):not([elevation]):hover .container {
254
285
  box-shadow: var(--tct-surface-elevation-hover-0-box-shadow, var(--app-shadow-1, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14)));
255
286
  }
256
- :host([clickable])[elevation="1"]:hover .container {
287
+ :host([clickable]:not([clickable=false]))[elevation="1"]:hover .container {
257
288
  box-shadow: var(--tct-surface-elevation-hover-1-box-shadow, var(--app-shadow-2, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 4px 8px rgba(0, 0, 0, 0.14)));
258
289
  }
259
- :host([clickable])[elevation="2"]:hover .container {
290
+ :host([clickable]:not([clickable=false]))[elevation="2"]:hover .container {
260
291
  box-shadow: var(--tct-surface-elevation-hover-2-box-shadow, var(--app-shadow-3, 0px 0px 2px rgba(0, 0, 0, 0.12), 0px 8px 16px rgba(0, 0, 0, 0.14)));
261
292
  }
262
- :host([clickable])[elevation="3"]:hover .container {
293
+ :host([clickable]:not([clickable=false]))[elevation="3"]:hover .container {
263
294
  box-shadow: var(--tct-surface-elevation-hover-3-box-shadow, var(--app-shadow-4, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 14px 28px rgba(0, 0, 0, 0.14)));
264
295
  }
265
- :host([clickable])[elevation="4"]:hover .container {
296
+ :host([clickable]:not([clickable=false]))[elevation="4"]:hover .container {
266
297
  box-shadow: var(--tct-surface-elevation-hover-4-box-shadow, var(--app-shadow-5, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)));
267
298
  }
268
- :host([clickable])[elevation="5"]:hover .container {
299
+ :host([clickable]:not([clickable=false]))[elevation="5"]:hover .container {
269
300
  box-shadow: var(--tct-surface-elevation-hover-5-box-shadow, var(--app-shadow-5, 0px 0px 8px rgba(0, 0, 0, 0.12), 0px 32px 64px rgba(0, 0, 0, 0.14)));
270
301
  }
271
- :host([clickable]) .container:focus-visible {
302
+ :host([clickable]:not([clickable=false])) .container:focus-visible {
272
303
  outline: none;
273
304
  box-shadow: var(--tct-surface-focus-visible-box-shadow, var(--const-double-focus-ring, 0 0 0 2px var(--t-base), 0 0 0 4px var(--const-focus-color), 0 0 0 6px var(--t-base)));
274
305
  }
@@ -345,4 +376,12 @@
345
376
 
346
377
  :host(.q2-surface-animate-tada) {
347
378
  animation: q2-surface-tada var(--comp-surface-animation-duration) both;
379
+ }
380
+
381
+ ::slotted(:is(h1, h2, h3, h4):first-child) {
382
+ margin-top: 0 !important;
383
+ }
384
+
385
+ ::slotted(:is(q2-action-group):last-child) {
386
+ margin-bottom: 0 !important;
348
387
  }
@@ -61,7 +61,7 @@ export class Q2Surface {
61
61
  * @param animation The animation to play. Defaults to `'pulse'`.
62
62
  * @returns A Promise that resolves when the animation finishes or is cancelled.
63
63
  */
64
- async animate(animation = 'pulse') {
64
+ async triggerAnimation(animation = 'pulse') {
65
65
  var _a;
66
66
  (_a = this._cancelAnimation) === null || _a === void 0 ? void 0 : _a.call(this);
67
67
  return new Promise(resolve => {
@@ -84,7 +84,7 @@ export class Q2Surface {
84
84
  // #endregion
85
85
  // #region Render Methods
86
86
  render() {
87
- return (h(Host, { key: '235f94ccfb0eb7167079e8e25ee78d652999f8e8' }, h("div", { key: 'b01d6e71bb4b8f1f583c63910d4b1eca757572dd', class: "container", role: this.clickable ? 'button' : undefined, tabIndex: this.clickable ? 0 : undefined }, h("slot", { key: '591dc9fcb51d6f238a6186f047661020be9ea800' }))));
87
+ return (h(Host, { key: '992667ac1d625dff77a01d06d058865f99d8d190' }, h("div", { key: 'd58162c346c58a2cc21a4334c08b6cc4a53ed2e0', class: "container", role: this.clickable ? 'button' : undefined, tabIndex: this.clickable ? 0 : undefined }, h("slot", { key: 'b70930390799484c71da93d1f801ecc681d168c6' }))));
88
88
  }
89
89
  static get is() { return "q2-surface"; }
90
90
  static get encapsulation() { return "shadow"; }
@@ -104,8 +104,8 @@ export class Q2Surface {
104
104
  "type": "string",
105
105
  "mutable": false,
106
106
  "complexType": {
107
- "original": "'default' | 'primary' | 'secondary' | 'tertiary'",
108
- "resolved": "\"default\" | \"primary\" | \"secondary\" | \"tertiary\"",
107
+ "original": "'default' | 'primary' | 'secondary' | 'tertiary' | 'gray'",
108
+ "resolved": "\"default\" | \"gray\" | \"primary\" | \"secondary\" | \"tertiary\"",
109
109
  "references": {}
110
110
  },
111
111
  "required": false,
@@ -146,8 +146,8 @@ export class Q2Surface {
146
146
  "type": "string",
147
147
  "mutable": false,
148
148
  "complexType": {
149
- "original": "'default' | 'primary' | 'secondary' | 'tertiary'",
150
- "resolved": "\"default\" | \"primary\" | \"secondary\" | \"tertiary\"",
149
+ "original": "'default' | 'primary' | 'secondary' | 'tertiary' | 'gray'",
150
+ "resolved": "\"default\" | \"gray\" | \"primary\" | \"secondary\" | \"tertiary\"",
151
151
  "references": {}
152
152
  },
153
153
  "required": false,
@@ -333,7 +333,7 @@ export class Q2Surface {
333
333
  }
334
334
  static get methods() {
335
335
  return {
336
- "animate": {
336
+ "triggerAnimation": {
337
337
  "complexType": {
338
338
  "signature": "(animation?: \"bounce\" | \"flash\" | \"pulse\" | \"tada\") => Promise<void>",
339
339
  "parameters": [{
@@ -12,16 +12,41 @@ const VARIANTS = [
12
12
  html: `<q2-surface background="primary" inset="normal"></q2-surface>`,
13
13
  states: ['resting'],
14
14
  },
15
+ {
16
+ name: 'background-primary-clickable',
17
+ html: `<q2-surface background="primary" clickable inset="normal" radius="2"></q2-surface>`,
18
+ states: ['hover', 'active'],
19
+ },
15
20
  {
16
21
  name: 'background-secondary',
17
22
  html: `<q2-surface background="secondary" inset="normal"></q2-surface>`,
18
23
  states: ['resting'],
19
24
  },
25
+ {
26
+ name: 'background-secondary-clickable',
27
+ html: `<q2-surface background="secondary" clickable inset="normal" radius="2"></q2-surface>`,
28
+ states: ['hover', 'active'],
29
+ },
20
30
  {
21
31
  name: 'background-tertiary',
22
32
  html: `<q2-surface background="tertiary" inset="normal"></q2-surface>`,
23
33
  states: ['resting'],
24
34
  },
35
+ {
36
+ name: 'background-tertiary-clickable',
37
+ html: `<q2-surface background="tertiary" clickable inset="normal" radius="2"></q2-surface>`,
38
+ states: ['hover', 'active'],
39
+ },
40
+ {
41
+ name: 'background-gray',
42
+ html: `<q2-surface background="gray" inset="normal"></q2-surface>`,
43
+ states: ['resting'],
44
+ },
45
+ {
46
+ name: 'background-gray-clickable',
47
+ html: `<q2-surface background="gray" clickable inset="normal" radius="2"></q2-surface>`,
48
+ states: ['resting', 'hover', 'active'],
49
+ },
25
50
  {
26
51
  name: 'background-gradient-primary',
27
52
  html: `<q2-surface background="primary" background-gradient inset="normal" radius="2"></q2-surface>`,
@@ -47,16 +72,45 @@ const VARIANTS = [
47
72
  html: `<q2-surface border="tertiary" inset="normal"></q2-surface>`,
48
73
  states: ['resting'],
49
74
  },
75
+ {
76
+ name: 'border-gray',
77
+ html: `<q2-surface border="gray" inset="normal"></q2-surface>`,
78
+ states: ['resting'],
79
+ },
50
80
  {
51
81
  name: 'border-gradient-primary',
52
82
  html: `<q2-surface border="primary" border-gradient inset="normal" radius="2"></q2-surface>`,
53
83
  states: ['resting'],
54
84
  },
85
+ {
86
+ name: 'border-gradient-gray',
87
+ html: `<q2-surface border="gray" border-gradient inset="normal" radius="2"></q2-surface>`,
88
+ states: ['resting'],
89
+ },
55
90
  {
56
91
  name: 'clickable',
57
92
  html: `<q2-surface clickable border="default" radius="2" inset="normal"></q2-surface>`,
58
93
  states: ['resting', 'hover', 'focus', 'active'],
59
94
  },
95
+ {
96
+ name: 'slotted-first-heading',
97
+ html: `<q2-surface border="default" inset="normal" radius="2">
98
+ <h2>Slotted heading</h2>
99
+ <p>Body copy beneath the heading.</p>
100
+ </q2-surface>`,
101
+ states: ['resting'],
102
+ },
103
+ {
104
+ name: 'slotted-last-action-group',
105
+ html: `<q2-surface border="default" inset="normal" radius="2">
106
+ <p>Body copy above the action group.</p>
107
+ <q2-action-group>
108
+ <q2-btn intent="workflow-primary">Confirm</q2-btn>
109
+ <q2-btn intent="workflow-secondary">Cancel</q2-btn>
110
+ </q2-action-group>
111
+ </q2-surface>`,
112
+ states: ['resting'],
113
+ },
60
114
  ];
61
115
  const restingCase = (variant, theme) => {
62
116
  test(`q2-surface--${variant.name}--resting — ${theme}`, async ({ page }) => {
@@ -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-tab-container-padding: (<length-percentage>+) Controls the inner padding of the tab container list.
70
92
  * @prop --tct-tab-container-margin?: (<length-percentage>+) Controls the optional outer margin of the tab container list.
@@ -72,7 +94,7 @@ button {
72
94
  * @prop --tct-tab-container-border-style: (<custom-ident>) Controls the bottom border style of the tab container list.
73
95
  * @prop --tct-tab-container-border-color: (<color>) Controls the bottom border color of the tab container list.
74
96
  * @prop --tct-tab-container-content-padding: (<length-percentage>+) Controls the inner padding of the tab content area.
75
- * @prop --tct-tab-container-content-backgrond?: (<color>) Controls the optional background color of the tab content area.
97
+ * @prop --tct-tab-container-content-background?: (<color>) Controls the optional background color of the tab content area.
76
98
  * @prop --tct-tab-content-padding: (<length-percentage>+) Controls the inner padding of the tab content area when --tct-tab-container-content-padding is not set.
77
99
  * @prop --tct-tab-focus-visible-box-shadow: (*) Controls the box shadow of a tab button when focused via keyboard.
78
100
  * @prop --tct-tab-gap: (<length-percentage>) Controls the gap between adjacent tab buttons.
@@ -102,6 +124,12 @@ button {
102
124
  * @prop --tct-tab-section-padding: (<length-percentage>+) Controls the inner padding of tab buttons when type="section".
103
125
  * @prop --tct-tab-section-font-size: (<length-percentage>) Controls the font size of tab buttons when type="section".
104
126
  * @prop --tct-tab-section-line-height: (<number> | <length-percentage>) Controls the line height of tab buttons when type="section".
127
+ * @prop --tct-tab-container-width: (<length-percentage>) Controls the width of the tab strip when orientation="vertical". Defaults to `200px`.
128
+ * @prop --tct-tab-active-indicator-width: (<length>) Controls the width of the active-tab indicator on the leading edge when orientation="vertical". Defaults to `3px`.
129
+ * @prop --tct-tab-badge-gap?: (<length-percentage>) Controls the optional gap between the label and badge within a tab button when orientation="vertical".
130
+ * @prop --tct-vertical-tab-container-padding?: (<length-percentage>+) Controls the inner padding of the tab container list when orientation="vertical". Defaults to `0`.
131
+ * @prop --tct-vertical-tab-border-radius?: (<length-percentage>) Controls the optional corner radius of tab buttons when orientation="vertical". Defaults to `0`.
132
+ * @prop --tct-vertical-tab-container-content-padding?: (<length-percentage>+) Controls the inner padding of the tab content area when orientation="vertical".
105
133
  */
106
134
  :host {
107
135
  display: block;
@@ -162,15 +190,15 @@ li button {
162
190
  text-decoration: var(--tct-tab-text-decoration, var(--t-tab-text-decoration, none));
163
191
  padding: var(--tct-tab-padding, var(--t-tab-padding, var(--tct-scale-2, var(--app-scale-2x, 10px))));
164
192
  color: var(--tct-tab-inactive-color, var(--t-tab-inactive-color, inherit));
165
- font-size: var(--tct-tab-font-size, var(--t-tab-font-size, 17px));
166
- line-height: var(--tct-tab-line-height, 20px);
193
+ font-size: var(--tct-tab-font-size, var(--t-tab-font-size, var(--const-px-17, 17px)));
194
+ line-height: var(--tct-tab-line-height, var(--const-px-20, 20px));
167
195
  display: block;
168
196
  transition: background var(--t-tween-ease-inout) var(--t-tween-time-in-xxs), color var(--t-tween-ease-inout) var(--t-tween-time-in-xxs), border-color var(--t-tween-ease-inout) var(--t-tween-time-in-xxs);
169
197
  }
170
198
  :host([type=section]) li button {
171
199
  --comp-tab-section-padding: var(--tct-scale-2, var(--app-scale-2x, 10px)) var(--tct-scale-1, var(--app-scale-1x, 5px));
172
- font-size: var(--tct-tab-section-font-size, 14px);
173
- line-height: var(--tct-tab-section-line-height, 18px);
200
+ font-size: var(--tct-tab-section-font-size, var(--const-px-14, 14px));
201
+ line-height: var(--tct-tab-section-line-height, var(--const-px-18, 18px));
174
202
  padding: var(--tct-tab-section-padding, var(--t-tab-section-padding, var(--comp-tab-section-padding)));
175
203
  }
176
204
  li button:focus-visible {
@@ -206,7 +234,7 @@ li button[aria-selected=true] {
206
234
  .tab-content {
207
235
  --comp-tab-content-padding: var(--tct-scale-2, var(--app-scale-2x, 10px)) 0;
208
236
  padding: var(--tct-tab-container-content-padding, var(--tct-tab-content-padding, var(--t-tab-content-padding, var(--comp-tab-content-padding))));
209
- background: var(--tct-tab-container-content-backgrond, none);
237
+ background: var(--tct-tab-container-content-background, none);
210
238
  }
211
239
  .tab-content:focus {
212
240
  outline: none;
@@ -263,4 +291,82 @@ li button[aria-selected=true] {
263
291
  .tab-pane-badge q2-badge {
264
292
  margin-left: 5px;
265
293
  margin-right: 5px;
294
+ }
295
+
296
+ @media screen and (min-width: 768px) {
297
+ :host([orientation=vertical]) {
298
+ display: flex;
299
+ flex-direction: row;
300
+ align-items: stretch;
301
+ }
302
+ :host([orientation=vertical]) .tab-container {
303
+ width: var(--tct-tab-container-width, 200px);
304
+ flex-shrink: 0;
305
+ }
306
+ :host([orientation=vertical]) .tab-content {
307
+ --comp-vertical-tab-content-padding: 0 var(--tct-scale-2, var(--app-scale-2x, 10px));
308
+ flex: 1 1 auto;
309
+ min-width: 0;
310
+ padding: var(--tct-vertical-tab-container-content-padding, var(--tct-vertical-tab-content-padding, var(--t-vertical-tab-content-padding, var(--comp-vertical-tab-content-padding))));
311
+ }
312
+ :host([orientation=vertical]) ul {
313
+ padding: var(--tct-vertical-tab-container-padding, 0);
314
+ flex-direction: column;
315
+ align-items: stretch;
316
+ overflow-y: auto;
317
+ overflow-x: visible;
318
+ border-bottom-width: 0;
319
+ border-right-width: var(--tct-tab-container-border-width, 1px);
320
+ border-right-style: var(--tct-tab-container-border-style, solid);
321
+ border-right-color: var(--tct-tab-container-border-color, var(--t-tab-container-border-color, var(--tct-gray-11, var(--t-gray-11, var(--tct-gray-l1, var(--app-gray-l1, #cccccc))))));
322
+ height: 100%;
323
+ }
324
+ :host([orientation=vertical]) li {
325
+ border-left-width: var(--tct-tab-active-indicator-width, 3px);
326
+ border-left-style: solid;
327
+ border-left-color: transparent;
328
+ transition: border-color var(--t-tween-ease-inout) var(--t-tween-time-in-xxs);
329
+ }
330
+ :host([orientation=vertical]) li:has(button[aria-selected=true]) {
331
+ color: var(--tct-tab-active-color, var(--t-tab-active-color, #2e2e2e));
332
+ border-left-color: var(--tct-tab-active-border-color, var(--t-tab-active-border-color, currentcolor));
333
+ }
334
+ :host([orientation=vertical]) li button {
335
+ border-width: 0;
336
+ text-align: start;
337
+ border-radius: var(--tct-vertical-tab-border-radius, 0);
338
+ }
339
+ :host([orientation=vertical]) .tab-pane-badge {
340
+ justify-content: flex-start;
341
+ gap: var(--tct-tab-badge-gap, var(--tct-scale-1, var(--app-scale-1x, 5px)));
342
+ }
343
+ :host([orientation=vertical]) .gradient-left {
344
+ right: 0;
345
+ width: 100%;
346
+ height: 44px;
347
+ background-image: linear-gradient(to top, var(--t-base-a0), var(--t-base-a2) 10%, var(--t-base) 100%);
348
+ }
349
+ :host([orientation=vertical]) .gradient-right {
350
+ bottom: 0;
351
+ top: auto;
352
+ left: 0;
353
+ width: 100%;
354
+ height: 44px;
355
+ background-image: linear-gradient(to bottom, var(--t-base-a0), var(--t-base-a2) 10%, var(--t-base) 100%);
356
+ }
357
+ :host([orientation=vertical]) .btn-left {
358
+ top: 0;
359
+ left: 50%;
360
+ transform: translateX(-50%);
361
+ }
362
+ :host([orientation=vertical]) .btn-right {
363
+ bottom: 0;
364
+ top: auto;
365
+ left: 50%;
366
+ right: auto;
367
+ transform: translateX(-50%);
368
+ }
369
+ :host([orientation=vertical][color=alt]) li:has(button[aria-selected=true]) {
370
+ color: var(--tct-tab-alt-active-color, var(--t-tab-alt-active-color, inherit));
371
+ }
266
372
  }