@tabler/core 1.5.1 → 1.6.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 (961) hide show
  1. package/README.md +10 -1
  2. package/dist/css/tabler-flags.css +9 -1
  3. package/dist/css/tabler-flags.css.map +1 -1
  4. package/dist/css/tabler-flags.min.css +2 -2
  5. package/dist/css/tabler-flags.min.css.map +1 -1
  6. package/dist/css/tabler-flags.rtl.css +9 -1
  7. package/dist/css/tabler-flags.rtl.css.map +1 -1
  8. package/dist/css/tabler-flags.rtl.min.css +2 -2
  9. package/dist/css/tabler-flags.rtl.min.css.map +1 -1
  10. package/dist/css/tabler-marketing.css +78 -38
  11. package/dist/css/tabler-marketing.css.map +1 -1
  12. package/dist/css/tabler-marketing.min.css +2 -2
  13. package/dist/css/tabler-marketing.min.css.map +1 -1
  14. package/dist/css/tabler-marketing.rtl.css +78 -38
  15. package/dist/css/tabler-marketing.rtl.css.map +1 -1
  16. package/dist/css/tabler-marketing.rtl.min.css +2 -2
  17. package/dist/css/tabler-marketing.rtl.min.css.map +1 -1
  18. package/dist/css/tabler-payments.css +5 -1
  19. package/dist/css/tabler-payments.css.map +1 -1
  20. package/dist/css/tabler-payments.min.css +1 -1
  21. package/dist/css/tabler-payments.min.css.map +1 -1
  22. package/dist/css/tabler-payments.rtl.css +5 -1
  23. package/dist/css/tabler-payments.rtl.css.map +1 -1
  24. package/dist/css/tabler-payments.rtl.min.css +1 -1
  25. package/dist/css/tabler-payments.rtl.min.css.map +1 -1
  26. package/dist/css/tabler-props.css +207 -241
  27. package/dist/css/tabler-props.css.map +1 -1
  28. package/dist/css/tabler-props.min.css +2 -2
  29. package/dist/css/tabler-props.min.css.map +1 -1
  30. package/dist/css/tabler-props.rtl.css +207 -241
  31. package/dist/css/tabler-props.rtl.css.map +1 -1
  32. package/dist/css/tabler-props.rtl.min.css +2 -2
  33. package/dist/css/tabler-props.rtl.min.css.map +1 -1
  34. package/dist/css/tabler-socials.css +5 -1
  35. package/dist/css/tabler-socials.css.map +1 -1
  36. package/dist/css/tabler-socials.min.css +1 -1
  37. package/dist/css/tabler-socials.min.css.map +1 -1
  38. package/dist/css/tabler-socials.rtl.css +5 -1
  39. package/dist/css/tabler-socials.rtl.css.map +1 -1
  40. package/dist/css/tabler-socials.rtl.min.css +1 -1
  41. package/dist/css/tabler-socials.rtl.min.css.map +1 -1
  42. package/dist/css/tabler-themes.css +144 -94
  43. package/dist/css/tabler-themes.css.map +1 -1
  44. package/dist/css/tabler-themes.min.css +2 -2
  45. package/dist/css/tabler-themes.min.css.map +1 -1
  46. package/dist/css/tabler-themes.rtl.css +144 -94
  47. package/dist/css/tabler-themes.rtl.css.map +1 -1
  48. package/dist/css/tabler-themes.rtl.min.css +2 -2
  49. package/dist/css/tabler-themes.rtl.min.css.map +1 -1
  50. package/dist/css/tabler-vendors.css +203 -83
  51. package/dist/css/tabler-vendors.css.map +1 -1
  52. package/dist/css/tabler-vendors.min.css +2 -2
  53. package/dist/css/tabler-vendors.min.css.map +1 -1
  54. package/dist/css/tabler-vendors.rtl.css +203 -83
  55. package/dist/css/tabler-vendors.rtl.css.map +1 -1
  56. package/dist/css/tabler-vendors.rtl.min.css +2 -2
  57. package/dist/css/tabler-vendors.rtl.min.css.map +1 -1
  58. package/dist/css/tabler.css +4366 -5119
  59. package/dist/css/tabler.css.map +1 -1
  60. package/dist/css/tabler.min.css +2 -2
  61. package/dist/css/tabler.min.css.map +1 -1
  62. package/dist/css/tabler.rtl.css +4922 -5678
  63. package/dist/css/tabler.rtl.css.map +1 -1
  64. package/dist/css/tabler.rtl.min.css +2 -2
  65. package/dist/css/tabler.rtl.min.css.map +1 -1
  66. package/dist/img/flags/ad.svg +1 -1
  67. package/dist/img/flags/ae.svg +1 -1
  68. package/dist/img/flags/af.svg +1 -1
  69. package/dist/img/flags/afrun.svg +1 -1
  70. package/dist/img/flags/ag.svg +1 -1
  71. package/dist/img/flags/ai.svg +1 -1
  72. package/dist/img/flags/al.svg +1 -1
  73. package/dist/img/flags/am.svg +1 -1
  74. package/dist/img/flags/ao.svg +1 -1
  75. package/dist/img/flags/aq.svg +1 -1
  76. package/dist/img/flags/ar.svg +1 -1
  77. package/dist/img/flags/as.svg +1 -1
  78. package/dist/img/flags/at.svg +1 -1
  79. package/dist/img/flags/au.svg +1 -1
  80. package/dist/img/flags/aw.svg +1 -1
  81. package/dist/img/flags/ax.svg +1 -1
  82. package/dist/img/flags/az.svg +1 -1
  83. package/dist/img/flags/ba.svg +1 -1
  84. package/dist/img/flags/bb.svg +1 -1
  85. package/dist/img/flags/bd.svg +1 -1
  86. package/dist/img/flags/be.svg +1 -1
  87. package/dist/img/flags/bf.svg +1 -1
  88. package/dist/img/flags/bg.svg +1 -1
  89. package/dist/img/flags/bh.svg +1 -1
  90. package/dist/img/flags/bi.svg +1 -1
  91. package/dist/img/flags/bj.svg +1 -1
  92. package/dist/img/flags/bl.svg +1 -1
  93. package/dist/img/flags/bm.svg +1 -1
  94. package/dist/img/flags/bn.svg +1 -1
  95. package/dist/img/flags/bo.svg +1 -1
  96. package/dist/img/flags/bq-bo.svg +1 -1
  97. package/dist/img/flags/bq-sa.svg +1 -1
  98. package/dist/img/flags/bq-se.svg +1 -1
  99. package/dist/img/flags/br.svg +1 -1
  100. package/dist/img/flags/bs.svg +1 -1
  101. package/dist/img/flags/bt.svg +1 -1
  102. package/dist/img/flags/bv.svg +1 -1
  103. package/dist/img/flags/bw.svg +1 -1
  104. package/dist/img/flags/by.svg +1 -1
  105. package/dist/img/flags/bz.svg +1 -1
  106. package/dist/img/flags/ca.svg +1 -1
  107. package/dist/img/flags/cc.svg +1 -1
  108. package/dist/img/flags/cd.svg +1 -1
  109. package/dist/img/flags/cf.svg +1 -1
  110. package/dist/img/flags/cg.svg +1 -1
  111. package/dist/img/flags/ch.svg +1 -1
  112. package/dist/img/flags/ci.svg +1 -1
  113. package/dist/img/flags/ck.svg +1 -1
  114. package/dist/img/flags/cl.svg +1 -1
  115. package/dist/img/flags/cm.svg +1 -1
  116. package/dist/img/flags/cn.svg +1 -1
  117. package/dist/img/flags/co.svg +1 -1
  118. package/dist/img/flags/cr.svg +1 -1
  119. package/dist/img/flags/cu.svg +1 -1
  120. package/dist/img/flags/cv.svg +1 -1
  121. package/dist/img/flags/cw.svg +1 -1
  122. package/dist/img/flags/cx.svg +1 -1
  123. package/dist/img/flags/cy.svg +1 -1
  124. package/dist/img/flags/cz.svg +1 -1
  125. package/dist/img/flags/de.svg +1 -1
  126. package/dist/img/flags/dj.svg +1 -1
  127. package/dist/img/flags/dk.svg +1 -1
  128. package/dist/img/flags/dm.svg +1 -1
  129. package/dist/img/flags/do.svg +1 -1
  130. package/dist/img/flags/dz.svg +1 -1
  131. package/dist/img/flags/ec.svg +1 -1
  132. package/dist/img/flags/ee.svg +1 -1
  133. package/dist/img/flags/eg.svg +1 -1
  134. package/dist/img/flags/eh.svg +1 -1
  135. package/dist/img/flags/er.svg +1 -1
  136. package/dist/img/flags/es.svg +1 -1
  137. package/dist/img/flags/et.svg +1 -1
  138. package/dist/img/flags/eu.svg +1 -1
  139. package/dist/img/flags/fi.svg +1 -1
  140. package/dist/img/flags/fj.svg +1 -1
  141. package/dist/img/flags/fk.svg +1 -1
  142. package/dist/img/flags/fm.svg +1 -1
  143. package/dist/img/flags/fo.svg +1 -1
  144. package/dist/img/flags/fr.svg +1 -1
  145. package/dist/img/flags/ga.svg +1 -1
  146. package/dist/img/flags/gb-eng.svg +1 -1
  147. package/dist/img/flags/gb-nir.svg +1 -1
  148. package/dist/img/flags/gb-sct.svg +1 -1
  149. package/dist/img/flags/gb-wls.svg +1 -1
  150. package/dist/img/flags/gb.svg +1 -1
  151. package/dist/img/flags/gd.svg +1 -1
  152. package/dist/img/flags/ge.svg +1 -1
  153. package/dist/img/flags/gf.svg +1 -1
  154. package/dist/img/flags/gg.svg +1 -1
  155. package/dist/img/flags/gh.svg +1 -1
  156. package/dist/img/flags/gi.svg +1 -1
  157. package/dist/img/flags/gl.svg +1 -1
  158. package/dist/img/flags/gm.svg +1 -1
  159. package/dist/img/flags/gn.svg +1 -1
  160. package/dist/img/flags/gp.svg +1 -1
  161. package/dist/img/flags/gq.svg +1 -1
  162. package/dist/img/flags/gr.svg +1 -1
  163. package/dist/img/flags/gs.svg +1 -1
  164. package/dist/img/flags/gt.svg +1 -1
  165. package/dist/img/flags/gu.svg +1 -1
  166. package/dist/img/flags/gw.svg +1 -1
  167. package/dist/img/flags/gy.svg +1 -1
  168. package/dist/img/flags/hk.svg +1 -1
  169. package/dist/img/flags/hm.svg +1 -1
  170. package/dist/img/flags/hn.svg +1 -1
  171. package/dist/img/flags/hr.svg +1 -1
  172. package/dist/img/flags/ht.svg +1 -1
  173. package/dist/img/flags/hu.svg +1 -1
  174. package/dist/img/flags/id.svg +1 -1
  175. package/dist/img/flags/ie.svg +1 -1
  176. package/dist/img/flags/il.svg +1 -1
  177. package/dist/img/flags/im.svg +1 -1
  178. package/dist/img/flags/in.svg +1 -1
  179. package/dist/img/flags/io.svg +1 -1
  180. package/dist/img/flags/iq.svg +1 -1
  181. package/dist/img/flags/ir.svg +1 -1
  182. package/dist/img/flags/is.svg +1 -1
  183. package/dist/img/flags/it.svg +1 -1
  184. package/dist/img/flags/je.svg +1 -1
  185. package/dist/img/flags/jm.svg +1 -1
  186. package/dist/img/flags/jo.svg +1 -1
  187. package/dist/img/flags/jp.svg +1 -1
  188. package/dist/img/flags/ke.svg +1 -1
  189. package/dist/img/flags/kg.svg +1 -1
  190. package/dist/img/flags/kh.svg +1 -1
  191. package/dist/img/flags/ki.svg +1 -1
  192. package/dist/img/flags/km.svg +1 -1
  193. package/dist/img/flags/kn-sk.svg +1 -1
  194. package/dist/img/flags/kn.svg +1 -1
  195. package/dist/img/flags/kp.svg +1 -1
  196. package/dist/img/flags/kr.svg +1 -1
  197. package/dist/img/flags/kw.svg +1 -1
  198. package/dist/img/flags/ky.svg +1 -1
  199. package/dist/img/flags/kz.svg +1 -1
  200. package/dist/img/flags/la.svg +1 -1
  201. package/dist/img/flags/lb.svg +1 -1
  202. package/dist/img/flags/lc.svg +1 -1
  203. package/dist/img/flags/li.svg +1 -1
  204. package/dist/img/flags/lk.svg +1 -1
  205. package/dist/img/flags/lr.svg +1 -1
  206. package/dist/img/flags/ls.svg +1 -1
  207. package/dist/img/flags/lt.svg +1 -1
  208. package/dist/img/flags/lu.svg +1 -1
  209. package/dist/img/flags/lv.svg +1 -1
  210. package/dist/img/flags/ly.svg +1 -1
  211. package/dist/img/flags/ma.svg +1 -1
  212. package/dist/img/flags/mc.svg +1 -1
  213. package/dist/img/flags/md.svg +1 -1
  214. package/dist/img/flags/me.svg +1 -1
  215. package/dist/img/flags/mf.svg +1 -1
  216. package/dist/img/flags/mg.svg +1 -1
  217. package/dist/img/flags/mh.svg +1 -1
  218. package/dist/img/flags/mk.svg +1 -1
  219. package/dist/img/flags/ml.svg +1 -1
  220. package/dist/img/flags/mm.svg +1 -1
  221. package/dist/img/flags/mn.svg +1 -1
  222. package/dist/img/flags/mo.svg +1 -1
  223. package/dist/img/flags/mp.svg +1 -1
  224. package/dist/img/flags/mq.svg +1 -1
  225. package/dist/img/flags/mr.svg +1 -1
  226. package/dist/img/flags/ms.svg +1 -1
  227. package/dist/img/flags/mt.svg +1 -1
  228. package/dist/img/flags/mu.svg +1 -1
  229. package/dist/img/flags/mv.svg +1 -1
  230. package/dist/img/flags/mw.svg +1 -1
  231. package/dist/img/flags/mx.svg +1 -1
  232. package/dist/img/flags/my.svg +1 -1
  233. package/dist/img/flags/mz.svg +1 -1
  234. package/dist/img/flags/na.svg +1 -1
  235. package/dist/img/flags/nc.svg +1 -1
  236. package/dist/img/flags/ne.svg +1 -1
  237. package/dist/img/flags/nf.svg +1 -1
  238. package/dist/img/flags/ng.svg +1 -1
  239. package/dist/img/flags/ni.svg +1 -1
  240. package/dist/img/flags/nl.svg +1 -1
  241. package/dist/img/flags/no.svg +1 -1
  242. package/dist/img/flags/np.svg +1 -1
  243. package/dist/img/flags/nr.svg +1 -1
  244. package/dist/img/flags/nu.svg +1 -1
  245. package/dist/img/flags/nz.svg +1 -1
  246. package/dist/img/flags/om.svg +1 -1
  247. package/dist/img/flags/pa.svg +1 -1
  248. package/dist/img/flags/pe.svg +1 -1
  249. package/dist/img/flags/pf.svg +1 -1
  250. package/dist/img/flags/pg.svg +1 -1
  251. package/dist/img/flags/ph.svg +1 -1
  252. package/dist/img/flags/pk.svg +1 -1
  253. package/dist/img/flags/pl.svg +1 -1
  254. package/dist/img/flags/pm.svg +1 -1
  255. package/dist/img/flags/pn.svg +1 -1
  256. package/dist/img/flags/pr.svg +1 -1
  257. package/dist/img/flags/ps.svg +1 -1
  258. package/dist/img/flags/pt.svg +1 -1
  259. package/dist/img/flags/pw.svg +1 -1
  260. package/dist/img/flags/py.svg +1 -1
  261. package/dist/img/flags/qa.svg +1 -1
  262. package/dist/img/flags/rainbow.svg +1 -1
  263. package/dist/img/flags/re.svg +1 -1
  264. package/dist/img/flags/ro.svg +1 -1
  265. package/dist/img/flags/rs.svg +1 -1
  266. package/dist/img/flags/ru.svg +1 -1
  267. package/dist/img/flags/rw.svg +1 -1
  268. package/dist/img/flags/sa.svg +1 -1
  269. package/dist/img/flags/sb.svg +1 -1
  270. package/dist/img/flags/sc.svg +1 -1
  271. package/dist/img/flags/sd.svg +1 -1
  272. package/dist/img/flags/se.svg +1 -1
  273. package/dist/img/flags/sg.svg +1 -1
  274. package/dist/img/flags/sh.svg +1 -1
  275. package/dist/img/flags/si.svg +1 -1
  276. package/dist/img/flags/sj.svg +1 -1
  277. package/dist/img/flags/sk.svg +1 -1
  278. package/dist/img/flags/sl.svg +1 -1
  279. package/dist/img/flags/sm.svg +1 -1
  280. package/dist/img/flags/sn.svg +1 -1
  281. package/dist/img/flags/so.svg +1 -1
  282. package/dist/img/flags/sr.svg +1 -1
  283. package/dist/img/flags/ss.svg +1 -1
  284. package/dist/img/flags/st.svg +1 -1
  285. package/dist/img/flags/sv.svg +1 -1
  286. package/dist/img/flags/sx.svg +1 -1
  287. package/dist/img/flags/sy.svg +1 -1
  288. package/dist/img/flags/sz.svg +1 -1
  289. package/dist/img/flags/tc.svg +1 -1
  290. package/dist/img/flags/td.svg +1 -1
  291. package/dist/img/flags/tf.svg +1 -1
  292. package/dist/img/flags/tg.svg +1 -1
  293. package/dist/img/flags/th.svg +1 -1
  294. package/dist/img/flags/tj.svg +1 -1
  295. package/dist/img/flags/tk.svg +1 -1
  296. package/dist/img/flags/tl.svg +1 -1
  297. package/dist/img/flags/tm.svg +1 -1
  298. package/dist/img/flags/tn.svg +1 -1
  299. package/dist/img/flags/to.svg +1 -1
  300. package/dist/img/flags/tr.svg +1 -1
  301. package/dist/img/flags/tt.svg +1 -1
  302. package/dist/img/flags/tv.svg +1 -1
  303. package/dist/img/flags/tw.svg +1 -1
  304. package/dist/img/flags/tz.svg +1 -1
  305. package/dist/img/flags/ua.svg +1 -1
  306. package/dist/img/flags/ug.svg +1 -1
  307. package/dist/img/flags/um.svg +1 -1
  308. package/dist/img/flags/unasur.svg +1 -1
  309. package/dist/img/flags/us.svg +1 -1
  310. package/dist/img/flags/uy.svg +1 -1
  311. package/dist/img/flags/uz.svg +1 -1
  312. package/dist/img/flags/va.svg +1 -1
  313. package/dist/img/flags/vc.svg +1 -1
  314. package/dist/img/flags/ve.svg +1 -1
  315. package/dist/img/flags/vg.svg +1 -1
  316. package/dist/img/flags/vi.svg +1 -1
  317. package/dist/img/flags/vn.svg +1 -1
  318. package/dist/img/flags/vu.svg +1 -1
  319. package/dist/img/flags/wf.svg +1 -1
  320. package/dist/img/flags/ws.svg +1 -1
  321. package/dist/img/flags/ye.svg +1 -1
  322. package/dist/img/flags/yt.svg +1 -1
  323. package/dist/img/flags/za.svg +1 -1
  324. package/dist/img/flags/zm.svg +1 -1
  325. package/dist/img/flags/zw.svg +1 -1
  326. package/dist/img/payments/2c2p-dark.svg +1 -5
  327. package/dist/img/payments/2c2p.svg +1 -5
  328. package/dist/img/payments/2checkout-dark.svg +1 -4
  329. package/dist/img/payments/2checkout.svg +1 -4
  330. package/dist/img/payments/ach-transfer-dark.svg +1 -14
  331. package/dist/img/payments/ach-transfer.svg +1 -14
  332. package/dist/img/payments/adyen-dark.svg +1 -8
  333. package/dist/img/payments/adyen.svg +1 -8
  334. package/dist/img/payments/affirm-dark.svg +1 -9
  335. package/dist/img/payments/affirm.svg +1 -9
  336. package/dist/img/payments/afterpay-dark.svg +1 -13
  337. package/dist/img/payments/afterpay.svg +1 -13
  338. package/dist/img/payments/airtm-dark.svg +1 -4
  339. package/dist/img/payments/airtm.svg +1 -4
  340. package/dist/img/payments/airwallex-dark.svg +1 -11
  341. package/dist/img/payments/airwallex.svg +1 -11
  342. package/dist/img/payments/alipay-dark.svg +1 -12
  343. package/dist/img/payments/alipay-plus-dark.svg +1 -9
  344. package/dist/img/payments/alipay-plus.svg +1 -9
  345. package/dist/img/payments/alipay.svg +1 -12
  346. package/dist/img/payments/allegro-pay-dark.svg +1 -5
  347. package/dist/img/payments/allegro-pay.svg +1 -5
  348. package/dist/img/payments/amazon-dark.svg +1 -6
  349. package/dist/img/payments/amazon-pay-dark.svg +1 -7
  350. package/dist/img/payments/amazon-pay.svg +1 -7
  351. package/dist/img/payments/amazon.svg +1 -6
  352. package/dist/img/payments/americanexpress-dark.svg +1 -4
  353. package/dist/img/payments/americanexpress.svg +1 -4
  354. package/dist/img/payments/ant-group-dark.svg +1 -6
  355. package/dist/img/payments/ant-group.svg +1 -23
  356. package/dist/img/payments/applepay-dark.svg +1 -8
  357. package/dist/img/payments/applepay.svg +1 -8
  358. package/dist/img/payments/authorize-dark.svg +1 -17
  359. package/dist/img/payments/authorize.svg +1 -17
  360. package/dist/img/payments/autopay-dark.svg +1 -11
  361. package/dist/img/payments/autopay.svg +1 -11
  362. package/dist/img/payments/bancontact-dark.svg +1 -9
  363. package/dist/img/payments/bancontact.svg +1 -9
  364. package/dist/img/payments/bank-of-america-dark.svg +1 -10
  365. package/dist/img/payments/bank-of-america.svg +1 -10
  366. package/dist/img/payments/barclays-dark.svg +1 -11
  367. package/dist/img/payments/barclays.svg +1 -11
  368. package/dist/img/payments/bbva-dark.svg +1 -4
  369. package/dist/img/payments/bbva.svg +1 -4
  370. package/dist/img/payments/binance-dark.svg +1 -4
  371. package/dist/img/payments/binance-usd-dark.svg +1 -11
  372. package/dist/img/payments/binance-usd.svg +1 -11
  373. package/dist/img/payments/binance.svg +1 -4
  374. package/dist/img/payments/bitcoin-dark.svg +1 -13
  375. package/dist/img/payments/bitcoin.svg +1 -12
  376. package/dist/img/payments/bitpay-dark.svg +1 -4
  377. package/dist/img/payments/bitpay.svg +1 -4
  378. package/dist/img/payments/bkash-dark.svg +1 -16
  379. package/dist/img/payments/bkash.svg +1 -16
  380. package/dist/img/payments/blik-dark.svg +1 -5
  381. package/dist/img/payments/blik.svg +1 -12
  382. package/dist/img/payments/bnb-chain-dark.svg +1 -14
  383. package/dist/img/payments/bnb-chain.svg +1 -14
  384. package/dist/img/payments/bnp-paribas-dark.svg +1 -80
  385. package/dist/img/payments/bnp-paribas.svg +1 -80
  386. package/dist/img/payments/braintree-dark.svg +1 -6
  387. package/dist/img/payments/braintree.svg +1 -6
  388. package/dist/img/payments/brex-dark.svg +1 -4
  389. package/dist/img/payments/brex.svg +1 -4
  390. package/dist/img/payments/capital-one-dark.svg +1 -6
  391. package/dist/img/payments/capital-one.svg +1 -6
  392. package/dist/img/payments/cash-app-dark.svg +1 -8
  393. package/dist/img/payments/cash-app.svg +1 -8
  394. package/dist/img/payments/chase-dark.svg +1 -12
  395. package/dist/img/payments/chase.svg +1 -12
  396. package/dist/img/payments/checkout-com-dark.svg +1 -4
  397. package/dist/img/payments/checkout-com.svg +1 -4
  398. package/dist/img/payments/chime-dark.svg +1 -9
  399. package/dist/img/payments/chime.svg +1 -9
  400. package/dist/img/payments/china-construction-bank-dark.svg +1 -36
  401. package/dist/img/payments/china-construction-bank.svg +1 -36
  402. package/dist/img/payments/cirrus-dark.svg +1 -8
  403. package/dist/img/payments/cirrus.svg +1 -8
  404. package/dist/img/payments/citi-dark.svg +1 -8
  405. package/dist/img/payments/citi.svg +1 -8
  406. package/dist/img/payments/coinbase-dark.svg +1 -4
  407. package/dist/img/payments/coinbase.svg +1 -5
  408. package/dist/img/payments/coinkite-dark.svg +1 -6
  409. package/dist/img/payments/coinkite.svg +1 -6
  410. package/dist/img/payments/crypto-com-dark.svg +1 -8
  411. package/dist/img/payments/crypto-com.svg +1 -8
  412. package/dist/img/payments/deutsche-bank-dark.svg +1 -16
  413. package/dist/img/payments/deutsche-bank.svg +1 -16
  414. package/dist/img/payments/dinersclub-dark.svg +1 -7
  415. package/dist/img/payments/dinersclub.svg +1 -7
  416. package/dist/img/payments/directdebit-dark.svg +1 -4
  417. package/dist/img/payments/directdebit.svg +1 -4
  418. package/dist/img/payments/discover-dark.svg +1 -8
  419. package/dist/img/payments/discover.svg +1 -6
  420. package/dist/img/payments/dwolla-dark.svg +1 -5
  421. package/dist/img/payments/dwolla.svg +1 -5
  422. package/dist/img/payments/easypaisa-dark.svg +1 -14
  423. package/dist/img/payments/easypaisa.svg +1 -14
  424. package/dist/img/payments/ebay-dark.svg +1 -7
  425. package/dist/img/payments/ebay.svg +1 -7
  426. package/dist/img/payments/elo-dark.svg +1 -11
  427. package/dist/img/payments/elo.svg +1 -11
  428. package/dist/img/payments/epayco-dark.svg +1 -5
  429. package/dist/img/payments/epayco.svg +1 -5
  430. package/dist/img/payments/esewa-dark.svg +1 -11
  431. package/dist/img/payments/esewa.svg +1 -12
  432. package/dist/img/payments/ethereum-dark.svg +1 -13
  433. package/dist/img/payments/ethereum.svg +1 -18
  434. package/dist/img/payments/eway-dark.svg +1 -6
  435. package/dist/img/payments/eway.svg +1 -6
  436. package/dist/img/payments/fifth-third-bank-dark.svg +1 -7
  437. package/dist/img/payments/fifth-third-bank.svg +1 -7
  438. package/dist/img/payments/fiserv-dark.svg +1 -11
  439. package/dist/img/payments/fiserv.svg +1 -11
  440. package/dist/img/payments/flutterwave-dark.svg +1 -18
  441. package/dist/img/payments/flutterwave.svg +1 -18
  442. package/dist/img/payments/fonepay-dark.svg +1 -10
  443. package/dist/img/payments/fonepay.svg +1 -10
  444. package/dist/img/payments/gcash-dark.svg +1 -7
  445. package/dist/img/payments/gcash.svg +1 -7
  446. package/dist/img/payments/giropay-dark.svg +1 -13
  447. package/dist/img/payments/giropay.svg +1 -25
  448. package/dist/img/payments/goldman-sachs-dark.svg +1 -4
  449. package/dist/img/payments/goldman-sachs.svg +1 -4
  450. package/dist/img/payments/google-pay-dark.svg +1 -10
  451. package/dist/img/payments/google-pay.svg +1 -10
  452. package/dist/img/payments/googlewallet-dark.svg +1 -7
  453. package/dist/img/payments/googlewallet.svg +1 -7
  454. package/dist/img/payments/grabpay-dark.svg +1 -4
  455. package/dist/img/payments/grabpay.svg +1 -4
  456. package/dist/img/payments/hsbc-dark.svg +1 -12
  457. package/dist/img/payments/hsbc.svg +1 -12
  458. package/dist/img/payments/hubspot-dark.svg +1 -5
  459. package/dist/img/payments/hubspot.svg +1 -5
  460. package/dist/img/payments/huntington-bank-dark.svg +1 -5
  461. package/dist/img/payments/huntington-bank.svg +1 -5
  462. package/dist/img/payments/icbc-dark.svg +1 -8
  463. package/dist/img/payments/icbc.svg +1 -8
  464. package/dist/img/payments/ideal-dark.svg +1 -8
  465. package/dist/img/payments/ideal.svg +1 -7
  466. package/dist/img/payments/imepay-dark.svg +1 -11
  467. package/dist/img/payments/imepay.svg +1 -11
  468. package/dist/img/payments/imoje-dark.svg +1 -7
  469. package/dist/img/payments/imoje.svg +1 -8
  470. package/dist/img/payments/ing-dark.svg +1 -145
  471. package/dist/img/payments/ing.svg +1 -145
  472. package/dist/img/payments/ingenico-dark.svg +1 -4
  473. package/dist/img/payments/ingenico.svg +1 -4
  474. package/dist/img/payments/interac-dark.svg +1 -16
  475. package/dist/img/payments/interac.svg +1 -16
  476. package/dist/img/payments/jazzcash-dark.svg +1 -13
  477. package/dist/img/payments/jazzcash.svg +1 -13
  478. package/dist/img/payments/jcb-dark.svg +1 -8
  479. package/dist/img/payments/jcb.svg +1 -41
  480. package/dist/img/payments/khalti-dark.svg +1 -14
  481. package/dist/img/payments/khalti.svg +1 -14
  482. package/dist/img/payments/klarna-dark.svg +1 -11
  483. package/dist/img/payments/klarna.svg +1 -11
  484. package/dist/img/payments/kraken-dark.svg +1 -5
  485. package/dist/img/payments/kraken.svg +1 -5
  486. package/dist/img/payments/linepay-dark.svg +1 -10
  487. package/dist/img/payments/linepay.svg +1 -11
  488. package/dist/img/payments/litecoin-dark.svg +1 -14
  489. package/dist/img/payments/litecoin.svg +1 -14
  490. package/dist/img/payments/mada-dark.svg +1 -11
  491. package/dist/img/payments/mada.svg +1 -11
  492. package/dist/img/payments/maestro-dark.svg +1 -6
  493. package/dist/img/payments/maestro.svg +1 -6
  494. package/dist/img/payments/mastercard-dark.svg +1 -6
  495. package/dist/img/payments/mastercard.svg +1 -6
  496. package/dist/img/payments/mercado-pago-dark.svg +1 -9
  497. package/dist/img/payments/mercado-pago.svg +1 -9
  498. package/dist/img/payments/mercury-dark.svg +1 -4
  499. package/dist/img/payments/mercury.svg +1 -4
  500. package/dist/img/payments/meta-pay-dark.svg +1 -6
  501. package/dist/img/payments/meta-pay.svg +1 -16
  502. package/dist/img/payments/metamask-dark.svg +1 -40
  503. package/dist/img/payments/metamask.svg +1 -40
  504. package/dist/img/payments/mir-dark.svg +1 -4
  505. package/dist/img/payments/mir.svg +1 -11
  506. package/dist/img/payments/mitsubishi-ufj-dark.svg +1 -5
  507. package/dist/img/payments/mitsubishi-ufj.svg +1 -5
  508. package/dist/img/payments/mobilepay-dark.svg +1 -6
  509. package/dist/img/payments/mobilepay.svg +1 -6
  510. package/dist/img/payments/mollie-dark.svg +1 -4
  511. package/dist/img/payments/mollie.svg +1 -4
  512. package/dist/img/payments/monero-dark.svg +1 -5
  513. package/dist/img/payments/monero.svg +1 -5
  514. package/dist/img/payments/moneygram-dark.svg +1 -12
  515. package/dist/img/payments/moneygram.svg +1 -12
  516. package/dist/img/payments/mpesa-dark.svg +1 -5
  517. package/dist/img/payments/mpesa.svg +1 -5
  518. package/dist/img/payments/ncr-dark.svg +1 -9
  519. package/dist/img/payments/ncr.svg +1 -9
  520. package/dist/img/payments/neteller-dark.svg +1 -4
  521. package/dist/img/payments/neteller.svg +1 -4
  522. package/dist/img/payments/northone-dark.svg +1 -5
  523. package/dist/img/payments/northone.svg +1 -5
  524. package/dist/img/payments/nu-dark.svg +1 -5
  525. package/dist/img/payments/nu.svg +1 -5
  526. package/dist/img/payments/nuvei-dark.svg +1 -9
  527. package/dist/img/payments/nuvei.svg +1 -9
  528. package/dist/img/payments/opensea-dark.svg +1 -11
  529. package/dist/img/payments/opensea.svg +1 -11
  530. package/dist/img/payments/oxxo-dark.svg +1 -8
  531. package/dist/img/payments/oxxo.svg +1 -8
  532. package/dist/img/payments/paybox-dark.svg +1 -4
  533. package/dist/img/payments/paybox.svg +1 -4
  534. package/dist/img/payments/payconiq-dark.svg +1 -4
  535. package/dist/img/payments/payconiq.svg +1 -4
  536. package/dist/img/payments/payka-dark.svg +1 -18
  537. package/dist/img/payments/payka.svg +1 -12
  538. package/dist/img/payments/payline-dark.svg +1 -12
  539. package/dist/img/payments/payline.svg +1 -12
  540. package/dist/img/payments/paynow-dark.svg +1 -15
  541. package/dist/img/payments/paynow.svg +1 -15
  542. package/dist/img/payments/payone-dark.svg +1 -7
  543. package/dist/img/payments/payone.svg +1 -7
  544. package/dist/img/payments/payoneer-dark.svg +1 -4
  545. package/dist/img/payments/payoneer.svg +1 -4
  546. package/dist/img/payments/paypal-dark.svg +1 -8
  547. package/dist/img/payments/paypal.svg +1 -8
  548. package/dist/img/payments/paypay-dark.svg +1 -6
  549. package/dist/img/payments/paypay.svg +1 -6
  550. package/dist/img/payments/paypo-dark.svg +1 -11
  551. package/dist/img/payments/paypo.svg +1 -11
  552. package/dist/img/payments/paysafe-dark.svg +1 -6
  553. package/dist/img/payments/paysafe.svg +1 -6
  554. package/dist/img/payments/paysafecard-dark.svg +1 -4
  555. package/dist/img/payments/paysafecard.svg +1 -4
  556. package/dist/img/payments/paystack-dark.svg +1 -5
  557. package/dist/img/payments/paystack.svg +1 -5
  558. package/dist/img/payments/paytm-dark.svg +1 -8
  559. package/dist/img/payments/paytm.svg +1 -8
  560. package/dist/img/payments/payu-dark.svg +1 -4
  561. package/dist/img/payments/payu.svg +1 -4
  562. package/dist/img/payments/phonepe-dark.svg +1 -6
  563. package/dist/img/payments/phonepe.svg +1 -6
  564. package/dist/img/payments/pix-dark.svg +1 -6
  565. package/dist/img/payments/pix.svg +1 -6
  566. package/dist/img/payments/pnc-bank-dark.svg +1 -8
  567. package/dist/img/payments/pnc-bank.svg +1 -8
  568. package/dist/img/payments/poli-dark.svg +1 -8
  569. package/dist/img/payments/poli.svg +1 -8
  570. package/dist/img/payments/przelewy24-dark.svg +1 -18
  571. package/dist/img/payments/przelewy24.svg +1 -8
  572. package/dist/img/payments/rapyd-dark.svg +1 -8
  573. package/dist/img/payments/rapyd.svg +1 -8
  574. package/dist/img/payments/razorpay-dark.svg +1 -5
  575. package/dist/img/payments/razorpay.svg +1 -5
  576. package/dist/img/payments/revolut-pay-dark.svg +1 -8
  577. package/dist/img/payments/revolut-pay.svg +1 -8
  578. package/dist/img/payments/ripple-dark.svg +1 -5
  579. package/dist/img/payments/ripple.svg +1 -5
  580. package/dist/img/payments/rupay-dark.svg +1 -10
  581. package/dist/img/payments/rupay.svg +1 -10
  582. package/dist/img/payments/samsung-pay-dark.svg +1 -13
  583. package/dist/img/payments/samsung-pay.svg +1 -13
  584. package/dist/img/payments/santander-dark.svg +1 -4
  585. package/dist/img/payments/santander.svg +1 -4
  586. package/dist/img/payments/sepa-dark.svg +1 -5
  587. package/dist/img/payments/sepa.svg +1 -5
  588. package/dist/img/payments/shop-pay-dark.svg +1 -4
  589. package/dist/img/payments/shop-pay.svg +1 -4
  590. package/dist/img/payments/shopify-dark.svg +1 -6
  591. package/dist/img/payments/shopify.svg +1 -7
  592. package/dist/img/payments/skrill-dark.svg +1 -10
  593. package/dist/img/payments/skrill.svg +1 -10
  594. package/dist/img/payments/skycash-dark.svg +1 -10
  595. package/dist/img/payments/skycash.svg +1 -10
  596. package/dist/img/payments/sofort-dark.svg +1 -6
  597. package/dist/img/payments/sofort.svg +1 -6
  598. package/dist/img/payments/solana-dark.svg +1 -20
  599. package/dist/img/payments/solana.svg +1 -20
  600. package/dist/img/payments/spingo-dark.svg +1 -11
  601. package/dist/img/payments/spingo.svg +1 -11
  602. package/dist/img/payments/square-dark.svg +1 -4
  603. package/dist/img/payments/square.svg +1 -4
  604. package/dist/img/payments/stax-dark.svg +1 -5
  605. package/dist/img/payments/stax.svg +1 -5
  606. package/dist/img/payments/stcpay-dark.svg +1 -7
  607. package/dist/img/payments/stcpay.svg +1 -7
  608. package/dist/img/payments/stripe-dark.svg +1 -4
  609. package/dist/img/payments/stripe.svg +1 -4
  610. package/dist/img/payments/sumitomo-mitsui-dark.svg +1 -5
  611. package/dist/img/payments/sumitomo-mitsui.svg +1 -5
  612. package/dist/img/payments/swift-dark.svg +1 -4
  613. package/dist/img/payments/swift.svg +1 -4
  614. package/dist/img/payments/swish-dark.svg +1 -32
  615. package/dist/img/payments/swish.svg +1 -32
  616. package/dist/img/payments/synchrony-dark.svg +1 -5
  617. package/dist/img/payments/synchrony.svg +1 -5
  618. package/dist/img/payments/tether-dark.svg +1 -11
  619. package/dist/img/payments/tether.svg +1 -11
  620. package/dist/img/payments/tpay-dark.svg +1 -10
  621. package/dist/img/payments/tpay.svg +1 -4
  622. package/dist/img/payments/troy-dark.svg +1 -7
  623. package/dist/img/payments/troy.svg +1 -7
  624. package/dist/img/payments/true-usd-dark.svg +1 -5
  625. package/dist/img/payments/true-usd.svg +1 -7
  626. package/dist/img/payments/trustly-dark.svg +1 -11
  627. package/dist/img/payments/trustly.svg +1 -11
  628. package/dist/img/payments/twint-dark.svg +1 -29
  629. package/dist/img/payments/twint.svg +1 -29
  630. package/dist/img/payments/ubs-dark.svg +1 -5
  631. package/dist/img/payments/ubs.svg +1 -5
  632. package/dist/img/payments/unionpay-dark.svg +1 -6
  633. package/dist/img/payments/unionpay.svg +1 -7
  634. package/dist/img/payments/upi-dark.svg +1 -8
  635. package/dist/img/payments/upi.svg +1 -8
  636. package/dist/img/payments/us-bank-dark.svg +1 -13
  637. package/dist/img/payments/us-bank.svg +1 -13
  638. package/dist/img/payments/usdc-dark.svg +1 -4
  639. package/dist/img/payments/usdc.svg +1 -4
  640. package/dist/img/payments/venmo-dark.svg +1 -4
  641. package/dist/img/payments/venmo.svg +1 -4
  642. package/dist/img/payments/verifone-dark.svg +1 -5
  643. package/dist/img/payments/verifone.svg +1 -5
  644. package/dist/img/payments/vipps-dark.svg +1 -8
  645. package/dist/img/payments/vipps.svg +1 -8
  646. package/dist/img/payments/visa-dark.svg +1 -4
  647. package/dist/img/payments/visa.svg +1 -4
  648. package/dist/img/payments/we-chat-pay-dark.svg +1 -4
  649. package/dist/img/payments/we-chat-pay.svg +1 -4
  650. package/dist/img/payments/webmoney-dark.svg +1 -5
  651. package/dist/img/payments/webmoney.svg +1 -5
  652. package/dist/img/payments/wells-fargo-dark.svg +1 -4
  653. package/dist/img/payments/wells-fargo.svg +1 -4
  654. package/dist/img/payments/westernunion-dark.svg +1 -18
  655. package/dist/img/payments/westernunion.svg +1 -18
  656. package/dist/img/payments/wire-transfer-dark.svg +1 -32
  657. package/dist/img/payments/wire-transfer.svg +1 -32
  658. package/dist/img/payments/wise-dark.svg +1 -4
  659. package/dist/img/payments/wise.svg +1 -4
  660. package/dist/img/payments/worldpay-dark.svg +1 -4
  661. package/dist/img/payments/worldpay.svg +1 -5
  662. package/dist/img/payments/zelle-dark.svg +1 -9
  663. package/dist/img/payments/zelle.svg +1 -8
  664. package/dist/img/social/apple-gray.svg +1 -3
  665. package/dist/img/social/apple.svg +1 -3
  666. package/dist/img/social/discord-gray.svg +1 -3
  667. package/dist/img/social/discord.svg +1 -3
  668. package/dist/img/social/dribbble-gray.svg +1 -3
  669. package/dist/img/social/dribbble.svg +1 -4
  670. package/dist/img/social/facebook-gray.svg +1 -3
  671. package/dist/img/social/facebook.svg +1 -4
  672. package/dist/img/social/figma-gray.svg +1 -3
  673. package/dist/img/social/figma.svg +1 -7
  674. package/dist/img/social/github-gray.svg +1 -10
  675. package/dist/img/social/github.svg +1 -10
  676. package/dist/img/social/google-gray.svg +1 -3
  677. package/dist/img/social/google.svg +1 -6
  678. package/dist/img/social/instagram-gray.svg +1 -5
  679. package/dist/img/social/instagram.svg +1 -18
  680. package/dist/img/social/linkedin-gray.svg +1 -3
  681. package/dist/img/social/linkedin.svg +1 -3
  682. package/dist/img/social/medium-gray.svg +1 -5
  683. package/dist/img/social/medium.svg +1 -5
  684. package/dist/img/social/meta-gray.svg +1 -5
  685. package/dist/img/social/meta.svg +1 -17
  686. package/dist/img/social/metamask-gray.svg +1 -12
  687. package/dist/img/social/metamask.svg +1 -14
  688. package/dist/img/social/pinterest-gray.svg +1 -3
  689. package/dist/img/social/pinterest.svg +1 -4
  690. package/dist/img/social/reddit-gray.svg +1 -6
  691. package/dist/img/social/reddit.svg +1 -11
  692. package/dist/img/social/signal-gray.svg +1 -10
  693. package/dist/img/social/signal.svg +1 -10
  694. package/dist/img/social/skype-gray.svg +1 -3
  695. package/dist/img/social/skype.svg +1 -3
  696. package/dist/img/social/snapchat-gray.svg +1 -10
  697. package/dist/img/social/snapchat.svg +1 -11
  698. package/dist/img/social/spotify-gray.svg +1 -3
  699. package/dist/img/social/spotify.svg +1 -3
  700. package/dist/img/social/telegram-gray.svg +1 -3
  701. package/dist/img/social/telegram.svg +1 -10
  702. package/dist/img/social/tiktok-gray.svg +1 -3
  703. package/dist/img/social/tiktok.svg +1 -5
  704. package/dist/img/social/tumblr-gray.svg +1 -3
  705. package/dist/img/social/tumblr.svg +1 -3
  706. package/dist/img/social/twitch-gray.svg +1 -5
  707. package/dist/img/social/twitch.svg +1 -6
  708. package/dist/img/social/vk-gray.svg +1 -3
  709. package/dist/img/social/vk.svg +1 -4
  710. package/dist/img/social/x-gray.svg +1 -3
  711. package/dist/img/social/x.svg +1 -3
  712. package/dist/img/social/youtube-gray.svg +1 -3
  713. package/dist/img/social/youtube.svg +1 -11
  714. package/dist/js/tabler-theme.esm.js +6 -4
  715. package/dist/js/tabler-theme.esm.js.map +1 -1
  716. package/dist/js/tabler-theme.esm.min.js +2 -2
  717. package/dist/js/tabler-theme.esm.min.js.map +1 -1
  718. package/dist/js/tabler-theme.js +6 -4
  719. package/dist/js/tabler-theme.js.map +1 -1
  720. package/dist/js/tabler-theme.min.js +2 -2
  721. package/dist/js/tabler-theme.min.js.map +1 -1
  722. package/dist/js/tabler.esm.js +5999 -3586
  723. package/dist/js/tabler.esm.js.map +1 -1
  724. package/dist/js/tabler.esm.min.js +2 -2
  725. package/dist/js/tabler.esm.min.js.map +1 -1
  726. package/dist/js/tabler.js +6010 -3586
  727. package/dist/js/tabler.js.map +1 -1
  728. package/dist/js/tabler.min.js +2 -2
  729. package/dist/js/tabler.min.js.map +1 -1
  730. package/dist/libs/vanilla-calendar-pro/LICENSE +21 -0
  731. package/dist/libs/vanilla-calendar-pro/index.js +2 -0
  732. package/dist/types/src/autosize.d.ts +32 -1
  733. package/dist/types/src/bootstrap/alert.d.ts +2 -0
  734. package/dist/types/src/bootstrap/button.d.ts +3 -0
  735. package/dist/types/src/bootstrap/carousel.d.ts +16 -3
  736. package/dist/types/src/bootstrap/collapse.d.ts +13 -3
  737. package/dist/types/src/bootstrap/dom/event-handler.d.ts +7 -4
  738. package/dist/types/src/bootstrap/dropdown.d.ts +30 -7
  739. package/dist/types/src/bootstrap/modal.d.ts +12 -8
  740. package/dist/types/src/bootstrap/offcanvas.d.ts +12 -8
  741. package/dist/types/src/bootstrap/popover.d.ts +13 -9
  742. package/dist/types/src/bootstrap/scrollspy.d.ts +17 -3
  743. package/dist/types/src/bootstrap/tab.d.ts +2 -0
  744. package/dist/types/src/bootstrap/toast.d.ts +12 -3
  745. package/dist/types/src/bootstrap/tooltip.d.ts +57 -19
  746. package/dist/types/src/bootstrap/types.d.ts +25 -1
  747. package/dist/types/src/bootstrap/util/backdrop.d.ts +2 -2
  748. package/dist/types/src/bootstrap/util/component-functions.d.ts +22 -2
  749. package/dist/types/src/bootstrap/util/focustrap.d.ts +2 -2
  750. package/dist/types/src/bootstrap/util/index.d.ts +5 -1
  751. package/dist/types/src/bootstrap/util/swipe.d.ts +2 -2
  752. package/dist/types/src/bootstrap/util/template-factory.d.ts +2 -2
  753. package/dist/types/src/clipboard.d.ts +45 -0
  754. package/dist/types/src/confetti.d.ts +58 -0
  755. package/dist/types/src/countup.d.ts +64 -1
  756. package/dist/types/src/datepicker.d.ts +102 -0
  757. package/dist/types/src/deprecated.d.ts +11 -0
  758. package/dist/types/src/input-mask.d.ts +42 -1
  759. package/dist/types/src/otp-input.d.ts +71 -0
  760. package/dist/types/src/sortable.d.ts +41 -1
  761. package/dist/types/src/sparkline.d.ts +67 -0
  762. package/dist/types/src/strength.d.ts +52 -0
  763. package/dist/types/src/switch-icon.d.ts +31 -1
  764. package/dist/types/src/theme-config.d.ts +3 -1
  765. package/dist/types/tabler.d.ts +18 -1
  766. package/js/src/autosize.ts +136 -7
  767. package/js/src/bootstrap/alert.ts +20 -0
  768. package/js/src/bootstrap/base-component.ts +1 -1
  769. package/js/src/bootstrap/button.ts +16 -0
  770. package/js/src/bootstrap/carousel.ts +42 -7
  771. package/js/src/bootstrap/collapse.ts +38 -6
  772. package/js/src/bootstrap/dom/event-handler.ts +50 -16
  773. package/js/src/bootstrap/dropdown.ts +61 -22
  774. package/js/src/bootstrap/modal.ts +39 -14
  775. package/js/src/bootstrap/offcanvas.ts +36 -11
  776. package/js/src/bootstrap/popover.ts +35 -9
  777. package/js/src/bootstrap/scrollspy.ts +38 -7
  778. package/js/src/bootstrap/tab.ts +20 -1
  779. package/js/src/bootstrap/toast.ts +31 -5
  780. package/js/src/bootstrap/tooltip.ts +109 -53
  781. package/js/src/bootstrap/types.ts +30 -1
  782. package/js/src/bootstrap/util/backdrop.ts +1 -1
  783. package/js/src/bootstrap/util/component-functions.ts +74 -5
  784. package/js/src/bootstrap/util/focustrap.ts +2 -2
  785. package/js/src/bootstrap/util/index.ts +46 -2
  786. package/js/src/bootstrap/util/swipe.ts +3 -3
  787. package/js/src/bootstrap/util/template-factory.ts +2 -2
  788. package/js/src/clipboard.ts +197 -0
  789. package/js/src/confetti.ts +439 -0
  790. package/js/src/countup.ts +335 -29
  791. package/js/src/datepicker.ts +671 -0
  792. package/js/src/deprecated.ts +28 -0
  793. package/js/src/dropdown.ts +1 -1
  794. package/js/src/global.d.ts +12 -13
  795. package/js/src/input-mask.ts +128 -8
  796. package/js/src/otp-input.ts +432 -0
  797. package/js/src/sortable.ts +116 -15
  798. package/js/src/sparkline.ts +609 -0
  799. package/js/src/strength.ts +277 -0
  800. package/js/src/switch-icon.ts +165 -9
  801. package/js/src/theme-config.ts +3 -1
  802. package/js/tabler-theme.ts +2 -4
  803. package/js/tabler.ts +21 -2
  804. package/libs.json +45 -109
  805. package/package.json +40 -29
  806. package/scss/_config.scss +1 -0
  807. package/scss/_core.scss +6 -0
  808. package/scss/_deprecated-props.scss +40 -0
  809. package/scss/_deprecated.scss +153 -0
  810. package/scss/_extends.scss +6 -1
  811. package/scss/_maps.scss +10 -11
  812. package/scss/_mixins.scss +1 -0
  813. package/scss/_props.scss +40 -6
  814. package/scss/_settings.scss +3 -1
  815. package/scss/_utilities-marketing.scss +1 -2
  816. package/scss/_utilities.scss +62 -24
  817. package/scss/_variables-dark.scss +31 -42
  818. package/scss/_variables-deprecated.scss +60 -0
  819. package/scss/_variables.scss +252 -189
  820. package/scss/bootstrap/_buttons.scss +6 -33
  821. package/scss/bootstrap/_carousel.scss +6 -7
  822. package/scss/bootstrap/_list-group.scss +28 -14
  823. package/scss/bootstrap/_nav.scss +2 -2
  824. package/scss/bootstrap/_navbar.scss +6 -7
  825. package/scss/bootstrap/_offcanvas.scss +2 -0
  826. package/scss/bootstrap/_pagination.scss +7 -3
  827. package/scss/bootstrap/_reboot.scss +3 -3
  828. package/scss/bootstrap/_root.scss +10 -33
  829. package/scss/bootstrap/_tables.scss +7 -2
  830. package/scss/bootstrap/forms/_floating-labels.scss +1 -1
  831. package/scss/bootstrap/forms/_form-check.scss +54 -42
  832. package/scss/bootstrap/forms/_form-control.scss +4 -8
  833. package/scss/bootstrap/forms/_form-range.scss +4 -2
  834. package/scss/bootstrap/forms/_form-select.scss +4 -7
  835. package/scss/helpers/_index.scss +11 -4
  836. package/scss/layout/_accessibility.scss +2 -1
  837. package/scss/layout/_core.scss +0 -8
  838. package/scss/layout/_navbar.scss +129 -44
  839. package/scss/layout/_page.scss +15 -2
  840. package/scss/layout/_root.scss +4 -3
  841. package/scss/marketing/_hero.scss +0 -11
  842. package/scss/mixins/_deprecated.scss +110 -0
  843. package/scss/mixins/_functions.scss +67 -113
  844. package/scss/mixins/_mixins.scss +41 -8
  845. package/scss/mixins/bootstrap/_caret.scss +7 -6
  846. package/scss/mixins/bootstrap/_color-mode.scss +6 -0
  847. package/scss/mixins/bootstrap/_forms.scss +10 -11
  848. package/scss/mixins/bootstrap/_gradients.scss +1 -1
  849. package/scss/mixins/bootstrap/_table-variants.scss +4 -5
  850. package/scss/tabler-props.scss +5 -0
  851. package/scss/tabler-themes.scss +67 -66
  852. package/scss/tabler-vendors.scss +3 -1
  853. package/scss/tabler.scss +2 -0
  854. package/scss/ui/_accordion.scss +24 -31
  855. package/scss/ui/_alerts.scss +29 -8
  856. package/scss/ui/_avatars.scss +3 -1
  857. package/scss/ui/_badges.scss +2 -0
  858. package/scss/ui/_breadcrumbs.scss +2 -0
  859. package/scss/ui/_buttons.scss +83 -58
  860. package/scss/ui/_calendars.scss +4 -5
  861. package/scss/ui/_cards.scss +38 -33
  862. package/scss/ui/_carousel.scss +1 -1
  863. package/scss/ui/_chat.scss +2 -0
  864. package/scss/ui/_close.scss +5 -2
  865. package/scss/ui/_datagrid.scss +2 -0
  866. package/scss/ui/_datepicker.scss +425 -0
  867. package/scss/ui/_dropdowns.scss +5 -1
  868. package/scss/ui/_empty.scss +2 -0
  869. package/scss/ui/_forms.scss +33 -47
  870. package/scss/ui/_icons.scss +2 -0
  871. package/scss/ui/_legend.scss +145 -2
  872. package/scss/ui/_lists.scss +3 -3
  873. package/scss/ui/_markdown.scss +1 -0
  874. package/scss/ui/_modals.scss +20 -1
  875. package/scss/ui/_nav.scss +3 -3
  876. package/scss/ui/_offcanvas.scss +47 -0
  877. package/scss/ui/_patterns.scss +39 -18
  878. package/scss/ui/_progress.scss +5 -2
  879. package/scss/ui/_ribbons.scss +6 -2
  880. package/scss/ui/_segmented.scss +1 -1
  881. package/scss/ui/_signal.scss +57 -0
  882. package/scss/ui/_sortable.scss +73 -0
  883. package/scss/ui/_sparkline.scss +73 -0
  884. package/scss/ui/_stars.scss +2 -0
  885. package/scss/ui/_status.scss +2 -2
  886. package/scss/ui/_steps.scss +2 -0
  887. package/scss/ui/_switch-icon.scss +67 -11
  888. package/scss/ui/_tables.scss +3 -3
  889. package/scss/ui/_tags.scss +2 -0
  890. package/scss/ui/_timeline.scss +2 -0
  891. package/scss/ui/_tracking.scss +2 -0
  892. package/scss/ui/_type.scss +12 -4
  893. package/scss/ui/forms/_form-check.scss +10 -2
  894. package/scss/ui/forms/_form-colorinput.scss +4 -3
  895. package/scss/ui/forms/_form-custom.scss +0 -13
  896. package/scss/ui/forms/_form-imagecheck.scss +4 -3
  897. package/scss/ui/forms/_form-otp.scss +171 -0
  898. package/scss/ui/forms/_form-selectgroup.scss +7 -7
  899. package/scss/ui/forms/_strength.scss +63 -0
  900. package/scss/ui/forms/_validation.scss +5 -0
  901. package/scss/utils/_background.scss +2 -2
  902. package/scss/utils/_colors.scss +17 -14
  903. package/scss/vendor/_apexcharts.scss +10 -1
  904. package/scss/vendor/_coloris.scss +10 -3
  905. package/scss/vendor/_fslightbox.scss +2 -2
  906. package/scss/vendor/_jsvectormap.scss +1 -1
  907. package/scss/vendor/_nouislider.scss +2 -1
  908. package/scss/vendor/_tom-select.scss +84 -7
  909. package/dist/types/src/tabler.d.ts +0 -3
  910. package/js/src/tabler.ts +0 -17
  911. package/js/tests/helpers/fixture.ts +0 -33
  912. package/js/tests/unit/alert.spec.ts +0 -176
  913. package/js/tests/unit/base-component.spec.ts +0 -166
  914. package/js/tests/unit/button.spec.ts +0 -167
  915. package/js/tests/unit/carousel.spec.ts +0 -546
  916. package/js/tests/unit/collapse.spec.ts +0 -791
  917. package/js/tests/unit/dom/data.spec.ts +0 -180
  918. package/js/tests/unit/dom/event-handler.spec.ts +0 -460
  919. package/js/tests/unit/dom/manipulator.spec.ts +0 -201
  920. package/js/tests/unit/dom/selector-engine.spec.ts +0 -300
  921. package/js/tests/unit/dropdown.spec.ts +0 -1095
  922. package/js/tests/unit/modal.spec.ts +0 -629
  923. package/js/tests/unit/offcanvas.spec.ts +0 -434
  924. package/js/tests/unit/popover.spec.ts +0 -253
  925. package/js/tests/unit/scrollspy.spec.ts +0 -634
  926. package/js/tests/unit/sidebar.spec.ts +0 -118
  927. package/js/tests/unit/tab.spec.ts +0 -775
  928. package/js/tests/unit/tabler-theme.spec.ts +0 -100
  929. package/js/tests/unit/toast.spec.ts +0 -514
  930. package/js/tests/unit/tooltip.spec.ts +0 -679
  931. package/js/tests/unit/util/backdrop.spec.ts +0 -213
  932. package/js/tests/unit/util/component-functions.spec.ts +0 -88
  933. package/js/tests/unit/util/config.spec.ts +0 -150
  934. package/js/tests/unit/util/focustrap.spec.ts +0 -232
  935. package/js/tests/unit/util/index.spec.ts +0 -478
  936. package/js/tests/unit/util/sanitizer.spec.ts +0 -118
  937. package/js/tests/unit/util/scrollbar.spec.ts +0 -202
  938. package/js/tests/unit/util/swipe.spec.ts +0 -319
  939. package/js/tests/unit/util/template-factory.spec.ts +0 -233
  940. package/scss/tests/_add-subtract.test.scss +0 -48
  941. package/scss/tests/_border-radius.test.scss +0 -23
  942. package/scss/tests/_box-shadow.test.scss +0 -71
  943. package/scss/tests/_breakpoints.test.scss +0 -50
  944. package/scss/tests/_cards.test.scss +0 -31
  945. package/scss/tests/_caret.test.scss +0 -115
  946. package/scss/tests/_color-contrast.test.scss +0 -24
  947. package/scss/tests/_color-mode.test.scss +0 -28
  948. package/scss/tests/_color.test.scss +0 -44
  949. package/scss/tests/_colors-misc.test.scss +0 -80
  950. package/scss/tests/_css-var.test.scss +0 -37
  951. package/scss/tests/_divide.test.scss +0 -45
  952. package/scss/tests/_escape-svg.test.scss +0 -18
  953. package/scss/tests/_generate-utility.test.scss +0 -245
  954. package/scss/tests/_grid.test.scss +0 -153
  955. package/scss/tests/_maps.test.scss +0 -76
  956. package/scss/tests/_media-breakpoint.test.scss +0 -202
  957. package/scss/tests/_mixins-bootstrap.test.scss +0 -55
  958. package/scss/tests/_mixins.test.scss +0 -208
  959. package/scss/tests/_rfs.test.scss +0 -30
  960. package/scss/tests/_str-replace.test.scss +0 -34
  961. package/scss/tests/_transition.test.scss +0 -43
