@tabler/core 1.5.1 → 1.6.1

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 (967) 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 +4370 -5113
  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 +4925 -5671
  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 +26 -9
  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 +26 -9
  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 +6683 -4069
  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 +6694 -4069
  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 +48 -0
  754. package/dist/types/src/confetti.d.ts +60 -0
  755. package/dist/types/src/countup.d.ts +66 -1
  756. package/dist/types/src/datepicker.d.ts +120 -0
  757. package/dist/types/src/deprecated.d.ts +11 -0
  758. package/dist/types/src/input-mask.d.ts +43 -1
  759. package/dist/types/src/otp-input.d.ts +75 -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 +53 -0
  763. package/dist/types/src/switch-icon.d.ts +32 -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 +141 -7
  767. package/js/src/bootstrap/alert.ts +20 -0
  768. package/js/src/bootstrap/base-component.ts +13 -3
  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/dom/manipulator.ts +1 -1
  774. package/js/src/bootstrap/dropdown.ts +64 -23
  775. package/js/src/bootstrap/modal.ts +39 -14
  776. package/js/src/bootstrap/offcanvas.ts +36 -11
  777. package/js/src/bootstrap/popover.ts +35 -9
  778. package/js/src/bootstrap/scrollspy.ts +38 -7
  779. package/js/src/bootstrap/tab.ts +20 -1
  780. package/js/src/bootstrap/toast.ts +31 -5
  781. package/js/src/bootstrap/tooltip.ts +109 -53
  782. package/js/src/bootstrap/types.ts +30 -1
  783. package/js/src/bootstrap/util/backdrop.ts +1 -1
  784. package/js/src/bootstrap/util/component-functions.ts +74 -5
  785. package/js/src/bootstrap/util/focustrap.ts +2 -2
  786. package/js/src/bootstrap/util/index.ts +59 -2
  787. package/js/src/bootstrap/util/swipe.ts +3 -3
  788. package/js/src/bootstrap/util/template-factory.ts +2 -2
  789. package/js/src/clipboard.ts +221 -0
  790. package/js/src/confetti.ts +474 -0
  791. package/js/src/countup.ts +353 -29
  792. package/js/src/datepicker.ts +791 -0
  793. package/js/src/deprecated.ts +28 -0
  794. package/js/src/dropdown.ts +12 -5
  795. package/js/src/global.d.ts +14 -13
  796. package/js/src/input-mask.ts +128 -8
  797. package/js/src/otp-input.ts +519 -0
  798. package/js/src/popover.ts +13 -7
  799. package/js/src/sidebar.ts +14 -6
  800. package/js/src/sortable.ts +120 -15
  801. package/js/src/sparkline.ts +618 -0
  802. package/js/src/strength.ts +290 -0
  803. package/js/src/switch-icon.ts +180 -9
  804. package/js/src/tab.ts +17 -7
  805. package/js/src/theme-config.ts +3 -1
  806. package/js/src/toast.ts +19 -11
  807. package/js/src/tooltip.ts +16 -7
  808. package/js/tabler-theme.ts +30 -8
  809. package/js/tabler.ts +21 -2
  810. package/libs.json +45 -109
  811. package/package.json +40 -29
  812. package/scss/_config.scss +1 -0
  813. package/scss/_core.scss +6 -0
  814. package/scss/_deprecated-props.scss +40 -0
  815. package/scss/_deprecated.scss +153 -0
  816. package/scss/_extends.scss +6 -1
  817. package/scss/_maps.scss +10 -11
  818. package/scss/_mixins.scss +1 -0
  819. package/scss/_props.scss +40 -6
  820. package/scss/_settings.scss +3 -1
  821. package/scss/_utilities-marketing.scss +1 -2
  822. package/scss/_utilities.scss +62 -24
  823. package/scss/_variables-dark.scss +31 -42
  824. package/scss/_variables-deprecated.scss +60 -0
  825. package/scss/_variables.scss +252 -189
  826. package/scss/bootstrap/_buttons.scss +6 -33
  827. package/scss/bootstrap/_carousel.scss +6 -7
  828. package/scss/bootstrap/_list-group.scss +28 -14
  829. package/scss/bootstrap/_nav.scss +2 -2
  830. package/scss/bootstrap/_navbar.scss +6 -7
  831. package/scss/bootstrap/_offcanvas.scss +2 -0
  832. package/scss/bootstrap/_pagination.scss +7 -3
  833. package/scss/bootstrap/_reboot.scss +3 -3
  834. package/scss/bootstrap/_root.scss +10 -33
  835. package/scss/bootstrap/_tables.scss +7 -2
  836. package/scss/bootstrap/forms/_floating-labels.scss +1 -1
  837. package/scss/bootstrap/forms/_form-check.scss +54 -42
  838. package/scss/bootstrap/forms/_form-control.scss +4 -8
  839. package/scss/bootstrap/forms/_form-range.scss +4 -2
  840. package/scss/bootstrap/forms/_form-select.scss +4 -7
  841. package/scss/helpers/_index.scss +11 -4
  842. package/scss/layout/_accessibility.scss +2 -1
  843. package/scss/layout/_core.scss +0 -8
  844. package/scss/layout/_navbar.scss +130 -46
  845. package/scss/layout/_page.scss +15 -2
  846. package/scss/layout/_root.scss +4 -3
  847. package/scss/marketing/_hero.scss +0 -11
  848. package/scss/mixins/_deprecated.scss +110 -0
  849. package/scss/mixins/_functions.scss +67 -113
  850. package/scss/mixins/_mixins.scss +41 -8
  851. package/scss/mixins/bootstrap/_caret.scss +7 -6
  852. package/scss/mixins/bootstrap/_color-mode.scss +6 -0
  853. package/scss/mixins/bootstrap/_forms.scss +10 -11
  854. package/scss/mixins/bootstrap/_gradients.scss +1 -1
  855. package/scss/mixins/bootstrap/_table-variants.scss +4 -5
  856. package/scss/tabler-props.scss +5 -0
  857. package/scss/tabler-themes.scss +67 -66
  858. package/scss/tabler-vendors.scss +3 -1
  859. package/scss/tabler.scss +2 -0
  860. package/scss/ui/_accordion.scss +24 -31
  861. package/scss/ui/_alerts.scss +29 -8
  862. package/scss/ui/_avatars.scss +3 -1
  863. package/scss/ui/_badges.scss +2 -0
  864. package/scss/ui/_breadcrumbs.scss +2 -0
  865. package/scss/ui/_buttons.scss +83 -58
  866. package/scss/ui/_calendars.scss +4 -5
  867. package/scss/ui/_cards.scss +46 -29
  868. package/scss/ui/_carousel.scss +1 -1
  869. package/scss/ui/_chat.scss +2 -0
  870. package/scss/ui/_close.scss +5 -2
  871. package/scss/ui/_datagrid.scss +2 -0
  872. package/scss/ui/_datepicker.scss +425 -0
  873. package/scss/ui/_dropdowns.scss +5 -1
  874. package/scss/ui/_empty.scss +2 -0
  875. package/scss/ui/_forms.scss +33 -47
  876. package/scss/ui/_icons.scss +2 -0
  877. package/scss/ui/_legend.scss +145 -2
  878. package/scss/ui/_lists.scss +3 -3
  879. package/scss/ui/_markdown.scss +1 -0
  880. package/scss/ui/_modals.scss +20 -1
  881. package/scss/ui/_nav.scss +3 -3
  882. package/scss/ui/_offcanvas.scss +47 -0
  883. package/scss/ui/_patterns.scss +39 -18
  884. package/scss/ui/_progress.scss +5 -2
  885. package/scss/ui/_ribbons.scss +6 -2
  886. package/scss/ui/_segmented.scss +1 -1
  887. package/scss/ui/_signal.scss +57 -0
  888. package/scss/ui/_sortable.scss +73 -0
  889. package/scss/ui/_sparkline.scss +73 -0
  890. package/scss/ui/_stars.scss +2 -0
  891. package/scss/ui/_status.scss +2 -2
  892. package/scss/ui/_steps.scss +2 -0
  893. package/scss/ui/_switch-icon.scss +67 -11
  894. package/scss/ui/_tables.scss +3 -3
  895. package/scss/ui/_tags.scss +2 -0
  896. package/scss/ui/_timeline.scss +2 -0
  897. package/scss/ui/_tracking.scss +2 -0
  898. package/scss/ui/_type.scss +12 -4
  899. package/scss/ui/forms/_form-check.scss +10 -2
  900. package/scss/ui/forms/_form-colorinput.scss +4 -3
  901. package/scss/ui/forms/_form-custom.scss +0 -13
  902. package/scss/ui/forms/_form-imagecheck.scss +4 -3
  903. package/scss/ui/forms/_form-otp.scss +171 -0
  904. package/scss/ui/forms/_form-selectgroup.scss +7 -7
  905. package/scss/ui/forms/_strength.scss +63 -0
  906. package/scss/ui/forms/_validation.scss +5 -0
  907. package/scss/utils/_background.scss +2 -2
  908. package/scss/utils/_colors.scss +17 -14
  909. package/scss/vendor/_apexcharts.scss +10 -1
  910. package/scss/vendor/_coloris.scss +10 -3
  911. package/scss/vendor/_fslightbox.scss +2 -2
  912. package/scss/vendor/_jsvectormap.scss +1 -1
  913. package/scss/vendor/_nouislider.scss +2 -1
  914. package/scss/vendor/_tom-select.scss +84 -7
  915. package/dist/types/src/tabler.d.ts +0 -3
  916. package/js/src/tabler.ts +0 -17
  917. package/js/tests/helpers/fixture.ts +0 -33
  918. package/js/tests/unit/alert.spec.ts +0 -176
  919. package/js/tests/unit/base-component.spec.ts +0 -166
  920. package/js/tests/unit/button.spec.ts +0 -167
  921. package/js/tests/unit/carousel.spec.ts +0 -546
  922. package/js/tests/unit/collapse.spec.ts +0 -791
  923. package/js/tests/unit/dom/data.spec.ts +0 -180
  924. package/js/tests/unit/dom/event-handler.spec.ts +0 -460
  925. package/js/tests/unit/dom/manipulator.spec.ts +0 -201
  926. package/js/tests/unit/dom/selector-engine.spec.ts +0 -300
  927. package/js/tests/unit/dropdown.spec.ts +0 -1095
  928. package/js/tests/unit/modal.spec.ts +0 -629
  929. package/js/tests/unit/offcanvas.spec.ts +0 -434
  930. package/js/tests/unit/popover.spec.ts +0 -253
  931. package/js/tests/unit/scrollspy.spec.ts +0 -634
  932. package/js/tests/unit/sidebar.spec.ts +0 -118
  933. package/js/tests/unit/tab.spec.ts +0 -775
  934. package/js/tests/unit/tabler-theme.spec.ts +0 -100
  935. package/js/tests/unit/toast.spec.ts +0 -514
  936. package/js/tests/unit/tooltip.spec.ts +0 -679
  937. package/js/tests/unit/util/backdrop.spec.ts +0 -213
  938. package/js/tests/unit/util/component-functions.spec.ts +0 -88
  939. package/js/tests/unit/util/config.spec.ts +0 -150
  940. package/js/tests/unit/util/focustrap.spec.ts +0 -232
  941. package/js/tests/unit/util/index.spec.ts +0 -478
  942. package/js/tests/unit/util/sanitizer.spec.ts +0 -118
  943. package/js/tests/unit/util/scrollbar.spec.ts +0 -202
  944. package/js/tests/unit/util/swipe.spec.ts +0 -319
  945. package/js/tests/unit/util/template-factory.spec.ts +0 -233
  946. package/scss/tests/_add-subtract.test.scss +0 -48
  947. package/scss/tests/_border-radius.test.scss +0 -23
  948. package/scss/tests/_box-shadow.test.scss +0 -71
  949. package/scss/tests/_breakpoints.test.scss +0 -50
  950. package/scss/tests/_cards.test.scss +0 -31
  951. package/scss/tests/_caret.test.scss +0 -115
  952. package/scss/tests/_color-contrast.test.scss +0 -24
  953. package/scss/tests/_color-mode.test.scss +0 -28
  954. package/scss/tests/_color.test.scss +0 -44
  955. package/scss/tests/_colors-misc.test.scss +0 -80
  956. package/scss/tests/_css-var.test.scss +0 -37
  957. package/scss/tests/_divide.test.scss +0 -45
  958. package/scss/tests/_escape-svg.test.scss +0 -18
  959. package/scss/tests/_generate-utility.test.scss +0 -245
  960. package/scss/tests/_grid.test.scss +0 -153
  961. package/scss/tests/_maps.test.scss +0 -76
  962. package/scss/tests/_media-breakpoint.test.scss +0 -202
  963. package/scss/tests/_mixins-bootstrap.test.scss +0 -55
  964. package/scss/tests/_mixins.test.scss +0 -208
  965. package/scss/tests/_rfs.test.scss +0 -30
  966. package/scss/tests/_str-replace.test.scss +0 -34
  967. package/scss/tests/_transition.test.scss +0 -43
