@tylertech/forge 3.0.0-next.6 → 3.0.0-next.8

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 (254) hide show
  1. package/custom-elements.json +2084 -1482
  2. package/dist/esm/accordion/index.js +1 -1
  3. package/dist/esm/app-bar/help-button/index.js +1 -1
  4. package/dist/esm/app-bar/index.js +1 -1
  5. package/dist/esm/app-bar/menu-button/index.js +1 -1
  6. package/dist/esm/app-bar/notification-button/index.js +1 -1
  7. package/dist/esm/app-bar/profile-button/index.js +1 -1
  8. package/dist/esm/app-bar/search/index.js +1 -1
  9. package/dist/esm/autocomplete/index.js +1 -1
  10. package/dist/esm/banner/index.js +1 -1
  11. package/dist/esm/bottom-sheet/index.js +1 -1
  12. package/dist/esm/busy-indicator/index.js +1 -1
  13. package/dist/esm/button/index.js +1 -1
  14. package/dist/esm/button-toggle/button-toggle/index.js +1 -1
  15. package/dist/esm/button-toggle/button-toggle-group/index.js +1 -1
  16. package/dist/esm/button-toggle/index.js +1 -1
  17. package/dist/esm/calendar/calendar-dropdown/index.js +1 -1
  18. package/dist/esm/calendar/calendar-menu/index.js +1 -1
  19. package/dist/esm/calendar/index.js +1 -1
  20. package/dist/esm/card/index.js +1 -1
  21. package/dist/esm/checkbox/index.js +1 -1
  22. package/dist/esm/chip-field/index.js +1 -1
  23. package/dist/esm/chips/chip/index.js +1 -1
  24. package/dist/esm/chips/chip-set/index.js +1 -1
  25. package/dist/esm/chips/index.js +1 -1
  26. package/dist/esm/chunks/{chunk.Q6IP5GJ6.js → chunk.246JM2YT.js} +2 -2
  27. package/dist/esm/chunks/{chunk.DHTAH23Y.js → chunk.24L5GDD2.js} +2 -2
  28. package/dist/esm/chunks/{chunk.ZWTZJJ6H.js → chunk.2IQGDFQS.js} +2 -2
  29. package/dist/esm/chunks/{chunk.DAGXGSX7.js → chunk.2LRDPTHK.js} +2 -2
  30. package/dist/esm/chunks/{chunk.Q47M2LB5.js → chunk.2QFIMTVP.js} +2 -2
  31. package/dist/esm/chunks/{chunk.IVB6XTHQ.js → chunk.2TQONIPK.js} +2 -2
  32. package/dist/esm/chunks/{chunk.DXHKS7XO.js → chunk.2XFVFZ3P.js} +2 -2
  33. package/dist/esm/chunks/{chunk.3ICROIFD.js → chunk.2YAU7AXH.js} +2 -2
  34. package/dist/esm/chunks/{chunk.5B2CGITX.js → chunk.2YX7ASSX.js} +2 -2
  35. package/dist/esm/chunks/{chunk.QLNGQCJX.js → chunk.2ZTERGYF.js} +2 -2
  36. package/dist/esm/chunks/{chunk.BIJJCDHE.js → chunk.3AF7CJP2.js} +2 -2
  37. package/dist/esm/chunks/{chunk.BIJJCDHE.js.map → chunk.3AF7CJP2.js.map} +1 -1
  38. package/dist/esm/chunks/{chunk.Y2ANYRZH.js → chunk.4EB5NVCK.js} +2 -2
  39. package/dist/esm/chunks/{chunk.SACZLJPQ.js → chunk.4LVS2EYJ.js} +2 -2
  40. package/dist/esm/chunks/chunk.57XQ4F6F.js +12 -0
  41. package/dist/esm/chunks/chunk.57XQ4F6F.js.map +7 -0
  42. package/dist/esm/chunks/{chunk.E3VXLUEY.js → chunk.5IVB5L5Z.js} +2 -2
  43. package/dist/esm/chunks/{chunk.GZZ6GFKT.js → chunk.5MK5YWCK.js} +2 -2
  44. package/dist/esm/chunks/{chunk.QO37K76P.js → chunk.6SBTLXLH.js} +2 -2
  45. package/dist/esm/chunks/{chunk.BTZF6QGA.js → chunk.7JQHQKXN.js} +2 -2
  46. package/dist/esm/chunks/{chunk.TWV4OTF7.js → chunk.A5MBSCSQ.js} +2 -2
  47. package/dist/esm/chunks/{chunk.4EF7UJDK.js → chunk.A5R7KUIP.js} +2 -2
  48. package/dist/esm/chunks/{chunk.NQH4ZCXJ.js → chunk.AGMPIMJV.js} +2 -2
  49. package/dist/esm/chunks/{chunk.PMY4KVCF.js → chunk.BKCEVPKW.js} +2 -2
  50. package/dist/esm/chunks/{chunk.I5MLIFN5.js → chunk.BSTIDYQJ.js} +2 -2
  51. package/dist/esm/chunks/chunk.C2LTB7EX.js +7 -0
  52. package/dist/esm/chunks/chunk.C2LTB7EX.js.map +7 -0
  53. package/dist/esm/chunks/chunk.CN27IHDN.js +7 -0
  54. package/dist/esm/chunks/chunk.CN27IHDN.js.map +7 -0
  55. package/dist/esm/chunks/{chunk.MZNL36GJ.js → chunk.CNQESSA3.js} +2 -2
  56. package/dist/esm/chunks/{chunk.6FISJTFJ.js → chunk.E6KWYFZG.js} +2 -2
  57. package/dist/esm/chunks/{chunk.H3SBIXK5.js → chunk.ECRL6O3V.js} +2 -2
  58. package/dist/esm/chunks/{chunk.SBDWCXK3.js → chunk.ER52NFXX.js} +2 -2
  59. package/dist/esm/chunks/{chunk.GSQF3ACL.js → chunk.EUE3OVC7.js} +2 -2
  60. package/dist/esm/chunks/{chunk.DGNS4JNN.js → chunk.FAANPQES.js} +2 -2
  61. package/dist/esm/chunks/{chunk.MZLPUI6R.js → chunk.FYWPZFLJ.js} +2 -2
  62. package/dist/esm/chunks/{chunk.MZLPUI6R.js.map → chunk.FYWPZFLJ.js.map} +2 -2
  63. package/dist/esm/chunks/{chunk.LMSXJOPL.js → chunk.GF2GUVYS.js} +2 -2
  64. package/dist/esm/chunks/{chunk.QKRB6AIQ.js → chunk.GHSAKRYH.js} +2 -2
  65. package/dist/esm/chunks/{chunk.JHTGKXXX.js → chunk.GJW4WS4I.js} +2 -2
  66. package/dist/esm/chunks/{chunk.IW37LUQJ.js → chunk.GUYPITGA.js} +2 -2
  67. package/dist/esm/chunks/{chunk.G75X57KY.js → chunk.HKJEGD6C.js} +2 -2
  68. package/dist/esm/chunks/{chunk.3ARIVYGG.js → chunk.IGK3VYZG.js} +2 -2
  69. package/dist/esm/chunks/chunk.IIXLFXHZ.js +7 -0
  70. package/dist/esm/chunks/chunk.IIXLFXHZ.js.map +7 -0
  71. package/dist/esm/chunks/chunk.JQIOVCKI.js +7 -0
  72. package/dist/esm/chunks/chunk.JQIOVCKI.js.map +7 -0
  73. package/dist/esm/chunks/{chunk.7MDHI4PT.js → chunk.JVW6JGV3.js} +2 -2
  74. package/dist/esm/chunks/chunk.LJYTJ3RV.js +7 -0
  75. package/dist/esm/chunks/chunk.LJYTJ3RV.js.map +7 -0
  76. package/dist/esm/chunks/{chunk.LQ4RD7WW.js → chunk.MXNLCQRB.js} +2 -2
  77. package/dist/esm/chunks/{chunk.DCCJTW7C.js → chunk.NDGFQILG.js} +2 -2
  78. package/dist/esm/chunks/{chunk.PG4HEEX2.js → chunk.OTVT3XM2.js} +2 -2
  79. package/dist/esm/chunks/{chunk.VSO5QDBV.js → chunk.P5QIB6OY.js} +2 -2
  80. package/dist/esm/chunks/{chunk.XUV63FEH.js → chunk.PPPTT3SM.js} +2 -2
  81. package/dist/esm/chunks/{chunk.GZRMHYID.js → chunk.QA3NU7EN.js} +2 -2
  82. package/dist/esm/chunks/{chunk.MVYTV6WX.js → chunk.QYKO543K.js} +2 -2
  83. package/dist/esm/chunks/{chunk.XI4RWFCG.js → chunk.RHYRMQS7.js} +2 -2
  84. package/dist/esm/chunks/{chunk.Q4SCW4FN.js → chunk.RUSHOL23.js} +2 -2
  85. package/dist/esm/chunks/{chunk.AD4CP4UK.js → chunk.SIJGKRYS.js} +2 -2
  86. package/dist/esm/chunks/{chunk.RTMDWDS4.js → chunk.SYZB7B4F.js} +2 -2
  87. package/dist/esm/chunks/{chunk.GYPPM2D2.js → chunk.SZIM4KFZ.js} +2 -2
  88. package/dist/esm/chunks/{chunk.UXQZFI55.js → chunk.THPU5KBV.js} +2 -2
  89. package/dist/esm/chunks/{chunk.K6VWRQWY.js → chunk.TXFYS6EU.js} +2 -2
  90. package/dist/esm/chunks/{chunk.ZLFH7VOM.js → chunk.V4RBOYNH.js} +2 -2
  91. package/dist/esm/chunks/chunk.WH6C36MO.js +7 -0
  92. package/dist/esm/chunks/chunk.WH6C36MO.js.map +7 -0
  93. package/dist/esm/chunks/{chunk.JRV5FYMW.js → chunk.YUAU5IWT.js} +2 -2
  94. package/dist/esm/chunks/{chunk.YSFUL5AD.js → chunk.YZLASVCK.js} +2 -2
  95. package/dist/esm/chunks/{chunk.R7MQKCHR.js → chunk.Z5TWWM7I.js} +2 -2
  96. package/dist/esm/color-picker/index.js +1 -1
  97. package/dist/esm/core/index.js +1 -1
  98. package/dist/esm/date-picker/index.js +1 -1
  99. package/dist/esm/date-range-picker/index.js +1 -1
  100. package/dist/esm/expansion-panel/index.js +1 -1
  101. package/dist/esm/file-picker/index.js +1 -1
  102. package/dist/esm/floating-action-button/index.js +1 -1
  103. package/dist/esm/focus-indicator/index.js +7 -0
  104. package/dist/esm/focus-indicator/index.js.map +7 -0
  105. package/dist/esm/icon/index.js +1 -1
  106. package/dist/esm/icon-button/index.js +1 -1
  107. package/dist/esm/index.js +1 -1
  108. package/dist/esm/list/index.js +1 -1
  109. package/dist/esm/list/list/index.js +1 -1
  110. package/dist/esm/list/list-item/index.js +1 -1
  111. package/dist/esm/list-dropdown/index.js +1 -1
  112. package/dist/esm/menu/index.js +1 -1
  113. package/dist/esm/open-icon/index.js +1 -1
  114. package/dist/esm/paginator/index.js +1 -1
  115. package/dist/esm/profile-card/index.js +1 -1
  116. package/dist/esm/quantity-field/index.js +1 -1
  117. package/dist/esm/radio/index.js +1 -1
  118. package/dist/esm/ripple/index.js +1 -1
  119. package/dist/esm/select/core/index.js +1 -1
  120. package/dist/esm/select/index.js +1 -1
  121. package/dist/esm/select/select/index.js +1 -1
  122. package/dist/esm/select/select-dropdown/index.js +1 -1
  123. package/dist/esm/slider/index.js +1 -1
  124. package/dist/esm/split-view/index.js +1 -1
  125. package/dist/esm/split-view/split-view/index.js +1 -1
  126. package/dist/esm/split-view/split-view-panel/index.js +1 -1
  127. package/dist/esm/stepper/index.js +1 -1
  128. package/dist/esm/stepper/step/index.js +1 -1
  129. package/dist/esm/stepper/stepper/index.js +1 -1
  130. package/dist/esm/switch/index.js +1 -1
  131. package/dist/esm/table/index.js +1 -1
  132. package/dist/esm/tabs/index.js +1 -1
  133. package/dist/esm/tabs/tab/index.js +1 -1
  134. package/dist/esm/tabs/tab-bar/index.js +1 -1
  135. package/dist/esm/time-picker/index.js +1 -1
  136. package/dist/esm/toast/index.js +1 -1
  137. package/esm/card/card-constants.d.ts +2 -2
  138. package/esm/card/card-constants.js +2 -2
  139. package/esm/card/card.d.ts +19 -8
  140. package/esm/card/card.js +30 -21
  141. package/esm/focus-indicator/focus-indicator-adapter.d.ts +37 -0
  142. package/esm/focus-indicator/focus-indicator-adapter.js +59 -0
  143. package/esm/focus-indicator/focus-indicator-constants.d.ts +15 -0
  144. package/esm/focus-indicator/focus-indicator-constants.js +19 -0
  145. package/esm/focus-indicator/focus-indicator-foundation.d.ts +43 -0
  146. package/esm/focus-indicator/focus-indicator-foundation.js +110 -0
  147. package/esm/focus-indicator/focus-indicator.d.ts +67 -0
  148. package/esm/focus-indicator/focus-indicator.js +112 -0
  149. package/esm/focus-indicator/index.d.ts +10 -0
  150. package/esm/focus-indicator/index.js +14 -0
  151. package/esm/index.d.ts +1 -0
  152. package/esm/index.js +3 -0
  153. package/esm/slider/slider-utils.js +3 -0
  154. package/esm/slider/slider.d.ts +0 -1
  155. package/esm/slider/slider.js +7 -4
  156. package/esm/split-view/split-view-panel/split-view-panel.js +1 -1
  157. package/esm/tabs/tab/tab-adapter.d.ts +15 -39
  158. package/esm/tabs/tab/tab-adapter.js +65 -78
  159. package/esm/tabs/tab/tab-constants.d.ts +13 -13
  160. package/esm/tabs/tab/tab-constants.js +18 -10
  161. package/esm/tabs/tab/tab-foundation.d.ts +24 -23
  162. package/esm/tabs/tab/tab-foundation.js +68 -62
  163. package/esm/tabs/tab/tab-ripple.d.ts +17 -0
  164. package/esm/tabs/tab/tab-ripple.js +33 -0
  165. package/esm/tabs/tab/tab.d.ts +56 -19
  166. package/esm/tabs/tab/tab.js +82 -32
  167. package/esm/tabs/tab-bar/tab-bar-adapter.d.ts +49 -87
  168. package/esm/tabs/tab-bar/tab-bar-adapter.js +114 -188
  169. package/esm/tabs/tab-bar/tab-bar-constants.d.ts +15 -45
  170. package/esm/tabs/tab-bar/tab-bar-constants.js +22 -56
  171. package/esm/tabs/tab-bar/tab-bar-foundation.d.ts +56 -65
  172. package/esm/tabs/tab-bar/tab-bar-foundation.js +241 -302
  173. package/esm/tabs/tab-bar/tab-bar.d.ts +51 -36
  174. package/esm/tabs/tab-bar/tab-bar.js +84 -52
  175. package/package.json +1 -1
  176. package/styles/card/_mixins.scss +8 -7
  177. package/styles/core/style-layer/tabs/tab/_core.scss +419 -0
  178. package/styles/core/style-layer/tabs/tab/_variables.scss +20 -0
  179. package/styles/core/style-layer/tabs/tab/index.scss +13 -0
  180. package/styles/core/style-layer/tabs/tab-bar/_core.scss +110 -0
  181. package/styles/core/style-layer/tabs/tab-bar/_variables.scss +9 -0
  182. package/styles/core/style-layer/tabs/tab-bar/index.scss +13 -0
  183. package/styles/focus-indicator/_mixins.scss +147 -0
  184. package/styles/focus-indicator/_variables.scss +20 -0
  185. package/styles/focus-indicator/focus-indicator.scss +32 -0
  186. package/styles/slider/_mixins.scss +9 -0
  187. package/styles/tabs/tab/_mixins.scss +55 -126
  188. package/styles/tabs/tab/_variables.scss +26 -4
  189. package/styles/tabs/tab/tab.scss +50 -11
  190. package/styles/tabs/tab-bar/_mixins.scss +20 -60
  191. package/styles/tabs/tab-bar/_variables.scss +11 -0
  192. package/styles/tabs/tab-bar/tab-bar.scss +29 -2
  193. package/dist/esm/chunks/chunk.4B22UXEH.js +0 -7
  194. package/dist/esm/chunks/chunk.4B22UXEH.js.map +0 -7
  195. package/dist/esm/chunks/chunk.4QPMNWJ3.js +0 -129
  196. package/dist/esm/chunks/chunk.4QPMNWJ3.js.map +0 -7
  197. package/dist/esm/chunks/chunk.BWZKQ6WX.js +0 -7
  198. package/dist/esm/chunks/chunk.BWZKQ6WX.js.map +0 -7
  199. package/dist/esm/chunks/chunk.D3IAEEPM.js +0 -201
  200. package/dist/esm/chunks/chunk.D3IAEEPM.js.map +0 -7
  201. package/dist/esm/chunks/chunk.NV4U4DE6.js +0 -12
  202. package/dist/esm/chunks/chunk.NV4U4DE6.js.map +0 -7
  203. /package/dist/esm/chunks/{chunk.Q6IP5GJ6.js.map → chunk.246JM2YT.js.map} +0 -0
  204. /package/dist/esm/chunks/{chunk.DHTAH23Y.js.map → chunk.24L5GDD2.js.map} +0 -0
  205. /package/dist/esm/chunks/{chunk.ZWTZJJ6H.js.map → chunk.2IQGDFQS.js.map} +0 -0
  206. /package/dist/esm/chunks/{chunk.DAGXGSX7.js.map → chunk.2LRDPTHK.js.map} +0 -0
  207. /package/dist/esm/chunks/{chunk.Q47M2LB5.js.map → chunk.2QFIMTVP.js.map} +0 -0
  208. /package/dist/esm/chunks/{chunk.IVB6XTHQ.js.map → chunk.2TQONIPK.js.map} +0 -0
  209. /package/dist/esm/chunks/{chunk.DXHKS7XO.js.map → chunk.2XFVFZ3P.js.map} +0 -0
  210. /package/dist/esm/chunks/{chunk.3ICROIFD.js.map → chunk.2YAU7AXH.js.map} +0 -0
  211. /package/dist/esm/chunks/{chunk.5B2CGITX.js.map → chunk.2YX7ASSX.js.map} +0 -0
  212. /package/dist/esm/chunks/{chunk.QLNGQCJX.js.map → chunk.2ZTERGYF.js.map} +0 -0
  213. /package/dist/esm/chunks/{chunk.Y2ANYRZH.js.map → chunk.4EB5NVCK.js.map} +0 -0
  214. /package/dist/esm/chunks/{chunk.SACZLJPQ.js.map → chunk.4LVS2EYJ.js.map} +0 -0
  215. /package/dist/esm/chunks/{chunk.E3VXLUEY.js.map → chunk.5IVB5L5Z.js.map} +0 -0
  216. /package/dist/esm/chunks/{chunk.GZZ6GFKT.js.map → chunk.5MK5YWCK.js.map} +0 -0
  217. /package/dist/esm/chunks/{chunk.QO37K76P.js.map → chunk.6SBTLXLH.js.map} +0 -0
  218. /package/dist/esm/chunks/{chunk.BTZF6QGA.js.map → chunk.7JQHQKXN.js.map} +0 -0
  219. /package/dist/esm/chunks/{chunk.TWV4OTF7.js.map → chunk.A5MBSCSQ.js.map} +0 -0
  220. /package/dist/esm/chunks/{chunk.4EF7UJDK.js.map → chunk.A5R7KUIP.js.map} +0 -0
  221. /package/dist/esm/chunks/{chunk.NQH4ZCXJ.js.map → chunk.AGMPIMJV.js.map} +0 -0
  222. /package/dist/esm/chunks/{chunk.PMY4KVCF.js.map → chunk.BKCEVPKW.js.map} +0 -0
  223. /package/dist/esm/chunks/{chunk.I5MLIFN5.js.map → chunk.BSTIDYQJ.js.map} +0 -0
  224. /package/dist/esm/chunks/{chunk.MZNL36GJ.js.map → chunk.CNQESSA3.js.map} +0 -0
  225. /package/dist/esm/chunks/{chunk.6FISJTFJ.js.map → chunk.E6KWYFZG.js.map} +0 -0
  226. /package/dist/esm/chunks/{chunk.H3SBIXK5.js.map → chunk.ECRL6O3V.js.map} +0 -0
  227. /package/dist/esm/chunks/{chunk.SBDWCXK3.js.map → chunk.ER52NFXX.js.map} +0 -0
  228. /package/dist/esm/chunks/{chunk.GSQF3ACL.js.map → chunk.EUE3OVC7.js.map} +0 -0
  229. /package/dist/esm/chunks/{chunk.DGNS4JNN.js.map → chunk.FAANPQES.js.map} +0 -0
  230. /package/dist/esm/chunks/{chunk.LMSXJOPL.js.map → chunk.GF2GUVYS.js.map} +0 -0
  231. /package/dist/esm/chunks/{chunk.QKRB6AIQ.js.map → chunk.GHSAKRYH.js.map} +0 -0
  232. /package/dist/esm/chunks/{chunk.JHTGKXXX.js.map → chunk.GJW4WS4I.js.map} +0 -0
  233. /package/dist/esm/chunks/{chunk.IW37LUQJ.js.map → chunk.GUYPITGA.js.map} +0 -0
  234. /package/dist/esm/chunks/{chunk.G75X57KY.js.map → chunk.HKJEGD6C.js.map} +0 -0
  235. /package/dist/esm/chunks/{chunk.3ARIVYGG.js.map → chunk.IGK3VYZG.js.map} +0 -0
  236. /package/dist/esm/chunks/{chunk.7MDHI4PT.js.map → chunk.JVW6JGV3.js.map} +0 -0
  237. /package/dist/esm/chunks/{chunk.LQ4RD7WW.js.map → chunk.MXNLCQRB.js.map} +0 -0
  238. /package/dist/esm/chunks/{chunk.DCCJTW7C.js.map → chunk.NDGFQILG.js.map} +0 -0
  239. /package/dist/esm/chunks/{chunk.PG4HEEX2.js.map → chunk.OTVT3XM2.js.map} +0 -0
  240. /package/dist/esm/chunks/{chunk.VSO5QDBV.js.map → chunk.P5QIB6OY.js.map} +0 -0
  241. /package/dist/esm/chunks/{chunk.XUV63FEH.js.map → chunk.PPPTT3SM.js.map} +0 -0
  242. /package/dist/esm/chunks/{chunk.GZRMHYID.js.map → chunk.QA3NU7EN.js.map} +0 -0
  243. /package/dist/esm/chunks/{chunk.MVYTV6WX.js.map → chunk.QYKO543K.js.map} +0 -0
  244. /package/dist/esm/chunks/{chunk.XI4RWFCG.js.map → chunk.RHYRMQS7.js.map} +0 -0
  245. /package/dist/esm/chunks/{chunk.Q4SCW4FN.js.map → chunk.RUSHOL23.js.map} +0 -0
  246. /package/dist/esm/chunks/{chunk.AD4CP4UK.js.map → chunk.SIJGKRYS.js.map} +0 -0
  247. /package/dist/esm/chunks/{chunk.RTMDWDS4.js.map → chunk.SYZB7B4F.js.map} +0 -0
  248. /package/dist/esm/chunks/{chunk.GYPPM2D2.js.map → chunk.SZIM4KFZ.js.map} +0 -0
  249. /package/dist/esm/chunks/{chunk.UXQZFI55.js.map → chunk.THPU5KBV.js.map} +0 -0
  250. /package/dist/esm/chunks/{chunk.K6VWRQWY.js.map → chunk.TXFYS6EU.js.map} +0 -0
  251. /package/dist/esm/chunks/{chunk.ZLFH7VOM.js.map → chunk.V4RBOYNH.js.map} +0 -0
  252. /package/dist/esm/chunks/{chunk.JRV5FYMW.js.map → chunk.YUAU5IWT.js.map} +0 -0
  253. /package/dist/esm/chunks/{chunk.YSFUL5AD.js.map → chunk.YZLASVCK.js.map} +0 -0
  254. /package/dist/esm/chunks/{chunk.R7MQKCHR.js.map → chunk.Z5TWWM7I.js.map} +0 -0
