@7pmlabs/design-system 2.0.8 → 2.1.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 (377) hide show
  1. package/README.md +4 -4
  2. package/dist/design-system.css +1 -1
  3. package/dist/design-system.js +65 -59
  4. package/dist/design-system100.js +1 -1
  5. package/dist/design-system100.js.map +1 -1
  6. package/dist/design-system101.js +87 -53
  7. package/dist/design-system101.js.map +1 -1
  8. package/dist/design-system103.js +5 -13
  9. package/dist/design-system103.js.map +1 -1
  10. package/dist/design-system104.js +53 -108
  11. package/dist/design-system104.js.map +1 -1
  12. package/dist/{design-system102.js → design-system105.js} +1 -1
  13. package/dist/{design-system102.js.map → design-system105.js.map} +1 -1
  14. package/dist/design-system106.js +13 -6
  15. package/dist/design-system106.js.map +1 -1
  16. package/dist/design-system107.js +93 -190
  17. package/dist/design-system107.js.map +1 -1
  18. package/dist/design-system109.js +2 -2
  19. package/dist/design-system109.js.map +1 -1
  20. package/dist/design-system110.js +183 -484
  21. package/dist/design-system110.js.map +1 -1
  22. package/dist/design-system112.js +5 -4
  23. package/dist/design-system112.js.map +1 -1
  24. package/dist/design-system113.js +507 -7
  25. package/dist/design-system113.js.map +1 -1
  26. package/dist/design-system115.js +8 -0
  27. package/dist/design-system115.js.map +1 -0
  28. package/dist/design-system116.js +7 -6
  29. package/dist/design-system116.js.map +1 -1
  30. package/dist/design-system117.js +154 -169
  31. package/dist/design-system117.js.map +1 -1
  32. package/dist/design-system119.js +2 -2
  33. package/dist/design-system119.js.map +1 -1
  34. package/dist/design-system120.js +210 -149
  35. package/dist/design-system120.js.map +1 -1
  36. package/dist/design-system122.js +5 -4
  37. package/dist/design-system122.js.map +1 -1
  38. package/dist/design-system123.js +160 -9
  39. package/dist/design-system123.js.map +1 -1
  40. package/dist/design-system125.js +8 -0
  41. package/dist/design-system125.js.map +1 -0
  42. package/dist/design-system126.js +176 -6
  43. package/dist/design-system126.js.map +1 -1
  44. package/dist/design-system128.js +8 -0
  45. package/dist/design-system128.js.map +1 -0
  46. package/dist/design-system129.js +213 -5
  47. package/dist/design-system129.js.map +1 -1
  48. package/dist/design-system131.js +5 -90
  49. package/dist/design-system131.js.map +1 -1
  50. package/dist/design-system132.js +166 -0
  51. package/dist/design-system132.js.map +1 -0
  52. package/dist/design-system134.js +5 -42
  53. package/dist/design-system134.js.map +1 -1
  54. package/dist/design-system135.js +12 -0
  55. package/dist/design-system135.js.map +1 -0
  56. package/dist/design-system136.js +274 -5
  57. package/dist/design-system136.js.map +1 -1
  58. package/dist/design-system138.js +9 -0
  59. package/dist/{design-system124.js.map → design-system138.js.map} +1 -1
  60. package/dist/design-system139.js +16 -5
  61. package/dist/design-system139.js.map +1 -1
  62. package/dist/design-system141.js +8 -0
  63. package/dist/{design-system127.js.map → design-system141.js.map} +1 -1
  64. package/dist/design-system142.js +12 -5
  65. package/dist/design-system142.js.map +1 -1
  66. package/dist/design-system143.js +78 -83
  67. package/dist/design-system143.js.map +1 -1
  68. package/dist/design-system145.js +1 -1
  69. package/dist/design-system145.js.map +1 -1
  70. package/dist/design-system146.js +42 -9
  71. package/dist/design-system146.js.map +1 -1
  72. package/dist/design-system148.js +3 -2
  73. package/dist/design-system148.js.map +1 -1
  74. package/dist/design-system149.js +230 -18
  75. package/dist/design-system149.js.map +1 -1
  76. package/dist/design-system151.js +5 -158
  77. package/dist/design-system151.js.map +1 -1
  78. package/dist/{design-system140.js → design-system152.js} +6 -6
  79. package/dist/{design-system140.js.map → design-system152.js.map} +1 -1
  80. package/dist/design-system154.js +5 -307
  81. package/dist/design-system154.js.map +1 -1
  82. package/dist/design-system155.js +98 -0
  83. package/dist/design-system155.js.map +1 -0
  84. package/dist/design-system157.js +5 -240
  85. package/dist/design-system157.js.map +1 -1
  86. package/dist/design-system158.js +12 -0
  87. package/dist/design-system158.js.map +1 -0
  88. package/dist/design-system159.js +37 -5
  89. package/dist/design-system159.js.map +1 -1
  90. package/dist/design-system160.js +4 -189
  91. package/dist/design-system160.js.map +1 -1
  92. package/dist/design-system161.js +24 -0
  93. package/dist/{design-system150.js.map → design-system161.js.map} +1 -1
  94. package/dist/design-system162.js +2 -3
  95. package/dist/design-system162.js.map +1 -1
  96. package/dist/design-system163.js +158 -3
  97. package/dist/design-system163.js.map +1 -1
  98. package/dist/{design-system153.js → design-system165.js} +2 -2
  99. package/dist/{design-system153.js.map → design-system165.js.map} +1 -1
  100. package/dist/design-system166.js +307 -6
  101. package/dist/design-system166.js.map +1 -1
  102. package/dist/{design-system156.js → design-system168.js} +2 -2
  103. package/dist/{design-system156.js.map → design-system168.js.map} +1 -1
  104. package/dist/design-system169.js +167 -6
  105. package/dist/design-system169.js.map +1 -1
  106. package/dist/design-system171.js +8 -0
  107. package/dist/design-system171.js.map +1 -0
  108. package/dist/design-system172.js +240 -6
  109. package/dist/design-system172.js.map +1 -1
  110. package/dist/design-system174.js +8 -0
  111. package/dist/design-system174.js.map +1 -0
  112. package/dist/design-system175.js +189 -6
  113. package/dist/design-system175.js.map +1 -1
  114. package/dist/design-system177.js +8 -0
  115. package/dist/design-system177.js.map +1 -0
  116. package/dist/design-system178.js +3 -5
  117. package/dist/design-system178.js.map +1 -1
  118. package/dist/design-system179.js +58 -11
  119. package/dist/design-system179.js.map +1 -1
  120. package/dist/design-system181.js +9 -0
  121. package/dist/design-system181.js.map +1 -0
  122. package/dist/design-system182.js +56 -6
  123. package/dist/design-system182.js.map +1 -1
  124. package/dist/design-system184.js +9 -0
  125. package/dist/{design-system167.js.map → design-system184.js.map} +1 -1
  126. package/dist/design-system185.js +69 -5
  127. package/dist/design-system185.js.map +1 -1
  128. package/dist/design-system187.js +9 -0
  129. package/dist/{design-system170.js.map → design-system187.js.map} +1 -1
  130. package/dist/design-system188.js +182 -5
  131. package/dist/design-system188.js.map +1 -1
  132. package/dist/design-system190.js +9 -0
  133. package/dist/design-system190.js.map +1 -0
  134. package/dist/design-system191.js +115 -5
  135. package/dist/design-system191.js.map +1 -1
  136. package/dist/design-system193.js +8 -0
  137. package/dist/{design-system176.js.map → design-system193.js.map} +1 -1
  138. package/dist/design-system194.js +11 -5
  139. package/dist/design-system194.js.map +1 -1
  140. package/dist/design-system195.js +453 -24
  141. package/dist/design-system195.js.map +1 -1
  142. package/dist/design-system197.js +5 -4
  143. package/dist/design-system197.js.map +1 -1
  144. package/dist/design-system198.js +20 -16
  145. package/dist/design-system198.js.map +1 -1
  146. package/dist/design-system200.js +1 -1
  147. package/dist/design-system200.js.map +1 -1
  148. package/dist/design-system201.js +70 -314
  149. package/dist/design-system201.js.map +1 -1
  150. package/dist/design-system203.js +1 -1
  151. package/dist/design-system203.js.map +1 -1
  152. package/dist/design-system204.js +24 -89
  153. package/dist/design-system204.js.map +1 -1
  154. package/dist/design-system206.js +1 -1
  155. package/dist/design-system206.js.map +1 -1
  156. package/dist/design-system207.js +26 -17
  157. package/dist/design-system207.js.map +1 -1
  158. package/dist/design-system209.js +5 -3
  159. package/dist/design-system209.js.map +1 -1
  160. package/dist/design-system210.js +22 -408
  161. package/dist/design-system210.js.map +1 -1
  162. package/dist/design-system212.js +1 -1
  163. package/dist/design-system212.js.map +1 -1
  164. package/dist/design-system213.js +24 -52
  165. package/dist/design-system213.js.map +1 -1
  166. package/dist/design-system215.js +1 -1
  167. package/dist/design-system215.js.map +1 -1
  168. package/dist/design-system216.js +329 -85
  169. package/dist/design-system216.js.map +1 -1
  170. package/dist/design-system218.js +5 -108
  171. package/dist/design-system218.js.map +1 -1
  172. package/dist/design-system219.js +103 -0
  173. package/dist/design-system219.js.map +1 -0
  174. package/dist/design-system221.js +5 -106
  175. package/dist/design-system221.js.map +1 -1
  176. package/dist/design-system222.js +22 -0
  177. package/dist/{design-system208.js.map → design-system222.js.map} +1 -1
  178. package/dist/design-system223.js +4 -6
  179. package/dist/design-system223.js.map +1 -1
  180. package/dist/design-system224.js +3 -737
  181. package/dist/design-system224.js.map +1 -1
  182. package/dist/design-system225.js +422 -0
  183. package/dist/design-system225.js.map +1 -0
  184. package/dist/design-system227.js +5 -11
  185. package/dist/design-system227.js.map +1 -1
  186. package/dist/design-system228.js +51 -517
  187. package/dist/design-system228.js.map +1 -1
  188. package/dist/design-system230.js +1 -1
  189. package/dist/design-system230.js.map +1 -1
  190. package/dist/design-system231.js +88 -3
  191. package/dist/design-system231.js.map +1 -1
  192. package/dist/design-system232.js +4 -46
  193. package/dist/design-system232.js.map +1 -1
  194. package/dist/design-system233.js +108 -4
  195. package/dist/design-system233.js.map +1 -1
  196. package/dist/{design-system220.js → design-system235.js} +2 -2
  197. package/dist/{design-system220.js.map → design-system235.js.map} +1 -1
  198. package/dist/design-system236.js +106 -5
  199. package/dist/design-system236.js.map +1 -1
  200. package/dist/design-system238.js +9 -0
  201. package/dist/design-system238.js.map +1 -0
  202. package/dist/design-system239.js +737 -5
  203. package/dist/design-system239.js.map +1 -1
  204. package/dist/{design-system226.js → design-system241.js} +2 -2
  205. package/dist/{design-system226.js.map → design-system241.js.map} +1 -1
  206. package/dist/design-system242.js +3 -5
  207. package/dist/design-system242.js.map +1 -1
  208. package/dist/design-system243.js +42 -50
  209. package/dist/design-system243.js.map +1 -1
  210. package/dist/design-system244.js +1 -1
  211. package/dist/design-system244.js.map +1 -1
  212. package/dist/design-system245.js +254 -141
  213. package/dist/design-system245.js.map +1 -1
  214. package/dist/design-system247.js +1 -1
  215. package/dist/design-system247.js.map +1 -1
  216. package/dist/design-system248.js +119 -7
  217. package/dist/design-system248.js.map +1 -1
  218. package/dist/design-system250.js +8 -0
  219. package/dist/design-system250.js.map +1 -0
  220. package/dist/design-system251.js +172 -5
  221. package/dist/design-system251.js.map +1 -1
  222. package/dist/design-system253.js +8 -0
  223. package/dist/design-system253.js.map +1 -0
  224. package/dist/design-system254.js +11 -6
  225. package/dist/design-system254.js.map +1 -1
  226. package/dist/design-system255.js +525 -9
  227. package/dist/design-system255.js.map +1 -1
  228. package/dist/design-system257.js +8 -0
  229. package/dist/design-system257.js.map +1 -0
  230. package/dist/design-system258.js +112 -6
  231. package/dist/design-system258.js.map +1 -1
  232. package/dist/design-system260.js +5 -374
  233. package/dist/design-system260.js.map +1 -1
  234. package/dist/design-system261.js +57 -0
  235. package/dist/design-system261.js.map +1 -0
  236. package/dist/design-system262.js +4 -6
  237. package/dist/design-system262.js.map +1 -1
  238. package/dist/design-system263.js +173 -0
  239. package/dist/design-system263.js.map +1 -0
  240. package/dist/design-system265.js +8 -0
  241. package/dist/design-system265.js.map +1 -0
  242. package/dist/design-system266.js +10 -0
  243. package/dist/design-system266.js.map +1 -0
  244. package/dist/{design-system249.js → design-system267.js} +2 -2
  245. package/dist/{design-system249.js.map → design-system267.js.map} +1 -1
  246. package/dist/design-system269.js +8 -0
  247. package/dist/design-system269.js.map +1 -0
  248. package/dist/{design-system252.js → design-system270.js} +1 -1
  249. package/dist/{design-system252.js.map → design-system270.js.map} +1 -1
  250. package/dist/design-system272.js +9 -0
  251. package/dist/design-system272.js.map +1 -0
  252. package/dist/design-system273.js +12 -0
  253. package/dist/design-system273.js.map +1 -0
  254. package/dist/{design-system256.js → design-system274.js} +2 -2
  255. package/dist/{design-system256.js.map → design-system274.js.map} +1 -1
  256. package/dist/design-system276.js +9 -0
  257. package/dist/design-system276.js.map +1 -0
  258. package/dist/{design-system259.js → design-system277.js} +1 -1
  259. package/dist/{design-system259.js.map → design-system277.js.map} +1 -1
  260. package/dist/design-system278.js +377 -0
  261. package/dist/design-system278.js.map +1 -0
  262. package/dist/design-system280.js +9 -0
  263. package/dist/design-system280.js.map +1 -0
  264. package/dist/design-system69.js +182 -13
  265. package/dist/design-system69.js.map +1 -1
  266. package/dist/design-system71.js +8 -0
  267. package/dist/design-system71.js.map +1 -0
  268. package/dist/design-system72.js +13 -5
  269. package/dist/design-system72.js.map +1 -1
  270. package/dist/design-system73.js +677 -139
  271. package/dist/design-system73.js.map +1 -1
  272. package/dist/design-system75.js +1 -1
  273. package/dist/design-system75.js.map +1 -1
  274. package/dist/design-system76.js +152 -23
  275. package/dist/design-system76.js.map +1 -1
  276. package/dist/design-system78.js +5 -49
  277. package/dist/design-system78.js.map +1 -1
  278. package/dist/design-system79.js +32 -0
  279. package/dist/design-system79.js.map +1 -0
  280. package/dist/design-system80.js +2 -3
  281. package/dist/design-system80.js.map +1 -1
  282. package/dist/design-system81.js +38 -188
  283. package/dist/design-system81.js.map +1 -1
  284. package/dist/design-system83.js +1 -1
  285. package/dist/design-system83.js.map +1 -1
  286. package/dist/design-system84.js +199 -7
  287. package/dist/design-system84.js.map +1 -1
  288. package/dist/design-system86.js +8 -0
  289. package/dist/design-system86.js.map +1 -0
  290. package/dist/design-system87.js +7 -5
  291. package/dist/design-system87.js.map +1 -1
  292. package/dist/design-system88.js +264 -48
  293. package/dist/design-system88.js.map +1 -1
  294. package/dist/design-system90.js +1 -1
  295. package/dist/design-system90.js.map +1 -1
  296. package/dist/design-system91.js +57 -11
  297. package/dist/design-system91.js.map +1 -1
  298. package/dist/design-system93.js +8 -0
  299. package/dist/design-system93.js.map +1 -0
  300. package/dist/design-system94.js +11 -5
  301. package/dist/design-system94.js.map +1 -1
  302. package/dist/design-system95.js +92 -59
  303. package/dist/design-system95.js.map +1 -1
  304. package/dist/design-system97.js +1 -1
  305. package/dist/design-system97.js.map +1 -1
  306. package/dist/design-system98.js +56 -78
  307. package/dist/design-system98.js.map +1 -1
  308. package/dist/types/components/BContextMenu/BContextMenu.spec.d.ts +1 -0
  309. package/dist/types/components/BContextMenu/BContextMenu.vue.d.ts +42 -0
  310. package/dist/types/components/BContextMenu/index.d.ts +2 -0
  311. package/dist/types/components/BContextMenu/types.d.ts +23 -0
  312. package/dist/types/components/BInputTags/BInputTags.spec.d.ts +1 -0
  313. package/dist/types/components/BInputTags/BInputTags.vue.d.ts +54 -0
  314. package/dist/types/components/BInputTags/index.d.ts +1 -0
  315. package/dist/types/components/BLink/BLink.spec.d.ts +1 -0
  316. package/dist/types/components/BLink/BLink.vue.d.ts +100 -0
  317. package/dist/types/components/BLink/index.d.ts +1 -0
  318. package/dist/types/components/BListbox/BListbox.spec.d.ts +1 -0
  319. package/dist/types/components/BListbox/BListbox.vue.d.ts +52 -0
  320. package/dist/types/components/BListbox/index.d.ts +1 -0
  321. package/dist/types/components/BModal/BModal.spec.d.ts +1 -0
  322. package/dist/types/components/BPinInput/BPinInput.spec.d.ts +1 -0
  323. package/dist/types/components/BPinInput/BPinInput.vue.d.ts +43 -0
  324. package/dist/types/components/BPinInput/index.d.ts +1 -0
  325. package/dist/types/components/BProgress/BProgress.vue.d.ts +47 -2
  326. package/dist/types/components/BTextarea/BTextarea.spec.d.ts +1 -0
  327. package/dist/types/components/BTextarea/BTextarea.vue.d.ts +77 -0
  328. package/dist/types/components/BTextarea/index.d.ts +1 -0
  329. package/dist/types/components/index.d.ts +7 -1
  330. package/package.json +1 -1
  331. package/dist/design-system114.js +0 -212
  332. package/dist/design-system114.js.map +0 -1
  333. package/dist/design-system124.js +0 -277
  334. package/dist/design-system127.js +0 -19
  335. package/dist/design-system130.js +0 -15
  336. package/dist/design-system130.js.map +0 -1
  337. package/dist/design-system133.js +0 -8
  338. package/dist/design-system133.js.map +0 -1
  339. package/dist/design-system137.js +0 -236
  340. package/dist/design-system137.js.map +0 -1
  341. package/dist/design-system147.js +0 -40
  342. package/dist/design-system147.js.map +0 -1
  343. package/dist/design-system150.js +0 -7
  344. package/dist/design-system164.js +0 -61
  345. package/dist/design-system164.js.map +0 -1
  346. package/dist/design-system167.js +0 -59
  347. package/dist/design-system170.js +0 -72
  348. package/dist/design-system173.js +0 -185
  349. package/dist/design-system173.js.map +0 -1
  350. package/dist/design-system176.js +0 -118
  351. package/dist/design-system180.js +0 -465
  352. package/dist/design-system180.js.map +0 -1
  353. package/dist/design-system183.js +0 -38
  354. package/dist/design-system183.js.map +0 -1
  355. package/dist/design-system186.js +0 -91
  356. package/dist/design-system186.js.map +0 -1
  357. package/dist/design-system189.js +0 -38
  358. package/dist/design-system189.js.map +0 -1
  359. package/dist/design-system192.js +0 -31
  360. package/dist/design-system192.js.map +0 -1
  361. package/dist/design-system208.js +0 -7
  362. package/dist/design-system217.js +0 -7
  363. package/dist/design-system217.js.map +0 -1
  364. package/dist/design-system234.js +0 -286
  365. package/dist/design-system234.js.map +0 -1
  366. package/dist/design-system237.js +0 -122
  367. package/dist/design-system237.js.map +0 -1
  368. package/dist/design-system240.js +0 -115
  369. package/dist/design-system240.js.map +0 -1
  370. package/dist/design-system70.js +0 -699
  371. package/dist/design-system70.js.map +0 -1
  372. package/dist/design-system77.js +0 -7
  373. package/dist/design-system77.js.map +0 -1
  374. package/dist/design-system85.js +0 -276
  375. package/dist/design-system85.js.map +0 -1
  376. package/dist/design-system92.js +0 -102
  377. package/dist/design-system92.js.map +0 -1
