@trebired/frontend 0.3.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 (433) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/LICENSE +661 -0
  3. package/README.md +212 -0
  4. package/dist/actions/buttons.d.ts +8 -0
  5. package/dist/actions/buttons.d.ts.map +1 -0
  6. package/dist/actions/buttons.js +116 -0
  7. package/dist/actions/buttons.js.map +1 -0
  8. package/dist/actions/components/index.d.ts +26 -0
  9. package/dist/actions/components/index.d.ts.map +1 -0
  10. package/dist/actions/components/index.js +25 -0
  11. package/dist/actions/components/index.js.map +1 -0
  12. package/dist/actions/confetti.d.ts +12 -0
  13. package/dist/actions/confetti.d.ts.map +1 -0
  14. package/dist/actions/confetti.js +36 -0
  15. package/dist/actions/confetti.js.map +1 -0
  16. package/dist/actions/forms.d.ts +12 -0
  17. package/dist/actions/forms.d.ts.map +1 -0
  18. package/dist/actions/forms.js +159 -0
  19. package/dist/actions/forms.js.map +1 -0
  20. package/dist/actions/index.d.ts +8 -0
  21. package/dist/actions/index.d.ts.map +1 -0
  22. package/dist/actions/index.js +7 -0
  23. package/dist/actions/index.js.map +1 -0
  24. package/dist/actions/request.d.ts +13 -0
  25. package/dist/actions/request.d.ts.map +1 -0
  26. package/dist/actions/request.js +83 -0
  27. package/dist/actions/request.js.map +1 -0
  28. package/dist/actions/response.d.ts +18 -0
  29. package/dist/actions/response.d.ts.map +1 -0
  30. package/dist/actions/response.js +104 -0
  31. package/dist/actions/response.js.map +1 -0
  32. package/dist/actions/styles/index.scss +42 -0
  33. package/dist/actions/triggers.d.ts +24 -0
  34. package/dist/actions/triggers.d.ts.map +1 -0
  35. package/dist/actions/triggers.js +107 -0
  36. package/dist/actions/triggers.js.map +1 -0
  37. package/dist/actions/types.d.ts +63 -0
  38. package/dist/actions/types.d.ts.map +1 -0
  39. package/dist/actions/types.js +2 -0
  40. package/dist/actions/types.js.map +1 -0
  41. package/dist/components/index.d.ts +5 -0
  42. package/dist/components/index.d.ts.map +1 -0
  43. package/dist/components/index.js +11 -0
  44. package/dist/components/index.js.map +1 -0
  45. package/dist/dom/index.d.ts +26 -0
  46. package/dist/dom/index.d.ts.map +1 -0
  47. package/dist/dom/index.js +164 -0
  48. package/dist/dom/index.js.map +1 -0
  49. package/dist/flash/components/index.d.ts +28 -0
  50. package/dist/flash/components/index.d.ts.map +1 -0
  51. package/dist/flash/components/index.js +27 -0
  52. package/dist/flash/components/index.js.map +1 -0
  53. package/dist/flash/dialogs.d.ts +6 -0
  54. package/dist/flash/dialogs.d.ts.map +1 -0
  55. package/dist/flash/dialogs.js +120 -0
  56. package/dist/flash/dialogs.js.map +1 -0
  57. package/dist/flash/duration.d.ts +8 -0
  58. package/dist/flash/duration.d.ts.map +1 -0
  59. package/dist/flash/duration.js +20 -0
  60. package/dist/flash/duration.js.map +1 -0
  61. package/dist/flash/elements.d.ts +14 -0
  62. package/dist/flash/elements.d.ts.map +1 -0
  63. package/dist/flash/elements.js +67 -0
  64. package/dist/flash/elements.js.map +1 -0
  65. package/dist/flash/index.d.ts +8 -0
  66. package/dist/flash/index.d.ts.map +1 -0
  67. package/dist/flash/index.js +18 -0
  68. package/dist/flash/index.js.map +1 -0
  69. package/dist/flash/stack.d.ts +6 -0
  70. package/dist/flash/stack.d.ts.map +1 -0
  71. package/dist/flash/stack.js +56 -0
  72. package/dist/flash/stack.js.map +1 -0
  73. package/dist/flash/styles/index.scss +118 -0
  74. package/dist/flash/toast.d.ts +24 -0
  75. package/dist/flash/toast.d.ts.map +1 -0
  76. package/dist/flash/toast.js +67 -0
  77. package/dist/flash/toast.js.map +1 -0
  78. package/dist/flash/types.d.ts +29 -0
  79. package/dist/flash/types.d.ts.map +1 -0
  80. package/dist/flash/types.js +2 -0
  81. package/dist/flash/types.js.map +1 -0
  82. package/dist/http/index.d.ts +30 -0
  83. package/dist/http/index.d.ts.map +1 -0
  84. package/dist/http/index.js +104 -0
  85. package/dist/http/index.js.map +1 -0
  86. package/dist/index.d.ts +40 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +104 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/inputs/components/index.d.ts +16 -0
  91. package/dist/inputs/components/index.d.ts.map +1 -0
  92. package/dist/inputs/components/index.js +112 -0
  93. package/dist/inputs/components/index.js.map +1 -0
  94. package/dist/inputs/index.d.ts +17 -0
  95. package/dist/inputs/index.d.ts.map +1 -0
  96. package/dist/inputs/index.js +54 -0
  97. package/dist/inputs/index.js.map +1 -0
  98. package/dist/inputs/styles/cropper.scss +244 -0
  99. package/dist/inputs/styles/field.scss +15 -0
  100. package/dist/inputs/styles/index.scss +3 -0
  101. package/dist/inputs/styles/upload.scss +125 -0
  102. package/dist/inputs/upload/config.d.ts +57 -0
  103. package/dist/inputs/upload/config.d.ts.map +1 -0
  104. package/dist/inputs/upload/config.js +61 -0
  105. package/dist/inputs/upload/config.js.map +1 -0
  106. package/dist/inputs/upload/crop-session.d.ts +6 -0
  107. package/dist/inputs/upload/crop-session.d.ts.map +1 -0
  108. package/dist/inputs/upload/crop-session.js +204 -0
  109. package/dist/inputs/upload/crop-session.js.map +1 -0
  110. package/dist/inputs/upload/crop.d.ts +20 -0
  111. package/dist/inputs/upload/crop.d.ts.map +1 -0
  112. package/dist/inputs/upload/crop.js +124 -0
  113. package/dist/inputs/upload/crop.js.map +1 -0
  114. package/dist/inputs/upload/dom.d.ts +19 -0
  115. package/dist/inputs/upload/dom.d.ts.map +1 -0
  116. package/dist/inputs/upload/dom.js +74 -0
  117. package/dist/inputs/upload/dom.js.map +1 -0
  118. package/dist/inputs/upload/drop.d.ts +10 -0
  119. package/dist/inputs/upload/drop.d.ts.map +1 -0
  120. package/dist/inputs/upload/drop.js +92 -0
  121. package/dist/inputs/upload/drop.js.map +1 -0
  122. package/dist/inputs/upload/files.d.ts +14 -0
  123. package/dist/inputs/upload/files.d.ts.map +1 -0
  124. package/dist/inputs/upload/files.js +82 -0
  125. package/dist/inputs/upload/files.js.map +1 -0
  126. package/dist/inputs/upload/manager.d.ts +36 -0
  127. package/dist/inputs/upload/manager.d.ts.map +1 -0
  128. package/dist/inputs/upload/manager.js +236 -0
  129. package/dist/inputs/upload/manager.js.map +1 -0
  130. package/dist/inputs/upload/markup.d.ts +30 -0
  131. package/dist/inputs/upload/markup.d.ts.map +1 -0
  132. package/dist/inputs/upload/markup.js +118 -0
  133. package/dist/inputs/upload/markup.js.map +1 -0
  134. package/dist/inputs/upload/model.d.ts +41 -0
  135. package/dist/inputs/upload/model.d.ts.map +1 -0
  136. package/dist/inputs/upload/model.js +76 -0
  137. package/dist/inputs/upload/model.js.map +1 -0
  138. package/dist/inputs/upload/state.d.ts +16 -0
  139. package/dist/inputs/upload/state.d.ts.map +1 -0
  140. package/dist/inputs/upload/state.js +181 -0
  141. package/dist/inputs/upload/state.js.map +1 -0
  142. package/dist/inputs/upload/text.d.ts +7 -0
  143. package/dist/inputs/upload/text.d.ts.map +1 -0
  144. package/dist/inputs/upload/text.js +29 -0
  145. package/dist/inputs/upload/text.js.map +1 -0
  146. package/dist/inputs/upload/types.d.ts +86 -0
  147. package/dist/inputs/upload/types.d.ts.map +1 -0
  148. package/dist/inputs/upload/types.js +2 -0
  149. package/dist/inputs/upload/types.js.map +1 -0
  150. package/dist/layer/components/index.d.ts +12 -0
  151. package/dist/layer/components/index.d.ts.map +1 -0
  152. package/dist/layer/components/index.js +12 -0
  153. package/dist/layer/components/index.js.map +1 -0
  154. package/dist/layer/index.d.ts +22 -0
  155. package/dist/layer/index.d.ts.map +1 -0
  156. package/dist/layer/index.js +159 -0
  157. package/dist/layer/index.js.map +1 -0
  158. package/dist/layer/styles/index.scss +6 -0
  159. package/dist/live/components/index.d.ts +15 -0
  160. package/dist/live/components/index.d.ts.map +1 -0
  161. package/dist/live/components/index.js +12 -0
  162. package/dist/live/components/index.js.map +1 -0
  163. package/dist/live/index.d.ts +29 -0
  164. package/dist/live/index.d.ts.map +1 -0
  165. package/dist/live/index.js +103 -0
  166. package/dist/live/index.js.map +1 -0
  167. package/dist/logging/index.d.ts +17 -0
  168. package/dist/logging/index.d.ts.map +1 -0
  169. package/dist/logging/index.js +68 -0
  170. package/dist/logging/index.js.map +1 -0
  171. package/dist/modal/components/index.d.ts +18 -0
  172. package/dist/modal/components/index.d.ts.map +1 -0
  173. package/dist/modal/components/index.js +20 -0
  174. package/dist/modal/components/index.js.map +1 -0
  175. package/dist/modal/index.d.ts +24 -0
  176. package/dist/modal/index.d.ts.map +1 -0
  177. package/dist/modal/index.js +184 -0
  178. package/dist/modal/index.js.map +1 -0
  179. package/dist/modal/styles/index.scss +50 -0
  180. package/dist/popover/components/index.d.ts +14 -0
  181. package/dist/popover/components/index.d.ts.map +1 -0
  182. package/dist/popover/components/index.js +16 -0
  183. package/dist/popover/components/index.js.map +1 -0
  184. package/dist/popover/index.d.ts +16 -0
  185. package/dist/popover/index.d.ts.map +1 -0
  186. package/dist/popover/index.js +140 -0
  187. package/dist/popover/index.js.map +1 -0
  188. package/dist/popover/styles/index.scss +24 -0
  189. package/dist/progress/components/index.d.ts +10 -0
  190. package/dist/progress/components/index.d.ts.map +1 -0
  191. package/dist/progress/components/index.js +14 -0
  192. package/dist/progress/components/index.js.map +1 -0
  193. package/dist/progress/index.d.ts +18 -0
  194. package/dist/progress/index.d.ts.map +1 -0
  195. package/dist/progress/index.js +89 -0
  196. package/dist/progress/index.js.map +1 -0
  197. package/dist/progress/styles/index.scss +16 -0
  198. package/dist/react/index.d.ts +17 -0
  199. package/dist/react/index.d.ts.map +1 -0
  200. package/dist/react/index.js +47 -0
  201. package/dist/react/index.js.map +1 -0
  202. package/dist/src/actions/buttons.d.ts +8 -0
  203. package/dist/src/actions/buttons.d.ts.map +1 -0
  204. package/dist/src/actions/buttons.js +116 -0
  205. package/dist/src/actions/buttons.js.map +1 -0
  206. package/dist/src/actions/components/index.d.ts +26 -0
  207. package/dist/src/actions/components/index.d.ts.map +1 -0
  208. package/dist/src/actions/components/index.js +25 -0
  209. package/dist/src/actions/components/index.js.map +1 -0
  210. package/dist/src/actions/confetti.d.ts +12 -0
  211. package/dist/src/actions/confetti.d.ts.map +1 -0
  212. package/dist/src/actions/confetti.js +36 -0
  213. package/dist/src/actions/confetti.js.map +1 -0
  214. package/dist/src/actions/forms.d.ts +12 -0
  215. package/dist/src/actions/forms.d.ts.map +1 -0
  216. package/dist/src/actions/forms.js +159 -0
  217. package/dist/src/actions/forms.js.map +1 -0
  218. package/dist/src/actions/index.d.ts +8 -0
  219. package/dist/src/actions/index.d.ts.map +1 -0
  220. package/dist/src/actions/index.js +7 -0
  221. package/dist/src/actions/index.js.map +1 -0
  222. package/dist/src/actions/request.d.ts +13 -0
  223. package/dist/src/actions/request.d.ts.map +1 -0
  224. package/dist/src/actions/request.js +83 -0
  225. package/dist/src/actions/request.js.map +1 -0
  226. package/dist/src/actions/response.d.ts +18 -0
  227. package/dist/src/actions/response.d.ts.map +1 -0
  228. package/dist/src/actions/response.js +104 -0
  229. package/dist/src/actions/response.js.map +1 -0
  230. package/dist/src/actions/triggers.d.ts +24 -0
  231. package/dist/src/actions/triggers.d.ts.map +1 -0
  232. package/dist/src/actions/triggers.js +107 -0
  233. package/dist/src/actions/triggers.js.map +1 -0
  234. package/dist/src/actions/types.d.ts +63 -0
  235. package/dist/src/actions/types.d.ts.map +1 -0
  236. package/dist/src/actions/types.js +2 -0
  237. package/dist/src/actions/types.js.map +1 -0
  238. package/dist/src/components/index.d.ts +5 -0
  239. package/dist/src/components/index.d.ts.map +1 -0
  240. package/dist/src/components/index.js +11 -0
  241. package/dist/src/components/index.js.map +1 -0
  242. package/dist/src/dom/index.d.ts +26 -0
  243. package/dist/src/dom/index.d.ts.map +1 -0
  244. package/dist/src/dom/index.js +164 -0
  245. package/dist/src/dom/index.js.map +1 -0
  246. package/dist/src/flash/components/index.d.ts +28 -0
  247. package/dist/src/flash/components/index.d.ts.map +1 -0
  248. package/dist/src/flash/components/index.js +27 -0
  249. package/dist/src/flash/components/index.js.map +1 -0
  250. package/dist/src/flash/dialogs.d.ts +6 -0
  251. package/dist/src/flash/dialogs.d.ts.map +1 -0
  252. package/dist/src/flash/dialogs.js +120 -0
  253. package/dist/src/flash/dialogs.js.map +1 -0
  254. package/dist/src/flash/duration.d.ts +8 -0
  255. package/dist/src/flash/duration.d.ts.map +1 -0
  256. package/dist/src/flash/duration.js +20 -0
  257. package/dist/src/flash/duration.js.map +1 -0
  258. package/dist/src/flash/elements.d.ts +14 -0
  259. package/dist/src/flash/elements.d.ts.map +1 -0
  260. package/dist/src/flash/elements.js +67 -0
  261. package/dist/src/flash/elements.js.map +1 -0
  262. package/dist/src/flash/index.d.ts +8 -0
  263. package/dist/src/flash/index.d.ts.map +1 -0
  264. package/dist/src/flash/index.js +18 -0
  265. package/dist/src/flash/index.js.map +1 -0
  266. package/dist/src/flash/stack.d.ts +6 -0
  267. package/dist/src/flash/stack.d.ts.map +1 -0
  268. package/dist/src/flash/stack.js +56 -0
  269. package/dist/src/flash/stack.js.map +1 -0
  270. package/dist/src/flash/toast.d.ts +24 -0
  271. package/dist/src/flash/toast.d.ts.map +1 -0
  272. package/dist/src/flash/toast.js +67 -0
  273. package/dist/src/flash/toast.js.map +1 -0
  274. package/dist/src/flash/types.d.ts +29 -0
  275. package/dist/src/flash/types.d.ts.map +1 -0
  276. package/dist/src/flash/types.js +2 -0
  277. package/dist/src/flash/types.js.map +1 -0
  278. package/dist/src/http/index.d.ts +30 -0
  279. package/dist/src/http/index.d.ts.map +1 -0
  280. package/dist/src/http/index.js +104 -0
  281. package/dist/src/http/index.js.map +1 -0
  282. package/dist/src/index.d.ts +40 -0
  283. package/dist/src/index.d.ts.map +1 -0
  284. package/dist/src/index.js +104 -0
  285. package/dist/src/index.js.map +1 -0
  286. package/dist/src/inputs/components/index.d.ts +16 -0
  287. package/dist/src/inputs/components/index.d.ts.map +1 -0
  288. package/dist/src/inputs/components/index.js +112 -0
  289. package/dist/src/inputs/components/index.js.map +1 -0
  290. package/dist/src/inputs/index.d.ts +17 -0
  291. package/dist/src/inputs/index.d.ts.map +1 -0
  292. package/dist/src/inputs/index.js +54 -0
  293. package/dist/src/inputs/index.js.map +1 -0
  294. package/dist/src/inputs/upload/config.d.ts +57 -0
  295. package/dist/src/inputs/upload/config.d.ts.map +1 -0
  296. package/dist/src/inputs/upload/config.js +61 -0
  297. package/dist/src/inputs/upload/config.js.map +1 -0
  298. package/dist/src/inputs/upload/crop-session.d.ts +6 -0
  299. package/dist/src/inputs/upload/crop-session.d.ts.map +1 -0
  300. package/dist/src/inputs/upload/crop-session.js +204 -0
  301. package/dist/src/inputs/upload/crop-session.js.map +1 -0
  302. package/dist/src/inputs/upload/crop.d.ts +20 -0
  303. package/dist/src/inputs/upload/crop.d.ts.map +1 -0
  304. package/dist/src/inputs/upload/crop.js +124 -0
  305. package/dist/src/inputs/upload/crop.js.map +1 -0
  306. package/dist/src/inputs/upload/dom.d.ts +19 -0
  307. package/dist/src/inputs/upload/dom.d.ts.map +1 -0
  308. package/dist/src/inputs/upload/dom.js +74 -0
  309. package/dist/src/inputs/upload/dom.js.map +1 -0
  310. package/dist/src/inputs/upload/drop.d.ts +10 -0
  311. package/dist/src/inputs/upload/drop.d.ts.map +1 -0
  312. package/dist/src/inputs/upload/drop.js +92 -0
  313. package/dist/src/inputs/upload/drop.js.map +1 -0
  314. package/dist/src/inputs/upload/files.d.ts +14 -0
  315. package/dist/src/inputs/upload/files.d.ts.map +1 -0
  316. package/dist/src/inputs/upload/files.js +82 -0
  317. package/dist/src/inputs/upload/files.js.map +1 -0
  318. package/dist/src/inputs/upload/manager.d.ts +36 -0
  319. package/dist/src/inputs/upload/manager.d.ts.map +1 -0
  320. package/dist/src/inputs/upload/manager.js +236 -0
  321. package/dist/src/inputs/upload/manager.js.map +1 -0
  322. package/dist/src/inputs/upload/markup.d.ts +30 -0
  323. package/dist/src/inputs/upload/markup.d.ts.map +1 -0
  324. package/dist/src/inputs/upload/markup.js +118 -0
  325. package/dist/src/inputs/upload/markup.js.map +1 -0
  326. package/dist/src/inputs/upload/model.d.ts +41 -0
  327. package/dist/src/inputs/upload/model.d.ts.map +1 -0
  328. package/dist/src/inputs/upload/model.js +76 -0
  329. package/dist/src/inputs/upload/model.js.map +1 -0
  330. package/dist/src/inputs/upload/state.d.ts +16 -0
  331. package/dist/src/inputs/upload/state.d.ts.map +1 -0
  332. package/dist/src/inputs/upload/state.js +181 -0
  333. package/dist/src/inputs/upload/state.js.map +1 -0
  334. package/dist/src/inputs/upload/text.d.ts +7 -0
  335. package/dist/src/inputs/upload/text.d.ts.map +1 -0
  336. package/dist/src/inputs/upload/text.js +29 -0
  337. package/dist/src/inputs/upload/text.js.map +1 -0
  338. package/dist/src/inputs/upload/types.d.ts +86 -0
  339. package/dist/src/inputs/upload/types.d.ts.map +1 -0
  340. package/dist/src/inputs/upload/types.js +2 -0
  341. package/dist/src/inputs/upload/types.js.map +1 -0
  342. package/dist/src/layer/components/index.d.ts +12 -0
  343. package/dist/src/layer/components/index.d.ts.map +1 -0
  344. package/dist/src/layer/components/index.js +12 -0
  345. package/dist/src/layer/components/index.js.map +1 -0
  346. package/dist/src/layer/index.d.ts +22 -0
  347. package/dist/src/layer/index.d.ts.map +1 -0
  348. package/dist/src/layer/index.js +159 -0
  349. package/dist/src/layer/index.js.map +1 -0
  350. package/dist/src/live/components/index.d.ts +15 -0
  351. package/dist/src/live/components/index.d.ts.map +1 -0
  352. package/dist/src/live/components/index.js +12 -0
  353. package/dist/src/live/components/index.js.map +1 -0
  354. package/dist/src/live/index.d.ts +29 -0
  355. package/dist/src/live/index.d.ts.map +1 -0
  356. package/dist/src/live/index.js +103 -0
  357. package/dist/src/live/index.js.map +1 -0
  358. package/dist/src/logging/index.d.ts +17 -0
  359. package/dist/src/logging/index.d.ts.map +1 -0
  360. package/dist/src/logging/index.js +68 -0
  361. package/dist/src/logging/index.js.map +1 -0
  362. package/dist/src/modal/components/index.d.ts +18 -0
  363. package/dist/src/modal/components/index.d.ts.map +1 -0
  364. package/dist/src/modal/components/index.js +20 -0
  365. package/dist/src/modal/components/index.js.map +1 -0
  366. package/dist/src/modal/index.d.ts +24 -0
  367. package/dist/src/modal/index.d.ts.map +1 -0
  368. package/dist/src/modal/index.js +184 -0
  369. package/dist/src/modal/index.js.map +1 -0
  370. package/dist/src/popover/components/index.d.ts +14 -0
  371. package/dist/src/popover/components/index.d.ts.map +1 -0
  372. package/dist/src/popover/components/index.js +16 -0
  373. package/dist/src/popover/components/index.js.map +1 -0
  374. package/dist/src/popover/index.d.ts +16 -0
  375. package/dist/src/popover/index.d.ts.map +1 -0
  376. package/dist/src/popover/index.js +140 -0
  377. package/dist/src/popover/index.js.map +1 -0
  378. package/dist/src/progress/components/index.d.ts +10 -0
  379. package/dist/src/progress/components/index.d.ts.map +1 -0
  380. package/dist/src/progress/components/index.js +14 -0
  381. package/dist/src/progress/components/index.js.map +1 -0
  382. package/dist/src/progress/index.d.ts +18 -0
  383. package/dist/src/progress/index.d.ts.map +1 -0
  384. package/dist/src/progress/index.js +89 -0
  385. package/dist/src/progress/index.js.map +1 -0
  386. package/dist/src/react/index.d.ts +17 -0
  387. package/dist/src/react/index.d.ts.map +1 -0
  388. package/dist/src/react/index.js +47 -0
  389. package/dist/src/react/index.js.map +1 -0
  390. package/dist/src/styles/index.d.ts +3 -0
  391. package/dist/src/styles/index.d.ts.map +1 -0
  392. package/dist/src/styles/index.js +14 -0
  393. package/dist/src/styles/index.js.map +1 -0
  394. package/dist/src/theme/components/index.d.ts +14 -0
  395. package/dist/src/theme/components/index.d.ts.map +1 -0
  396. package/dist/src/theme/components/index.js +13 -0
  397. package/dist/src/theme/components/index.js.map +1 -0
  398. package/dist/src/theme/index.d.ts +26 -0
  399. package/dist/src/theme/index.d.ts.map +1 -0
  400. package/dist/src/theme/index.js +119 -0
  401. package/dist/src/theme/index.js.map +1 -0
  402. package/dist/src/tooltip/components/index.d.ts +17 -0
  403. package/dist/src/tooltip/components/index.d.ts.map +1 -0
  404. package/dist/src/tooltip/components/index.js +20 -0
  405. package/dist/src/tooltip/components/index.js.map +1 -0
  406. package/dist/src/tooltip/index.d.ts +10 -0
  407. package/dist/src/tooltip/index.d.ts.map +1 -0
  408. package/dist/src/tooltip/index.js +171 -0
  409. package/dist/src/tooltip/index.js.map +1 -0
  410. package/dist/styles/index.d.ts +3 -0
  411. package/dist/styles/index.d.ts.map +1 -0
  412. package/dist/styles/index.js +14 -0
  413. package/dist/styles/index.js.map +1 -0
  414. package/dist/styles/tokens.scss +22 -0
  415. package/dist/styles/utils.scss +220 -0
  416. package/dist/theme/components/index.d.ts +14 -0
  417. package/dist/theme/components/index.d.ts.map +1 -0
  418. package/dist/theme/components/index.js +13 -0
  419. package/dist/theme/components/index.js.map +1 -0
  420. package/dist/theme/index.d.ts +26 -0
  421. package/dist/theme/index.d.ts.map +1 -0
  422. package/dist/theme/index.js +119 -0
  423. package/dist/theme/index.js.map +1 -0
  424. package/dist/tooltip/components/index.d.ts +17 -0
  425. package/dist/tooltip/components/index.d.ts.map +1 -0
  426. package/dist/tooltip/components/index.js +20 -0
  427. package/dist/tooltip/components/index.js.map +1 -0
  428. package/dist/tooltip/index.d.ts +10 -0
  429. package/dist/tooltip/index.d.ts.map +1 -0
  430. package/dist/tooltip/index.js +171 -0
  431. package/dist/tooltip/index.js.map +1 -0
  432. package/dist/tooltip/styles/index.scss +17 -0
  433. package/package.json +232 -0