@@ -1,775 +0,0 @@
1
- import { describe, it, expect, beforeAll, afterEach, vi } from 'vitest'
2
- import Tab from '../../src/bootstrap/tab'
3
- import { clearFixture, createEvent, getFixture } from '../helpers/fixture'
4
-
5
- describe('Tab', () => {
6
- let fixtureEl: HTMLElement
7
-
8
- beforeAll(() => {
9
- fixtureEl = getFixture()
10
- })
11
-
12
- afterEach(() => {
13
- clearFixture()
14
- vi.restoreAllMocks()
15
- })
16
-
17
- describe('VERSION', () => {
18
- it('should return plugin version', () => {
19
- expect(typeof Tab.VERSION).toBe('string')
20
- })
21
- })
22
-
23
- describe('constructor', () => {
24
- it('should accept element as CSS selector or DOM element', () => {
25
- fixtureEl.innerHTML = ['<ul class="nav">', ' <li><a href="#home" role="tab">Home</a></li>', '</ul>', '<ul>', ' <li id="home"></li>', '</ul>'].join('')
26
-
27
- const tabEl = fixtureEl.querySelector('[href="#home"]')!
28
- const tabBySelector = new Tab('[href="#home"]')
29
- const tabByElement = new Tab(tabEl)
30
-
31
- expect(tabBySelector._element).toBe(tabEl)
32
- expect(tabByElement._element).toBe(tabEl)
33
- })
34
-
35
- it('should not throw if no parent', () => {
36
- fixtureEl.innerHTML = '<div class=""><div class="nav-link"></div></div>'
37
- const navEl = fixtureEl.querySelector('.nav-link')!
38
-
39
- expect(() => {
40
- new Tab(navEl)
41
- }).not.toThrow()
42
- })
43
- })
44
-
45
- describe('show', () => {
46
- it('should activate element by tab id using buttons', () => {
47
- return new Promise<void>((resolve) => {
48
- fixtureEl.innerHTML = [
49
- '<ul class="nav" role="tablist">',
50
- ' <li><button type="button" data-bs-target="#home" role="tab">Home</button></li>',
51
- ' <li><button type="button" id="triggerProfile" data-bs-target="#profile" role="tab">Profile</button></li>',
52
- '</ul>',
53
- '<ul>',
54
- ' <li id="home" role="tabpanel"></li>',
55
- ' <li id="profile" role="tabpanel"></li>',
56
- '</ul>',
57
- ].join('')
58
-
59
- const profileTriggerEl = fixtureEl.querySelector('#triggerProfile')!
60
- const tab = new Tab(profileTriggerEl)
61
-
62
- profileTriggerEl.addEventListener('shown.bs.tab', () => {
63
- expect(fixtureEl.querySelector('#profile')!.classList.contains('active')).toBe(true)
64
- expect(profileTriggerEl.getAttribute('aria-selected')).toBe('true')
65
- resolve()
66
- })
67
-
68
- tab.show()
69
- })
70
- })
71
-
72
- it('should activate element by tab id using links', () => {
73
- return new Promise<void>((resolve) => {
74
- fixtureEl.innerHTML = ['<ul class="nav" role="tablist">', ' <li><a href="#home" role="tab">Home</a></li>', ' <li><a id="triggerProfile" href="#profile" role="tab">Profile</a></li>', '</ul>', '<ul>', ' <li id="home" role="tabpanel"></li>', ' <li id="profile" role="tabpanel"></li>', '</ul>'].join('')
75
-
76
- const profileTriggerEl = fixtureEl.querySelector('#triggerProfile')!
77
- const tab = new Tab(profileTriggerEl)
78
-
79
- profileTriggerEl.addEventListener('shown.bs.tab', () => {
80
- expect(fixtureEl.querySelector('#profile')!.classList.contains('active')).toBe(true)
81
- expect(profileTriggerEl.getAttribute('aria-selected')).toBe('true')
82
- resolve()
83
- })
84
-
85
- tab.show()
86
- })
87
- })
88
-
89
- it('should activate element in list group', () => {
90
- return new Promise<void>((resolve) => {
91
- fixtureEl.innerHTML = [
92
- '<div class="list-group" role="tablist">',
93
- ' <button type="button" data-bs-target="#home" role="tab">Home</button>',
94
- ' <button type="button" id="triggerProfile" data-bs-target="#profile" role="tab">Profile</button>',
95
- '</div>',
96
- '<div>',
97
- ' <div id="home" role="tabpanel"></div>',
98
- ' <div id="profile" role="tabpanel"></div>',
99
- '</div>',
100
- ].join('')
101
-
102
- const profileTriggerEl = fixtureEl.querySelector('#triggerProfile')!
103
- const tab = new Tab(profileTriggerEl)
104
-
105
- profileTriggerEl.addEventListener('shown.bs.tab', () => {
106
- expect(fixtureEl.querySelector('#profile')!.classList.contains('active')).toBe(true)
107
- resolve()
108
- })
109
-
110
- tab.show()
111
- })
112
- })
113
-
114
- it('should not fire shown when show is prevented', () => {
115
- return new Promise<void>((resolve, reject) => {
116
- fixtureEl.innerHTML = '<div class="nav"><div class="nav-link"></div></div>'
117
-
118
- const navEl = fixtureEl.querySelector('.nav > div')!
119
- const tab = new Tab(navEl)
120
-
121
- navEl.addEventListener('show.bs.tab', (ev) => {
122
- ev.preventDefault()
123
- setTimeout(resolve, 30)
124
- })
125
-
126
- navEl.addEventListener('shown.bs.tab', () => {
127
- reject(new Error('should not trigger shown'))
128
- })
129
-
130
- tab.show()
131
- })
132
- })
133
-
134
- it('should not fire shown when already active', () => {
135
- return new Promise<void>((resolve, reject) => {
136
- fixtureEl.innerHTML = [
137
- '<ul class="nav nav-tabs" role="tablist">',
138
- ' <li class="nav-item" role="presentation"><button type="button" data-bs-target="#home" class="nav-link active" role="tab" aria-selected="true">Home</button></li>',
139
- ' <li class="nav-item" role="presentation"><button type="button" data-bs-target="#profile" class="nav-link" role="tab">Profile</button></li>',
140
- '</ul>',
141
- '<div class="tab-content">',
142
- ' <div class="tab-pane active" id="home" role="tabpanel"></div>',
143
- ' <div class="tab-pane" id="profile" role="tabpanel"></div>',
144
- '</div>',
145
- ].join('')
146
-
147
- const triggerActive = fixtureEl.querySelector('button.active')!
148
- const tab = new Tab(triggerActive)
149
-
150
- triggerActive.addEventListener('shown.bs.tab', () => {
151
- reject(new Error('should not trigger shown'))
152
- })
153
-
154
- tab.show()
155
- setTimeout(resolve, 30)
156
- })
157
- })
158
-
159
- it('show and shown events should reference correct relatedTarget', () => {
160
- return new Promise<void>((resolve) => {
161
- fixtureEl.innerHTML = [
162
- '<ul class="nav nav-tabs" role="tablist">',
163
- ' <li class="nav-item" role="presentation"><button type="button" data-bs-target="#home" class="nav-link active" role="tab" aria-selected="true">Home</button></li>',
164
- ' <li class="nav-item" role="presentation"><button type="button" id="triggerProfile" data-bs-target="#profile" class="nav-link" role="tab">Profile</button></li>',
165
- '</ul>',
166
- '<div class="tab-content">',
167
- ' <div class="tab-pane active" id="home" role="tabpanel"></div>',
168
- ' <div class="tab-pane" id="profile" role="tabpanel"></div>',
169
- '</div>',
170
- ].join('')
171
-
172
- const secondTabTrigger = fixtureEl.querySelector('#triggerProfile')!
173
- const secondTab = new Tab(secondTabTrigger)
174
-
175
- secondTabTrigger.addEventListener('show.bs.tab', ((ev: CustomEvent) => {
176
- expect(ev.relatedTarget!.getAttribute('data-bs-target')).toBe('#home')
177
- }) as EventListener)
178
-
179
- secondTabTrigger.addEventListener('shown.bs.tab', ((ev: CustomEvent) => {
180
- expect(ev.relatedTarget!.getAttribute('data-bs-target')).toBe('#home')
181
- expect(secondTabTrigger.getAttribute('aria-selected')).toBe('true')
182
- resolve()
183
- }) as EventListener)
184
-
185
- secondTab.show()
186
- })
187
- })
188
-
189
- it('should fire hide and hidden events', () => {
190
- return new Promise<void>((resolve) => {
191
- fixtureEl.innerHTML = ['<ul class="nav" role="tablist">', ' <li><button type="button" data-bs-target="#home" role="tab">Home</button></li>', ' <li><button type="button" data-bs-target="#profile" role="tab">Profile</button></li>', '</ul>'].join('')
192
-
193
- const triggerList = fixtureEl.querySelectorAll('button')
194
- const firstTab = new Tab(triggerList[0])
195
- const secondTab = new Tab(triggerList[1])
196
-
197
- let hideCalled = false
198
- triggerList[0].addEventListener('shown.bs.tab', () => {
199
- secondTab.show()
200
- })
201
-
202
- triggerList[0].addEventListener('hide.bs.tab', ((ev: CustomEvent) => {
203
- hideCalled = true
204
- expect(ev.relatedTarget!.getAttribute('data-bs-target')).toBe('#profile')
205
- }) as EventListener)
206
-
207
- triggerList[0].addEventListener('hidden.bs.tab', ((ev: CustomEvent) => {
208
- expect(hideCalled).toBe(true)
209
- expect(ev.relatedTarget!.getAttribute('data-bs-target')).toBe('#profile')
210
- resolve()
211
- }) as EventListener)
212
-
213
- firstTab.show()
214
- })
215
- })
216
-
217
- it('should not fire hidden when hide is prevented', () => {
218
- return new Promise<void>((resolve, reject) => {
219
- fixtureEl.innerHTML = ['<ul class="nav" role="tablist">', ' <li><button type="button" data-bs-target="#home" role="tab">Home</button></li>', ' <li><button type="button" data-bs-target="#profile" role="tab">Profile</button></li>', '</ul>'].join('')
220
-
221
- const triggerList = fixtureEl.querySelectorAll('button')
222
- const firstTab = new Tab(triggerList[0])
223
- const secondTab = new Tab(triggerList[1])
224
-
225
- triggerList[0].addEventListener('shown.bs.tab', () => {
226
- secondTab.show()
227
- })
228
-
229
- triggerList[0].addEventListener('hide.bs.tab', (ev) => {
230
- ev.preventDefault()
231
- setTimeout(resolve, 30)
232
- })
233
-
234
- triggerList[0].addEventListener('hidden.bs.tab', () => {
235
- reject(new Error('should not trigger hidden'))
236
- })
237
-
238
- firstTab.show()
239
- })
240
- })
241
- })
242
-
243
- describe('dispose', () => {
244
- it('should dispose a tab', () => {
245
- fixtureEl.innerHTML = '<div class="nav"><div class="nav-link"></div></div>'
246
-
247
- const el = fixtureEl.querySelector('.nav > div')!
248
- const tab = new Tab(el)
249
-
250
- expect(Tab.getInstance(el)).not.toBeNull()
251
-
252
- tab.dispose()
253
-
254
- expect(Tab.getInstance(el)).toBeNull()
255
- })
256
- })
257
-
258
- describe('_activate', () => {
259
- it('should not be called if element is null', () => {
260
- fixtureEl.innerHTML = ['<ul class="nav" role="tablist">', ' <li class="nav-link"></li>', '</ul>'].join('')
261
-
262
- const tabEl = fixtureEl.querySelector('.nav-link')!
263
- const tab = new Tab(tabEl)
264
- const spy = vi.spyOn(tab, '_queueCallback')
265
-
266
- tab._activate(null)
267
- expect(spy).not.toHaveBeenCalled()
268
- })
269
- })
270
-
271
- describe('_setInitialAttributes', () => {
272
- it('should set aria attributes', () => {
273
- fixtureEl.innerHTML = ['<ul class="nav">', ' <li class="nav-link" id="foo" data-bs-target="#panel"></li>', ' <li class="nav-link" data-bs-target="#panel2"></li>', '</ul>', '<div id="panel"></div>', '<div id="panel2"></div>'].join('')
274
-
275
- const tabEl = fixtureEl.querySelector('.nav-link')!
276
- const parent = fixtureEl.querySelector('.nav') as HTMLElement
277
- const children = Array.from(fixtureEl.querySelectorAll('.nav-link')) as HTMLElement[]
278
- const tabPanel = fixtureEl.querySelector('#panel')!
279
- const tabPanel2 = fixtureEl.querySelector('#panel2')!
280
-
281
- expect(parent.getAttribute('role')).toBeNull()
282
-
283
- const tab = new Tab(tabEl)
284
- tab._setInitialAttributes(parent, children)
285
-
286
- expect(parent.getAttribute('role')).toBe('tablist')
287
- expect(tabEl.getAttribute('role')).toBe('tab')
288
- expect(tabPanel.getAttribute('role')).toBe('tabpanel')
289
- expect(tabPanel2.getAttribute('role')).toBe('tabpanel')
290
- expect(tabPanel.getAttribute('aria-labelledby')).toBe('foo')
291
- expect(tabPanel2.hasAttribute('aria-labelledby')).toBe(false)
292
- })
293
- })
294
-
295
- describe('_keydown', () => {
296
- it('should ignore non-arrow keys', () => {
297
- fixtureEl.innerHTML = ['<ul class="nav">', ' <li class="nav-link" data-bs-toggle="tab"></li>', '</ul>'].join('')
298
-
299
- const tabEl = fixtureEl.querySelector('.nav-link')!
300
- const tab = new Tab(tabEl)
301
-
302
- const spyStop = vi.spyOn(Event.prototype, 'stopPropagation')
303
- const spyPrevent = vi.spyOn(Event.prototype, 'preventDefault')
304
-
305
- const keydown = createEvent('keydown') as any
306
- keydown.key = 'Enter'
307
- tabEl.dispatchEvent(keydown)
308
-
309
- expect(spyStop).not.toHaveBeenCalled()
310
- expect(spyPrevent).not.toHaveBeenCalled()
311
- })
312
-
313
- it('should handle right/down arrow', () => {
314
- fixtureEl.innerHTML = ['<div class="nav">', ' <span id="tab1" class="nav-link" data-bs-toggle="tab"></span>', ' <span id="tab2" class="nav-link" data-bs-toggle="tab"></span>', ' <span id="tab3" class="nav-link" data-bs-toggle="tab"></span>', '</div>'].join('')
315
-
316
- const tabEl1 = fixtureEl.querySelector('#tab1')!
317
- const tabEl2 = fixtureEl.querySelector('#tab2')!
318
- const tabEl3 = fixtureEl.querySelector('#tab3')!
319
- new Tab(tabEl1)
320
- new Tab(tabEl2)
321
- new Tab(tabEl3)
322
-
323
- const spyFocus2 = vi.spyOn(tabEl2, 'focus')
324
- const spyFocus3 = vi.spyOn(tabEl3, 'focus')
325
-
326
- const keydown = new KeyboardEvent('keydown', { key: 'ArrowRight', bubbles: true })
327
- tabEl1.dispatchEvent(keydown)
328
-
329
- expect(spyFocus2).toHaveBeenCalled()
330
- })
331
-
332
- it('should handle left/up arrow', () => {
333
- fixtureEl.innerHTML = ['<div class="nav">', ' <span id="tab1" class="nav-link" data-bs-toggle="tab"></span>', ' <span id="tab2" class="nav-link" data-bs-toggle="tab"></span>', '</div>'].join('')
334
-
335
- const tabEl1 = fixtureEl.querySelector('#tab1')!
336
- const tabEl2 = fixtureEl.querySelector('#tab2')!
337
- new Tab(tabEl1)
338
- new Tab(tabEl2)
339
-
340
- const spyFocus1 = vi.spyOn(tabEl1, 'focus')
341
-
342
- const keydown = new KeyboardEvent('keydown', { key: 'ArrowLeft', bubbles: true })
343
- tabEl2.dispatchEvent(keydown)
344
-
345
- expect(spyFocus1).toHaveBeenCalled()
346
- })
347
-
348
- it('should handle Home key', () => {
349
- fixtureEl.innerHTML = ['<div class="nav">', ' <span id="tab1" class="nav-link" data-bs-toggle="tab"></span>', ' <span id="tab2" class="nav-link" data-bs-toggle="tab"></span>', ' <span id="tab3" class="nav-link" data-bs-toggle="tab"></span>', '</div>'].join('')
350
-
351
- const tabEl1 = fixtureEl.querySelector('#tab1')!
352
- const tabEl3 = fixtureEl.querySelector('#tab3')!
353
- new Tab(tabEl1)
354
- new Tab(tabEl3)
355
-
356
- const spyFocus1 = vi.spyOn(tabEl1, 'focus')
357
-
358
- const keydown = new KeyboardEvent('keydown', { key: 'Home', bubbles: true })
359
- tabEl3.dispatchEvent(keydown)
360
-
361
- expect(spyFocus1).toHaveBeenCalled()
362
- })
363
-
364
- it('should handle End key', () => {
365
- fixtureEl.innerHTML = ['<div class="nav">', ' <span id="tab1" class="nav-link" data-bs-toggle="tab"></span>', ' <span id="tab2" class="nav-link" data-bs-toggle="tab"></span>', ' <span id="tab3" class="nav-link" data-bs-toggle="tab"></span>', '</div>'].join('')
366
-
367
- const tabEl1 = fixtureEl.querySelector('#tab1')!
368
- const tabEl3 = fixtureEl.querySelector('#tab3')!
369
- new Tab(tabEl1)
370
- new Tab(tabEl3)
371
-
372
- const spyFocus3 = vi.spyOn(tabEl3, 'focus')
373
-
374
- const keydown = new KeyboardEvent('keydown', { key: 'End', bubbles: true })
375
- tabEl1.dispatchEvent(keydown)
376
-
377
- expect(spyFocus3).toHaveBeenCalled()
378
- })
379
-
380
- it('should skip disabled elements', () => {
381
- fixtureEl.innerHTML = [
382
- '<div class="nav">',
383
- ' <span id="tab1" class="nav-link" data-bs-toggle="tab"></span>',
384
- ' <span id="tab2" class="nav-link" data-bs-toggle="tab" disabled></span>',
385
- ' <span id="tab3" class="nav-link disabled" data-bs-toggle="tab"></span>',
386
- ' <span id="tab4" class="nav-link" data-bs-toggle="tab"></span>',
387
- '</div>',
388
- ].join('')
389
-
390
- const tabEl1 = fixtureEl.querySelector('#tab1')!
391
- const tabEl4 = fixtureEl.querySelector('#tab4')!
392
- new Tab(tabEl1)
393
- new Tab(tabEl4)
394
-
395
- const spyFocus4 = vi.spyOn(tabEl4, 'focus')
396
-
397
- const keydown = new KeyboardEvent('keydown', { key: 'ArrowRight', bubbles: true })
398
- tabEl1.dispatchEvent(keydown)
399
-
400
- expect(spyFocus4).toHaveBeenCalled()
401
- })
402
- })
403
-
404
- describe('getInstance', () => {
405
- it('should return null if no instance', () => {
406
- expect(Tab.getInstance(fixtureEl)).toBeNull()
407
- })
408
-
409
- it('should return this instance', () => {
410
- fixtureEl.innerHTML = '<div class="nav"><div class="nav-link"></div></div>'
411
-
412
- const divEl = fixtureEl.querySelector('.nav > div')!
413
- const tab = new Tab(divEl)
414
-
415
- expect(Tab.getInstance(divEl)).toBe(tab)
416
- expect(Tab.getInstance(divEl)).toBeInstanceOf(Tab)
417
- })
418
- })
419
-
420
- describe('getOrCreateInstance', () => {
421
- it('should return tab instance', () => {
422
- fixtureEl.innerHTML = '<div class="nav"><div class="nav-link"></div></div>'
423
-
424
- const div = fixtureEl.querySelector('div')!
425
- const tab = new Tab(div)
426
-
427
- expect(Tab.getOrCreateInstance(div)).toBe(tab)
428
- expect(Tab.getOrCreateInstance(div)).toBeInstanceOf(Tab)
429
- })
430
-
431
- it('should return new instance when there is no tab instance', () => {
432
- fixtureEl.innerHTML = '<div class="nav"><div class="nav-link"></div></div>'
433
-
434
- const div = fixtureEl.querySelector('div')!
435
-
436
- expect(Tab.getInstance(div)).toBeNull()
437
- expect(Tab.getOrCreateInstance(div)).toBeInstanceOf(Tab)
438
- })
439
- })
440
-
441
- describe('data-api', () => {
442
- it('should create dynamically a tab', () => {
443
- return new Promise<void>((resolve) => {
444
- fixtureEl.innerHTML = [
445
- '<ul class="nav nav-tabs" role="tablist">',
446
- ' <li class="nav-item" role="presentation"><button type="button" data-bs-target="#home" class="nav-link active" role="tab" aria-selected="true">Home</button></li>',
447
- ' <li class="nav-item" role="presentation"><button type="button" id="triggerProfile" data-bs-toggle="tab" data-bs-target="#profile" class="nav-link" role="tab">Profile</button></li>',
448
- '</ul>',
449
- '<div class="tab-content">',
450
- ' <div class="tab-pane active" id="home" role="tabpanel"></div>',
451
- ' <div class="tab-pane" id="profile" role="tabpanel"></div>',
452
- '</div>',
453
- ].join('')
454
-
455
- const secondTabTrigger = fixtureEl.querySelector('#triggerProfile')!
456
-
457
- secondTabTrigger.addEventListener('shown.bs.tab', () => {
458
- expect(secondTabTrigger.classList.contains('active')).toBe(true)
459
- expect(fixtureEl.querySelector('#profile')!.classList.contains('active')).toBe(true)
460
- resolve()
461
- })
462
-
463
- ;(secondTabTrigger as HTMLElement).click()
464
- })
465
- })
466
-
467
- it('should prevent default when trigger is <a>', () => {
468
- return new Promise<void>((resolve) => {
469
- fixtureEl.innerHTML = ['<ul class="nav" role="tablist">', ' <li><a type="button" href="#test" class="active" role="tab" data-bs-toggle="tab">Home</a></li>', ' <li><a type="button" href="#test2" role="tab" data-bs-toggle="tab">Profile</a></li>', '</ul>'].join('')
470
-
471
- const tabEl = fixtureEl.querySelector('[href="#test2"]') as HTMLElement
472
- const spy = vi.spyOn(Event.prototype, 'preventDefault')
473
-
474
- tabEl.addEventListener('shown.bs.tab', () => {
475
- expect(tabEl.classList.contains('active')).toBe(true)
476
- expect(spy).toHaveBeenCalled()
477
- resolve()
478
- })
479
-
480
- tabEl.click()
481
- })
482
- })
483
-
484
- it('should not fire shown for disabled button', () => {
485
- return new Promise<void>((resolve, reject) => {
486
- fixtureEl.innerHTML = [
487
- '<ul class="nav nav-tabs" role="tablist">',
488
- ' <li class="nav-item" role="presentation"><button type="button" data-bs-target="#home" class="nav-link active" role="tab">Home</button></li>',
489
- ' <li class="nav-item" role="presentation"><button type="button" data-bs-target="#profile" class="nav-link" disabled role="tab" data-bs-toggle="tab">Profile</button></li>',
490
- '</ul>',
491
- ].join('')
492
-
493
- const triggerDisabled = fixtureEl.querySelector('button[disabled]')!
494
- triggerDisabled.addEventListener('shown.bs.tab', () => {
495
- reject(new Error('should not fire shown'))
496
- })
497
-
498
- ;(triggerDisabled as HTMLElement).click()
499
- setTimeout(resolve, 30)
500
- })
501
- })
502
-
503
- it('should not fire shown for disabled link', () => {
504
- return new Promise<void>((resolve, reject) => {
505
- fixtureEl.innerHTML = [
506
- '<ul class="nav nav-tabs" role="tablist">',
507
- ' <li class="nav-item" role="presentation"><a href="#home" class="nav-link active" role="tab" data-bs-toggle="tab">Home</a></li>',
508
- ' <li class="nav-item" role="presentation"><a href="#profile" class="nav-link disabled" role="tab" data-bs-toggle="tab">Profile</a></li>',
509
- '</ul>',
510
- ].join('')
511
-
512
- const triggerDisabled = fixtureEl.querySelector('a.disabled')!
513
- triggerDisabled.addEventListener('shown.bs.tab', () => {
514
- reject(new Error('should not fire shown'))
515
- })
516
-
517
- ;(triggerDisabled as HTMLElement).click()
518
- setTimeout(resolve, 30)
519
- })
520
- })
521
-
522
- it('should handle nested tabs', () => {
523
- return new Promise<void>((resolve) => {
524
- fixtureEl.innerHTML = [
525
- '<nav class="nav nav-tabs" role="tablist">',
526
- ' <button type="button" id="tab1" data-bs-target="#x-tab1" class="nav-link" data-bs-toggle="tab" role="tab">Tab 1</button>',
527
- ' <button type="button" data-bs-target="#x-tab2" class="nav-link active" data-bs-toggle="tab" role="tab" aria-selected="true">Tab 2</button>',
528
- '</nav>',
529
- '<div class="tab-content">',
530
- ' <div class="tab-pane" id="x-tab1" role="tabpanel">',
531
- ' <nav class="nav nav-tabs" role="tablist">',
532
- ' <button type="button" data-bs-target="#nested-tab1" class="nav-link active" data-bs-toggle="tab" role="tab" aria-selected="true">Nested 1</button>',
533
- ' <button type="button" id="tabNested2" data-bs-target="#nested-tab2" class="nav-link" data-bs-toggle="tab" role="tab">Nested 2</button>',
534
- ' </nav>',
535
- ' <div class="tab-content">',
536
- ' <div class="tab-pane active" id="nested-tab1" role="tabpanel">Nested 1</div>',
537
- ' <div class="tab-pane" id="nested-tab2" role="tabpanel">Nested 2</div>',
538
- ' </div>',
539
- ' </div>',
540
- ' <div class="tab-pane active" id="x-tab2" role="tabpanel">Tab2</div>',
541
- '</div>',
542
- ].join('')
543
-
544
- const tab1El = fixtureEl.querySelector('#tab1') as HTMLElement
545
- const tabNested2El = fixtureEl.querySelector('#tabNested2') as HTMLElement
546
- const xTab1El = fixtureEl.querySelector('#x-tab1')!
547
-
548
- tabNested2El.addEventListener('shown.bs.tab', () => {
549
- expect(xTab1El.classList.contains('active')).toBe(true)
550
- resolve()
551
- })
552
-
553
- tab1El.addEventListener('shown.bs.tab', () => {
554
- expect(xTab1El.classList.contains('active')).toBe(true)
555
- tabNested2El.click()
556
- })
557
-
558
- tab1El.click()
559
- })
560
- })
561
-
562
- it('selected tab should deactivate previous selected link in dropdown', () => {
563
- fixtureEl.innerHTML = [
564
- '<ul class="nav nav-tabs">',
565
- ' <li class="nav-item"><a class="nav-link" href="#home" data-bs-toggle="tab">Home</a></li>',
566
- ' <li class="nav-item"><a class="nav-link" href="#profile" data-bs-toggle="tab">Profile</a></li>',
567
- ' <li class="nav-item dropdown">',
568
- ' <a class="nav-link dropdown-toggle active" data-bs-toggle="dropdown" href="#">Dropdown</a>',
569
- ' <div class="dropdown-menu">',
570
- ' <a class="dropdown-item active" href="#dropdown1" id="dropdown1-tab" data-bs-toggle="tab">@fat</a>',
571
- ' <a class="dropdown-item" href="#dropdown2" id="dropdown2-tab" data-bs-toggle="tab">@mdo</a>',
572
- ' </div>',
573
- ' </li>',
574
- '</ul>',
575
- ].join('')
576
-
577
- const firstLiLinkEl = fixtureEl.querySelector('li:first-child a') as HTMLElement
578
-
579
- firstLiLinkEl.click()
580
- expect(firstLiLinkEl.classList.contains('active')).toBe(true)
581
- expect(fixtureEl.querySelector('li:last-child a')!.classList.contains('active')).toBe(false)
582
- expect(fixtureEl.querySelector('li:last-child .dropdown-menu a:first-child')!.classList.contains('active')).toBe(false)
583
- })
584
-
585
- it('selecting dropdown tab does not activate another nav', () => {
586
- fixtureEl.innerHTML = [
587
- '<ul class="nav nav-tabs" id="nav1">',
588
- ' <li class="nav-item active"><a class="nav-link" href="#home" data-bs-toggle="tab">Home</a></li>',
589
- ' <li class="nav-item dropdown">',
590
- ' <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">Dropdown</a>',
591
- ' <div class="dropdown-menu">',
592
- ' <a class="dropdown-item" href="#dropdown1" id="dropdown1-tab" data-bs-toggle="tab">@fat</a>',
593
- ' </div>',
594
- ' </li>',
595
- '</ul>',
596
- '<ul class="nav nav-tabs" id="nav2">',
597
- ' <li class="nav-item active"><a class="nav-link" href="#home2" data-bs-toggle="tab">Home</a></li>',
598
- ' <li class="nav-item dropdown">',
599
- ' <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">Dropdown</a>',
600
- ' <div class="dropdown-menu">',
601
- ' <a class="dropdown-item" href="#dropdown2" id="dropdown2-tab" data-bs-toggle="tab">@fat</a>',
602
- ' </div>',
603
- ' </li>',
604
- '</ul>',
605
- ].join('')
606
-
607
- const firstDropItem = fixtureEl.querySelector('#nav1 .dropdown-item') as HTMLElement
608
-
609
- firstDropItem.click()
610
- expect(firstDropItem.classList.contains('active')).toBe(true)
611
- expect(fixtureEl.querySelector('#nav1 .dropdown-toggle')!.classList.contains('active')).toBe(true)
612
- expect(fixtureEl.querySelector('#nav2 .dropdown-toggle')!.classList.contains('active')).toBe(false)
613
- expect(fixtureEl.querySelector('#nav2 .dropdown-item')!.classList.contains('active')).toBe(false)
614
- })
615
-
616
- it('should support li > .dropdown-item', () => {
617
- fixtureEl.innerHTML = [
618
- '<ul class="nav nav-tabs">',
619
- ' <li class="nav-item"><a class="nav-link active" href="#home" data-bs-toggle="tab">Home</a></li>',
620
- ' <li class="nav-item dropdown">',
621
- ' <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">Dropdown</a>',
622
- ' <ul class="dropdown-menu">',
623
- ' <li><a class="dropdown-item" href="#dropdown1" data-bs-toggle="tab">@fat</a></li>',
624
- ' <li><a class="dropdown-item" href="#dropdown2" data-bs-toggle="tab">@mdo</a></li>',
625
- ' </ul>',
626
- ' </li>',
627
- '</ul>',
628
- ].join('')
629
-
630
- const dropItems = fixtureEl.querySelectorAll('.dropdown-item')
631
-
632
- ;(dropItems[1] as HTMLElement).click()
633
- expect(dropItems[0].classList.contains('active')).toBe(false)
634
- expect(dropItems[1].classList.contains('active')).toBe(true)
635
- expect(fixtureEl.querySelector('.nav-link')!.classList.contains('active')).toBe(false)
636
- })
637
-
638
- it('should add show class to pane without fade', () => {
639
- return new Promise<void>((resolve) => {
640
- fixtureEl.innerHTML = [
641
- '<ul class="nav nav-tabs" role="tablist">',
642
- ' <li class="nav-item" role="presentation">',
643
- ' <button type="button" class="nav-link" data-bs-target="#home" role="tab" data-bs-toggle="tab">Home</button>',
644
- ' </li>',
645
- ' <li class="nav-item" role="presentation">',
646
- ' <button type="button" id="secondNav" class="nav-link" data-bs-target="#profile" role="tab" data-bs-toggle="tab">Profile</button>',
647
- ' </li>',
648
- '</ul>',
649
- '<div class="tab-content">',
650
- ' <div role="tabpanel" class="tab-pane" id="home">test 1</div>',
651
- ' <div role="tabpanel" class="tab-pane" id="profile">test 2</div>',
652
- '</div>',
653
- ].join('')
654
-
655
- const secondNavEl = fixtureEl.querySelector('#secondNav') as HTMLElement
656
-
657
- secondNavEl.addEventListener('shown.bs.tab', () => {
658
- expect(fixtureEl.querySelectorAll('.tab-content .show')).toHaveLength(1)
659
- resolve()
660
- })
661
-
662
- secondNavEl.click()
663
- })
664
- })
665
- })
666
-
667
- describe('data-tblr-toggle', () => {
668
- it('should create tab via data-tblr-toggle="tab"', () => {
669
- return new Promise<void>((resolve) => {
670
- fixtureEl.innerHTML = [
671
- '<ul class="nav nav-tabs" role="tablist">',
672
- ' <li class="nav-item" role="presentation"><button type="button" data-bs-target="#home" class="nav-link active" role="tab" aria-selected="true">Home</button></li>',
673
- ' <li class="nav-item" role="presentation"><button type="button" id="triggerProfile" data-tblr-toggle="tab" data-bs-target="#profile" class="nav-link" role="tab">Profile</button></li>',
674
- '</ul>',
675
- '<div class="tab-content">',
676
- ' <div class="tab-pane active" id="home" role="tabpanel"></div>',
677
- ' <div class="tab-pane" id="profile" role="tabpanel"></div>',
678
- '</div>',
679
- ].join('')
680
-
681
- const trigger = fixtureEl.querySelector('#triggerProfile') as HTMLElement
682
-
683
- trigger.addEventListener('shown.bs.tab', () => {
684
- expect(trigger.classList.contains('active')).toBe(true)
685
- expect(fixtureEl.querySelector('#profile')!.classList.contains('active')).toBe(true)
686
- resolve()
687
- })
688
-
689
- trigger.click()
690
- })
691
- })
692
-
693
- it('should create tab via data-tblr-toggle="pill"', () => {
694
- return new Promise<void>((resolve) => {
695
- fixtureEl.innerHTML = [
696
- '<ul class="nav nav-pills" role="tablist">',
697
- ' <li class="nav-item" role="presentation"><button type="button" data-bs-target="#home" class="nav-link active" role="tab" aria-selected="true">Home</button></li>',
698
- ' <li class="nav-item" role="presentation"><button type="button" id="triggerProfile" data-tblr-toggle="pill" data-bs-target="#profile" class="nav-link" role="tab">Profile</button></li>',
699
- '</ul>',
700
- '<div class="tab-content">',
701
- ' <div class="tab-pane active" id="home" role="tabpanel"></div>',
702
- ' <div class="tab-pane" id="profile" role="tabpanel"></div>',
703
- '</div>',
704
- ].join('')
705
-
706
- const trigger = fixtureEl.querySelector('#triggerProfile') as HTMLElement
707
-
708
- trigger.addEventListener('shown.bs.tab', () => {
709
- expect(trigger.classList.contains('active')).toBe(true)
710
- resolve()
711
- })
712
-
713
- trigger.click()
714
- })
715
- })
716
-
717
- it('should initialize active tabs with data-tblr-toggle on load', () => {
718
- fixtureEl.innerHTML = ['<ul class="nav" role="tablist">', ' <li><button class="nav-link active" data-tblr-toggle="tab" data-bs-target="#home" role="tab">Home</button></li>', '</ul>', '<div id="home" role="tabpanel"></div>'].join('')
719
-
720
- const trigger = fixtureEl.querySelector('button') as HTMLElement
721
-
722
- window.dispatchEvent(new Event('load'))
723
-
724
- expect(trigger.classList.contains('active')).toBe(true)
725
- })
726
-
727
- it('should create tab via data-tblr-toggle="list"', () => {
728
- return new Promise<void>((resolve) => {
729
- fixtureEl.innerHTML = [
730
- '<div class="list-group" role="tablist">',
731
- ' <a class="list-group-item list-group-item-action active" data-tblr-toggle="list" href="#home" role="tab">Home</a>',
732
- ' <a id="triggerProfile" class="list-group-item list-group-item-action" data-tblr-toggle="list" href="#profile" role="tab">Profile</a>',
733
- '</div>',
734
- '<div class="tab-content">',
735
- ' <div class="tab-pane active" id="home" role="tabpanel">Home</div>',
736
- ' <div class="tab-pane" id="profile" role="tabpanel">Profile</div>',
737
- '</div>',
738
- ].join('')
739
-
740
- const trigger = fixtureEl.querySelector('#triggerProfile') as HTMLElement
741
-
742
- trigger.addEventListener('shown.bs.tab', () => {
743
- expect(trigger.classList.contains('active')).toBe(true)
744
- resolve()
745
- })
746
-
747
- trigger.click()
748
- })
749
- })
750
-
751
- it('should switch tabs via data-tblr-toggle with data-tblr-target', () => {
752
- return new Promise<void>((resolve) => {
753
- fixtureEl.innerHTML = [
754
- '<ul class="nav" role="tablist">',
755
- ' <li><button class="nav-link active" data-tblr-toggle="tab" data-tblr-target="#home" role="tab">Home</button></li>',
756
- ' <li><button id="triggerProfile" class="nav-link" data-tblr-toggle="tab" data-tblr-target="#profile" role="tab">Profile</button></li>',
757
- '</ul>',
758
- '<div class="tab-content">',
759
- ' <div class="tab-pane active" id="home" role="tabpanel">Home</div>',
760
- ' <div class="tab-pane" id="profile" role="tabpanel">Profile</div>',
761
- '</div>',
762
- ].join('')
763
-
764
- const trigger = fixtureEl.querySelector('#triggerProfile') as HTMLElement
765
-
766
- trigger.addEventListener('shown.bs.tab', () => {
767
- expect(trigger.classList.contains('active')).toBe(true)
768
- resolve()
769
- })
770
-
771
- trigger.click()
772
- })
773
- })
774
- })
775
- })