@@ -24,79 +24,85 @@ import Z from "./design-system61.js";
24
24
  import Q from "./design-system64.js";
25
25
  import { BColorPickerFormat as ne, BColorPickerPlacement as re, BColorPickerSize as ie, BColorPickerTrigger as ae } from "./design-system65.js";
26
26
  import oe from "./design-system68.js";
27
- import { BDatePickerPlacement as se, BDatePickerSize as ce, BDatePickerStatus as le, BDatePickerType as ue, BDatePickerVariant as de } from "./design-system69.js";
28
- import fe from "./design-system72.js";
27
+ import se from "./design-system71.js";
28
+ import { BDatePickerPlacement as ce, BDatePickerSize as le, BDatePickerStatus as ue, BDatePickerType as de, BDatePickerVariant as fe } from "./design-system72.js";
29
29
  import pe from "./design-system75.js";
30
- import me from "./design-system77.js";
30
+ import me from "./design-system78.js";
31
31
  import he from "./design-system80.js";
32
32
  import ge from "./design-system83.js";
33
- import { BDropdownPlacement as _e, BDropdownTrigger as ve } from "./design-system84.js";
34
- import ye from "./design-system87.js";
33
+ import _e from "./design-system86.js";
34
+ import { BDropdownPlacement as ve, BDropdownTrigger as ye } from "./design-system87.js";
35
35
  import be from "./design-system90.js";