@@ -0,0 +1,221 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Tabler clipboard.ts
4
+ * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import BaseComponent from './bootstrap/base-component'
9
+ import EventHandler from './bootstrap/dom/event-handler'
10
+ import SelectorEngine from './bootstrap/dom/selector-engine'
11
+ import { initAll } from './bootstrap/util/component-functions'
12
+ import { getElement } from './bootstrap/util/index'
13
+ import type { ElementSelector } from './bootstrap/types'
14
+
15
+ type ComponentConfig = {
16
+ /** selector of the element to read the text from */
17
+ target: string | null
18
+ /** literal text to copy; wins over `target` */
19
+ text: string | null
20
+ /** how long the copied state lasts, in milliseconds */
21
+ delay: number
22
+ }
23
+
24
+ type ComponentConfigInput = Partial<ComponentConfig> & Record<string, unknown>
25
+
26
+ /**
27
+ * Constants
28
+ */
29
+
30
+ const NAME = 'clipboard'
31
+ const DATA_KEY = `bs.${NAME}`
32
+ const EVENT_KEY = `.${DATA_KEY}`
33
+
34
+ const EVENT_COPIED = `copied${EVENT_KEY}`
35
+ const EVENT_ERROR = `error${EVENT_KEY}`
36
+
37
+ const CLASS_NAME_COPIED = 'copied'
38
+
39
+ const SELECTOR_DATA_TOGGLE = `[data-bs-toggle="${NAME}"], [data-tblr-toggle="${NAME}"]`
40
+ const SELECTOR_LABEL = `.${NAME}-label`
41
+ const SELECTOR_FEEDBACK = `.${NAME}-feedback`
42
+ const ATTRIBUTE_TEXT = 'data-bs-text'
43
+ const ATTRIBUTE_TEXT_ALIAS = 'data-tblr-text'
44
+
45
+ const Default: ComponentConfig = {
46
+ target: null,
47
+ text: null,
48
+ delay: 2000,
49
+ }
50
+
51
+ const DefaultType: Record<keyof ComponentConfig, string> = {
52
+ target: '(string|null)',
53
+ text: '(string|number|null)',
54
+ delay: 'number',
55
+ }
56
+
57
+ /**
58
+ * Helpers
59
+ */
60
+
61
+ // The `hidden` DOM property belongs to HTMLElement, so an `<svg>` ignores it.
62
+ // The attribute works on any element.
63
+ const toggleHidden = (element: Element, hidden: boolean): void => {
64
+ if (hidden) {
65
+ element.setAttribute('hidden', '')
66
+ } else {
67
+ element.removeAttribute('hidden')
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Class definition
73
+ *
74
+ * Copies text to the clipboard when the trigger is clicked, then shows the
75
+ * copied state for a moment. Every word lives in the markup: the trigger holds
76
+ * a `clipboard-label` and a `clipboard-feedback`, and the component only swaps
77
+ * which of them is hidden.
78
+ *
79
+ * The browser gives `navigator.clipboard` to secure contexts only, so on plain
80
+ * http a copy fails and `error.bs.clipboard` fires.
81
+ */
82
+
83
+ class Clipboard extends BaseComponent {
84
+ declare _element: HTMLElement
85
+ declare _config: ComponentConfig
86
+ _labels: Element[] = []
87
+ _feedbacks: Element[] = []
88
+ _timeout = 0
89
+
90
+ constructor(element: ElementSelector, config?: ComponentConfigInput) {
91
+ super(element, config)
92
+
93
+ if (!this._element) {
94
+ return
95
+ }
96
+
97
+ // Several of each are allowed: an icon-only button pairs a check icon with
98
+ // a visually hidden word, and both switch together.
99
+ this._labels = SelectorEngine.find(SELECTOR_LABEL, this._element)
100
+ this._feedbacks = SelectorEngine.find(SELECTOR_FEEDBACK, this._element)
101
+
102
+ for (const feedback of this._feedbacks) {
103
+ // Revealed rather than restyled, so a screen reader announces it.
104
+ toggleHidden(feedback, true)
105
+
106
+ if (!feedback.hasAttribute('role')) {
107
+ feedback.setAttribute('role', 'status')
108
+ }
109
+ }
110
+
111
+ EventHandler.on(this._element, `click${EVENT_KEY}`, (event: Event) => {
112
+ event.preventDefault()
113
+ void this.copy()
114
+ })
115
+ }
116
+
117
+ // Getters
118
+ static get Default(): ComponentConfig {
119
+ return Default
120
+ }
121
+
122
+ static get DefaultType(): Record<keyof ComponentConfig, string> {
123
+ return DefaultType
124
+ }
125
+
126
+ static get NAME(): string {
127
+ return NAME
128
+ }
129
+
130
+ get text(): string {
131
+ const { text, target } = this._config
132
+ if (text !== null && text !== '') {
133
+ return String(text)
134
+ }
135
+
136
+ const source = target ? getElement(target) : null
137
+ if (!source) {
138
+ return ''
139
+ }
140
+
141
+ if (source instanceof HTMLInputElement || source instanceof HTMLTextAreaElement) {
142
+ return source.value
143
+ }
144
+
145
+ // innerText keeps line breaks and skips hidden text such as a
146
+ // visually-hidden label; textContent is the fallback for SVG.
147
+ return (source instanceof HTMLElement ? source.innerText : ((source as Element).textContent ?? '')).trim()
148
+ }
149
+
150
+ // Public
151
+ async copy(): Promise<void> {
152
+ const { text } = this
153
+
154
+ if (!text || !navigator.clipboard) {
155
+ EventHandler.trigger(this._element, EVENT_ERROR)
156
+ return
157
+ }
158
+
159
+ try {
160
+ await navigator.clipboard.writeText(text)
161
+ } catch {
162
+ EventHandler.trigger(this._element, EVENT_ERROR)
163
+ return
164
+ }
165
+
166
+ this._showCopied()
167
+ EventHandler.trigger(this._element, EVENT_COPIED)
168
+ }
169
+
170
+ /** Ends the copied state, for a `delay` of 0 or an early reset. */
171
+ reset(): void {
172
+ window.clearTimeout(this._timeout)
173
+ this._toggleCopied(false)
174
+ }
175
+
176
+ dispose(): void {
177
+ window.clearTimeout(this._timeout)
178
+ super.dispose()
179
+ }
180
+
181
+ // Private
182
+ _mergeConfigObj(config?: Record<string, unknown>, element?: HTMLElement): Record<string, unknown> {
183
+ // The text is copied as written: `data-bs-text="007"` or `"true"` must not
184
+ // be read as a number or a boolean the way other data attributes are.
185
+ const raw = element?.getAttribute(ATTRIBUTE_TEXT) ?? element?.getAttribute(ATTRIBUTE_TEXT_ALIAS)
186
+ const dataOptions: Record<string, unknown> = raw === null || raw === undefined ? {} : { text: raw }
187
+
188
+ return super._mergeConfigObj({ ...dataOptions, ...config }, element)
189
+ }
190
+
191
+ _showCopied(): void {
192
+ window.clearTimeout(this._timeout)
193
+ this._toggleCopied(true)
194
+
195
+ if (this._config.delay > 0) {
196
+ this._timeout = window.setTimeout(() => this._toggleCopied(false), this._config.delay)
197
+ }
198
+ }
199
+
200
+ _toggleCopied(copied: boolean): void {
201
+ this._element.classList.toggle(CLASS_NAME_COPIED, copied)
202
+
203
+ for (const label of this._labels) {
204
+ toggleHidden(label, copied)
205
+ }
206
+
207
+ for (const feedback of this._feedbacks) {
208
+ toggleHidden(feedback, !copied)
209
+ }
210
+ }
211
+ }
212
+
213
+ /**
214
+ * Data API implementation
215
+ */
216
+
217
+ // js-docs-start clipboard-init
218
+ initAll(SELECTOR_DATA_TOGGLE, Clipboard)
219
+ // js-docs-end clipboard-init
220
+
221
+ export default Clipboard
@@ -0,0 +1,474 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Tabler confetti.ts
4
+ * Licensed under MIT (https://github.com/tabler/tabler/blob/dev/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import BaseComponent from './bootstrap/base-component'
9
+ import EventHandler from './bootstrap/dom/event-handler'
10
+ import Manipulator from './bootstrap/dom/manipulator'
11
+ import SelectorEngine from './bootstrap/dom/selector-engine'
12
+ import { isDisabled } from './bootstrap/util/index'
13
+ import type { ComponentConfig as BaseConfig, ElementSelector } from './bootstrap/types'
14
+
15
+ type ComponentConfig = {
16
+ /** how many pieces one burst pours out */
17
+ count: number
18
+ /** ms during which pieces keep pouring; the first frames get the most */
19
+ duration: number
20
+ /** how fast the pour thins out; higher means a sharper splash at the start */
21
+ decay: number
22
+ /** share of the viewport height at the bottom where pieces fade out */
23
+ fade: number
24
+ /** multiplier for the fall speed */
25
+ speed: number
26
+ /** piece colours; `null` reads the Tabler palette from CSS custom properties */
27
+ colors: string[] | null
28
+ }
29
+
30
+ type ComponentConfigInput = Partial<Omit<ComponentConfig, 'colors'>> & {
31
+ colors?: string[] | string | null
32
+ }
33
+
34
+ type Particle = {
35
+ emitter: Emitter
36
+ x: number
37
+ y: number
38
+ w: number
39
+ h: number
40
+ color: string
41
+ vx: number
42
+ vy: number
43
+ speed: number
44
+ angle: number
45
+ spin: number
46
+ flip: number
47
+ flipSpeed: number
48
+ sway: number
49
+ alpha: number
50
+ }
51
+
52
+ type Emitter = {
53
+ element: HTMLElement
54
+ config: ComponentConfig
55
+ colors: string[]
56
+ startedAt: number
57
+ emitted: number
58
+ /** `stop()` was called: nothing new is poured, what is in the air still falls */
59
+ stopped: boolean
60
+ /** every piece has landed and `end` was fired */
61
+ done: boolean
62
+ /** the instance was disposed: the pieces still land, but `end` is not fired */
63
+ detached: boolean
64
+ }
65
+
66
+ /**
67
+ * Constants
68
+ */
69
+
70
+ const NAME = 'confetti'
71
+ const DATA_KEY = `bs.${NAME}`
72
+ const EVENT_KEY = `.${DATA_KEY}`
73
+
74
+ const EVENT_START = `start${EVENT_KEY}`
75
+ const EVENT_END = `end${EVENT_KEY}`
76
+ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}.data-api`
77
+
78
+ const CLASS_NAME_CANVAS = `${NAME}-canvas`
79
+
80
+ const SELECTOR_DATA_TOGGLE = `[data-bs-toggle="${NAME}"], [data-tblr-toggle="${NAME}"]`
81
+
82
+ // Palette names looked up as `--tblr-<name>` on the root element; the hex
83
+ // values are the fallback for a page that loads the script without the CSS.
84
+ const PALETTE: [string, string][] = [
85
+ ['blue', '#066fd1'],
86
+ ['azure', '#4299e1'],
87
+ ['indigo', '#4263eb'],
88
+ ['purple', '#ae3ec9'],
89
+ ['pink', '#d6336c'],
90
+ ['red', '#d63939'],
91
+ ['orange', '#f76707'],
92
+ ['yellow', '#f59f00'],
93
+ ['lime', '#74b816'],
94
+ ['green', '#2fb344'],
95
+ ['teal', '#0ca678'],
96
+ ['cyan', '#17a2b8'],
97
+ ]
98
+
99
+ // The physics below is tuned for this viewport height; taller windows get
100
+ // proportionally faster pieces so the fall takes the same time everywhere.
101
+ const REFERENCE_HEIGHT = 800
102
+ const FRAME_MS = 1000 / 60
103
+ const MAX_DPR = 2
104
+
105
+ const Default: ComponentConfig = {
106
+ count: 220,
107
+ duration: 3500,
108
+ decay: 3.5,
109
+ fade: 0.15,
110
+ speed: 1,
111
+ colors: null,
112
+ }
113
+
114
+ const DefaultType: Record<keyof ComponentConfig, string> = {
115
+ count: 'number',
116
+ duration: 'number',
117
+ decay: 'number',
118
+ fade: 'number',
119
+ speed: 'number',
120
+ colors: '(array|string|null)',
121
+ }
122
+
123
+ /**
124
+ * Stage
125
+ *
126
+ * One fixed canvas shared by every burst on the page. It is created on the
127
+ * first burst and removed once the last piece has landed, so an idle page
128
+ * carries no extra element and no running animation frame.
129
+ */
130
+
131
+ const stage = {
132
+ canvas: null as HTMLCanvasElement | null,
133
+ context: null as CanvasRenderingContext2D | null,
134
+ particles: [] as Particle[],
135
+ emitters: [] as Emitter[],
136
+ frame: 0,
137
+ lastTick: 0,
138
+
139
+ add(emitter: Emitter): boolean {
140
+ this._mount()
141
+
142
+ if (!this.context) {
143
+ return false
144
+ }
145
+
146
+ this.emitters.push(emitter)
147
+
148
+ if (!this.frame) {
149
+ this.lastTick = performance.now()
150
+ this.frame = requestAnimationFrame((now) => this._tick(now))
151
+ }
152
+
153
+ return true
154
+ },
155
+
156
+ _mount(): void {
157
+ if (this.canvas) {
158
+ return
159
+ }
160
+
161
+ const canvas = document.createElement('canvas')
162
+ canvas.className = CLASS_NAME_CANVAS
163
+ canvas.setAttribute('aria-hidden', 'true')
164
+ Object.assign(canvas.style, {
165
+ position: 'fixed',
166
+ inset: '0',
167
+ width: '100%',
168
+ height: '100%',
169
+ zIndex: '9999',
170
+ pointerEvents: 'none',
171
+ display: 'block',
172
+ })
173
+
174
+ const context = canvas.getContext('2d')
175
+ if (!context) {
176
+ return
177
+ }
178
+
179
+ document.body.append(canvas)
180
+ this.canvas = canvas
181
+ this.context = context
182
+ this._resize()
183
+ window.addEventListener('resize', this._onResize)
184
+ },
185
+
186
+ _unmount(): void {
187
+ cancelAnimationFrame(this.frame)
188
+ this.frame = 0
189
+ window.removeEventListener('resize', this._onResize)
190
+ this.canvas?.remove()
191
+ this.canvas = null
192
+ this.context = null
193
+ this.particles = []
194
+ this.emitters = []
195
+ },
196
+
197
+ _onResize: (): void => {
198
+ stage._resize()
199
+ },
200
+
201
+ _resize(): void {
202
+ if (!this.canvas || !this.context) {
203
+ return
204
+ }
205
+
206
+ // The backing store is scaled for HiDPI screens; the CSS size above keeps
207
+ // the element at the viewport size, so the drawing stays sharp and 1:1.
208
+ const dpr = Math.min(window.devicePixelRatio || 1, MAX_DPR)
209
+ this.canvas.width = document.documentElement.clientWidth * dpr
210
+ this.canvas.height = window.innerHeight * dpr
211
+ this.context.setTransform(dpr, 0, 0, dpr, 0, 0)
212
+ },
213
+
214
+ _spawn(emitter: Emitter): Particle {
215
+ const { colors, config } = emitter
216
+ const speed = (window.innerHeight / REFERENCE_HEIGHT) * config.speed
217
+
218
+ return {
219
+ emitter,
220
+ x: Math.random() * window.innerWidth,
221
+ y: -20 - Math.random() * 30,
222
+ w: 6 + Math.random() * 3.6,
223
+ h: 10 + Math.random() * 4.4,
224
+ color: colors[Math.floor(Math.random() * colors.length)] ?? '#000',
225
+ vx: (Math.random() - 0.5) * 1.2,
226
+ vy: (1.5 + Math.random() * 2.1) * speed,
227
+ speed,
228
+ angle: Math.random() * Math.PI * 2,
229
+ spin: (Math.random() - 0.5) * 0.25,
230
+ flip: Math.random() * Math.PI * 2,
231
+ flipSpeed: 0.12 + Math.random() * 0.15,
232
+ sway: Math.random() * Math.PI * 2,
233
+ alpha: 1,
234
+ }
235
+ },
236
+
237
+ // Pour: the share of pieces emitted by time t follows 1 - e^(-k t), so the
238
+ // first frames get the most and the tail thins out to single pieces.
239
+ _pour(emitter: Emitter, now: number): void {
240
+ const { count, duration, decay } = emitter.config
241
+ const elapsed = now - emitter.startedAt
242
+
243
+ if (emitter.stopped || elapsed >= duration) {
244
+ return
245
+ }
246
+
247
+ const t = elapsed / duration
248
+ const target = Math.round((count * (1 - Math.exp(-decay * t))) / (1 - Math.exp(-decay)))
249
+
250
+ while (emitter.emitted < target) {
251
+ this.particles.push(this._spawn(emitter))
252
+ emitter.emitted++
253
+ }
254
+ },
255
+
256
+ _tick(now: number): void {
257
+ const context = this.context
258
+ if (!context) {
259
+ return
260
+ }
261
+
262
+ // Steps are scaled to the real frame time so a 120 Hz screen or a
263
+ // throttled tab animate at the same pace as 60 Hz.
264
+ const step = Math.min((now - this.lastTick) / FRAME_MS, 3)
265
+ this.lastTick = now
266
+
267
+ const width = window.innerWidth
268
+ const height = window.innerHeight
269
+ context.clearRect(0, 0, width, height)
270
+
271
+ for (const emitter of this.emitters) {
272
+ this._pour(emitter, now)
273
+ }
274
+
275
+ for (let i = this.particles.length - 1; i >= 0; i--) {
276
+ const p = this.particles[i]!
277
+ const fadeFrom = height * (1 - p.emitter.config.fade)
278
+
279
+ p.sway += 0.05 * step
280
+ p.vy = Math.min(p.vy + 0.025 * p.speed * step, 4.2 * p.speed)
281
+ p.x += (p.vx + Math.sin(p.sway) * 0.7) * step
282
+ p.y += p.vy * step
283
+ p.angle += p.spin * step
284
+ p.flip += p.flipSpeed * step
285
+
286
+ if (p.y > fadeFrom) {
287
+ p.alpha = Math.max(0, 1 - (p.y - fadeFrom) / (height - fadeFrom))
288
+ }
289
+
290
+ if (p.alpha === 0) {
291
+ this.particles.splice(i, 1)
292
+ continue
293
+ }
294
+
295
+ context.save()
296
+ context.globalAlpha = p.alpha
297
+ context.translate(p.x, p.y)
298
+ context.rotate(p.angle)
299
+ // The flip squashes the piece along one axis, which reads as tumbling.
300
+ context.scale(1, Math.cos(p.flip))
301
+ context.fillStyle = p.color
302
+ context.fillRect(-p.w / 2, -p.h / 2, p.w, p.h)
303
+ context.restore()
304
+ }
305
+
306
+ this._settle(now)
307
+
308
+ if (this.emitters.length === 0) {
309
+ this._unmount()
310
+ return
311
+ }
312
+
313
+ this.frame = requestAnimationFrame((next) => this._tick(next))
314
+ },
315
+
316
+ // An emitter is finished once it pours nothing more and none of its pieces
317
+ // is still in the air; `end` fires on its element and it leaves the stage.
318
+ _settle(now: number): void {
319
+ for (let i = this.emitters.length - 1; i >= 0; i--) {
320
+ const emitter = this.emitters[i]!
321
+ const pouring = !emitter.stopped && now - emitter.startedAt < emitter.config.duration
322
+ const airborne = this.particles.some((p) => p.emitter === emitter)
323
+
324
+ if (pouring || airborne) {
325
+ continue
326
+ }
327
+
328
+ this.emitters.splice(i, 1)
329
+ emitter.done = true
330
+
331
+ if (!emitter.detached) {
332
+ EventHandler.trigger(emitter.element, EVENT_END)
333
+ }
334
+ }
335
+ },
336
+ }
337
+
338
+ /**
339
+ * Class definition
340
+ *
341
+ * Pours a short shower of confetti over the page, like a bucket emptied from
342
+ * the top edge: dense at first, then thinning out. Nothing is drawn when the
343
+ * user prefers reduced motion, but the events still fire.
344
+ */
345
+
346
+ class Confetti extends BaseComponent {
347
+ declare _element: HTMLElement
348
+ declare _config: ComponentConfig
349
+ _emitter: Emitter | null = null
350
+
351
+ constructor(element: ElementSelector, config?: ComponentConfigInput) {
352
+ super(element, config as BaseConfig | undefined)
353
+ }
354
+
355
+ // Getters
356
+ static get Default(): ComponentConfig {
357
+ return Default
358
+ }
359
+
360
+ static get DefaultType(): Record<keyof ComponentConfig, string> {
361
+ return DefaultType
362
+ }
363
+
364
+ static get NAME(): string {
365
+ return NAME
366
+ }
367
+
368
+ // Public
369
+ burst(): void {
370
+ const startEvent = EventHandler.trigger(this._element, EVENT_START)
371
+
372
+ if (startEvent?.defaultPrevented) {
373
+ return
374
+ }
375
+
376
+ // A second burst while one is pouring restarts the pour; pieces already
377
+ // in the air keep falling.
378
+ this.stop()
379
+
380
+ if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
381
+ EventHandler.trigger(this._element, EVENT_END)
382
+ return
383
+ }
384
+
385
+ this._emitter = {
386
+ element: this._element,
387
+ config: this._config,
388
+ colors: this._colors(),
389
+ startedAt: performance.now(),
390
+ emitted: 0,
391
+ stopped: false,
392
+ done: false,
393
+ detached: false,
394
+ }
395
+
396
+ if (!stage.add(this._emitter)) {
397
+ this._emitter = null
398
+ EventHandler.trigger(this._element, EVENT_END)
399
+ }
400
+ }
401
+
402
+ stop(): void {
403
+ if (this._emitter && !this._emitter.done) {
404
+ this._emitter.stopped = true
405
+ }
406
+
407
+ this._emitter = null
408
+ }
409
+
410
+ dispose(): void {
411
+ if (this._emitter) {
412
+ this._emitter.detached = true
413
+ }
414
+
415
+ this.stop()
416
+ super.dispose()
417
+ }
418
+
419
+ // Private
420
+ _configAfterMerge(config: BaseConfig): BaseConfig {
421
+ if (typeof config.colors === 'string') {
422
+ config.colors = config.colors
423
+ .split(',')
424
+ .map((color) => color.trim())
425
+ .filter(Boolean)
426
+ }
427
+
428
+ return config
429
+ }
430
+
431
+ _colors(): string[] {
432
+ const { colors } = this._config
433
+ if (colors && colors.length > 0) {
434
+ return colors
435
+ }
436
+
437
+ // The palette is read at burst time, so a theme switched at runtime is
438
+ // picked up without re-creating the instance.
439
+ const style = getComputedStyle(document.documentElement)
440
+ return PALETTE.map(([name, fallback]) => style.getPropertyValue(`--tblr-${name}`).trim() || fallback)
441
+ }
442
+ }
443
+
444
+ /**
445
+ * Data API implementation
446
+ *
447
+ * A trigger bursts on its `data-bs-target` when it has one, otherwise on
448
+ * itself, so the events fire where the page can listen for them.
449
+ */
450
+
451
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (this: HTMLElement, event: Event) {
452
+ if (['A', 'AREA'].includes(this.tagName)) {
453
+ event.preventDefault()
454
+ }
455
+
456
+ if (isDisabled(this)) {
457
+ return
458
+ }
459
+
460
+ const target = SelectorEngine.getElementFromSelector(this) || this
461
+ const config = Manipulator.getDataAttributes(this)
462
+ const instance = Confetti.getOrCreateInstance(target, config) as Confetti
463
+
464
+ // The instance lives on the target and keeps the config it was created
465
+ // with, so re-read the trigger's options on every click; several triggers
466
+ // can then share one target with their own look.
467
+ if (target !== this) {
468
+ instance._config = instance._getConfig(config) as ComponentConfig
469
+ }
470
+
471
+ instance.burst()
472
+ })
473
+
474
+ export default Confetti