@@ -3,32 +3,64 @@
3
3
  * Copyright 2023 Tyler Technologies, Inc.
4
4
  * License: Apache-2.0
5
5
  */
6
- import { TabBarLayoutMode, TabBarLayoutAlign, ITabBarActivateEventData } from './tab-bar-constants';
7
6
  import { BaseComponent, IBaseComponent } from '../../core/base/base-component';
8
7
  export interface ITabBarComponent extends IBaseComponent {
9
- activeTab: number;
10
- layoutMode: TabBarLayoutMode;
11
- layoutAlign: TabBarLayoutAlign;
12
- underline: boolean;
13
- autoActivate: boolean;
8
+ disabled: boolean;
9
+ activeTab: number | null | undefined;
10
+ vertical: boolean;
11
+ clustered: boolean;
14
12
  stacked: boolean;
13
+ secondary: boolean;
14
+ inverted: boolean;
15
+ autoActivate: boolean;
15
16
  scrollButtons: boolean;
16
- forceScrollButtons: boolean;
17
- activateTab(index: number): void;
18
- scrollTabIntoView(index: number): void;
19
17
  }
20
18
  declare global {
21
19
  interface HTMLElementTagNameMap {
22
20
  'forge-tab-bar': ITabBarComponent;
23
21
  }
24
22
  interface HTMLElementEventMap {
25
- 'forge-tab-bar-activate': CustomEvent<ITabBarActivateEventData>;
23
+ 'forge-tab-bar-change': CustomEvent<number>;
26
24
  }
27
25
  }