36
- import { BFloatButtonGroupPlacement as xe, BFloatButtonShape as Se, BFloatButtonTrigger as Ce, BFloatButtonType as we } from "./design-system91.js";
37
- import Te from "./design-system94.js";
36
+ import xe from "./design-system93.js";
37
+ import { BFloatButtonGroupPlacement as Se, BFloatButtonShape as Ce, BFloatButtonTrigger as we, BFloatButtonType as Te } from "./design-system94.js";
38
38
  import Ee from "./design-system97.js";
39
39
  import De from "./design-system100.js";
40
- import { PIKey as Oe, useValidationField as ke, useValidationForm as Ae } from "./design-system101.js";
41
- import { BFormLabelAlign as je, BFormLayout as Me, BFormRequiredMark as Ne, BFormValidateStatus as Pe, BFormValidateTrigger as $ } from "./design-system103.js";
42
- import Fe from "./design-system106.js";
43
- import Ie from "./design-system109.js";
44
- import Le from "./design-system112.js";
45
- import { BInputStatus as Re, BInputVariant as ze } from "./design-system113.js";
46
- import Be from "./design-system116.js";
40
+ import Oe from "./design-system103.js";
41
+ import { PIKey as ke, useValidationField as Ae, useValidationForm as je } from "./design-system104.js";
42
+ import { BFormLabelAlign as Me, BFormLayout as Ne, BFormRequiredMark as Pe, BFormValidateStatus as Fe, BFormValidateTrigger as Ie } from "./design-system106.js";
43
+ import Le from "./design-system109.js";
44
+ import Re from "./design-system112.js";
45
+ import $ from "./design-system115.js";
46
+ import { BInputStatus as ze, BInputVariant as Be } from "./design-system116.js";
47
47
  import Ve from "./design-system119.js";
48
48
  import He from "./design-system122.js";
49
- import { BMentionsPlacement as Ue, BMentionsStatus as We, BMentionsVariant as Ge } from "./design-system123.js";
50
- import Ke from "./design-system126.js";
51
- import qe from "./design-system129.js";
52
- import Je from "./design-system133.js";
53
- import Ye from "./design-system136.js";
54
- import Xe from "./design-system139.js";
55
- import Ze from "./design-system142.js";
49
+ import Ue from "./design-system125.js";
50
+ import We from "./design-system128.js";
51
+ import Ge from "./design-system131.js";
52
+ import Ke from "./design-system134.js";
53
+ import { BMentionsPlacement as qe, BMentionsStatus as Je, BMentionsVariant as Ye } from "./design-system135.js";
54
+ import Xe from "./design-system138.js";
55
+ import Ze from "./design-system141.js";
56
56
  import Qe from "./design-system145.js";
57
- import $e from "./design-system146.js";
58
- import et from "./design-system148.js";
59
- import tt from "./design-system150.js";
60
- import nt from "./design-system153.js";
61
- import rt from "./design-system156.js";
62
- import it from "./design-system159.js";
57
+ import $e from "./design-system148.js";
58
+ import et from "./design-system151.js";
59
+ import tt from "./design-system154.js";
60
+ import nt from "./design-system157.js";
61
+ import rt from "./design-system158.js";
62
+ import it from "./design-system160.js";
63
63
  import at from "./design-system162.js";
64
- import { B_RADIO_GROUP_KEY as ot } from "./design-system163.js";
65
- import st from "./design-system166.js";
66
- import ct from "./design-system169.js";
67
- import lt from "./design-system172.js";
68
- import ut from "./design-system175.js";
69
- import dt from "./design-system178.js";
70
- import { BSelectMode as ft, BSelectPlacement as pt, BSelectStatus as mt, BSelectVariant as ht } from "./design-system179.js";
71
- import gt from "./design-system182.js";
72
- import _t from "./design-system185.js";
73
- import vt from "./design-system188.js";
74
- import yt from "./design-system191.js";
75
- import bt from "./design-system194.js";
64
+ import ot from "./design-system165.js";
65
+ import st from "./design-system168.js";
66
+ import ct from "./design-system171.js";
67
+ import lt from "./design-system174.js";
68
+ import ut from "./design-system177.js";
69
+ import { B_RADIO_GROUP_KEY as dt } from "./design-system178.js";
70
+ import ft from "./design-system181.js";
71
+ import pt from "./design-system184.js";
72
+ import mt from "./design-system187.js";
73
+ import ht from "./design-system190.js";
74
+ import gt from "./design-system193.js";
75
+ import { BSelectMode as _t, BSelectPlacement as vt, BSelectStatus as yt, BSelectVariant as bt } from "./design-system194.js";
76
76
  import xt from "./design-system197.js";
77
77
  import St from "./design-system200.js";
78
78
  import Ct from "./design-system203.js";
79
79
  import wt from "./design-system206.js";
80
- import Tt from "./design-system208.js";
80
+ import Tt from "./design-system209.js";
81
81
  import Et from "./design-system212.js";
82
82
  import Dt from "./design-system215.js";
83
- import Ot from "./design-system217.js";
84
- import kt from "./design-system220.js";
83
+ import Ot from "./design-system218.js";
84
+ import kt from "./design-system221.js";
85
85
  import At from "./design-system223.js";