@@ -0,0 +1,184 @@
1
+ import { cssEscape, queryAll, resolveDocumentTarget, } from "../dom/index.js";
2
+ import { moveLayerElementToTop, portalElement, stackZIndex, applyZIndex, } from "../layer/index.js";
3
+ const MODAL_BASE_Z_INDEX = 1060;
4
+ const MODAL_SELECTOR = "[data-tbf-modal]";
5
+ const MODAL_CONTENT_SELECTOR = "[data-tbf-modal-content]";
6
+ const MODAL_CLOSE_SELECTOR = "[data-tbf-modal-close]";
7
+ const MODAL_TRIGGER_SELECTOR = "[data-tbf-modal-open][aria-controls]";
8
+ const FOCUSABLE_SELECTOR = [
9
+ "button:not([disabled])",
10
+ "[href]",
11
+ "input:not([disabled]):not([type='hidden'])",
12
+ "select:not([disabled])",
13
+ "textarea:not([disabled])",
14
+ "[tabindex]:not([tabindex='-1'])",
15
+ ].join(",");
16
+ const modalStack = [];
17
+ const triggerBindings = new WeakMap();
18
+ let listenersInstalled = false;
19
+ let originalBodyOverflow = "";
20
+ function findModalTarget(root, trigger) {
21
+ const id = String(trigger.getAttribute("aria-controls") || "").trim();
22
+ if (!id)
23
+ return null;
24
+ const scoped = root.querySelector(`#${cssEscape(id)}`);
25
+ if (scoped instanceof HTMLElement)
26
+ return scoped;
27
+ return resolveDocumentTarget(`#${id}`);
28
+ }
29
+ function prepareModal(modal) {
30
+ modal.setAttribute("data-tbf-modal", "");
31
+ if (!modal.hasAttribute("role"))
32
+ modal.setAttribute("role", "dialog");
33
+ if (!modal.hasAttribute("aria-hidden"))
34
+ modal.setAttribute("aria-hidden", "true");
35
+ modal.removeAttribute("data-tbf-open");
36
+ modal.removeAttribute("data-tbf-opening");
37
+ modal.removeAttribute("data-tbf-closing");
38
+ }
39
+ function focusModal(modal) {
40
+ const target = modal.querySelector("[autofocus]") ||
41
+ modal.querySelector(MODAL_CONTENT_SELECTOR) ||
42
+ modal.querySelector(FOCUSABLE_SELECTOR) ||
43
+ modal;
44
+ if (!target.hasAttribute("tabindex"))
45
+ target.setAttribute("tabindex", "-1");
46
+ target.focus({ preventScroll: true });
47
+ }
48
+ function lockBodyScroll(lock) {
49
+ if (!document.body)
50
+ return;
51
+ if (lock && modalStack.length === 1) {
52
+ originalBodyOverflow = document.body.style.overflow;
53
+ document.body.style.overflow = "hidden";
54
+ }
55
+ if (!lock && modalStack.length === 0) {
56
+ document.body.style.overflow = originalBodyOverflow;
57
+ }
58
+ }
59
+ function setTopStates() {
60
+ modalStack.forEach((entry, index) => {
61
+ const top = index === modalStack.length - 1;
62
+ entry.modal.toggleAttribute("inert", !top);
63
+ entry.modal.setAttribute("aria-hidden", top ? "false" : "true");
64
+ entry.modal.setAttribute("data-tbf-top", top ? "true" : "false");
65
+ });
66
+ }
67
+ function openModal(modalOrSelector, trigger = null) {
68
+ const modal = resolveDocumentTarget(modalOrSelector);
69
+ if (!(modal instanceof HTMLElement))
70
+ return null;
71
+ prepareModal(modal);
72
+ portalElement(modal);
73
+ moveLayerElementToTop(modal);
74
+ const existingIndex = modalStack.findIndex((entry) => entry.modal === modal);
75
+ if (existingIndex >= 0)
76
+ modalStack.splice(existingIndex, 1);
77
+ modalStack.push({ modal, trigger });
78
+ applyZIndex(modal, {
79
+ fallback: stackZIndex(MODAL_BASE_Z_INDEX, modalStack.length - 1),
80
+ });
81
+ modal.setAttribute("data-tbf-opening", "true");
82
+ modal.setAttribute("aria-hidden", "false");
83
+ setTopStates();
84
+ lockBodyScroll(true);
85
+ window.requestAnimationFrame(() => {
86
+ modal.removeAttribute("data-tbf-opening");
87
+ modal.setAttribute("data-tbf-open", "true");
88
+ focusModal(modal);
89
+ modal.dispatchEvent(new CustomEvent("tbf:modal-ready", { bubbles: true }));
90
+ });
91
+ return modal;
92
+ }
93
+ function closeModal(modalOrSelector) {
94
+ const modal = modalOrSelector
95
+ ? resolveDocumentTarget(modalOrSelector)
96
+ : modalStack[modalStack.length - 1]?.modal;
97
+ if (!(modal instanceof HTMLElement))
98
+ return false;
99
+ const index = modalStack.findIndex((entry) => entry.modal === modal);
100
+ if (index < 0)
101
+ return false;
102
+ const [entry] = modalStack.splice(index, 1);
103
+ modal.removeAttribute("data-tbf-open");
104
+ modal.setAttribute("data-tbf-closing", "true");
105
+ modal.setAttribute("aria-hidden", "true");
106
+ window.setTimeout(() => {
107
+ modal.removeAttribute("data-tbf-closing");
108
+ modal.removeAttribute("data-tbf-top");
109
+ modal.toggleAttribute("inert", true);
110
+ }, 220);
111
+ setTopStates();
112
+ lockBodyScroll(false);
113
+ entry.trigger?.focus?.({ preventScroll: true });
114
+ return true;
115
+ }
116
+ function closeAllModals() {
117
+ Array.from(modalStack)
118
+ .reverse()
119
+ .forEach((entry) => closeModal(entry.modal));
120
+ }
121
+ function bindModalTrigger(trigger, root = document) {
122
+ if (!(trigger instanceof HTMLElement))
123
+ return null;
124
+ const modal = findModalTarget(root, trigger);
125
+ if (!(modal instanceof HTMLElement))
126
+ return null;
127
+ prepareModal(modal);
128
+ trigger.setAttribute("aria-haspopup", "dialog");
129
+ const existing = triggerBindings.get(trigger);
130
+ if (existing)
131
+ return modal;
132
+ const onClick = (event) => {
133
+ event.preventDefault();
134
+ openModal(modal, trigger);
135
+ };
136
+ trigger.addEventListener("click", onClick);
137
+ triggerBindings.set(trigger, () => trigger.removeEventListener("click", onClick));
138
+ installModalListeners();
139
+ return modal;
140
+ }
141
+ function bindModals(root = document) {
142
+ queryAll(root, MODAL_SELECTOR).forEach(prepareModal);
143
+ queryAll(root, MODAL_TRIGGER_SELECTOR).forEach((trigger) => {
144
+ bindModalTrigger(trigger, root);
145
+ });
146
+ }
147
+ function installModalListeners() {
148
+ if (listenersInstalled)
149
+ return;
150
+ listenersInstalled = true;
151
+ document.addEventListener("click", (event) => {
152
+ const target = event.target instanceof Element ? event.target : null;
153
+ const closer = target?.closest(MODAL_CLOSE_SELECTOR);
154
+ if (closer)
155
+ closeModal(closer.closest(MODAL_SELECTOR));
156
+ });
157
+ document.addEventListener("keydown", (event) => {
158
+ if (event.key === "Escape")
159
+ closeModal();
160
+ });
161
+ }
162
+ function createModal(options) {
163
+ const modal = document.createElement("div");
164
+ modal.id = options.id;
165
+ modal.className = "tbf-modal";
166
+ modal.setAttribute("data-tbf-modal", "");
167
+ const content = document.createElement("div");
168
+ content.className = "tbf-modal__content";
169
+ content.setAttribute("data-tbf-modal-content", "");
170
+ if (options.title) {
171
+ const title = document.createElement("h2");
172
+ title.textContent = options.title;
173
+ content.appendChild(title);
174
+ }
175
+ if (typeof options.content === "string")
176
+ content.insertAdjacentHTML("beforeend", options.content);
177
+ else if (options.content)
178
+ content.appendChild(options.content);
179
+ modal.appendChild(content);
180
+ prepareModal(modal);
181
+ return modal;
182
+ }
183
+ export { FOCUSABLE_SELECTOR, MODAL_CLOSE_SELECTOR, MODAL_CONTENT_SELECTOR, MODAL_SELECTOR, MODAL_TRIGGER_SELECTOR, bindModalTrigger, bindModals, closeAllModals, closeModal, createModal, openModal, prepareModal, };
184
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modal/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ .tbf-modal,
2
+ [data-tbf-modal] {
3
+ position: fixed;
4
+ inset: 0;
5
+ display: grid;
6
+ place-items: center;
7
+ box-sizing: border-box;
8
+ padding: 24px;
9
+ background: var(--tbf-overlay, rgb(0 0 0 / 48%));
10
+ opacity: 0;
11
+ visibility: hidden;
12
+ pointer-events: none;
13
+ transition:
14
+ opacity var(--tbf-transition-normal) ease,
15
+ visibility 0s linear var(--tbf-transition-normal);
16
+ }
17
+
18
+ [data-tbf-modal][data-tbf-open="true"],
19
+ [data-tbf-modal][data-tbf-opening="true"],
20
+ [data-tbf-modal][data-tbf-closing="true"] {
21
+ visibility: visible;
22
+ }
23
+
24
+ [data-tbf-modal][data-tbf-open="true"] {
25
+ opacity: 1;
26
+ pointer-events: auto;
27
+ transition:
28
+ opacity var(--tbf-transition-normal) ease,
29
+ visibility 0s;
30
+ }
31
+
32
+ .tbf-modal__content,
33
+ [data-tbf-modal-content] {
34
+ width: min(720px, calc(100vw - 48px));
35
+ max-height: min(80vh, 720px);
36
+ box-sizing: border-box;
37
+ padding: 20px;
38
+ overflow-y: auto;
39
+ border: var(--tbf-border-width, 1px) solid var(--tbf-border, #000);
40
+ border-radius: var(--tbf-radius, 0);
41
+ color: var(--tbf-text, #000);
42
+ background: var(--tbf-surface, #fff);
43
+ box-shadow: var(--tbf-shadow, 0 0 0 1px #000);
44
+ transform: scale(0.96);
45
+ transition: transform var(--tbf-transition-normal) ease;
46
+ }
47
+
48
+ [data-tbf-modal][data-tbf-open="true"] [data-tbf-modal-content] {
49
+ transform: scale(1);
50
+ }
@@ -0,0 +1,14 @@
1
+ import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from "react";
2
+ type PopoverPanelProps = HTMLAttributes<HTMLDivElement> & {
3
+ children?: ReactNode;
4
+ };
5
+ type PopoverOpenButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
6
+ controls: string;
7
+ hover?: boolean;
8
+ };
9
+ declare function PopoverPanel(props: PopoverPanelProps): import("react").JSX.Element;
10
+ declare function PopoverOpenButton(props: PopoverOpenButtonProps): import("react").JSX.Element;
11
+ declare function PopoverCloseButton(props: ButtonHTMLAttributes<HTMLButtonElement>): import("react").JSX.Element;
12
+ export { PopoverCloseButton, PopoverOpenButton, PopoverPanel };
13
+ export type { PopoverOpenButtonProps, PopoverPanelProps };
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/popover/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,cAAc,EACd,SAAS,EACV,MAAM,OAAO,CAAC;AAGf,KAAK,iBAAiB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IACxD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,KAAK,sBAAsB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,iBAAS,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAY7C;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,+BAevD;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,+BAYzE;AAED,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { classNames, dataBool } from "../../components/index.js";
3
+ function PopoverPanel(props) {
4
+ const { children, className, ...rest } = props;
5
+ return (_jsx("div", { ...rest, className: classNames("tbf-popover", className), "data-tbf-popover": "", "aria-hidden": "true", children: children }));
6
+ }
7
+ function PopoverOpenButton(props) {
8
+ const { children, className, controls, hover, type = "button", ...rest } = props;
9
+ return (_jsx("button", { ...rest, className: classNames("tbf-button", className), "data-tbf-popover-hover": dataBool(hover), "data-tbf-popover-open": "", "aria-controls": controls, "aria-expanded": "false", type: type, children: children }));
10
+ }
11
+ function PopoverCloseButton(props) {
12
+ const { children = "Close", className, type = "button", ...rest } = props;
13
+ return (_jsx("button", { ...rest, className: classNames("tbf-button", className), "data-tbf-popover-close": "", type: type, children: children }));
14
+ }
15
+ export { PopoverCloseButton, PopoverOpenButton, PopoverPanel };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/popover/components/index.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAWrD,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC/C,OAAO,CACL,iBACM,IAAI,EACR,SAAS,EAAE,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,sBAC9B,EAAE,iBACP,MAAM,YAEjB,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA6B;IACtD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACjF,OAAO,CACL,oBACM,IAAI,EACR,SAAS,EAAE,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,4BACtB,QAAQ,CAAC,KAAK,CAAC,2BACjB,EAAE,mBACT,QAAQ,mBACT,OAAO,EACrB,IAAI,EAAE,IAAI,YAET,QAAQ,GACF,CACV,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA8C;IACxE,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC1E,OAAO,CACL,oBACM,IAAI,EACR,SAAS,EAAE,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,4BACvB,EAAE,EACzB,IAAI,EAAE,IAAI,YAET,QAAQ,GACF,CACV,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type BindRoot } from "../dom/index.d.ts";
2
+ declare const POPOVER_TRIGGER_SELECTOR = "[data-tbf-popover-open][aria-controls]";
3
+ declare const POPOVER_CLOSE_SELECTOR = "[data-tbf-popover-close]";
4
+ type PopoverEntry = {
5
+ hover: boolean;
6
+ popover: HTMLElement;
7
+ trigger: HTMLElement;
8
+ };
9
+ declare function showPopover(entry: PopoverEntry): void;
10
+ declare function hidePopover(popoverOrTrigger?: HTMLElement | null): boolean;
11
+ declare function togglePopover(entry: PopoverEntry): void;
12
+ declare function bindPopoverTrigger(trigger: HTMLElement | null, root?: BindRoot): PopoverEntry;
13
+ declare function bindPopovers(root?: BindRoot): void;
14
+ export { POPOVER_CLOSE_SELECTOR, POPOVER_TRIGGER_SELECTOR, bindPopoverTrigger, bindPopovers, hidePopover, showPopover, togglePopover, };
15
+ export type { PopoverEntry };
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/popover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQpF,QAAA,MAAM,wBAAwB,2CAA2C,CAAC;AAC1E,QAAA,MAAM,sBAAsB,6BAA6B,CAAC;AAE1D,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACtB,CAAC;AA2CF,iBAAS,WAAW,CAAC,KAAK,EAAE,YAAY,QAUvC;AAED,iBAAS,WAAW,CAAC,gBAAgB,CAAC,EAAE,WAAW,GAAG,IAAI,WAUzD;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,YAAY,QAGzC;AAYD,iBAAS,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,IAAI,GAAE,QAAmB,gBA6BjF;AAED,iBAAS,YAAY,CAAC,IAAI,GAAE,QAAmB,QAI9C;AAmBD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,GACd,CAAC;AACF,YAAY,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,140 @@
1
+ import { cssEscape, queryAll, setAriaExpanded } from "../dom/index.js";
2
+ import { moveLayerElementToTop, portalElement, promoteZIndex, } from "../layer/index.js";
3
+ const POPOVER_BASE_Z_INDEX = 1040;
4
+ const POPOVER_TRIGGER_SELECTOR = "[data-tbf-popover-open][aria-controls]";
5
+ const POPOVER_CLOSE_SELECTOR = "[data-tbf-popover-close]";
6
+ const entries = new Map();
7
+ const cleanups = new WeakMap();
8
+ let openEntry = null;
9
+ let listenersInstalled = false;
10
+ function clamp(value, min, max) {
11
+ return Math.max(min, Math.min(max, value));
12
+ }
13
+ function findPopoverTarget(root, id) {
14
+ const scoped = root.querySelector(`#${cssEscape(id)}`);
15
+ if (scoped instanceof HTMLElement)
16
+ return scoped;
17
+ const global = document.getElementById(id);
18
+ return global instanceof HTMLElement ? global : null;
19
+ }
20
+ function placePopover(trigger, popover) {
21
+ const anchor = trigger.getBoundingClientRect();
22
+ const rect = popover.getBoundingClientRect();
23
+ const gap = 8;
24
+ const vw = window.innerWidth;
25
+ const vh = window.innerHeight;
26
+ const below = anchor.bottom + gap + rect.height <= vh;
27
+ const top = below
28
+ ? anchor.bottom + gap
29
+ : clamp(anchor.top - gap - rect.height, gap, vh - rect.height - gap);
30
+ const left = clamp(anchor.left + anchor.width / 2 - rect.width / 2, gap, vw - rect.width - gap);
31
+ popover.style.top = `${top}px`;
32
+ popover.style.left = `${left}px`;
33
+ popover.setAttribute("data-tbf-position", below ? "below" : "above");
34
+ }
35
+ function setPopoverExpanded(entry, open) {
36
+ setAriaExpanded(entry.trigger, open);
37
+ entry.popover.setAttribute("aria-hidden", open ? "false" : "true");
38
+ }
39
+ function showPopover(entry) {
40
+ if (openEntry && openEntry !== entry)
41
+ hidePopover(openEntry.popover);
42
+ portalElement(entry.popover);
43
+ moveLayerElementToTop(entry.popover);
44
+ promoteZIndex(entry.popover, { fallback: POPOVER_BASE_Z_INDEX });
45
+ entry.popover.setAttribute("data-tbf-popover", "");
46
+ placePopover(entry.trigger, entry.popover);
47
+ entry.popover.setAttribute("data-tbf-open", "true");
48
+ setPopoverExpanded(entry, true);
49
+ openEntry = entry;
50
+ }
51
+ function hidePopover(popoverOrTrigger) {
52
+ const entry = popoverOrTrigger
53
+ ? entries.get(popoverOrTrigger) ||
54
+ Array.from(entries.values()).find((item) => item.popover === popoverOrTrigger)
55
+ : openEntry;
56
+ if (!entry)
57
+ return false;
58
+ entry.popover.removeAttribute("data-tbf-open");
59
+ setPopoverExpanded(entry, false);
60
+ if (openEntry === entry)
61
+ openEntry = null;
62
+ return true;
63
+ }
64
+ function togglePopover(entry) {
65
+ if (openEntry === entry)
66
+ hidePopover(entry.popover);
67
+ else
68
+ showPopover(entry);
69
+ }
70
+ function bindPopoverClose(entry) {
71
+ const onClick = (event) => {
72
+ const target = event.target instanceof Element ? event.target : null;
73
+ const close = target?.closest(POPOVER_CLOSE_SELECTOR);
74
+ if (close && entry.popover.contains(close))
75
+ hidePopover(entry.popover);
76
+ };
77
+ entry.popover.addEventListener("click", onClick);
78
+ return () => entry.popover.removeEventListener("click", onClick);
79
+ }
80
+ function bindPopoverTrigger(trigger, root = document) {
81
+ if (!(trigger instanceof HTMLElement))
82
+ return null;
83
+ const id = String(trigger.getAttribute("aria-controls") || "").trim();
84
+ const popover = id ? findPopoverTarget(root, id) : null;
85
+ if (!(popover instanceof HTMLElement))
86
+ return null;
87
+ const existing = entries.get(trigger);
88
+ if (existing?.popover === popover)
89
+ return existing;
90
+ cleanups.get(trigger)?.();
91
+ const entry = {
92
+ hover: trigger.getAttribute("data-tbf-popover-hover") === "true",
93
+ popover,
94
+ trigger,
95
+ };
96
+ popover.setAttribute("data-tbf-popover", "");
97
+ setPopoverExpanded(entry, false);
98
+ const onClick = (event) => {
99
+ event.preventDefault();
100
+ event.stopPropagation();
101
+ togglePopover(entry);
102
+ };
103
+ trigger.addEventListener("click", onClick);
104
+ const closeCleanup = bindPopoverClose(entry);
105
+ cleanups.set(trigger, () => {
106
+ trigger.removeEventListener("click", onClick);
107
+ closeCleanup();
108
+ });
109
+ entries.set(trigger, entry);
110
+ installPopoverListeners();
111
+ return entry;
112
+ }
113
+ function bindPopovers(root = document) {
114
+ queryAll(root, POPOVER_TRIGGER_SELECTOR).forEach((trigger) => {
115
+ bindPopoverTrigger(trigger, root);
116
+ });
117
+ }
118
+ function installPopoverListeners() {
119
+ if (listenersInstalled)
120
+ return;
121
+ listenersInstalled = true;
122
+ document.addEventListener("click", (event) => {
123
+ const target = event.target instanceof Node ? event.target : null;
124
+ if (!openEntry || !target)
125
+ return;
126
+ if (openEntry.popover.contains(target) || openEntry.trigger.contains(target))
127
+ return;
128
+ hidePopover();
129
+ });
130
+ document.addEventListener("keydown", (event) => {
131
+ if (event.key === "Escape")
132
+ hidePopover();
133
+ });
134
+ window.addEventListener("resize", () => {
135
+ if (openEntry)
136
+ placePopover(openEntry.trigger, openEntry.popover);
137
+ });
138
+ }
139
+ export { POPOVER_CLOSE_SELECTOR, POPOVER_TRIGGER_SELECTOR, bindPopoverTrigger, bindPopovers, hidePopover, showPopover, togglePopover, };
140
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/popover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAiB,MAAM,eAAe,CAAC;AACpF,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,wBAAwB,GAAG,wCAAwC,CAAC;AAC1E,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAQ1D,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;AACrD,MAAM,QAAQ,GAAG,IAAI,OAAO,EAA2B,CAAC;AACxD,IAAI,SAAS,GAAwB,IAAI,CAAC;AAC1C,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc,EAAE,EAAU;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,MAAM,YAAY,WAAW;QAAE,OAAO,MAAM,CAAC;IACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAC3C,OAAO,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,SAAS,YAAY,CAAC,OAAoB,EAAE,OAAoB;IAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAG,CAAC,CAAC;IACd,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;IAC7B,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACtD,MAAM,GAAG,GAAG,KAAK;QACf,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;QACrB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,KAAK,CAChB,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,EAC/C,GAAG,EACH,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,GAAG,CACtB,CAAC;IACF,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;IACjC,OAAO,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAmB,EAAE,IAAa;IAC5D,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,WAAW,CAAC,KAAmB;IACtC,IAAI,SAAS,IAAI,SAAS,KAAK,KAAK;QAAE,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACrE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACjE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACnD,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACpD,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChC,SAAS,GAAG,KAAK,CAAC;AACpB,CAAC;AAED,SAAS,WAAW,CAAC,gBAAqC;IACxD,MAAM,KAAK,GAAG,gBAAgB;QAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,gBAAgB,CAAC;QAChF,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAC/C,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,IAAI,SAAS,KAAK,KAAK;QAAE,SAAS,GAAG,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,KAAmB;IACxC,IAAI,SAAS,KAAK,KAAK;QAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;QAC/C,WAAW,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAmB;IAC3C,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACtD,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjD,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,kBAAkB,CAAC,OAA2B,EAAE,OAAiB,QAAQ;IAChF,IAAI,CAAC,CAAC,OAAO,YAAY,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,IAAI,CAAC,CAAC,OAAO,YAAY,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,QAAQ,EAAE,OAAO,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC;IACnD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG;QACZ,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,wBAAwB,CAAC,KAAK,MAAM;QAChE,OAAO;QACP,OAAO;KACR,CAAC;IACF,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAC7C,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE;QACpC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,aAAa,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC;IACF,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7C,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;QACzB,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5B,uBAAuB,EAAE,CAAC;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,OAAiB,QAAQ;IAC7C,QAAQ,CAAc,IAAI,EAAE,wBAAwB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACxE,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB;IAC9B,IAAI,kBAAkB;QAAE,OAAO;IAC/B,kBAAkB,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;YAAE,OAAO;QAClC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO;QACrF,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;YAAE,WAAW,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;QACrC,IAAI,SAAS;YAAE,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,GACd,CAAC"}
@@ -0,0 +1,24 @@
1
+ .tbf-popover,
2
+ [data-tbf-popover] {
3
+ position: fixed;
4
+ min-width: 220px;
5
+ max-width: min(320px, calc(100vw - 24px));
6
+ padding: 8px;
7
+ border: var(--tbf-border-width, 1px) solid var(--tbf-border, #000);
8
+ border-radius: var(--tbf-radius, 0);
9
+ color: var(--tbf-text, #000);
10
+ background: var(--tbf-surface, #fff);
11
+ box-shadow: var(--tbf-shadow, 0 0 0 1px #000);
12
+ opacity: 0;
13
+ pointer-events: none;
14
+ transform: translateY(8px);
15
+ transition:
16
+ opacity var(--tbf-transition-fast) ease,
17
+ transform var(--tbf-transition-fast) ease;
18
+ }
19
+
20
+ [data-tbf-popover][data-tbf-open="true"] {
21
+ opacity: 1;
22
+ pointer-events: auto;
23
+ transform: translateY(0);
24
+ }
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes } from "react";
2
+ type ProgressRootProps = HTMLAttributes<HTMLDivElement> & {
3
+ active?: boolean;
4
+ id?: string;
5
+ value?: number;
6
+ };
7
+ declare function ProgressRoot(props: ProgressRootProps): import("react").JSX.Element;
8
+ export { ProgressRoot };
9
+ export type { ProgressRootProps };
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/progress/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAG5C,KAAK,iBAAiB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAQF,iBAAS,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAgB7C;AAED,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { classNames, dataBool } from "../../components/index.js";
3
+ function normalizedProgress(value) {
4
+ const numeric = Number(value);
5
+ if (!Number.isFinite(numeric))
6
+ return 0;
7
+ return Math.max(0, Math.min(1, numeric));
8
+ }
9
+ function ProgressRoot(props) {
10
+ const { active, className, id = "tbf_progress", value = 0, ...rest } = props;
11
+ return (_jsx("div", { ...rest, className: classNames("tbf-progress", className), "data-tbf-progress-active": dataBool(active), id: id, "aria-hidden": "true", children: _jsx("span", { className: "tbf-progress__bar", style: { transform: `scaleX(${normalizedProgress(value)})` } }) }));
12
+ }
13
+ export { ProgressRoot };
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/progress/components/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQrD,SAAS,kBAAkB,CAAC,KAAyB;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,cAAc,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC7E,OAAO,CACL,iBACM,IAAI,EACR,SAAS,EAAE,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC,8BACtB,QAAQ,CAAC,MAAM,CAAC,EAC1C,EAAE,EAAE,EAAE,iBACM,MAAM,YAElB,eACE,SAAS,EAAC,mBAAmB,EAC7B,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,GAC5D,GACE,CACP,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ declare const PROGRESS_ID = "tbf_progress";
2
+ declare const MAX_UPLOAD_PROGRESS = 0.95;
3
+ type ProgressHandle = {
4
+ begin: () => number;
5
+ boot: () => HTMLElement | null;
6
+ end: (force?: boolean) => number;
7
+ set: (value: number) => number;
8
+ setFromProgressEvent: (event: ProgressEvent) => number;
9
+ };
10
+ declare function setProgress(value: number): number;
11
+ declare function beginProgress(): number;
12
+ declare function endProgress(force?: boolean): number;
13
+ declare function setProgressFromEvent(event: ProgressEvent): number;
14
+ declare function bindProgress(): ProgressHandle;
15
+ declare const progress: ProgressHandle;
16
+ export { MAX_UPLOAD_PROGRESS, PROGRESS_ID, beginProgress, bindProgress, endProgress, progress, setProgress, setProgressFromEvent, };
17
+ export type { ProgressHandle };
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/progress/index.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,WAAW,iBAAiB,CAAC;AACnC,QAAA,MAAM,mBAAmB,OAAO,CAAC;AAEjC,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,MAAM,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IAC/B,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IACjC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,oBAAoB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,CAAC;CACxD,CAAC;AAyBF,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,UAUjC;AAED,iBAAS,aAAa,WAQrB;AAED,iBAAS,WAAW,CAAC,KAAK,UAAQ,UAgBjC;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,aAAa,UAMjD;AAED,iBAAS,YAAY,mBAGpB;AAED,QAAA,MAAM,QAAQ,EAAE,cAMd,CAAC;AAEH,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,WAAW,EACX,oBAAoB,GACrB,CAAC;AACF,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,89 @@
1
+ const PROGRESS_ID = "tbf_progress";
2
+ const MAX_UPLOAD_PROGRESS = 0.95;
3
+ let activeRequests = 0;
4
+ function canRenderProgress() {
5
+ return typeof document !== "undefined" && Boolean(document.body);
6
+ }
7
+ function ensureProgressElement() {
8
+ if (!canRenderProgress())
9
+ return null;
10
+ const existing = document.getElementById(PROGRESS_ID);
11
+ if (existing instanceof HTMLElement)
12
+ return existing;
13
+ const root = document.createElement("div");
14
+ root.id = PROGRESS_ID;
15
+ root.className = "tbf-progress";
16
+ root.setAttribute("aria-hidden", "true");
17
+ root.innerHTML = '<span class="tbf-progress__bar"></span>';
18
+ document.body.appendChild(root);
19
+ return root;
20
+ }
21
+ function progressBar() {
22
+ return ensureProgressElement()?.querySelector(".tbf-progress__bar") || null;
23
+ }
24
+ function setProgress(value) {
25
+ const numeric = Number(value);
26
+ const next = Number.isFinite(numeric)
27
+ ? Math.max(0, Math.min(MAX_UPLOAD_PROGRESS, numeric))
28
+ : 0;
29
+ const root = ensureProgressElement();
30
+ const bar = progressBar();
31
+ if (root)
32
+ root.setAttribute("data-tbf-progress-active", "true");
33
+ if (bar)
34
+ bar.style.transform = `scaleX(${next})`;
35
+ return next;
36
+ }
37
+ function beginProgress() {
38
+ activeRequests += 1;
39
+ if (activeRequests === 1) {
40
+ setProgress(0.12);
41
+ const root = ensureProgressElement();
42
+ if (root)
43
+ root.setAttribute("data-tbf-progress-active", "true");
44
+ }
45
+ return activeRequests;
46
+ }
47
+ function endProgress(force = false) {
48
+ if (force)
49
+ activeRequests = 0;
50
+ else
51
+ activeRequests = Math.max(0, activeRequests - 1);
52
+ if (activeRequests === 0) {
53
+ const bar = progressBar();
54
+ if (bar)
55
+ bar.style.transform = "scaleX(1)";
56
+ window.setTimeout(() => {
57
+ const root = ensureProgressElement();
58
+ if (root && activeRequests === 0) {
59
+ root.removeAttribute("data-tbf-progress-active");
60
+ const nextBar = progressBar();
61
+ if (nextBar)
62
+ nextBar.style.transform = "scaleX(0)";
63
+ }
64
+ }, 160);
65
+ }
66
+ return activeRequests;
67
+ }
68
+ function setProgressFromEvent(event) {
69
+ if (!event || event.lengthComputable !== true)
70
+ return 0;
71
+ const total = Number(event.total);
72
+ const loaded = Number(event.loaded);
73
+ if (!(total > 0) || loaded < 0)
74
+ return 0;
75
+ return setProgress(loaded / total);
76
+ }
77
+ function bindProgress() {
78
+ ensureProgressElement();
79
+ return progress;
80
+ }
81
+ const progress = Object.freeze({
82
+ begin: beginProgress,
83
+ boot: ensureProgressElement,
84
+ end: endProgress,
85
+ set: setProgress,
86
+ setFromProgressEvent: setProgressFromEvent,
87
+ });
88
+ export { MAX_UPLOAD_PROGRESS, PROGRESS_ID, beginProgress, bindProgress, endProgress, progress, setProgress, setProgressFromEvent, };
89
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/progress/index.ts"],"names":[],"mappings":"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"}