28
26
  /**
29
- * The custom element class behind the `<forge-tab-bar>` element.
30
- *
31
27
  * @tag forge-tab-bar
28
+ *
29
+ * @summary Tabs organize content across different screens and views.
30
+ *
31
+ * @description
32
+ * Use tabs to group content into helpful categories. Tabs are typically placed
33
+ * above the content they relate to. Tabs can be used to navigate between screens,
34
+ * or to group related content within a screen.
35
+ *
36
+ * @property {boolean} disabled - The disabled state of the tab bar.
37
+ * @property {number} activeTab - The index of the active tab.
38
+ * @property {boolean} vertical - Controls whether the tab bar is vertical or horizontal.
39
+ * @property {boolean} clustered - Controls whether the tabs stretch the full width of their container or cluster together at their minimum width.
40
+ * @property {boolean} stacked - Controls whether the tabs are taller to allow for slotted leading/trailing elements.
41
+ * @property {boolean} secondary - Controls whether the tabs are styled as secondary tab navigation.
42
+ * @property {boolean} inverted - Controls whether the tabs are rendered inverted (tab indicator at top instead of bottom).
43
+ * @property {boolean} autoActivate - Controls whether the tabs are automatically activated when receiving focus.
44
+ * @property {boolean} scrollButtons - Controls whether scroll buttons are displayed when the tabs overflow their container.
45
+ *
46
+ * @attribute disabled - The disabled state of the tab bar.
47
+ * @attribute active-tab - The index of the active tab.
48
+ * @attribute vertical - Controls whether the tab bar is vertical or horizontal.
49
+ * @attribute clustered - Controls whether the tabs stretch the full width of their container or cluster together at their minimum width.
50
+ * @attribute stacked - Controls whether the tabs are taller to allow for slotted leading/trailing elements.
51
+ * @attribute secondary - Controls whether the tabs are styled as secondary tab navigation.
52
+ * @attribute auto-activate - Controls whether the tabs are automatically activated when receiving focus.
53
+ * @attribute scroll-buttons - Controls whether scroll buttons are displayed when the tabs overflow their container.
54
+ *
55
+ * @event forge-tab-bar-change {CustomEvent<number>} - Dispatches when the active tab changes.
56
+ *
57
+ * @cssproperty --forge-tab-bar-justify - The `justify-content` value for the tab bar flex container.
58
+ * @cssproperty --forge-tab-bar-stretch - The `flex` value for the child `<forge-tab>` elements.
59
+ * @cssproperty --forge-tab-bar-underline-color - The color of the underline.
60
+ * @cssproperty --forge-tab-bar-underline-thickness - The thickness of the underline.
61
+ *
62
+ * @csspart container - The container element.
63
+ * @csspart scroll-container - The scroll container element.
32
64
  */