86
- import jt from "./design-system226.js";
87
- import { BTimePickerPlacement as Mt, BTimePickerSize as Nt, BTimePickerStatus as Pt, BTimePickerVariant as Ft } from "./design-system227.js";
88
- import It from "./design-system230.js";
89
- import Lt from "./design-system233.js";
90
- import Rt from "./design-system236.js";
91
- import zt from "./design-system239.js";
92
- import Bt from "./design-system242.js";
93
- import Vt from "./design-system244.js";
94
- import Ht from "./design-system247.js";
95
- import { BTourPlacement as Ut, BTourType as Wt } from "./design-system248.js";
96
- import Gt from "./design-system251.js";
97
- import Kt from "./design-system254.js";
98
- import { BTreeSelectPlacement as qt, BTreeSelectStatus as Jt, BTreeSelectVariant as Yt } from "./design-system255.js";
99
- import Xt from "./design-system258.js";
100
- import { BUploadFileStatus as Zt, BUploadListType as Qt } from "./design-system259.js";
101
- import $t from "./design-system262.js";
102
- export { D as BAlert, ee as BAlertType, O as BAnchor, j as BAutoComplete, k as BAutoCompleteStatus, A as BAutoCompleteVariant, M as BAvatar, te as BAvatarShape, e as BAvatarSize, N as BBadge, t as BBadgeSize, n as BBadgeStatus, P as BBreadcrumb, I as BButton, r as BButtonVariant, R as BCalendar, z as BCard, B as BCardGrid, V as BCardMeta, i as BCardSize, a as BCardType, H as BCarousel, q as BCascader, U as BCascaderExpandTrigger, W as BCascaderPlacement, G as BCascaderSize, K as BCascaderStatus, Y as BCheckbox, X as BCheckboxGroup, Z as BCollapse, Z as BCollapseGroup, Q as BCollapsePanel, oe as BColorPicker, ne as BColorPickerFormat, re as BColorPickerPlacement, ie as BColorPickerSize, ae as BColorPickerTrigger, o as BCommonColor, s as BCommonSize, fe as BDatePicker, se as BDatePickerPlacement, ce as BDatePickerSize, le as BDatePickerStatus, ue as BDatePickerType, de as BDatePickerVariant, pe as BDescriptions, me as BDescriptionsItem, he as BDivider, ge as BDrawer, c as BDrawerPlacement, l as BDrawerSize, ye as BDropdown, _e as BDropdownPlacement, ve as BDropdownTrigger, be as BEmpty, u as BEmptyImage, Te as BFloatButton, Ee as BFloatButtonBackTop, De as BFloatButtonGroup, xe as BFloatButtonGroupPlacement, Se as BFloatButtonShape, Ce as BFloatButtonTrigger, we as BFloatButtonType, Fe as BForm, Ie as BFormItem, je as BFormLabelAlign, Me as BFormLayout, Ne as BFormRequiredMark, Pe as BFormValidateStatus, $ as BFormValidateTrigger, F as BIcon, d as BIconSize, f as BIconVariant, Le as BImage, Be as BInput, Ve as BInputNumber, Re as BInputStatus, ze as BInputVariant, He as BMasonry, Ke as BMentions, Ue as BMentionsPlacement, We as BMentionsStatus, Ge as BMentionsVariant, Ze as BMenu, qe as BMenuDivider, Je as BMenuItem, Ye as BMenuItemGroup, Xe as BMenuSubMenu, Qe as BMessage, p as BMessageType, L as BModal, $e as BModalBody, et as BModalFooter, tt as BModalHeader, nt as BNotification, m as BNotificationPlacement, h as BNotificationType, rt as BPagination, it as BPopconfirm, g as BPopconfirmPlacement, _ as BPopconfirmTrigger, at as BPopover, v as BPopoverPlacement, y as BPopoverTrigger, st as BRadio, ct as BRadioButton, lt as BRadioGroup, ut as BRate, dt as BSegmented, gt as BSelect, ft as BSelectMode, pt as BSelectPlacement, mt as BSelectStatus, ht as BSelectVariant, vt as BSkeleton, _t as BSkeletonAvatar, yt as BSkeletonButton, bt as BSkeletonImage, xt as BSkeletonInput, St as BSkeletonNode, Ct as BSlider, wt as BSpin, b as BSpinSize, Et as BSplitter, Tt as BSplitterPanel, Dt as BStatistic, Ot as BStatisticTimer, kt as BSteps, x as BStepsDirection, S as BStepsLabelPlacement, C as BStepsStatus, w as BStepsType, At as BSwitch, Lt as BTabPane, jt as BTable, Rt as BTabs, zt as BTag, It as BTimePicker, Mt as BTimePickerPlacement, Nt as BTimePickerSize, Pt as BTimePickerStatus, Ft as BTimePickerVariant, Bt as BTimeline, Vt as BTimelineItem, Ht as BTooltip, T as BTooltipPlacement, E as BTooltipTrigger, Gt as BTour, Ut as BTourPlacement, Wt as BTourType, Kt as BTree, Xt as BTreeSelect, qt as BTreeSelectPlacement, Jt as BTreeSelectStatus, Yt as BTreeSelectVariant, $t as BUpload, Zt as BUploadFileStatus, Qt as BUploadListType, J as B_CHECKBOX_GROUP_KEY, ot as B_RADIO_GROUP_KEY, Oe as PIKey, ke as useValidationField, Ae as useValidationForm };
86
+ import jt from "./design-system227.js";
87
+ import Mt from "./design-system230.js";
88
+ import Nt from "./design-system232.js";
89
+ import Pt from "./design-system235.js";
90
+ import Ft from "./design-system238.js";
91
+ import It from "./design-system241.js";
92
+ import Lt from "./design-system244.js";
93
+ import Rt from "./design-system247.js";
94
+ import zt from "./design-system250.js";
95
+ import Bt from "./design-system253.js";
96
+ import { BTimePickerPlacement as Vt, BTimePickerSize as Ht, BTimePickerStatus as Ut, BTimePickerVariant as Wt } from "./design-system254.js";
97
+ import Gt from "./design-system257.js";
98
+ import Kt from "./design-system260.js";
99
+ import qt from "./design-system262.js";
100
+ import Jt from "./design-system265.js";
101
+ import { BTourPlacement as Yt, BTourType as Xt } from "./design-system266.js";
102
+ import Zt from "./design-system269.js";
103
+ import Qt from "./design-system272.js";
104
+ import { BTreeSelectPlacement as $t, BTreeSelectStatus as en, BTreeSelectVariant as tn } from "./design-system273.js";
105
+ import nn from "./design-system276.js";
106
+ import { BUploadFileStatus as rn, BUploadListType as an } from "./design-system277.js";
107
+ import on from "./design-system280.js";
108
+ export { D as BAlert, ee as BAlertType, O as BAnchor, j as BAutoComplete, k as BAutoCompleteStatus, A as BAutoCompleteVariant, M as BAvatar, te as BAvatarShape, e as BAvatarSize, N as BBadge, t as BBadgeSize, n as BBadgeStatus, P as BBreadcrumb, I as BButton, r as BButtonVariant, R as BCalendar, z as BCard, B as BCardGrid, V as BCardMeta, i as BCardSize, a as BCardType, H as BCarousel, q as BCascader, U as BCascaderExpandTrigger, W as BCascaderPlacement, G as BCascaderSize, K as BCascaderStatus, Y as BCheckbox, X as BCheckboxGroup, Z as BCollapse, Z as BCollapseGroup, Q as BCollapsePanel, oe as BColorPicker, ne as BColorPickerFormat, re as BColorPickerPlacement, ie as BColorPickerSize, ae as BColorPickerTrigger, o as BCommonColor, s as BCommonSize, se as BContextMenu, pe as BDatePicker, ce as BDatePickerPlacement, le as BDatePickerSize, ue as BDatePickerStatus, de as BDatePickerType, fe as BDatePickerVariant, me as BDescriptions, he as BDescriptionsItem, ge as BDivider, _e as BDrawer, c as BDrawerPlacement, l as BDrawerSize, be as BDropdown, ve as BDropdownPlacement, ye as BDropdownTrigger, xe as BEmpty, u as BEmptyImage, Ee as BFloatButton, De as BFloatButtonBackTop, Oe as BFloatButtonGroup, Se as BFloatButtonGroupPlacement, Ce as BFloatButtonShape, we as BFloatButtonTrigger, Te as BFloatButtonType, Le as BForm, Re as BFormItem, Me as BFormLabelAlign, Ne as BFormLayout, Pe as BFormRequiredMark, Fe as BFormValidateStatus, Ie as BFormValidateTrigger, F as BIcon, d as BIconSize, f as BIconVariant, $ as BImage, Ve as BInput, He as BInputNumber, ze as BInputStatus, Ue as BInputTags, Be as BInputVariant, We as BLink, Ge as BListbox, Ke as BMasonry, Xe as BMentions, qe as BMentionsPlacement, Je as BMentionsStatus, Ye as BMentionsVariant, tt as BMenu, Ze as BMenuDivider, Qe as BMenuItem, $e as BMenuItemGroup, et as BMenuSubMenu, nt as BMessage, p as BMessageType, L as BModal, rt as BModalBody, it as BModalFooter, at as BModalHeader, ot as BNotification, m as BNotificationPlacement, h as BNotificationType, st as BPagination, ct as BPinInput, lt as BPopconfirm, g as BPopconfirmPlacement, _ as BPopconfirmTrigger, ut as BPopover, v as BPopoverPlacement, y as BPopoverTrigger, ft as BRadio, pt as BRadioButton, mt as BRadioGroup, ht as BRate, gt as BSegmented, xt as BSelect, _t as BSelectMode, vt as BSelectPlacement, yt as BSelectStatus, bt as BSelectVariant, Ct as BSkeleton, St as BSkeletonAvatar, wt as BSkeletonButton, Tt as BSkeletonImage, Et as BSkeletonInput, Dt as BSkeletonNode, Ot as BSlider, kt as BSpin, b as BSpinSize, jt as BSplitter, At as BSplitterPanel, Mt as BStatistic, Nt as BStatisticTimer, Pt as BSteps, x as BStepsDirection, S as BStepsLabelPlacement, C as BStepsStatus, w as BStepsType, Ft as BSwitch, Lt as BTabPane, It as BTable, Rt as BTabs, zt as BTag, Bt as BTextarea, Gt as BTimePicker, Vt as BTimePickerPlacement, Ht as BTimePickerSize, Ut as BTimePickerStatus, Wt as BTimePickerVariant, Kt as BTimeline, qt as BTimelineItem, Jt as BTooltip, T as BTooltipPlacement, E as BTooltipTrigger, Zt as BTour, Yt as BTourPlacement, Xt as BTourType, Qt as BTree, nn as BTreeSelect, $t as BTreeSelectPlacement, en as BTreeSelectStatus, tn as BTreeSelectVariant, on as BUpload, rn as BUploadFileStatus, an as BUploadListType, J as B_CHECKBOX_GROUP_KEY, dt as B_RADIO_GROUP_KEY, ke as PIKey, Ae as useValidationField, je as useValidationForm };
@@ -1,6 +1,6 @@
1
1
  import e from "./design-system98.js";
2
2
  /* empty css */
3
- //#region src/components/BFloatButton/BFloatButtonGroup.vue
3
+ //#region src/components/BFloatButton/BFloatButtonBackTop.vue
4
4
  var t = e;
5
5
  //#endregion
6
6
  export { t as default };