33
65
  export declare class TabBarComponent extends BaseComponent implements ITabBarComponent {
34
66
  static get observedAttributes(): string[];
@@ -37,30 +69,13 @@ export declare class TabBarComponent extends BaseComponent implements ITabBarCom
37
69
  connectedCallback(): void;
38
70
  disconnectedCallback(): void;
39
71
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
40
- /** Gets and sets the active tab index. */
41
- activeTab: number;
42
- /** Gets/sets the layout mode that controls how the tabs are sized and rendered. */
43
- layoutMode: TabBarLayoutMode;
44
- /** Gets/sets the layout alignment. Only pertains to non-full width layout modes. */
45
- layoutAlign: TabBarLayoutAlign;
46
- /** Gets/sets whether the component displays an underline or not. Default is `false`. */
47
- underline: boolean;
48
- /** Gets/sets whether tabs are auto-activated when using arrow keys. Default is `true` */
49
- autoActivate: boolean;
50
- /** Gets/sets whether the tabs are displayed with as their stacked variant. Default is `false`. */
72
+ disabled: boolean;
73
+ activeTab: number | null | undefined;
74
+ vertical: boolean;
75
+ clustered: boolean;
51
76
  stacked: boolean;
52
- /** Gets/sets whether the scroll buttons can be displayed or not. Default is `true`. The component handles visibility automatically. */
77
+ secondary: boolean;
78
+ inverted: boolean;
79
+ autoActivate: boolean;
53
80
  scrollButtons: boolean;
54
- /** Gets/sets whether the scroll buttons are visible indefinitely or not. Default is `false`. */
55
- forceScrollButtons: boolean;
56
- /**
57
- * Activates the tab at the given index.
58
- * @param index The index of the tab.
59
- */
60
- activateTab(index: number): void;
61
- /**
62
- * Scrolls the tab at the given index into view.
63
- * @param index The index of the tab.
64
- */
65
- scrollTabIntoView(index: number): void;
66
81
  }
@@ -4,38 +4,78 @@
4
4
  * License: Apache-2.0
5
5
  */
6
6
  import { __decorate } from "tslib";
7
- import { CustomElement, attachShadowTemplate, coerceNumber, coerceBoolean, FoundationProperty } from '@tylertech/forge-core';
8
- import { tylIconKeyboardArrowLeft, tylIconKeyboardArrowRight } from '@tylertech/tyler-icons/standard';
9
- import { TabComponent } from '../tab/tab';
7
+ import { attachShadowTemplate, coerceBoolean, coerceNumber, CustomElement, FoundationProperty } from '@tylertech/forge-core';
8
+ import { IconComponent, IconRegistry } from '../../icon';
10
9
  import { IconButtonComponent } from '../../icon-button';
10
+ import { BaseComponent } from '../../core/base/base-component';
11
+ import { TabComponent } from '../tab/tab';
12
+ import { TabBarAdapter } from './tab-bar-adapter';
11
13
  import { TAB_BAR_CONSTANTS } from './tab-bar-constants';
12
14
  import { TabBarFoundation } from './tab-bar-foundation';
13
- import { TabBarAdapter } from './tab-bar-adapter';
14
- import { IconComponent, IconRegistry } from '../../icon';
15
- import { BaseComponent } from '../../core/base/base-component';
16
- const template = '<template><div class=\"forge-tab-bar\" part=\"root\"><div class=\"forge-tab-bar__scroll-prev-container\" part=\"previous-container\"><forge-icon-button part=\"previous-button\"><button type=\"button\" tabindex=\"-1\" aria-label=\"Scroll left\" id=\"scroll-prev-btn\" part=\"previous-button-element\"><forge-icon name=\"keyboard_arrow_left\" part=\"previous-button-icon\"></forge-icon></button></forge-icon-button></div><div class=\"mdc-tab-scroller\" part=\"tab-scroller\"><div class=\"mdc-tab-scroller__scroll-area\" part=\"scroll-area\"><div class=\"mdc-tab-scroller__scroll-content\" part=\"scroll-content\"><slot></slot></div></div></div><div class=\"forge-tab-bar__scroll-next-container\" part=\"next-container\"><forge-icon-button part=\"next-button\"><button type=\"button\" tabindex=\"-1\" aria-label=\"Scroll right\" id=\"scroll-next-btn\" part=\"next-button-element\"><forge-icon name=\"keyboard_arrow_right\" part=\"next-button-icon\"></forge-icon></button></forge-icon-button></div></div></template>';
17
- const styles = '.forge-icon-button{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border:none;outline:0;background-color:transparent;fill:currentColor;color:inherit;font-size:24px;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:48px;height:48px;padding:12px}.forge-icon-button forge-icon,.forge-icon-button img,.forge-icon-button svg{width:24px;height:24px}.forge-icon-button:disabled{color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38))}.forge-icon-button:disabled{cursor:default;pointer-events:none}.forge-icon-button__icon{display:inline-block}.forge-icon-button__icon.forge-icon-button__icon--on{display:none}.forge-icon-button--on .forge-icon-button__icon{display:none}.forge-icon-button--on .forge-icon-button__icon.forge-icon-button__icon--on{display:inline-block}@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.forge-icon-button{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity}.forge-icon-button::after,.forge-icon-button::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.forge-icon-button::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.forge-icon-button::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.forge-icon-button.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.forge-icon-button.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.forge-icon-button.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.forge-icon-button.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.forge-icon-button.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.forge-icon-button::after,.forge-icon-button::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.forge-icon-button.mdc-ripple-upgraded::after,.forge-icon-button.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-icon-button.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-icon-button::after,.forge-icon-button::before{background-color:#000;background-color:var(--mdc-ripple-color,var(--mdc-theme-on-surface,#000))}.forge-icon-button.mdc-ripple-surface--hover::before,.forge-icon-button:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button.mdc-ripple-upgraded--background-focused::before,.forge-icon-button:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}forge-icon-button{position:relative;display:inline-block;overflow:visible}.forge-icon-button--on{color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-icon-button--on::after,.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#3f51b5))}.forge-icon-button--on.mdc-ripple-surface--hover::before,.forge-icon-button--on:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button--on.mdc-ripple-upgraded--background-focused::before,.forge-icon-button--on:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button--on:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button--on:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button--on.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-theme-primary,#3f51b5);opacity:.08}.forge-icon-button--dense{width:28px;height:28px;padding:2px;padding:0}.forge-icon-button--dense-1{width:44px;height:44px;padding:10px}.forge-icon-button--dense-2{width:40px;height:40px;padding:8px}.forge-icon-button--dense-3{width:36px;height:36px;padding:6px}.forge-icon-button--dense-4{width:32px;height:32px;padding:4px}.forge-icon-button--dense-5{width:28px;height:28px;padding:2px}.forge-icon-button--dense-6{width:24px;height:24px;padding:0}.forge-icon-button--with-badge forge-badge{z-index:1;z-index:var(--forge-z-index-surface,1);pointer-events:none;--forge-badge-max-width:32px;--forge-badge-border:1px solid transparent}.forge-icon-button--with-badge forge-badge[app-bar-context]{--forge-badge-border:2px solid var(--forge-app-bar-theme-background)}.mdc-tab-scroller{overflow-y:hidden}.mdc-tab-scroller.mdc-tab-scroller--animating .mdc-tab-scroller__scroll-content{-webkit-transition:250ms -webkit-transform cubic-bezier(.4, 0, .2, 1);transition:250ms -webkit-transform cubic-bezier(.4, 0, .2, 1);transition:250ms transform cubic-bezier(.4, 0, .2, 1);transition:250ms transform cubic-bezier(.4, 0, .2, 1),250ms -webkit-transform cubic-bezier(.4, 0, .2, 1)}.mdc-tab-scroller__test{position:absolute;top:-9999px;width:100px;height:100px;overflow-x:scroll}.mdc-tab-scroller__scroll-area{-webkit-overflow-scrolling:touch;display:-webkit-box;display:flex;overflow-x:hidden}.mdc-tab-scroller__scroll-area::-webkit-scrollbar,.mdc-tab-scroller__test::-webkit-scrollbar{display:none}.mdc-tab-scroller__scroll-area--scroll{overflow-x:scroll}.mdc-tab-scroller__scroll-content{position:relative;display:-webkit-box;display:flex;-webkit-box-flex:1;flex:1 0 auto;-webkit-transform:none;transform:none;will-change:transform}.mdc-tab-scroller--align-start .mdc-tab-scroller__scroll-content{-webkit-box-pack:start;justify-content:flex-start}.mdc-tab-scroller--align-end .mdc-tab-scroller__scroll-content{-webkit-box-pack:end;justify-content:flex-end}.mdc-tab-scroller--align-center .mdc-tab-scroller__scroll-content{-webkit-box-pack:center;justify-content:center}.mdc-tab-scroller--animating .mdc-tab-scroller__scroll-area{-webkit-overflow-scrolling:auto}.forge-tab-bar{height:48px;height:var(--forge-tab-bar-height,48px);display:-webkit-box;display:flex;position:relative}.forge-tab-bar--underlined::after{border-bottom-color:#e0e0e0;border-bottom-color:var(--forge-theme-border-color,#e0e0e0);content:\"\";border-bottom-width:1px;border-bottom-style:solid;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;position:absolute;bottom:0;left:0;right:0}.forge-tab-bar--align-center .mdc-tab-scroller__scroll-content{-webkit-box-pack:center;justify-content:center}.forge-tab-bar--align-end .mdc-tab-scroller__scroll-content{-webkit-box-pack:end;justify-content:flex-end}.forge-tab-bar--stacked{height:72px;height:var(--forge-tab-bar-height,72px);-webkit-box-align:center;align-items:center}.forge-tab-bar--stacked .mdc-tab-scroller{height:100%}.mdc-tab-scroller{z-index:1;width:100%}.mdc-tab-scroller__scroll-area{height:100%;overflow-x:auto;scrollbar-width:none}:host{display:block;overflow:hidden}:host([hidden]){display:none}';
15
+ import { tylIconKeyboardArrowLeft, tylIconKeyboardArrowRight, tylIconKeyboardArrowUp, tylIconKeyboardArrowDown } from '@tylertech/tyler-icons/standard';
16
+ const template = '<template><div class=\"container\" part=\"container\"><div role=\"tablist\" class=\"scroll-container\" part=\"scroll-container\"><slot></slot></div></div></template>';
17
+ const styles = '.forge-icon-button{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border:none;outline:0;background-color:transparent;fill:currentColor;color:inherit;font-size:24px;text-decoration:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:48px;height:48px;padding:12px}.forge-icon-button forge-icon,.forge-icon-button img,.forge-icon-button svg{width:24px;height:24px}.forge-icon-button:disabled{color:rgba(0,0,0,.38);color:var(--mdc-theme-text-disabled-on-light,rgba(0,0,0,.38))}.forge-icon-button:disabled{cursor:default;pointer-events:none}.forge-icon-button__icon{display:inline-block}.forge-icon-button__icon.forge-icon-button__icon--on{display:none}.forge-icon-button--on .forge-icon-button__icon{display:none}.forge-icon-button--on .forge-icon-button__icon.forge-icon-button__icon--on{display:inline-block}@-webkit-keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@keyframes mdc-ripple-fg-radius-in{from{-webkit-animation-timing-function:cubic-bezier(0.4,0,0.2,1);animation-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1);transform:translate(var(--mdc-ripple-fg-translate-start,0)) scale(1)}to{-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}}@-webkit-keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-in{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@-webkit-keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}@keyframes mdc-ripple-fg-opacity-out{from{-webkit-animation-timing-function:linear;animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.forge-icon-button{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:transparent;will-change:transform,opacity}.forge-icon-button::after,.forge-icon-button::before{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.forge-icon-button::before{-webkit-transition:opacity 15ms linear,background-color 15ms linear;transition:opacity 15ms linear,background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index,1)}.forge-icon-button::after{z-index:0;z-index:var(--mdc-ripple-z-index,0)}.forge-icon-button.mdc-ripple-upgraded::before{-webkit-transform:scale(var(--mdc-ripple-fg-scale,1));transform:scale(var(--mdc-ripple-fg-scale,1))}.forge-icon-button.mdc-ripple-upgraded::after{top:0;left:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;transform-origin:center center}.forge-icon-button.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top,0);left:var(--mdc-ripple-left,0)}.forge-icon-button.mdc-ripple-upgraded--foreground-activation::after{-webkit-animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards;animation:mdc-ripple-fg-radius-in 225ms forwards,mdc-ripple-fg-opacity-in 75ms forwards}.forge-icon-button.mdc-ripple-upgraded--foreground-deactivation::after{-webkit-animation:mdc-ripple-fg-opacity-out 150ms;animation:mdc-ripple-fg-opacity-out 150ms;-webkit-transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1));transform:translate(var(--mdc-ripple-fg-translate-end,0)) scale(var(--mdc-ripple-fg-scale,1))}.forge-icon-button::after,.forge-icon-button::before{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.forge-icon-button.mdc-ripple-upgraded::after,.forge-icon-button.mdc-ripple-upgraded::before{top:var(--mdc-ripple-top,calc(50% - 50%));left:var(--mdc-ripple-left,calc(50% - 50%));width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-icon-button.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size,100%);height:var(--mdc-ripple-fg-size,100%)}.forge-icon-button::after,.forge-icon-button::before{background-color:#000;background-color:var(--mdc-ripple-color,var(--mdc-theme-on-surface,#000))}.forge-icon-button.mdc-ripple-surface--hover::before,.forge-icon-button:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button.mdc-ripple-upgraded--background-focused::before,.forge-icon-button:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}forge-icon-button{position:relative;display:inline-block;overflow:visible}.forge-icon-button--on{color:#3f51b5;color:var(--mdc-theme-primary,#3f51b5)}.forge-icon-button--on::after,.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-ripple-color,var(--mdc-theme-primary,#3f51b5))}.forge-icon-button--on.mdc-ripple-surface--hover::before,.forge-icon-button--on:hover::before{opacity:.04;opacity:var(--mdc-ripple-hover-opacity, .04)}.forge-icon-button--on.mdc-ripple-upgraded--background-focused::before,.forge-icon-button--on:not(.mdc-ripple-upgraded):focus::before{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-focus-opacity, .12)}.forge-icon-button--on:not(.mdc-ripple-upgraded)::after{-webkit-transition:opacity 150ms linear;transition:opacity 150ms linear}.forge-icon-button--on:not(.mdc-ripple-upgraded):active::after{-webkit-transition-duration:75ms;transition-duration:75ms;opacity:.12;opacity:var(--mdc-ripple-press-opacity, .12)}.forge-icon-button--on.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}.forge-icon-button--on::before{background-color:#3f51b5;background-color:var(--mdc-theme-primary,#3f51b5);opacity:.08}.forge-icon-button--dense{width:28px;height:28px;padding:2px;padding:0}.forge-icon-button--dense-1{width:44px;height:44px;padding:10px}.forge-icon-button--dense-2{width:40px;height:40px;padding:8px}.forge-icon-button--dense-3{width:36px;height:36px;padding:6px}.forge-icon-button--dense-4{width:32px;height:32px;padding:4px}.forge-icon-button--dense-5{width:28px;height:28px;padding:2px}.forge-icon-button--dense-6{width:24px;height:24px;padding:0}.forge-icon-button--with-badge forge-badge{z-index:1;z-index:var(--forge-z-index-surface,1);pointer-events:none;--forge-badge-max-width:32px;--forge-badge-border:1px solid transparent}.forge-icon-button--with-badge forge-badge[app-bar-context]{--forge-badge-border:2px solid var(--forge-app-bar-theme-background)}.container{--_container-justify:var(--forge-tab-bar-justify, space-between);--_tab-flex:var(--forge-tab-bar-stretch, 1);--_divider-color:var(--forge-tab-bar-underline-color, var(--forge-theme-border-color, #e0e0e0));--_divider-thickness:var(--forge-tab-bar-underline-thickness, 1px);position:relative;display:grid;grid-template-columns:auto 1fr auto;max-width:100%;max-height:100%;-webkit-box-align:center;align-items:center;border-bottom:var(--_divider-thickness) solid var(--_divider-color)}.scroll-container{position:relative;display:-webkit-box;display:flex;-webkit-box-pack:var(--_container-justify);justify-content:var(--_container-justify);-webkit-box-align:end;align-items:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto;scroll-behavior:smooth;scrollbar-width:none;grid-column:2}.scroll-container::-webkit-scrollbar{display:none}::slotted(*){-webkit-box-flex:var(--_tab-flex);flex:var(--_tab-flex)}::slotted([selected]){z-index:1}:host{position:relative;display:block}:host([vertical]) .container{grid-template-columns:none;grid-template-rows:auto 1fr auto;-webkit-box-align:initial;align-items:initial;border-bottom:none;border-right:var(--_divider-thickness) solid var(--_divider-color);height:100%}:host([vertical]) .scroll-container{display:-webkit-inline-box;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:stretch;align-items:stretch;gap:0;grid-column:auto;grid-row:2}:host([vertical]) .scroll-button{justify-self:center}:host([inverted]:not([vertical])) .container{border-bottom:none;border-top:var(--_divider-thickness) solid var(--_divider-color)}:host([inverted][vertical]) .container{border-right:none;border-left:var(--_divider-thickness) solid var(--_divider-color)}:host([clustered]){--forge-tab-bar-justify:flex-start;--forge-tab-bar-stretch:0}:host([clustered=start]){--forge-tab-bar-justify:flex-start}:host([clustered=center]){--forge-tab-bar-justify:center}:host([clustered=end]){--forge-tab-bar-justify:flex-end}:host([hidden]){display:none}';
18
18
  /**
19
- * The custom element class behind the `<forge-tab-bar>` element.
20
- *
21
19
  * @tag forge-tab-bar
20
+ *
21
+ * @summary Tabs organize content across different screens and views.
22
+ *
23
+ * @description
24
+ * Use tabs to group content into helpful categories. Tabs are typically placed
25
+ * above the content they relate to. Tabs can be used to navigate between screens,
26
+ * or to group related content within a screen.
27
+ *
28
+ * @property {boolean} disabled - The disabled state of the tab bar.
29
+ * @property {number} activeTab - The index of the active tab.
30
+ * @property {boolean} vertical - Controls whether the tab bar is vertical or horizontal.
31
+ * @property {boolean} clustered - Controls whether the tabs stretch the full width of their container or cluster together at their minimum width.
32
+ * @property {boolean} stacked - Controls whether the tabs are taller to allow for slotted leading/trailing elements.
33
+ * @property {boolean} secondary - Controls whether the tabs are styled as secondary tab navigation.
34
+ * @property {boolean} inverted - Controls whether the tabs are rendered inverted (tab indicator at top instead of bottom).
35
+ * @property {boolean} autoActivate - Controls whether the tabs are automatically activated when receiving focus.
36
+ * @property {boolean} scrollButtons - Controls whether scroll buttons are displayed when the tabs overflow their container.
37
+ *
38
+ * @attribute disabled - The disabled state of the tab bar.
39
+ * @attribute active-tab - The index of the active tab.
40
+ * @attribute vertical - Controls whether the tab bar is vertical or horizontal.
41
+ * @attribute clustered - Controls whether the tabs stretch the full width of their container or cluster together at their minimum width.
42
+ * @attribute stacked - Controls whether the tabs are taller to allow for slotted leading/trailing elements.
43
+ * @attribute secondary - Controls whether the tabs are styled as secondary tab navigation.
44
+ * @attribute auto-activate - Controls whether the tabs are automatically activated when receiving focus.
45
+ * @attribute scroll-buttons - Controls whether scroll buttons are displayed when the tabs overflow their container.
46
+ *
47
+ * @event forge-tab-bar-change {CustomEvent<number>} - Dispatches when the active tab changes.
48
+ *
49
+ * @cssproperty --forge-tab-bar-justify - The `justify-content` value for the tab bar flex container.
50
+ * @cssproperty --forge-tab-bar-stretch - The `flex` value for the child `<forge-tab>` elements.
51
+ * @cssproperty --forge-tab-bar-underline-color - The color of the underline.
52
+ * @cssproperty --forge-tab-bar-underline-thickness - The thickness of the underline.
53
+ *
54
+ * @csspart container - The container element.
55
+ * @csspart scroll-container - The scroll container element.
22
56
  */