@@ -1 +1 @@
1
- {"version":3,"file":"design-system100.js","names":[],"sources":["../src/components/BFloatButton/BFloatButtonGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, provide, ref, watch } from 'vue';\nimport { BFloatButtonGroupPlacement, BFloatButtonShape, BFloatButtonTrigger } from './types.ts';\n\n// ─────────────────────────────────────────────\n// Props & emits\n// ─────────────────────────────────────────────\nconst props = defineProps<{\n /**\n * Controlled open state. Use with `v-model:open` for two-way binding.\n * When this prop changes, the internal state syncs to it.\n */\n open?: boolean | null;\n /**\n * The trigger mode for expanding/collapsing the group menu.\n * When set, a trigger button is shown that reveals child buttons.\n */\n trigger?: `${BFloatButtonTrigger}`;\n /**\n * Animation direction when expanding/collapsing.\n * @default 'top'\n */\n placement?: `${BFloatButtonGroupPlacement}`;\n /**\n * Shape applied to all child float buttons.\n * @default 'circle'\n */\n shape?: `${BFloatButtonShape}`;\n /**\n * Icon name for the close/collapse trigger button.\n */\n closeIcon?: string;\n}>();\n\nconst emit = defineEmits<{\n /** Emitted when the group open state changes. */\n (e: 'openChange', open: boolean): void;\n /** v-model support. */\n (e: 'update:open', open: boolean): void;\n}>();\n\ndefineSlots<{\n /** Float button children. */\n default?(): unknown;\n /** Custom trigger icon (open state). */\n icon?(): unknown;\n /** Custom close icon (close state). */\n closeIcon?(): unknown;\n}>();\n\n// ─────────────────────────────────────────────\n// Internal state — always the rendering source of truth\n// ─────────────────────────────────────────────\nconst internalOpen = ref(false);\n\n// Sync from controlled prop internal state when explicitly changed\nwatch(\n () => props.open,\n (val) => {\n if (val === true) internalOpen.value = true;\n else if (val === false) internalOpen.value = false;\n // null/undefined means \"uncontrolled\" do not override internal state\n },\n { immediate: true },\n);\n\nfunction setOpen(val: boolean) {\n internalOpen.value = val;\n emit('update:open', val);\n emit('openChange', val);\n}\n\nfunction toggle() {\n setOpen(!internalOpen.value);\n}\n\nfunction openGroup() {\n setOpen(true);\n}\n\nfunction closeGroup() {\n setOpen(false);\n}\n\n// ─────────────────────────────────────────────\n// Hover trigger\n// ─────────────────────────────────────────────\nlet hideTimer: ReturnType<typeof setTimeout> | null = null;\n\nfunction onMouseEnter() {\n if (props.trigger !== BFloatButtonTrigger.Hover) return;\n if (hideTimer) {\n clearTimeout(hideTimer);\n hideTimer = null;\n }\n openGroup();\n}\n\nfunction onMouseLeave() {\n if (props.trigger !== BFloatButtonTrigger.Hover) return;\n hideTimer = setTimeout(() => closeGroup(), 100);\n}\n\nonBeforeUnmount(() => {\n if (hideTimer) clearTimeout(hideTimer);\n});\n\n// ─────────────────────────────────────────────\n// Provide shape to children\n// ─────────────────────────────────────────────\nprovide(\n 'bFloatButtonGroupShape',\n computed(() => props.shape ?? BFloatButtonShape.Circle),\n);\n\nconst isGroup = computed(() => props.trigger !== undefined);\nconst placementClass = computed(\n () => `b-float-button-group--${props.placement ?? BFloatButtonGroupPlacement.Top}`,\n);\nconst shapeClass = computed(\n () => `b-float-button-group--shape-${props.shape ?? BFloatButtonShape.Circle}`,\n);\n</script>\n\n<template>\n <div\n class=\"b-float-button-group\"\n :class=\"[\n placementClass,\n shapeClass,\n {\n 'b-float-button-group--menu': isGroup,\n 'b-float-button-group--open': isGroup && internalOpen,\n },\n ]\"\n :role=\"!isGroup ? 'group' : undefined\"\n :aria-label=\"!isGroup ? 'Float button group' : undefined\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n >\n <!-- Child buttons list (always rendered; hidden when group is collapsed) -->\n <div\n class=\"b-float-button-group__list\"\n :aria-hidden=\"isGroup ? !internalOpen : undefined\"\n :inert=\"isGroup && !internalOpen ? true : undefined\"\n >\n <slot />\n </div>\n\n <!-- Trigger button (only rendered when trigger is set) -->\n <button\n v-if=\"isGroup\"\n type=\"button\"\n class=\"b-float-button-group__trigger\"\n :class=\"[\n 'b-float-button',\n `b-float-button--${props.shape ?? 'circle'}`,\n 'b-float-button--primary',\n ]\"\n :aria-expanded=\"internalOpen\"\n :aria-label=\"internalOpen ? 'Collapse button group' : 'Expand button group'\"\n @click=\"toggle\"\n >\n <span class=\"b-float-button__body\">\n <span class=\"b-float-button__icon\" aria-hidden=\"true\">\n <template v-if=\"internalOpen\">\n <slot name=\"closeIcon\">\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n />\n </svg>\n </slot>\n </template>\n <template v-else>\n <slot name=\"icon\">\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M19 13H13v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </svg>\n </slot>\n </template>\n </span>\n </span>\n </button>\n </div>\n</template>\n\n<style>\n/* ─────────────────────────────────────────────\n Group container\n ───────────────────────────────────────────── */\n.b-float-button-group {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.75rem;\n position: relative;\n}\n\n.b-float-button-group--menu {\n position: relative;\n}\n\n/* ─────────────────────────────────────────────\n Items list (collapsible)\n ───────────────────────────────────────────── */\n.b-float-button-group__list {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.75rem;\n list-style: none;\n padding: 0;\n margin: 0 0 0.75rem 0;\n\n /* Collapsed: hidden */\n overflow: hidden;\n max-height: 0;\n opacity: 0;\n pointer-events: none;\n transition:\n max-height 300ms cubic-bezier(0.4, 0, 0.2, 1),\n opacity 250ms ease;\n}\n\n.b-float-button-group--open .b-float-button-group__list {\n max-height: 60vh;\n opacity: 1;\n pointer-events: auto;\n}\n\n/* ── Placement variants for list direction ──\n DOM order is always [list, trigger]. For `bottom`/`right` we reverse\n the container so the trigger comes before the list visually. */\n.b-float-button-group--top .b-float-button-group__list {\n flex-direction: column-reverse;\n}\n\n.b-float-button-group--bottom {\n flex-direction: column-reverse;\n}\n\n.b-float-button-group--bottom .b-float-button-group__list {\n flex-direction: column;\n margin: 0.75rem 0 0 0;\n}\n\n.b-float-button-group--left .b-float-button-group__list {\n flex-direction: row-reverse;\n margin: 0 0.75rem 0 0;\n}\n\n.b-float-button-group--right .b-float-button-group__list {\n flex-direction: row;\n margin: 0 0 0 0.75rem;\n}\n\n/* ── Horizontal layout for left/right placements ── */\n.b-float-button-group--left {\n flex-direction: row;\n align-items: center;\n}\n\n.b-float-button-group--right {\n flex-direction: row-reverse;\n align-items: center;\n}\n\n/* ── Trigger button ── */\n.b-float-button-group__trigger {\n flex-shrink: 0;\n}\n\n/* ─────────────────────────────────────────────\n Reduced motion\n ───────────────────────────────────────────── */\n@media (prefers-reduced-motion: reduce) {\n .b-float-button-group__list {\n transition-duration: 0ms;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"design-system100.js","names":[],"sources":["../src/components/BFloatButton/BFloatButtonBackTop.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onBeforeUnmount, onMounted, ref } from 'vue';\nimport BFloatButton from './BFloatButton.vue';\nimport { BFloatButtonShape, BFloatButtonType } from './types.ts';\n\n// ─────────────────────────────────────────────\n// Props & emits\n// ─────────────────────────────────────────────\nconst {\n duration = 450,\n target,\n visibilityHeight = 400,\n shape = BFloatButtonShape.Circle,\n type = BFloatButtonType.Default,\n} = defineProps<{\n /**\n * Scroll animation duration in milliseconds.\n * @default 450\n */\n duration?: number;\n /**\n * A function that returns the scrollable container.\n * Defaults to `window`. May return `null` (e.g. if the element hasn't mounted yet).\n */\n target?: () => HTMLElement | Window | null;\n /**\n * The button becomes visible when the scroll position exceeds this value (px).\n * @default 400\n */\n visibilityHeight?: number;\n /**\n * Shape of the back-top button.\n * @default 'circle'\n */\n shape?: `${BFloatButtonShape}`;\n /**\n * Type of the back-top button.\n * @default 'default'\n */\n type?: `${BFloatButtonType}`;\n}>();\n\nconst emit = defineEmits<{\n /** Emitted when the back-top button is clicked. */\n (e: 'click', event: MouseEvent): void;\n}>();\n\ndefineSlots<{\n /** Custom content for the button. If omitted, renders an up-arrow icon. */\n default?(): unknown;\n}>();\n\n// ─────────────────────────────────────────────\n// Scroll logic\n// ─────────────────────────────────────────────\nconst visible = ref(false);\nlet scrollContainer: HTMLElement | Window = window;\n\nfunction getScrollTop(): number {\n if (scrollContainer === window) return window.scrollY;\n return (scrollContainer as HTMLElement).scrollTop;\n}\n\nfunction onScroll() {\n visible.value = getScrollTop() > visibilityHeight;\n}\n\nfunction easeInOutCubic(t: number): number {\n return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;\n}\n\nfunction scrollToTop() {\n const startTime = performance.now();\n const startTop = getScrollTop();\n\n function step(now: number) {\n const elapsed = now - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const eased = easeInOutCubic(progress);\n const newTop = startTop * (1 - eased);\n\n if (scrollContainer === window) {\n window.scrollTo(0, newTop);\n } else {\n (scrollContainer as HTMLElement).scrollTop = newTop;\n }\n\n if (progress < 1) {\n requestAnimationFrame(step);\n }\n }\n\n requestAnimationFrame(step);\n}\n\nfunction handleClick(event: MouseEvent) {\n scrollToTop();\n emit('click', event);\n}\n\nonMounted(() => {\n scrollContainer = target?.() ?? window;\n scrollContainer.addEventListener('scroll', onScroll, { passive: true });\n onScroll();\n});\n\nonBeforeUnmount(() => {\n scrollContainer.removeEventListener('scroll', onScroll);\n});\n\nconst isVisible = visible;\n</script>\n\n<template>\n <Transition name=\"b-float-button-backtop\">\n <BFloatButton\n v-if=\"isVisible\"\n :shape=\"shape\"\n :type=\"type\"\n aria-label=\"Back to top\"\n class=\"b-float-button-backtop\"\n @click=\"handleClick\"\n >\n <template #icon>\n <slot>\n <!-- Default: up arrow -->\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n </svg>\n </slot>\n </template>\n </BFloatButton>\n </Transition>\n</template>\n\n<style>\n/* ─────────────────────────────────────────────\n BackTop enter/leave transitions\n ───────────────────────────────────────────── */\n.b-float-button-backtop-enter-active,\n.b-float-button-backtop-leave-active {\n transition:\n opacity 300ms ease,\n transform 300ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.b-float-button-backtop-enter-from,\n.b-float-button-backtop-leave-to {\n opacity: 0;\n transform: scale(0.8);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-float-button-backtop-enter-active,\n .b-float-button-backtop-leave-active {\n transition-duration: 0ms;\n }\n}\n</style>\n"],"mappings":""}
@@ -1,57 +1,91 @@
1
- import { computed as e, inject as t, onBeforeUnmount as n, provide as r, ref as i, watch as a } from "vue";
2
- //#region src/composables/useValidation.ts
3
- var o = { FormValidation: Symbol() };
4
- function s() {
5
- let n = t(o.FormValidation, void 0);
6
- n || (n = {}, r(o.FormValidation, n));
7
- let i = () => n ? Object.values(n).map((e) => e.value.validate()).every((e) => e) : !1, a = () => {
8
- n && Object.values(n).forEach((e) => e.value.reset());
9
- }, s = e(() => n ? Object.values(n).every((e) => e.value.isValid) : !0);
10
- return {
11
- fields: n,
12
- validateAll: i,
13
- resetAll: a,
14
- isValid: s
15
- };
16
- }
17
- function c(r, s, c) {
18
- let l = structuredClone(s.value), u = i({
19
- fieldValue: s,
20
- errors: [],
21
- isValid: !0,
22
- dirty: !1,
23
- touched: !1,
24
- validate: d,
25
- reset: f,
26
- markTouched: p
27
- });
28
- a(s, (e) => {
29
- u.value.dirty = !Object.is(e, l);
30
- }, { deep: !0 });
31
- function d() {
32
- let e = c.safeParse(s.value);
33
- return e.success ? (u.value.errors = [], u.value.isValid = !0) : (u.value.errors = e.error.issues.map((e) => e.message), u.value.isValid = !1), u.value.isValid;
1
+ import { BFloatButtonGroupPlacement as e, BFloatButtonShape as t, BFloatButtonTrigger as n } from "./design-system94.js";
2
+ import { computed as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, defineComponent as s, normalizeClass as c, onBeforeUnmount as l, openBlock as u, provide as d, ref as f, renderSlot as p, watch as m } from "vue";
3
+ //#region src/components/BFloatButton/BFloatButtonGroup.vue?vue&type=script&setup=true&lang.ts
4
+ var h = ["role", "aria-label"], g = ["aria-hidden", "inert"], _ = ["aria-expanded", "aria-label"], v = { class: "b-float-button__body" }, y = {
5
+ class: "b-float-button__icon",
6
+ "aria-hidden": "true"
7
+ }, b = /* @__PURE__ */ s({
8
+ __name: "BFloatButtonGroup",
9
+ props: {
10
+ open: { type: [Boolean, null] },
11
+ trigger: {},
12
+ placement: {},
13
+ shape: {},
14
+ closeIcon: {}
15
+ },
16
+ emits: ["openChange", "update:open"],
17
+ setup(s, { emit: b }) {
18
+ let x = s, S = b, C = f(!1);
19
+ m(() => x.open, (e) => {
20
+ e === !0 ? C.value = !0 : e === !1 && (C.value = !1);
21
+ }, { immediate: !0 });
22
+ function w(e) {
23
+ C.value = e, S("update:open", e), S("openChange", e);
24
+ }
25
+ function T() {
26
+ w(!C.value);
27
+ }
28
+ function E() {
29
+ w(!0);
30
+ }
31
+ function D() {
32
+ w(!1);
33
+ }
34
+ let O = null;
35
+ function k() {
36
+ x.trigger === n.Hover && (O &&= (clearTimeout(O), null), E());
37
+ }
38
+ function A() {
39
+ x.trigger === n.Hover && (O = setTimeout(() => D(), 100));
40
+ }
41
+ l(() => {
42
+ O && clearTimeout(O);
43
+ }), d("bFloatButtonGroupShape", r(() => x.shape ?? t.Circle));
44
+ let j = r(() => x.trigger !== void 0), M = r(() => `b-float-button-group--${x.placement ?? e.Top}`), N = r(() => `b-float-button-group--shape-${x.shape ?? t.Circle}`);
45
+ return (e, t) => (u(), a("div", {
46
+ class: c(["b-float-button-group", [
47
+ M.value,
48
+ N.value,
49
+ {
50
+ "b-float-button-group--menu": j.value,
51
+ "b-float-button-group--open": j.value && C.value
52
+ }
53
+ ]]),
54
+ role: j.value ? void 0 : "group",
55
+ "aria-label": j.value ? void 0 : "Float button group",
56
+ onMouseenter: k,
57
+ onMouseleave: A
58
+ }, [o("div", {
59
+ class: "b-float-button-group__list",
60
+ "aria-hidden": j.value ? !C.value : void 0,
61
+ inert: j.value && !C.value ? !0 : void 0
62
+ }, [p(e.$slots, "default")], 8, g), j.value ? (u(), a("button", {
63
+ key: 0,
64
+ type: "button",
65
+ class: c(["b-float-button-group__trigger", [
66
+ "b-float-button",
67
+ `b-float-button--${x.shape ?? "circle"}`,
68
+ "b-float-button--primary"
69
+ ]]),
70
+ "aria-expanded": C.value,
71
+ "aria-label": C.value ? "Collapse button group" : "Expand button group",
72
+ onClick: T
73
+ }, [o("span", v, [o("span", y, [C.value ? p(e.$slots, "closeIcon", { key: 0 }, () => [t[0] ||= o("svg", {
74
+ width: "1em",
75
+ height: "1em",
76
+ viewBox: "0 0 24 24",
77
+ fill: "currentColor",
78
+ "aria-hidden": "true"
79
+ }, [o("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })], -1)]) : p(e.$slots, "icon", { key: 1 }, () => [t[1] ||= o("svg", {
80
+ width: "1em",
81
+ height: "1em",
82
+ viewBox: "0 0 24 24",
83
+ fill: "currentColor",
84
+ "aria-hidden": "true"
85
+ }, [o("path", { d: "M19 13H13v6h-2v-6H5v-2h6V5h2v6h6v2z" })], -1)])])])], 10, _)) : i("", !0)], 42, h));
34
86
  }
35
- function f() {
36
- u.value.errors = [], u.value.isValid = !0, u.value.dirty = !1, u.value.touched = !1;
37
- }
38
- function p() {
39
- u.value.touched = !0;
40
- }
41
- let m = t(o.FormValidation, void 0);
42
- return m && (m[r] = u), n(() => {
43
- m && delete m[r];
44
- }), {
45
- errors: e(() => u.value.errors),
46
- isValid: e(() => u.value.isValid),
47
- dirty: e(() => u.value.dirty),
48
- touched: e(() => u.value.touched),
49
- validate: d,
50
- reset: f,
51
- markTouched: p
52
- };
53
- }
87
+ });
54
88
  //#endregion
55
- export { o as PIKey, c as useValidationField, s as useValidationForm };
89
+ export { b as default };
56
90
 
57
91
  //# sourceMappingURL=design-system101.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system101.js","names":[],"sources":["../src/composables/useValidation.ts"],"sourcesContent":["import {\n computed,\n inject,\n onBeforeUnmount,\n provide,\n ref,\n watch,\n type ComputedRef,\n type InjectionKey,\n type Ref,\n} from 'vue';\nimport type { ZodType } from 'zod';\n\n/**\n * Types\n */\nexport interface ValidationFieldState<T = unknown> {\n fieldValue: Ref<T>;\n errors: string[];\n isValid: boolean;\n dirty: boolean;\n touched: boolean;\n validate: () => boolean;\n reset: () => void;\n markTouched: () => void;\n}\n\nexport const PIKey = {\n FormValidation: Symbol() as InjectionKey<Record<string, Ref<ValidationFieldState>>>,\n};\n\n/**\n * Form-level validation composable.\n * Creates or injects a shared validation registry, providing\n * methods to validate/reset all registered fields.\n */\nexport function useValidationForm() {\n let fields = inject(PIKey.FormValidation, undefined);\n if (!fields) {\n fields = {};\n provide(PIKey.FormValidation, fields);\n }\n\n const validateAll = (): boolean => {\n if (!fields) return false;\n return Object.values(fields)\n .map((field) => field.value.validate())\n .every((valid) => valid);\n };\n\n const resetAll = () => {\n if (!fields) return;\n Object.values(fields).forEach((field) => field.value.reset());\n };\n\n const isValid = computed(() => {\n if (!fields) return true;\n return Object.values(fields).every((field) => field.value.isValid);\n });\n\n return {\n fields,\n validateAll,\n resetAll,\n isValid,\n };\n}\n\n/**\n * Field-level validation composable.\n * Registers the field into the form's validation registry,\n * validates using the provided Zod schema, and tracks dirty/touched state.\n */\nexport function useValidationField<T>(key: string, fieldValue: Ref<T>, schema: ZodType<T>) {\n const initialValue = structuredClone(fieldValue.value);\n\n const fieldState = ref<ValidationFieldState<T>>({\n fieldValue,\n errors: [],\n isValid: true,\n dirty: false,\n touched: false,\n validate,\n reset,\n markTouched,\n });\n\n watch(\n fieldValue,\n (newVal) => {\n fieldState.value.dirty = !Object.is(newVal, initialValue);\n },\n { deep: true },\n );\n\n function validate(): boolean {\n const result = schema.safeParse(fieldValue.value);\n\n if (result.success) {\n fieldState.value.errors = [];\n fieldState.value.isValid = true;\n } else {\n fieldState.value.errors = result.error.issues.map((issue) => issue.message);\n fieldState.value.isValid = false;\n }\n\n return fieldState.value.isValid;\n }\n\n function reset() {\n fieldState.value.errors = [];\n fieldState.value.isValid = true;\n fieldState.value.dirty = false;\n fieldState.value.touched = false;\n }\n\n function markTouched() {\n fieldState.value.touched = true;\n }\n\n // Register into form\n const formFields = inject(PIKey.FormValidation, undefined);\n if (formFields) {\n formFields[key] = fieldState as Ref<ValidationFieldState>;\n }\n\n onBeforeUnmount(() => {\n if (formFields) {\n delete formFields[key];\n }\n });\n\n const errors = computed(() => fieldState.value.errors);\n const isValid = computed(() => fieldState.value.isValid);\n const dirty = computed(() => fieldState.value.dirty);\n const touched = computed(() => fieldState.value.touched);\n\n return {\n errors,\n isValid,\n dirty,\n touched,\n validate,\n reset,\n markTouched,\n } as {\n errors: ComputedRef<string[]>;\n isValid: ComputedRef<boolean>;\n dirty: ComputedRef<boolean>;\n touched: ComputedRef<boolean>;\n validate: () => boolean;\n reset: () => void;\n markTouched: () => void;\n };\n}\n"],"mappings":";;AA2BA,IAAa,IAAQ,EACnB,gBAAgB,QAAQ,EACzB;AAOD,SAAgB,IAAoB;CAClC,IAAI,IAAS,EAAO,EAAM,gBAAgB,KAAA,EAAU;AACpD,CAAK,MACH,IAAS,EAAE,EACX,EAAQ,EAAM,gBAAgB,EAAO;CAGvC,IAAM,UACC,IACE,OAAO,OAAO,EAAO,CACzB,KAAK,MAAU,EAAM,MAAM,UAAU,CAAC,CACtC,OAAO,MAAU,EAAM,GAHN,IAMhB,UAAiB;AAChB,OACL,OAAO,OAAO,EAAO,CAAC,SAAS,MAAU,EAAM,MAAM,OAAO,CAAC;IAGzD,IAAU,QACT,IACE,OAAO,OAAO,EAAO,CAAC,OAAO,MAAU,EAAM,MAAM,QAAQ,GAD9C,GAEpB;AAEF,QAAO;EACL;EACA;EACA;EACA;EACD;;AAQH,SAAgB,EAAsB,GAAa,GAAoB,GAAoB;CACzF,IAAM,IAAe,gBAAgB,EAAW,MAAM,EAEhD,IAAa,EAA6B;EAC9C;EACA,QAAQ,EAAE;EACV,SAAS;EACT,OAAO;EACP,SAAS;EACT;EACA;EACA;EACD,CAAC;AAEF,GACE,IACC,MAAW;AACV,IAAW,MAAM,QAAQ,CAAC,OAAO,GAAG,GAAQ,EAAa;IAE3D,EAAE,MAAM,IAAM,CACf;CAED,SAAS,IAAoB;EAC3B,IAAM,IAAS,EAAO,UAAU,EAAW,MAAM;AAUjD,SARI,EAAO,WACT,EAAW,MAAM,SAAS,EAAE,EAC5B,EAAW,MAAM,UAAU,OAE3B,EAAW,MAAM,SAAS,EAAO,MAAM,OAAO,KAAK,MAAU,EAAM,QAAQ,EAC3E,EAAW,MAAM,UAAU,KAGtB,EAAW,MAAM;;CAG1B,SAAS,IAAQ;AAIf,EAHA,EAAW,MAAM,SAAS,EAAE,EAC5B,EAAW,MAAM,UAAU,IAC3B,EAAW,MAAM,QAAQ,IACzB,EAAW,MAAM,UAAU;;CAG7B,SAAS,IAAc;AACrB,IAAW,MAAM,UAAU;;CAI7B,IAAM,IAAa,EAAO,EAAM,gBAAgB,KAAA,EAAU;AAgB1D,QAfI,MACF,EAAW,KAAO,IAGpB,QAAsB;AACpB,EAAI,KACF,OAAO,EAAW;GAEpB,EAOK;EACL,QANa,QAAe,EAAW,MAAM,OAAO;EAOpD,SANc,QAAe,EAAW,MAAM,QAAQ;EAOtD,OANY,QAAe,EAAW,MAAM,MAAM;EAOlD,SANc,QAAe,EAAW,MAAM,QAAQ;EAOtD;EACA;EACA;EACD"}
1
+ {"version":3,"file":"design-system101.js","names":[],"sources":["../src/components/BFloatButton/BFloatButtonGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, provide, ref, watch } from 'vue';\nimport { BFloatButtonGroupPlacement, BFloatButtonShape, BFloatButtonTrigger } from './types.ts';\n\n// ─────────────────────────────────────────────\n// Props & emits\n// ─────────────────────────────────────────────\nconst props = defineProps<{\n /**\n * Controlled open state. Use with `v-model:open` for two-way binding.\n * When this prop changes, the internal state syncs to it.\n */\n open?: boolean | null;\n /**\n * The trigger mode for expanding/collapsing the group menu.\n * When set, a trigger button is shown that reveals child buttons.\n */\n trigger?: `${BFloatButtonTrigger}`;\n /**\n * Animation direction when expanding/collapsing.\n * @default 'top'\n */\n placement?: `${BFloatButtonGroupPlacement}`;\n /**\n * Shape applied to all child float buttons.\n * @default 'circle'\n */\n shape?: `${BFloatButtonShape}`;\n /**\n * Icon name for the close/collapse trigger button.\n */\n closeIcon?: string;\n}>();\n\nconst emit = defineEmits<{\n /** Emitted when the group open state changes. */\n (e: 'openChange', open: boolean): void;\n /** v-model support. */\n (e: 'update:open', open: boolean): void;\n}>();\n\ndefineSlots<{\n /** Float button children. */\n default?(): unknown;\n /** Custom trigger icon (open state). */\n icon?(): unknown;\n /** Custom close icon (close state). */\n closeIcon?(): unknown;\n}>();\n\n// ─────────────────────────────────────────────\n// Internal state always the rendering source of truth\n// ─────────────────────────────────────────────\nconst internalOpen = ref(false);\n\n// Sync from controlled prop internal state when explicitly changed\nwatch(\n () => props.open,\n (val) => {\n if (val === true) internalOpen.value = true;\n else if (val === false) internalOpen.value = false;\n // null/undefined means \"uncontrolled\" — do not override internal state\n },\n { immediate: true },\n);\n\nfunction setOpen(val: boolean) {\n internalOpen.value = val;\n emit('update:open', val);\n emit('openChange', val);\n}\n\nfunction toggle() {\n setOpen(!internalOpen.value);\n}\n\nfunction openGroup() {\n setOpen(true);\n}\n\nfunction closeGroup() {\n setOpen(false);\n}\n\n// ─────────────────────────────────────────────\n// Hover trigger\n// ─────────────────────────────────────────────\nlet hideTimer: ReturnType<typeof setTimeout> | null = null;\n\nfunction onMouseEnter() {\n if (props.trigger !== BFloatButtonTrigger.Hover) return;\n if (hideTimer) {\n clearTimeout(hideTimer);\n hideTimer = null;\n }\n openGroup();\n}\n\nfunction onMouseLeave() {\n if (props.trigger !== BFloatButtonTrigger.Hover) return;\n hideTimer = setTimeout(() => closeGroup(), 100);\n}\n\nonBeforeUnmount(() => {\n if (hideTimer) clearTimeout(hideTimer);\n});\n\n// ─────────────────────────────────────────────\n// Provide shape to children\n// ─────────────────────────────────────────────\nprovide(\n 'bFloatButtonGroupShape',\n computed(() => props.shape ?? BFloatButtonShape.Circle),\n);\n\nconst isGroup = computed(() => props.trigger !== undefined);\nconst placementClass = computed(\n () => `b-float-button-group--${props.placement ?? BFloatButtonGroupPlacement.Top}`,\n);\nconst shapeClass = computed(\n () => `b-float-button-group--shape-${props.shape ?? BFloatButtonShape.Circle}`,\n);\n</script>\n\n<template>\n <div\n class=\"b-float-button-group\"\n :class=\"[\n placementClass,\n shapeClass,\n {\n 'b-float-button-group--menu': isGroup,\n 'b-float-button-group--open': isGroup && internalOpen,\n },\n ]\"\n :role=\"!isGroup ? 'group' : undefined\"\n :aria-label=\"!isGroup ? 'Float button group' : undefined\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n >\n <!-- Child buttons list (always rendered; hidden when group is collapsed) -->\n <div\n class=\"b-float-button-group__list\"\n :aria-hidden=\"isGroup ? !internalOpen : undefined\"\n :inert=\"isGroup && !internalOpen ? true : undefined\"\n >\n <slot />\n </div>\n\n <!-- Trigger button (only rendered when trigger is set) -->\n <button\n v-if=\"isGroup\"\n type=\"button\"\n class=\"b-float-button-group__trigger\"\n :class=\"[\n 'b-float-button',\n `b-float-button--${props.shape ?? 'circle'}`,\n 'b-float-button--primary',\n ]\"\n :aria-expanded=\"internalOpen\"\n :aria-label=\"internalOpen ? 'Collapse button group' : 'Expand button group'\"\n @click=\"toggle\"\n >\n <span class=\"b-float-button__body\">\n <span class=\"b-float-button__icon\" aria-hidden=\"true\">\n <template v-if=\"internalOpen\">\n <slot name=\"closeIcon\">\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n />\n </svg>\n </slot>\n </template>\n <template v-else>\n <slot name=\"icon\">\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M19 13H13v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </svg>\n </slot>\n </template>\n </span>\n </span>\n </button>\n </div>\n</template>\n\n<style>\n/* ─────────────────────────────────────────────\n Group container\n ───────────────────────────────────────────── */\n.b-float-button-group {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.75rem;\n position: relative;\n}\n\n.b-float-button-group--menu {\n position: relative;\n}\n\n/* ─────────────────────────────────────────────\n Items list (collapsible)\n ───────────────────────────────────────────── */\n.b-float-button-group__list {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.75rem;\n list-style: none;\n padding: 0;\n margin: 0 0 0.75rem 0;\n\n /* Collapsed: hidden */\n overflow: hidden;\n max-height: 0;\n opacity: 0;\n pointer-events: none;\n transition:\n max-height 300ms cubic-bezier(0.4, 0, 0.2, 1),\n opacity 250ms ease;\n}\n\n.b-float-button-group--open .b-float-button-group__list {\n max-height: 60vh;\n opacity: 1;\n pointer-events: auto;\n}\n\n/* ── Placement variants for list direction ──\n DOM order is always [list, trigger]. For `bottom`/`right` we reverse\n the container so the trigger comes before the list visually. */\n.b-float-button-group--top .b-float-button-group__list {\n flex-direction: column-reverse;\n}\n\n.b-float-button-group--bottom {\n flex-direction: column-reverse;\n}\n\n.b-float-button-group--bottom .b-float-button-group__list {\n flex-direction: column;\n margin: 0.75rem 0 0 0;\n}\n\n.b-float-button-group--left .b-float-button-group__list {\n flex-direction: row-reverse;\n margin: 0 0.75rem 0 0;\n}\n\n.b-float-button-group--right .b-float-button-group__list {\n flex-direction: row;\n margin: 0 0 0 0.75rem;\n}\n\n/* ── Horizontal layout for left/right placements ── */\n.b-float-button-group--left {\n flex-direction: row;\n align-items: center;\n}\n\n.b-float-button-group--right {\n flex-direction: row-reverse;\n align-items: center;\n}\n\n/* ── Trigger button ── */\n.b-float-button-group__trigger {\n flex-shrink: 0;\n}\n\n/* ─────────────────────────────────────────────\n Reduced motion\n ───────────────────────────────────────────── */\n@media (prefers-reduced-motion: reduce) {\n .b-float-button-group__list {\n transition-duration: 0ms;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;EAOA,IAAM,IAAQ,GA2BR,IAAO,GAmBP,IAAe,EAAI,GAAM;AAG/B,UACQ,EAAM,OACX,MAAQ;AACP,GAAI,MAAQ,KAAM,EAAa,QAAQ,KAC9B,MAAQ,OAAO,EAAa,QAAQ;KAG/C,EAAE,WAAW,IAAM,CACpB;EAED,SAAS,EAAQ,GAAc;AAG7B,GAFA,EAAa,QAAQ,GACrB,EAAK,eAAe,EAAI,EACxB,EAAK,cAAc,EAAI;;EAGzB,SAAS,IAAS;AAChB,KAAQ,CAAC,EAAa,MAAM;;EAG9B,SAAS,IAAY;AACnB,KAAQ,GAAK;;EAGf,SAAS,IAAa;AACpB,KAAQ,GAAM;;EAMhB,IAAI,IAAkD;EAEtD,SAAS,IAAe;AAClB,KAAM,YAAY,EAAoB,UAC1C,AAEE,OADA,aAAa,EAAU,EACX,OAEd,GAAW;;EAGb,SAAS,IAAe;AAClB,KAAM,YAAY,EAAoB,UAC1C,IAAY,iBAAiB,GAAY,EAAE,IAAI;;AAUjD,EAPA,QAAsB;AACpB,GAAI,KAAW,aAAa,EAAU;IACtC,EAKF,EACE,0BACA,QAAe,EAAM,SAAS,EAAkB,OAAO,CACxD;EAED,IAAM,IAAU,QAAe,EAAM,YAAY,KAAA,EAAU,EACrD,IAAiB,QACf,yBAAyB,EAAM,aAAa,EAA2B,MAC9E,EACK,IAAa,QACX,+BAA+B,EAAM,SAAS,EAAkB,SACvE;yBAIC,EAuEM,OAAA;GAtEJ,OAAK,EAAA,CAAC,wBAAsB;IACZ,EAAA;IAAsB,EAAA;;mCAA0D,EAAA;mCAA+C,EAAA,SAAW,EAAA;;;GAQzJ,MAAO,EAAA,QAAoB,KAAA,IAAb;GACd,cAAa,EAAA,QAAiC,KAAA,IAA1B;GACpB,cAAY;GACZ,cAAY;MAGb,EAMM,OAAA;GALJ,OAAM;GACL,eAAa,EAAA,QAAO,CAAI,EAAA,QAAe,KAAA;GACvC,OAAO,EAAA,SAAO,CAAK,EAAA,QAAY,KAAU,KAAA;MAE1C,EAAQ,EAAA,QAAA,UAAA,CAAA,EAAA,GAAA,EAAA,EAKF,EAAA,SAAA,GAAA,EADR,EA6CS,UAAA;;GA3CP,MAAK;GACL,OAAK,EAAA,CAAC,iCAA+B;;uBAC0B,EAAM,SAAK;;;GAKzE,iBAAe,EAAA;GACf,cAAY,EAAA,QAAY,0BAAA;GACxB,SAAO;MAER,EA+BO,QA/BP,GA+BO,CA9BL,EA6BO,QA7BP,GA6BO,CA5BW,EAAA,QACd,EAYO,EAAA,QAAA,aAAA,EAAA,KAAA,GAAA,QAAA,CAAA,AAAA,EAAA,OAXL,EAUM,OAAA;GATJ,OAAM;GACN,QAAO;GACP,SAAQ;GACR,MAAK;GACL,eAAY;MAEZ,EAEE,QAAA,EADA,GAAE,yGAAuG,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA,GAM/G,EAUO,EAAA,QAAA,QAAA,EAAA,KAAA,GAAA,QAAA,CAAA,AAAA,EAAA,OATL,EAQM,OAAA;GAPJ,OAAM;GACN,QAAO;GACP,SAAQ;GACR,MAAK;GACL,eAAY;MAEZ,EAAgD,QAAA,EAA1C,GAAE,uCAAqC,CAAA,CAAA,EAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,EAAA"}
@@ -1,16 +1,8 @@
1
- //#region src/components/BForm/types.ts
2
- var e = /* @__PURE__ */ function(e) {
3
- return e.Horizontal = "horizontal", e.Vertical = "vertical", e.Inline = "inline", e;
4
- }({}), t = /* @__PURE__ */ function(e) {
5
- return e.Left = "left", e.Right = "right", e;
6
- }({}), n = /* @__PURE__ */ function(e) {
7
- return e.Success = "success", e.Warning = "warning", e.Error = "error", e.Validating = "validating", e;
8
- }({}), r = /* @__PURE__ */ function(e) {
9
- return e.Required = "required", e.Optional = "optional", e;
10
- }({}), i = /* @__PURE__ */ function(e) {
11
- return e.Change = "change", e.Blur = "blur", e.Submit = "submit", e;
12
- }({});
1
+ import e from "./design-system101.js";
2
+ /* empty css */
3
+ //#region src/components/BFloatButton/BFloatButtonGroup.vue
4
+ var t = e;
13
5
  //#endregion
14
- export { t as BFormLabelAlign, e as BFormLayout, r as BFormRequiredMark, n as BFormValidateStatus, i as BFormValidateTrigger };
6
+ export { t as default };
15
7
 
16
8
  //# sourceMappingURL=design-system103.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system103.js","names":[],"sources":["../src/components/BForm/types.ts"],"sourcesContent":["export enum BFormLayout {\n Horizontal = 'horizontal',\n Vertical = 'vertical',\n Inline = 'inline',\n}\n\nexport enum BFormLabelAlign {\n Left = 'left',\n Right = 'right',\n}\n\nexport enum BFormValidateStatus {\n Success = 'success',\n Warning = 'warning',\n Error = 'error',\n Validating = 'validating',\n}\n\nexport enum BFormRequiredMark {\n Required = 'required',\n Optional = 'optional',\n}\n\nexport enum BFormValidateTrigger {\n Change = 'change',\n Blur = 'blur',\n Submit = 'submit',\n}\n\nexport interface BFormFieldError {\n name: string;\n errors: string[];\n}\n\nexport interface BFormValidateResult {\n values: Record<string, unknown>;\n errorFields: BFormFieldError[];\n}\n\nexport interface BFormItemContext {\n layout: `${BFormLayout}`;\n labelAlign: `${BFormLabelAlign}`;\n labelWidth: string | undefined;\n colon: boolean;\n disabled: boolean;\n requiredMark: boolean | `${BFormRequiredMark}`;\n validateTrigger: `${BFormValidateTrigger}` | `${BFormValidateTrigger}`[];\n model: Record<string, unknown> | undefined;\n}\n\nexport interface BFormInstance {\n validate: () => boolean;\n resetFields: (names?: string[]) => void;\n scrollToField: (name: string, options?: ScrollIntoViewOptions) => void;\n isValid: boolean;\n}\n"],"mappings":";AAAA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,aAAA,cACA,EAAA,WAAA,YACA,EAAA,SAAA;KACD,EAEW,IAAL,yBAAA,GAAA;QACL,EAAA,OAAA,QACA,EAAA,QAAA;KACD,EAEW,IAAL,yBAAA,GAAA;QACL,EAAA,UAAA,WACA,EAAA,UAAA,WACA,EAAA,QAAA,SACA,EAAA,aAAA;KACD,EAEW,IAAL,yBAAA,GAAA;QACL,EAAA,WAAA,YACA,EAAA,WAAA;KACD,EAEW,IAAL,yBAAA,GAAA;QACL,EAAA,SAAA,UACA,EAAA,OAAA,QACA,EAAA,SAAA;KACD"}
1
+ {"version":3,"file":"design-system103.js","names":[],"sources":["../src/components/BFloatButton/BFloatButtonGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, provide, ref, watch } from 'vue';\nimport { BFloatButtonGroupPlacement, BFloatButtonShape, BFloatButtonTrigger } from './types.ts';\n\n// ─────────────────────────────────────────────\n// Props & emits\n// ─────────────────────────────────────────────\nconst props = defineProps<{\n /**\n * Controlled open state. Use with `v-model:open` for two-way binding.\n * When this prop changes, the internal state syncs to it.\n */\n open?: boolean | null;\n /**\n * The trigger mode for expanding/collapsing the group menu.\n * When set, a trigger button is shown that reveals child buttons.\n */\n trigger?: `${BFloatButtonTrigger}`;\n /**\n * Animation direction when expanding/collapsing.\n * @default 'top'\n */\n placement?: `${BFloatButtonGroupPlacement}`;\n /**\n * Shape applied to all child float buttons.\n * @default 'circle'\n */\n shape?: `${BFloatButtonShape}`;\n /**\n * Icon name for the close/collapse trigger button.\n */\n closeIcon?: string;\n}>();\n\nconst emit = defineEmits<{\n /** Emitted when the group open state changes. */\n (e: 'openChange', open: boolean): void;\n /** v-model support. */\n (e: 'update:open', open: boolean): void;\n}>();\n\ndefineSlots<{\n /** Float button children. */\n default?(): unknown;\n /** Custom trigger icon (open state). */\n icon?(): unknown;\n /** Custom close icon (close state). */\n closeIcon?(): unknown;\n}>();\n\n// ─────────────────────────────────────────────\n// Internal state — always the rendering source of truth\n// ─────────────────────────────────────────────\nconst internalOpen = ref(false);\n\n// Sync from controlled prop → internal state when explicitly changed\nwatch(\n () => props.open,\n (val) => {\n if (val === true) internalOpen.value = true;\n else if (val === false) internalOpen.value = false;\n // null/undefined means \"uncontrolled\" — do not override internal state\n },\n { immediate: true },\n);\n\nfunction setOpen(val: boolean) {\n internalOpen.value = val;\n emit('update:open', val);\n emit('openChange', val);\n}\n\nfunction toggle() {\n setOpen(!internalOpen.value);\n}\n\nfunction openGroup() {\n setOpen(true);\n}\n\nfunction closeGroup() {\n setOpen(false);\n}\n\n// ─────────────────────────────────────────────\n// Hover trigger\n// ─────────────────────────────────────────────\nlet hideTimer: ReturnType<typeof setTimeout> | null = null;\n\nfunction onMouseEnter() {\n if (props.trigger !== BFloatButtonTrigger.Hover) return;\n if (hideTimer) {\n clearTimeout(hideTimer);\n hideTimer = null;\n }\n openGroup();\n}\n\nfunction onMouseLeave() {\n if (props.trigger !== BFloatButtonTrigger.Hover) return;\n hideTimer = setTimeout(() => closeGroup(), 100);\n}\n\nonBeforeUnmount(() => {\n if (hideTimer) clearTimeout(hideTimer);\n});\n\n// ─────────────────────────────────────────────\n// Provide shape to children\n// ─────────────────────────────────────────────\nprovide(\n 'bFloatButtonGroupShape',\n computed(() => props.shape ?? BFloatButtonShape.Circle),\n);\n\nconst isGroup = computed(() => props.trigger !== undefined);\nconst placementClass = computed(\n () => `b-float-button-group--${props.placement ?? BFloatButtonGroupPlacement.Top}`,\n);\nconst shapeClass = computed(\n () => `b-float-button-group--shape-${props.shape ?? BFloatButtonShape.Circle}`,\n);\n</script>\n\n<template>\n <div\n class=\"b-float-button-group\"\n :class=\"[\n placementClass,\n shapeClass,\n {\n 'b-float-button-group--menu': isGroup,\n 'b-float-button-group--open': isGroup && internalOpen,\n },\n ]\"\n :role=\"!isGroup ? 'group' : undefined\"\n :aria-label=\"!isGroup ? 'Float button group' : undefined\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n >\n <!-- Child buttons list (always rendered; hidden when group is collapsed) -->\n <div\n class=\"b-float-button-group__list\"\n :aria-hidden=\"isGroup ? !internalOpen : undefined\"\n :inert=\"isGroup && !internalOpen ? true : undefined\"\n >\n <slot />\n </div>\n\n <!-- Trigger button (only rendered when trigger is set) -->\n <button\n v-if=\"isGroup\"\n type=\"button\"\n class=\"b-float-button-group__trigger\"\n :class=\"[\n 'b-float-button',\n `b-float-button--${props.shape ?? 'circle'}`,\n 'b-float-button--primary',\n ]\"\n :aria-expanded=\"internalOpen\"\n :aria-label=\"internalOpen ? 'Collapse button group' : 'Expand button group'\"\n @click=\"toggle\"\n >\n <span class=\"b-float-button__body\">\n <span class=\"b-float-button__icon\" aria-hidden=\"true\">\n <template v-if=\"internalOpen\">\n <slot name=\"closeIcon\">\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n />\n </svg>\n </slot>\n </template>\n <template v-else>\n <slot name=\"icon\">\n <svg\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d=\"M19 13H13v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </svg>\n </slot>\n </template>\n </span>\n </span>\n </button>\n </div>\n</template>\n\n<style>\n/* ─────────────────────────────────────────────\n Group container\n ───────────────────────────────────────────── */\n.b-float-button-group {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.75rem;\n position: relative;\n}\n\n.b-float-button-group--menu {\n position: relative;\n}\n\n/* ─────────────────────────────────────────────\n Items list (collapsible)\n ───────────────────────────────────────────── */\n.b-float-button-group__list {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 0.75rem;\n list-style: none;\n padding: 0;\n margin: 0 0 0.75rem 0;\n\n /* Collapsed: hidden */\n overflow: hidden;\n max-height: 0;\n opacity: 0;\n pointer-events: none;\n transition:\n max-height 300ms cubic-bezier(0.4, 0, 0.2, 1),\n opacity 250ms ease;\n}\n\n.b-float-button-group--open .b-float-button-group__list {\n max-height: 60vh;\n opacity: 1;\n pointer-events: auto;\n}\n\n/* ── Placement variants for list direction ──\n DOM order is always [list, trigger]. For `bottom`/`right` we reverse\n the container so the trigger comes before the list visually. */\n.b-float-button-group--top .b-float-button-group__list {\n flex-direction: column-reverse;\n}\n\n.b-float-button-group--bottom {\n flex-direction: column-reverse;\n}\n\n.b-float-button-group--bottom .b-float-button-group__list {\n flex-direction: column;\n margin: 0.75rem 0 0 0;\n}\n\n.b-float-button-group--left .b-float-button-group__list {\n flex-direction: row-reverse;\n margin: 0 0.75rem 0 0;\n}\n\n.b-float-button-group--right .b-float-button-group__list {\n flex-direction: row;\n margin: 0 0 0 0.75rem;\n}\n\n/* ── Horizontal layout for left/right placements ── */\n.b-float-button-group--left {\n flex-direction: row;\n align-items: center;\n}\n\n.b-float-button-group--right {\n flex-direction: row-reverse;\n align-items: center;\n}\n\n/* ── Trigger button ── */\n.b-float-button-group__trigger {\n flex-shrink: 0;\n}\n\n/* ─────────────────────────────────────────────\n Reduced motion\n ───────────────────────────────────────────── */\n@media (prefers-reduced-motion: reduce) {\n .b-float-button-group__list {\n transition-duration: 0ms;\n }\n}\n</style>\n"],"mappings":""}