23
57
  let TabBarComponent = class TabBarComponent extends BaseComponent {
24
58
  static get observedAttributes() {
25
59
  return [
60
+ TAB_BAR_CONSTANTS.attributes.DISABLED,
26
61
  TAB_BAR_CONSTANTS.attributes.ACTIVE_TAB,
27
- TAB_BAR_CONSTANTS.attributes.LAYOUT_MODE,
28
- TAB_BAR_CONSTANTS.attributes.LAYOUT_ALIGN,
29
- TAB_BAR_CONSTANTS.attributes.UNDERLINE,
30
- TAB_BAR_CONSTANTS.attributes.AUTO_ACTIVATE,
62
+ TAB_BAR_CONSTANTS.attributes.VERTICAL,
63
+ TAB_BAR_CONSTANTS.attributes.CLUSTERED,
31
64
  TAB_BAR_CONSTANTS.attributes.STACKED,
32
- TAB_BAR_CONSTANTS.attributes.SCROLL_BUTTONS,
33
- TAB_BAR_CONSTANTS.attributes.FORCE_SCROLL_BUTTONS
65
+ TAB_BAR_CONSTANTS.attributes.SECONDARY,
66
+ TAB_BAR_CONSTANTS.attributes.INVERTED,
67
+ TAB_BAR_CONSTANTS.attributes.AUTO_ACTIVATE,
68
+ TAB_BAR_CONSTANTS.attributes.SCROLL_BUTTONS
34
69
  ];
35
70
  }
36
71
  constructor() {
37
72
  super();
38
- IconRegistry.define([tylIconKeyboardArrowLeft, tylIconKeyboardArrowRight]);
73
+ IconRegistry.define([
74
+ tylIconKeyboardArrowLeft,
75
+ tylIconKeyboardArrowRight,
76
+ tylIconKeyboardArrowUp,
77
+ tylIconKeyboardArrowDown
78
+ ]);
39
79
  attachShadowTemplate(this, template, styles);
40
80
  this._foundation = new TabBarFoundation(new TabBarAdapter(this));
41
81
  }
@@ -43,75 +83,67 @@ let TabBarComponent = class TabBarComponent extends BaseComponent {
43
83
  this._foundation.initialize();
44
84
  }
45
85
  disconnectedCallback() {
46
- this._foundation.disconnect();
86
+ this._foundation.destroy();
47
87
  }
48
88
  attributeChangedCallback(name, oldValue, newValue) {
49
89
  switch (name) {
90
+ case TAB_BAR_CONSTANTS.attributes.DISABLED:
91
+ this.disabled = coerceBoolean(newValue);
92
+ break;
50
93
  case TAB_BAR_CONSTANTS.attributes.ACTIVE_TAB:
51
- this.activeTab = coerceNumber(newValue);
94
+ this.activeTab = newValue ? coerceNumber(newValue) : undefined;
52
95
  break;
53
- case TAB_BAR_CONSTANTS.attributes.LAYOUT_MODE:
54
- this.layoutMode = newValue;
96
+ case TAB_BAR_CONSTANTS.attributes.VERTICAL:
97
+ this.vertical = coerceBoolean(newValue);
55
98
  break;
56
- case TAB_BAR_CONSTANTS.attributes.LAYOUT_ALIGN:
57
- this.layoutAlign = newValue;
99
+ case TAB_BAR_CONSTANTS.attributes.CLUSTERED:
100
+ this.clustered = coerceBoolean(newValue);
58
101
  break;
59
- case TAB_BAR_CONSTANTS.attributes.UNDERLINE:
60
- this.underline = coerceBoolean(newValue);
102
+ case TAB_BAR_CONSTANTS.attributes.STACKED:
103
+ this.stacked = coerceBoolean(newValue);
104
+ break;
105
+ case TAB_BAR_CONSTANTS.attributes.SECONDARY:
106
+ this.secondary = coerceBoolean(newValue);
107
+ break;
108
+ case TAB_BAR_CONSTANTS.attributes.INVERTED:
109
+ this.inverted = coerceBoolean(newValue);
61
110
  break;
62
111
  case TAB_BAR_CONSTANTS.attributes.AUTO_ACTIVATE:
63
112
  this.autoActivate = coerceBoolean(newValue);
64
113
  break;
65
- case TAB_BAR_CONSTANTS.attributes.STACKED:
66
- this.stacked = coerceBoolean(newValue);
67
- break;
68
114
  case TAB_BAR_CONSTANTS.attributes.SCROLL_BUTTONS:
69
115
  this.scrollButtons = coerceBoolean(newValue);
70
116
  break;
71
- case TAB_BAR_CONSTANTS.attributes.FORCE_SCROLL_BUTTONS:
72
- this.forceScrollButtons = coerceBoolean(newValue);
73
- break;
74
117
  }
75
118
  }
76
- /**
77
- * Activates the tab at the given index.
78
- * @param index The index of the tab.
79
- */
80
- activateTab(index) {
81
- this._foundation.activateTab(index);
82
- }
83
- /**
84
- * Scrolls the tab at the given index into view.
85
- * @param index The index of the tab.
86
- */
87
- scrollTabIntoView(index) {
88
- this._foundation.scrollIntoView(index);
89
- }
90
119
  };
120
+ __decorate([
121
+ FoundationProperty()
122
+ ], TabBarComponent.prototype, "disabled", void 0);
91
123
  __decorate([
92
124
  FoundationProperty()
93
125
  ], TabBarComponent.prototype, "activeTab", void 0);
94
126
  __decorate([
95
127
  FoundationProperty()
96
- ], TabBarComponent.prototype, "layoutMode", void 0);
128
+ ], TabBarComponent.prototype, "vertical", void 0);
97
129
  __decorate([
98
130
  FoundationProperty()
99
- ], TabBarComponent.prototype, "layoutAlign", void 0);
131
+ ], TabBarComponent.prototype, "clustered", void 0);
100
132
  __decorate([
101
133
  FoundationProperty()
102
- ], TabBarComponent.prototype, "underline", void 0);
134
+ ], TabBarComponent.prototype, "stacked", void 0);
103
135
  __decorate([
104
136
  FoundationProperty()
105
- ], TabBarComponent.prototype, "autoActivate", void 0);
137
+ ], TabBarComponent.prototype, "secondary", void 0);
106
138
  __decorate([
107
139
  FoundationProperty()
108
- ], TabBarComponent.prototype, "stacked", void 0);
140
+ ], TabBarComponent.prototype, "inverted", void 0);
109
141
  __decorate([
110
142
  FoundationProperty()
111
- ], TabBarComponent.prototype, "scrollButtons", void 0);
143
+ ], TabBarComponent.prototype, "autoActivate", void 0);
112
144
  __decorate([
113
145
  FoundationProperty()
114
- ], TabBarComponent.prototype, "forceScrollButtons", void 0);
146
+ ], TabBarComponent.prototype, "scrollButtons", void 0);
115
147
  TabBarComponent = __decorate([
116
148
  CustomElement({
117
149
  name: TAB_BAR_CONSTANTS.elementName,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tylertech/forge",
3
3
  "description": "Tyler Forge™ Web Components library",
4
- "version": "3.0.0-next.6",
4
+ "version": "3.0.0-next.8",
5
5
  "author": "Tyler Technologies, Inc.",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -16,8 +16,8 @@
16
16
  .forge-card {
17
17
  @include base;
18
18
 
19
- &--outlined {
20
- @include outlined;
19
+ &--raised {
20
+ @include raised;
21
21
  }
22
22
  }
23
23
  }
@@ -29,17 +29,18 @@
29
29
  @mixin base() {
30
30
  @include mdc-card-mixins.fill-color(surface);
31
31
  @include mdc-card-mixins.shape-radius(medium);
32
- @include mdc-elevation-theme.elevation(1);
32
+ @include mdc-card-mixins.outline(mdc-card-variables.$outline-color);
33
33
  @include theme.css-custom-property(height, --forge-card-height, 100%);
34
34
  @include theme.css-custom-property(width, --forge-card-width, 100%);
35
35
  @include theme.css-custom-property(padding, --forge-card-padding, variables.$padding);
36
36
  @include theme.css-custom-property(overflow, --forge-card-overflow, hidden);
37
+ @include theme.property(border-color, border-color);
37
38
 
38
39
  box-sizing: border-box;
39
40
  }
40
41
 
41
- @mixin outlined() {
42
- @include mdc-elevation-theme.elevation(0);
43
- @include mdc-card-mixins.outline(mdc-card-variables.$outline-color);
44
- @include theme.property(border-color, border-color);
42
+ @mixin raised() {
43
+ @include mdc-elevation-theme.elevation(1);
44
+
45
+ border: none;
45
46
  }