@7pmlabs/design-system 1.0.10 → 2.0.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 (429) hide show
  1. package/README.md +57 -6
  2. package/dist/design-system.css +1 -1
  3. package/dist/design-system.js +66 -60
  4. package/dist/design-system100.js +4 -5
  5. package/dist/design-system100.js.map +1 -1
  6. package/dist/design-system101.js +53 -506
  7. package/dist/design-system101.js.map +1 -1
  8. package/dist/{design-system93.js → design-system102.js} +1 -1
  9. package/dist/design-system102.js.map +1 -0
  10. package/dist/design-system103.js +13 -5
  11. package/dist/design-system103.js.map +1 -1
  12. package/dist/design-system104.js +109 -7
  13. package/dist/design-system104.js.map +1 -1
  14. package/dist/design-system106.js +9 -0
  15. package/dist/design-system106.js.map +1 -0
  16. package/dist/design-system107.js +206 -6
  17. package/dist/design-system107.js.map +1 -1
  18. package/dist/design-system109.js +9 -0
  19. package/dist/design-system109.js.map +1 -0
  20. package/dist/design-system110.js +507 -6
  21. package/dist/design-system110.js.map +1 -1
  22. package/dist/design-system112.js +8 -0
  23. package/dist/design-system112.js.map +1 -0
  24. package/dist/design-system113.js +7 -5
  25. package/dist/design-system113.js.map +1 -1
  26. package/dist/design-system114.js +209 -9
  27. package/dist/design-system114.js.map +1 -1
  28. package/dist/design-system116.js +9 -0
  29. package/dist/design-system116.js.map +1 -0
  30. package/dist/design-system117.js +224 -6
  31. package/dist/design-system117.js.map +1 -1
  32. package/dist/design-system119.js +9 -0
  33. package/dist/design-system119.js.map +1 -0
  34. package/dist/design-system12.js.map +1 -1
  35. package/dist/design-system120.js +163 -5
  36. package/dist/design-system120.js.map +1 -1
  37. package/dist/design-system122.js +5 -90
  38. package/dist/design-system122.js.map +1 -1
  39. package/dist/design-system123.js +12 -0
  40. package/dist/design-system123.js.map +1 -0
  41. package/dist/design-system124.js +274 -5
  42. package/dist/design-system124.js.map +1 -1
  43. package/dist/design-system126.js +9 -0
  44. package/dist/design-system126.js.map +1 -0
  45. package/dist/design-system127.js +16 -5
  46. package/dist/design-system127.js.map +1 -1
  47. package/dist/design-system129.js +8 -0
  48. package/dist/design-system129.js.map +1 -0
  49. package/dist/design-system130.js +12 -5
  50. package/dist/design-system130.js.map +1 -1
  51. package/dist/design-system131.js +76 -137
  52. package/dist/design-system131.js.map +1 -1
  53. package/dist/design-system133.js +1 -1
  54. package/dist/design-system133.js.map +1 -1
  55. package/dist/design-system134.js +37 -90
  56. package/dist/design-system134.js.map +1 -1
  57. package/dist/design-system136.js +1 -1
  58. package/dist/design-system136.js.map +1 -1
  59. package/dist/design-system137.js +226 -20
  60. package/dist/design-system137.js.map +1 -1
  61. package/dist/design-system139.js +4 -5
  62. package/dist/design-system139.js.map +1 -1
  63. package/dist/design-system140.js +151 -9
  64. package/dist/design-system140.js.map +1 -1
  65. package/dist/design-system142.js +3 -2
  66. package/dist/design-system142.js.map +1 -1
  67. package/dist/design-system143.js +93 -19
  68. package/dist/design-system143.js.map +1 -1
  69. package/dist/design-system145.js +5 -158
  70. package/dist/design-system145.js.map +1 -1
  71. package/dist/design-system146.js +12 -0
  72. package/dist/design-system146.js.map +1 -0
  73. package/dist/design-system147.js +37 -5
  74. package/dist/design-system147.js.map +1 -1
  75. package/dist/design-system148.js +4 -307
  76. package/dist/design-system148.js.map +1 -1
  77. package/dist/design-system149.js +24 -0
  78. package/dist/{design-system144.js.map → design-system149.js.map} +1 -1
  79. package/dist/design-system150.js +2 -3
  80. package/dist/design-system150.js.map +1 -1
  81. package/dist/design-system151.js +131 -213
  82. package/dist/design-system151.js.map +1 -1
  83. package/dist/design-system153.js +1 -1
  84. package/dist/design-system153.js.map +1 -1
  85. package/dist/design-system154.js +278 -160
  86. package/dist/design-system154.js.map +1 -1
  87. package/dist/design-system156.js +1 -1
  88. package/dist/design-system156.js.map +1 -1
  89. package/dist/design-system157.js +240 -3
  90. package/dist/design-system157.js.map +1 -1
  91. package/dist/design-system159.js +8 -0
  92. package/dist/design-system159.js.map +1 -0
  93. package/dist/design-system16.js.map +1 -1
  94. package/dist/design-system160.js +189 -6
  95. package/dist/design-system160.js.map +1 -1
  96. package/dist/design-system162.js +8 -0
  97. package/dist/design-system162.js.map +1 -0
  98. package/dist/design-system163.js +3 -6
  99. package/dist/design-system163.js.map +1 -1
  100. package/dist/design-system164.js +46 -57
  101. package/dist/design-system164.js.map +1 -1
  102. package/dist/design-system166.js +2 -2
  103. package/dist/design-system166.js.map +1 -1
  104. package/dist/design-system167.js +44 -170
  105. package/dist/design-system167.js.map +1 -1
  106. package/dist/design-system169.js +2 -2
  107. package/dist/design-system169.js.map +1 -1
  108. package/dist/design-system170.js +55 -101
  109. package/dist/design-system170.js.map +1 -1
  110. package/dist/design-system172.js +5 -4
  111. package/dist/design-system172.js.map +1 -1
  112. package/dist/design-system173.js +182 -11
  113. package/dist/design-system173.js.map +1 -1
  114. package/dist/design-system175.js +9 -0
  115. package/dist/design-system175.js.map +1 -0
  116. package/dist/design-system176.js +115 -6
  117. package/dist/design-system176.js.map +1 -1
  118. package/dist/design-system178.js +8 -0
  119. package/dist/design-system178.js.map +1 -0
  120. package/dist/design-system179.js +11 -5
  121. package/dist/design-system179.js.map +1 -1
  122. package/dist/design-system180.js +444 -70
  123. package/dist/design-system180.js.map +1 -1
  124. package/dist/design-system182.js +5 -4
  125. package/dist/design-system182.js.map +1 -1
  126. package/dist/design-system183.js +21 -21
  127. package/dist/design-system183.js.map +1 -1
  128. package/dist/design-system185.js +1 -1
  129. package/dist/design-system185.js.map +1 -1
  130. package/dist/design-system186.js +85 -25
  131. package/dist/design-system186.js.map +1 -1
  132. package/dist/design-system188.js +1 -1
  133. package/dist/design-system188.js.map +1 -1
  134. package/dist/design-system189.js +7 -5
  135. package/dist/design-system189.js.map +1 -1
  136. package/dist/design-system19.js.map +1 -1
  137. package/dist/design-system191.js +1 -1
  138. package/dist/design-system191.js.map +1 -1
  139. package/dist/design-system192.js +20 -23
  140. package/dist/design-system192.js.map +1 -1
  141. package/dist/design-system194.js +1 -1
  142. package/dist/design-system194.js.map +1 -1
  143. package/dist/design-system195.js +24 -323
  144. package/dist/design-system195.js.map +1 -1
  145. package/dist/design-system197.js +1 -1
  146. package/dist/design-system197.js.map +1 -1
  147. package/dist/design-system198.js +19 -88
  148. package/dist/design-system198.js.map +1 -1
  149. package/dist/design-system200.js +1 -1
  150. package/dist/design-system200.js.map +1 -1
  151. package/dist/design-system201.js +330 -17
  152. package/dist/design-system201.js.map +1 -1
  153. package/dist/design-system203.js +5 -3
  154. package/dist/design-system203.js.map +1 -1
  155. package/dist/design-system204.js +88 -407
  156. package/dist/design-system204.js.map +1 -1
  157. package/dist/design-system206.js +1 -1
  158. package/dist/design-system206.js.map +1 -1
  159. package/dist/design-system207.js +17 -106
  160. package/dist/design-system207.js.map +1 -1
  161. package/dist/{design-system202.js → design-system208.js} +2 -2
  162. package/dist/{design-system202.js.map → design-system208.js.map} +1 -1
  163. package/dist/design-system209.js +3 -6
  164. package/dist/design-system209.js.map +1 -1
  165. package/dist/design-system210.js +403 -90
  166. package/dist/design-system210.js.map +1 -1
  167. package/dist/design-system212.js +4 -5
  168. package/dist/design-system212.js.map +1 -1
  169. package/dist/design-system213.js +45 -723
  170. package/dist/design-system213.js.map +1 -1
  171. package/dist/design-system215.js +1 -1
  172. package/dist/design-system215.js.map +1 -1
  173. package/dist/design-system216.js +88 -11
  174. package/dist/design-system216.js.map +1 -1
  175. package/dist/design-system217.js +4 -525
  176. package/dist/design-system217.js.map +1 -1
  177. package/dist/design-system218.js +111 -0
  178. package/dist/design-system218.js.map +1 -0
  179. package/dist/design-system22.js.map +1 -1
  180. package/dist/design-system220.js +6 -3
  181. package/dist/design-system220.js.map +1 -1
  182. package/dist/design-system221.js +103 -43
  183. package/dist/design-system221.js.map +1 -1
  184. package/dist/design-system223.js +6 -283
  185. package/dist/design-system223.js.map +1 -1
  186. package/dist/design-system224.js +740 -0
  187. package/dist/design-system224.js.map +1 -0
  188. package/dist/design-system226.js +5 -119
  189. package/dist/design-system226.js.map +1 -1
  190. package/dist/{design-system60.js → design-system227.js} +6 -8
  191. package/dist/design-system227.js.map +1 -0
  192. package/dist/design-system228.js +525 -5
  193. package/dist/design-system228.js.map +1 -1
  194. package/dist/{design-system219.js → design-system230.js} +2 -2
  195. package/dist/{design-system219.js.map → design-system230.js.map} +1 -1
  196. package/dist/design-system231.js +3 -5
  197. package/dist/design-system231.js.map +1 -1
  198. package/dist/design-system232.js +42 -50
  199. package/dist/design-system232.js.map +1 -1
  200. package/dist/design-system233.js +1 -1
  201. package/dist/design-system233.js.map +1 -1
  202. package/dist/design-system234.js +254 -141
  203. package/dist/design-system234.js.map +1 -1
  204. package/dist/design-system236.js +1 -1
  205. package/dist/design-system236.js.map +1 -1
  206. package/dist/design-system237.js +119 -7
  207. package/dist/design-system237.js.map +1 -1
  208. package/dist/design-system239.js +8 -0
  209. package/dist/design-system239.js.map +1 -0
  210. package/dist/design-system240.js +112 -5
  211. package/dist/design-system240.js.map +1 -1
  212. package/dist/design-system242.js +8 -0
  213. package/dist/design-system242.js.map +1 -0
  214. package/dist/design-system243.js +54 -6
  215. package/dist/design-system243.js.map +1 -1
  216. package/dist/design-system244.js +4 -7
  217. package/dist/design-system244.js.map +1 -1
  218. package/dist/design-system245.js +139 -343
  219. package/dist/design-system245.js.map +1 -1
  220. package/dist/design-system247.js +4 -5
  221. package/dist/design-system247.js.map +1 -1
  222. package/dist/design-system248.js +10 -0
  223. package/dist/design-system248.js.map +1 -0
  224. package/dist/{design-system238.js → design-system249.js} +2 -2
  225. package/dist/design-system249.js.map +1 -0
  226. package/dist/design-system25.js.map +1 -1
  227. package/dist/design-system251.js +8 -0
  228. package/dist/design-system251.js.map +1 -0
  229. package/dist/{design-system241.js → design-system252.js} +1 -1
  230. package/dist/design-system252.js.map +1 -0
  231. package/dist/design-system254.js +9 -0
  232. package/dist/design-system254.js.map +1 -0
  233. package/dist/design-system255.js +12 -0
  234. package/dist/design-system255.js.map +1 -0
  235. package/dist/design-system256.js +769 -0
  236. package/dist/design-system256.js.map +1 -0
  237. package/dist/design-system258.js +9 -0
  238. package/dist/design-system258.js.map +1 -0
  239. package/dist/design-system259.js +10 -0
  240. package/dist/design-system259.js.map +1 -0
  241. package/dist/design-system260.js +377 -0
  242. package/dist/design-system260.js.map +1 -0
  243. package/dist/design-system262.js +9 -0
  244. package/dist/design-system262.js.map +1 -0
  245. package/dist/design-system28.js.map +1 -1
  246. package/dist/design-system3.js.map +1 -1
  247. package/dist/design-system30.js +21 -138
  248. package/dist/design-system30.js.map +1 -1
  249. package/dist/design-system32.js +5 -4
  250. package/dist/design-system32.js.map +1 -1
  251. package/dist/design-system33.js +488 -14
  252. package/dist/design-system33.js.map +1 -1
  253. package/dist/design-system35.js +1 -1
  254. package/dist/design-system35.js.map +1 -1
  255. package/dist/design-system36.js +135 -17
  256. package/dist/design-system36.js.map +1 -1
  257. package/dist/design-system38.js +1 -1
  258. package/dist/design-system38.js.map +1 -1
  259. package/dist/design-system39.js +16 -11
  260. package/dist/design-system39.js.map +1 -1
  261. package/dist/design-system4.js.map +1 -1
  262. package/dist/design-system41.js +8 -0
  263. package/dist/design-system41.js.map +1 -0
  264. package/dist/design-system42.js +26 -5
  265. package/dist/design-system42.js.map +1 -1
  266. package/dist/design-system44.js +5 -71
  267. package/dist/design-system44.js.map +1 -1
  268. package/dist/design-system45.js +353 -0
  269. package/dist/design-system45.js.map +1 -0
  270. package/dist/design-system47.js +5 -50
  271. package/dist/design-system47.js.map +1 -1
  272. package/dist/design-system48.js +11 -4
  273. package/dist/design-system48.js.map +1 -1
  274. package/dist/design-system49.js +476 -3
  275. package/dist/design-system49.js.map +1 -1
  276. package/dist/design-system51.js +8 -0
  277. package/dist/design-system51.js.map +1 -0
  278. package/dist/design-system52.js +3 -5
  279. package/dist/design-system52.js.map +1 -1
  280. package/dist/design-system53.js +56 -83
  281. package/dist/design-system53.js.map +1 -1
  282. package/dist/design-system55.js +5 -4
  283. package/dist/design-system55.js.map +1 -1
  284. package/dist/design-system56.js +50 -11
  285. package/dist/design-system56.js.map +1 -1
  286. package/dist/design-system57.js +4 -591
  287. package/dist/design-system57.js.map +1 -1
  288. package/dist/design-system58.js +6 -0
  289. package/dist/design-system58.js.map +1 -0
  290. package/dist/design-system59.js +64 -5
  291. package/dist/design-system59.js.map +1 -1
  292. package/dist/design-system61.js +5 -696
  293. package/dist/design-system61.js.map +1 -1
  294. package/dist/design-system62.js +101 -0
  295. package/dist/design-system62.js.map +1 -0
  296. package/dist/design-system64.js +5 -158
  297. package/dist/design-system64.js.map +1 -1
  298. package/dist/design-system65.js +14 -0
  299. package/dist/design-system65.js.map +1 -0
  300. package/dist/design-system66.js +591 -5
  301. package/dist/design-system66.js.map +1 -1
  302. package/dist/design-system68.js +3 -2
  303. package/dist/design-system68.js.map +1 -1
  304. package/dist/design-system69.js +13 -49
  305. package/dist/design-system69.js.map +1 -1
  306. package/dist/design-system7.js.map +1 -1
  307. package/dist/design-system70.js +699 -0
  308. package/dist/{design-system63.js.map → design-system70.js.map} +1 -1
  309. package/dist/design-system72.js +5 -199
  310. package/dist/design-system72.js.map +1 -1
  311. package/dist/design-system73.js +161 -0
  312. package/dist/design-system73.js.map +1 -0
  313. package/dist/design-system75.js +5 -7
  314. package/dist/design-system75.js.map +1 -1
  315. package/dist/design-system76.js +25 -269
  316. package/dist/design-system76.js.map +1 -1
  317. package/dist/design-system77.js +7 -0
  318. package/dist/design-system77.js.map +1 -0
  319. package/dist/design-system78.js +49 -5
  320. package/dist/design-system78.js.map +1 -1
  321. package/dist/{design-system71.js → design-system80.js} +2 -2
  322. package/dist/{design-system71.js.map → design-system80.js.map} +1 -1
  323. package/dist/design-system81.js +199 -5
  324. package/dist/design-system81.js.map +1 -1
  325. package/dist/design-system83.js +5 -99
  326. package/dist/design-system83.js.map +1 -1
  327. package/dist/design-system84.js +10 -0
  328. package/dist/design-system84.js.map +1 -0
  329. package/dist/design-system85.js +273 -5
  330. package/dist/design-system85.js.map +1 -1
  331. package/dist/design-system87.js +8 -0
  332. package/dist/design-system87.js.map +1 -0
  333. package/dist/design-system88.js +57 -5
  334. package/dist/design-system88.js.map +1 -1
  335. package/dist/design-system90.js +8 -0
  336. package/dist/design-system90.js.map +1 -0
  337. package/dist/design-system91.js +11 -5
  338. package/dist/design-system91.js.map +1 -1
  339. package/dist/design-system92.js +98 -53
  340. package/dist/design-system92.js.map +1 -1
  341. package/dist/design-system94.js +5 -13
  342. package/dist/design-system94.js.map +1 -1
  343. package/dist/design-system95.js +61 -104
  344. package/dist/design-system95.js.map +1 -1
  345. package/dist/design-system97.js +4 -5
  346. package/dist/design-system97.js.map +1 -1
  347. package/dist/design-system98.js +80 -198
  348. package/dist/design-system98.js.map +1 -1
  349. package/dist/types/components/BCalendar/BCalendar.spec.d.ts +1 -0
  350. package/dist/types/components/BCalendar/BCalendar.vue.d.ts +114 -0
  351. package/dist/types/components/BCalendar/index.d.ts +2 -0
  352. package/dist/types/components/BCalendar/types.d.ts +54 -0
  353. package/dist/types/components/BCarousel/BCarousel.spec.d.ts +1 -0
  354. package/dist/types/components/BCarousel/BCarousel.vue.d.ts +133 -0
  355. package/dist/types/components/BCarousel/index.d.ts +2 -0
  356. package/dist/types/components/BCarousel/types.d.ts +15 -0
  357. package/dist/types/components/BDivider/types.d.ts +2 -2
  358. package/dist/types/components/BMasonry/types.d.ts +2 -2
  359. package/dist/types/components/BPagination/BPagination.vue.d.ts +1 -1
  360. package/dist/types/components/BStatistic/BStatistic.spec.d.ts +1 -0
  361. package/dist/types/components/BStatistic/BStatistic.vue.d.ts +44 -0
  362. package/dist/types/components/BStatistic/BStatisticTimer.vue.d.ts +50 -0
  363. package/dist/types/components/BStatistic/index.d.ts +3 -0
  364. package/dist/types/components/BStatistic/types.d.ts +6 -0
  365. package/dist/types/components/BTreeSelect/BTreeSelect.spec.d.ts +1 -0
  366. package/dist/types/components/BTreeSelect/BTreeSelect.vue.d.ts +143 -0
  367. package/dist/types/components/BTreeSelect/index.d.ts +2 -0
  368. package/dist/types/components/BTreeSelect/types.d.ts +77 -0
  369. package/dist/types/components/index.d.ts +4 -0
  370. package/dist/types/types.d.ts +3 -0
  371. package/package.json +18 -15
  372. package/dist/design-system105.js +0 -212
  373. package/dist/design-system105.js.map +0 -1
  374. package/dist/design-system108.js +0 -227
  375. package/dist/design-system108.js.map +0 -1
  376. package/dist/design-system111.js +0 -166
  377. package/dist/design-system111.js.map +0 -1
  378. package/dist/design-system115.js +0 -277
  379. package/dist/design-system115.js.map +0 -1
  380. package/dist/design-system118.js +0 -19
  381. package/dist/design-system118.js.map +0 -1
  382. package/dist/design-system121.js +0 -15
  383. package/dist/design-system121.js.map +0 -1
  384. package/dist/design-system125.js +0 -45
  385. package/dist/design-system125.js.map +0 -1
  386. package/dist/design-system128.js +0 -236
  387. package/dist/design-system128.js.map +0 -1
  388. package/dist/design-system141.js +0 -40
  389. package/dist/design-system141.js.map +0 -1
  390. package/dist/design-system144.js +0 -7
  391. package/dist/design-system158.js +0 -61
  392. package/dist/design-system158.js.map +0 -1
  393. package/dist/design-system161.js +0 -59
  394. package/dist/design-system161.js.map +0 -1
  395. package/dist/design-system174.js +0 -465
  396. package/dist/design-system174.js.map +0 -1
  397. package/dist/design-system177.js +0 -38
  398. package/dist/design-system177.js.map +0 -1
  399. package/dist/design-system222.js +0 -7
  400. package/dist/design-system222.js.map +0 -1
  401. package/dist/design-system225.js +0 -8
  402. package/dist/design-system225.js.map +0 -1
  403. package/dist/design-system229.js +0 -115
  404. package/dist/design-system229.js.map +0 -1
  405. package/dist/design-system238.js.map +0 -1
  406. package/dist/design-system241.js.map +0 -1
  407. package/dist/design-system40.js +0 -479
  408. package/dist/design-system40.js.map +0 -1
  409. package/dist/design-system43.js +0 -6
  410. package/dist/design-system43.js.map +0 -1
  411. package/dist/design-system46.js +0 -9
  412. package/dist/design-system46.js.map +0 -1
  413. package/dist/design-system50.js +0 -67
  414. package/dist/design-system50.js.map +0 -1
  415. package/dist/design-system60.js.map +0 -1
  416. package/dist/design-system63.js +0 -8
  417. package/dist/design-system67.js +0 -32
  418. package/dist/design-system67.js.map +0 -1
  419. package/dist/design-system74.js +0 -8
  420. package/dist/design-system74.js.map +0 -1
  421. package/dist/design-system79.js +0 -60
  422. package/dist/design-system79.js.map +0 -1
  423. package/dist/design-system82.js +0 -14
  424. package/dist/design-system82.js.map +0 -1
  425. package/dist/design-system86.js +0 -69
  426. package/dist/design-system86.js.map +0 -1
  427. package/dist/design-system89.js +0 -91
  428. package/dist/design-system89.js.map +0 -1
  429. package/dist/design-system93.js.map +0 -1
@@ -1,9 +1,8 @@
1
- import e from "./design-system14.js";
2
- import t from "./design-system95.js";
1
+ import e from "./design-system95.js";
3
2
  /* empty css */
4
- //#region src/components/BForm/BForm.vue
5
- var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-cf5d3049"]]);
3
+ //#region src/components/BFloatButton/BFloatButtonBackTop.vue
4
+ var t = e;
6
5
  //#endregion
7
- export { n as default };
6
+ export { t as default };
8
7
 
9
8
  //# sourceMappingURL=design-system97.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system97.js","names":[],"sources":["../src/components/BForm/BForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useValidationForm } from '@/composables/useValidation.ts';\nimport { computed, provide, ref } from 'vue';\nimport { BFormContextKey } from './context.ts';\nimport {\n BFormLayout,\n BFormLabelAlign,\n BFormRequiredMark,\n BFormValidateTrigger,\n type BFormFieldError,\n type BFormItemContext,\n type BFormValidateResult,\n} from './types.ts';\n\nconst {\n layout = BFormLayout.Horizontal,\n labelAlign = BFormLabelAlign.Left,\n labelWidth,\n colon = true,\n disabled = false,\n requiredMark = true,\n name,\n model,\n scrollToFirstError = false,\n validateTrigger = BFormValidateTrigger.Change,\n noHtml5Validate = false,\n} = defineProps<{\n /** Form layout mode. */\n layout?: `${BFormLayout}`;\n /** Label text alignment. */\n labelAlign?: `${BFormLabelAlign}`;\n /** Fixed width for all labels. */\n labelWidth?: string;\n /** Display colon after label (horizontal layout only). */\n colon?: boolean;\n /** Whether all form controls are disabled. */\n disabled?: boolean;\n /** How required/optional marks are displayed. */\n requiredMark?: boolean | `${BFormRequiredMark}`;\n /** Form name, used as field id prefix. */\n name?: string;\n /** Form data model object. Fields read their value from model[fieldName]. */\n model?: Record<string, unknown>;\n /** Auto-scroll to first validation error on submit failure. */\n scrollToFirstError?: boolean | ScrollIntoViewOptions;\n /** Default field validation trigger. */\n validateTrigger?: `${BFormValidateTrigger}` | `${BFormValidateTrigger}`[];\n /** Disable native HTML5 validation. */\n noHtml5Validate?: boolean;\n}>();\n\nconst emit = defineEmits<{\n /** Called after successful validation on submit. */\n finish: [values: Record<string, unknown>];\n /** Called when validation fails on submit. */\n finishFailed: [result: BFormValidateResult];\n}>();\n\nconst formEl = ref<HTMLFormElement | null>(null);\n\nconst { fields, validateAll, resetAll, isValid } = useValidationForm();\n\nconst formContext = computed<BFormItemContext>(() => ({\n layout,\n labelAlign,\n labelWidth,\n colon,\n disabled,\n requiredMark,\n validateTrigger,\n model,\n}));\n\nprovide(BFormContextKey, formContext.value);\n\nconst validate = (): boolean => {\n return validateAll();\n};\n\nconst buildResult = (): BFormValidateResult => {\n const errorFields: BFormFieldError[] = [];\n const values: Record<string, unknown> = {};\n\n for (const [key, fieldState] of Object.entries(fields)) {\n values[key] = model?.[key];\n if (!fieldState.value.isValid) {\n errorFields.push({ name: key, errors: fieldState.value.errors });\n }\n }\n\n return { values, errorFields };\n};\n\nconst resetFields = (names?: string[]) => {\n if (!names) {\n resetAll();\n return;\n }\n for (const fieldName of names) {\n if (fields[fieldName]) {\n fields[fieldName].value.reset();\n }\n }\n};\n\nconst scrollToField = (fieldName: string, options?: ScrollIntoViewOptions) => {\n const el = formEl.value?.querySelector(`[data-form-field=\"${fieldName}\"]`);\n if (el) {\n el.scrollIntoView(options ?? { behavior: 'smooth', block: 'center' });\n }\n};\n\nconst handleSubmit = (e: Event) => {\n e.preventDefault();\n const allValid = validate();\n const result = buildResult();\n\n if (allValid) {\n emit('finish', result.values);\n } else {\n emit('finishFailed', result);\n if (scrollToFirstError && result.errorFields.length > 0) {\n const opts =\n typeof scrollToFirstError === 'object' ? scrollToFirstError : { behavior: 'smooth' as const, block: 'center' as const };\n scrollToField(result.errorFields[0].name, opts);\n }\n }\n};\n\nconst formClasses = computed(() => [\n 'b-form',\n `b-form--${layout}`,\n `b-form--label-${labelAlign}`,\n {\n 'b-form--disabled': disabled,\n },\n]);\n\ndefineExpose({\n validate,\n resetFields,\n scrollToField,\n isValid,\n});\n</script>\n\n<template>\n <form\n ref=\"formEl\"\n :class=\"formClasses\"\n :name=\"name\"\n :novalidate=\"noHtml5Validate\"\n role=\"form\"\n :aria-label=\"name\"\n @submit=\"handleSubmit\"\n >\n <slot />\n </form>\n</template>\n\n<style scoped>\n.b-form {\n --b-form-item-margin-bottom: 24px;\n --b-form-inline-item-margin-bottom: 0;\n --b-form-label-color: rgba(0, 0, 0, 0.88);\n --b-form-label-font-size: 14px;\n --b-form-label-height: 32px;\n --b-form-label-colon-margin-inline-start: 2px;\n --b-form-label-colon-margin-inline-end: 8px;\n --b-form-label-required-mark-color: #cf1322;\n --b-form-vertical-label-margin: 0;\n --b-form-vertical-label-padding: 0 0 8px;\n --b-form-help-color: rgba(0, 0, 0, 0.65);\n --b-form-error-color: #cf1322;\n --b-form-warning-color: #874d00;\n --b-form-success-color: #52c41a;\n\n margin: 0;\n padding: 0;\n font-size: var(--b-form-label-font-size);\n color: var(--b-form-label-color);\n}\n\n.b-form--inline {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n align-items: flex-end;\n}\n\n[data-prefers-color='dark'] .b-form {\n --b-form-label-color: rgba(255, 255, 255, 0.88);\n --b-form-label-required-mark-color: #dc3838;\n --b-form-help-color: rgba(255, 255, 255, 0.65);\n --b-form-error-color: #dc3838;\n --b-form-warning-color: #d1a300;\n --b-form-success-color: #49aa19;\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-form {\n --b-form-label-color: rgba(255, 255, 255, 0.88);\n --b-form-label-required-mark-color: #dc3838;\n --b-form-help-color: rgba(255, 255, 255, 0.65);\n --b-form-error-color: #dc3838;\n --b-form-warning-color: #d1a300;\n --b-form-success-color: #49aa19;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-form :deep(.b-form-item__help) {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"design-system97.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,209 +1,91 @@
1
- import { useComponentId as e } from "./design-system10.js";
2
- import { useValidationField as t } from "./design-system92.js";
3
- import { BFormContextKey as n } from "./design-system93.js";
4
- import { BFormLayout as r, BFormRequiredMark as i, BFormValidateStatus as a, BFormValidateTrigger as o } from "./design-system94.js";
5
- import { computed as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, defineComponent as f, inject as p, normalizeClass as m, normalizeStyle as h, openBlock as g, ref as _, renderSlot as v, toDisplayString as y, watch as b } from "vue";
6
- //#region src/components/BForm/BFormItem.vue?vue&type=script&setup=true&lang.ts
7
- var x = ["data-form-field", "aria-labelledby"], S = ["id", "for"], C = {
8
- key: 0,
9
- class: "b-form-item__required-mark",
1
+ import { BFloatButtonGroupPlacement as e, BFloatButtonShape as t, BFloatButtonTrigger as n } from "./design-system91.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",
10
6
  "aria-hidden": "true"
11
- }, w = {
12
- key: 1,
13
- class: "b-form-item__optional-mark"
14
- }, T = {
15
- key: 2,
16
- class: "b-form-item__colon",
17
- "aria-hidden": "true"
18
- }, E = ["title"], D = { class: "b-form-item__control" }, O = { class: "b-form-item__control-input" }, k = {
19
- key: 0,
20
- class: "b-form-item__feedback-icon"
21
- }, ee = {
22
- key: 0,
23
- viewBox: "64 64 896 896",
24
- width: "14",
25
- height: "14",
26
- fill: "currentColor",
27
- "aria-hidden": "true"
28
- }, te = {
29
- key: 1,
30
- viewBox: "64 64 896 896",
31
- width: "14",
32
- height: "14",
33
- fill: "currentColor",
34
- "aria-hidden": "true"
35
- }, A = {
36
- key: 2,
37
- viewBox: "64 64 896 896",
38
- width: "14",
39
- height: "14",
40
- fill: "currentColor",
41
- "aria-hidden": "true"
42
- }, j = {
43
- key: 3,
44
- class: "b-form-item__loading-icon"
45
- }, M = ["id"], N = {
46
- key: 1,
47
- class: "b-form-item__extra"
48
- }, P = /* @__PURE__ */ f({
49
- __name: "BFormItem",
7
+ }, b = /* @__PURE__ */ s({
8
+ __name: "BFloatButtonGroup",
50
9
  props: {
51
- label: {},
52
- name: {},
53
- schema: {},
54
- required: {
55
- type: Boolean,
56
- default: !1
57
- },
58
- validateStatus: {},
59
- help: {},
60
- extra: {},
61
- colon: {
62
- type: [Boolean, null],
63
- default: null
64
- },
65
- labelAlign: {},
66
- labelWidth: {},
67
- hidden: {
68
- type: Boolean,
69
- default: !1
70
- },
71
- noStyle: {
72
- type: Boolean,
73
- default: !1
74
- },
75
- hasFeedback: {
76
- type: Boolean,
77
- default: !1
78
- },
79
- validateTrigger: {},
80
- tooltip: {},
81
- layout: {}
10
+ open: { type: [Boolean, null] },
11
+ trigger: {},
12
+ placement: {},
13
+ shape: {},
14
+ closeIcon: {}
82
15
  },
83
- setup(f, { expose: P }) {
84
- let F = p(n, void 0), { componentUID: I } = e(), L = s(() => `b-form-item-${f.name ? f.name + "-" : ""}${I.value}`), R = s(() => {
85
- if (f.name && F?.model) return F.model[f.name];
86
- }), z = _(R.value);
87
- b(R, (e) => {
88
- z.value = e;
89
- });
90
- let B = f.name && f.schema ? t(f.name, z, f.schema) : void 0, V = s(() => {
91
- if (f.validateTrigger) return Array.isArray(f.validateTrigger) ? f.validateTrigger : [f.validateTrigger];
92
- let e = F?.validateTrigger ?? o.Change;
93
- return Array.isArray(e) ? e : [e];
94
- }), H = () => {
95
- B && V.value.includes(o.Blur) && (B.markTouched(), B.validate());
96
- }, U = () => {
97
- B && V.value.includes(o.Change) && B.validate();
98
- };
99
- b(R, () => {
100
- U();
101
- });
102
- let W = s(() => {
103
- if (f.validateStatus) return f.validateStatus;
104
- if (B) {
105
- if (B.errors.value.length > 0) return a.Error;
106
- if (B.touched.value && B.isValid.value) return a.Success;
107
- }
108
- }), G = s(() => f.layout === void 0 ? F?.layout === void 0 ? r.Horizontal : F.layout : f.layout), K = s(() => f.labelAlign === void 0 ? F?.labelAlign === void 0 ? "right" : F.labelAlign : f.labelAlign), q = s(() => f.colon === null ? F?.colon === void 0 ? !0 : F.colon : f.colon), J = s(() => f.labelWidth ?? F?.labelWidth), Y = s(() => F?.disabled ?? !1), X = s(() => !!(f.required || f.schema && (!f.schema.safeParse(void 0).success || !f.schema.safeParse("").success))), Z = s(() => q.value && G.value === "horizontal"), Q = s(() => {
109
- let e = F?.requiredMark ?? !0;
110
- return e === !1 || e === i.Optional ? !1 : X.value;
111
- }), ne = s(() => (F?.requiredMark ?? !0) === i.Optional && !X.value), $ = s(() => {
112
- if (f.help !== void 0) return f.help;
113
- if (B && B.errors.value.length > 0) return B.errors.value[0];
114
- }), re = s(() => [
115
- "b-form-item",
116
- `b-form-item--${G.value}`,
117
- {
118
- "b-form-item--has-error": W.value === a.Error,
119
- "b-form-item--has-warning": W.value === a.Warning,
120
- "b-form-item--has-success": W.value === a.Success,
121
- "b-form-item--validating": W.value === a.Validating,
122
- "b-form-item--has-feedback": f.hasFeedback,
123
- "b-form-item--hidden": f.hidden,
124
- "b-form-item--no-style": f.noStyle,
125
- "b-form-item--required": Q.value
126
- }
127
- ]), ie = s(() => {
128
- let e = {};
129
- return J.value && (e.width = J.value, e.flexShrink = "0"), e;
130
- });
131
- return P({
132
- validate: B?.validate ?? (() => !0),
133
- reset: B?.reset ?? (() => {}),
134
- errors: B?.errors ?? s(() => []),
135
- isValid: B?.isValid ?? s(() => !0),
136
- dirty: B?.dirty ?? s(() => !1),
137
- touched: B?.touched ?? s(() => !1),
138
- handleBlur: H
139
- }), (e, t) => f.noStyle ? v(e.$slots, "default", {
140
- key: 1,
141
- id: L.value,
142
- status: W.value,
143
- disabled: Y.value,
144
- onBlur: H
145
- }, void 0, !0) : (g(), l("div", {
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", {
146
63
  key: 0,
147
- class: m(re.value),
148
- "data-form-field": f.name,
149
- role: "group",
150
- "aria-labelledby": f.label ? `${L.value}-label` : void 0
151
- }, [f.label || e.$slots.label ? (g(), l("div", {
152
- key: 0,
153
- class: m(["b-form-item__label", [`b-form-item__label--${K.value}`]]),
154
- style: h(ie.value)
155
- }, [u("label", {
156
- id: `${L.value}-label`,
157
- for: L.value
158
- }, [
159
- Q.value ? (g(), l("span", C, "*")) : c("", !0),
160
- v(e.$slots, "label", {}, () => [d(y(f.label), 1)], !0),
161
- ne.value ? (g(), l("span", w, "(optional)")) : c("", !0),
162
- Z.value ? (g(), l("span", T, ":")) : c("", !0)
163
- ], 8, S), f.tooltip ? (g(), l("span", {
164
- key: 0,
165
- class: "b-form-item__tooltip",
166
- title: f.tooltip,
167
- role: "img",
168
- "aria-label": "Help"
169
- }, [...t[0] ||= [u("svg", {
170
- viewBox: "64 64 896 896",
171
- width: "14",
172
- height: "14",
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",
173
83
  fill: "currentColor",
174
84
  "aria-hidden": "true"
175
- }, [
176
- u("path", { d: "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z" }),
177
- u("path", { d: "M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.4-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7c0-19.7 12.4-37.7 30.9-44.8 59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3z" }),
178
- u("path", { d: "M512 732a40 40 0 100-80 40 40 0 000 80z" })
179
- ], -1)]], 8, E)) : c("", !0)], 6)) : c("", !0), u("div", D, [
180
- u("div", O, [v(e.$slots, "default", {
181
- id: L.value,
182
- status: W.value,
183
- disabled: Y.value,
184
- onBlur: H
185
- }, void 0, !0), f.hasFeedback && W.value ? (g(), l("span", k, [W.value === "success" ? (g(), l("svg", ee, [...t[1] ||= [u("path", { d: "M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z" }, null, -1)]])) : W.value === "error" ? (g(), l("svg", te, [...t[2] ||= [u("path", { d: "M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L512 449.8 295.9 191.7c-3-3.6-7.5-5.7-12.3-5.7H204c-6.8 0-10.5 7.9-6.1 13.1L460.2 512 197.8 824.9A7.95 7.95 0 00204 838h79.8c4.7 0 9.2-2.1 12.3-5.7L512 574.1l216.2 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z" }, null, -1)]])) : W.value === "warning" ? (g(), l("svg", A, [...t[3] ||= [u("path", { d: "M464 720a48 48 0 1096 0 48 48 0 10-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z" }, null, -1), u("path", { d: "M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48z" }, null, -1)]])) : W.value === "validating" ? (g(), l("span", j, [...t[4] ||= [u("svg", {
186
- viewBox: "0 0 1024 1024",
187
- width: "14",
188
- height: "14",
189
- fill: "currentColor",
190
- "aria-hidden": "true"
191
- }, [u("path", { d: "M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.3 199.3 0 19.9-16.1 36-36 36z" })], -1)]])) : c("", !0)])) : c("", !0)]),
192
- $.value || e.$slots.help ? (g(), l("div", {
193
- key: 0,
194
- class: m(["b-form-item__help", {
195
- "b-form-item__help--error": W.value === "error",
196
- "b-form-item__help--warning": W.value === "warning"
197
- }]),
198
- id: `${L.value}-help`,
199
- role: "alert",
200
- "aria-live": "polite"
201
- }, [v(e.$slots, "help", {}, () => [d(y($.value), 1)], !0)], 10, M)) : c("", !0),
202
- f.extra || e.$slots.extra ? (g(), l("div", N, [v(e.$slots, "extra", {}, () => [d(y(f.extra), 1)], !0)])) : c("", !0)
203
- ])], 10, x));
85
+ }, [o("path", { d: "M19 13H13v6h-2v-6H5v-2h6V5h2v6h6v2z" })], -1)])])])], 10, _)) : i("", !0)], 42, h));
204
86
  }
205
87
  });
206
88
  //#endregion
207
- export { P as default };
89
+ export { b as default };
208
90
 
209
91
  //# sourceMappingURL=design-system98.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system98.js","names":[],"sources":["../src/components/BForm/BFormItem.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = [\"data-form-field\", \"aria-labelledby\"]\nconst _hoisted_2 = [\"id\", \"for\"]\nconst _hoisted_3 = {\n key: 0,\n class: \"b-form-item__required-mark\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"b-form-item__optional-mark\"\n}\nconst _hoisted_5 = {\n key: 2,\n class: \"b-form-item__colon\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_6 = [\"title\"]\nconst _hoisted_7 = { class: \"b-form-item__control\" }\nconst _hoisted_8 = { class: \"b-form-item__control-input\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"b-form-item__feedback-icon\"\n}\nconst _hoisted_10 = {\n key: 0,\n viewBox: \"64 64 896 896\",\n width: \"14\",\n height: \"14\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_11 = {\n key: 1,\n viewBox: \"64 64 896 896\",\n width: \"14\",\n height: \"14\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_12 = {\n key: 2,\n viewBox: \"64 64 896 896\",\n width: \"14\",\n height: \"14\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_13 = {\n key: 3,\n class: \"b-form-item__loading-icon\"\n}\nconst _hoisted_14 = [\"id\"]\nconst _hoisted_15 = {\n key: 1,\n class: \"b-form-item__extra\"\n}\n\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { useValidationField } from '@/composables/useValidation.ts';\nimport { computed, inject, ref, watch } from 'vue';\nimport type { ZodType } from 'zod';\nimport { BFormContextKey } from './context.ts';\nimport {\n BFormLayout,\n BFormRequiredMark,\n BFormValidateStatus,\n BFormValidateTrigger,\n} from './types.ts';\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'BFormItem',\n props: {\n label: {},\n name: {},\n schema: {},\n required: { type: Boolean, default: false },\n validateStatus: {},\n help: {},\n extra: {},\n colon: { type: [Boolean, null], default: null },\n labelAlign: {},\n labelWidth: {},\n hidden: { type: Boolean, default: false },\n noStyle: { type: Boolean, default: false },\n hasFeedback: { type: Boolean, default: false },\n validateTrigger: {},\n tooltip: {},\n layout: {}\n },\n setup(__props: any, { expose: __expose }) {\n\n\n\nconst formContext = inject(BFormContextKey, undefined);\n\nconst { componentUID } = useComponentId();\nconst fieldId = computed(() => `b-form-item-${__props.name ? __props.name + '-' : ''}${componentUID.value}`);\n\nconst fieldValueRef = computed(() => {\n if (__props.name && formContext?.model) {\n return formContext.model[__props.name];\n }\n return undefined;\n});\n\nconst fieldValueAsRef = ref(fieldValueRef.value);\nwatch(fieldValueRef, (val) => {\n fieldValueAsRef.value = val;\n});\n\nconst hasValidation = !!(__props.name && __props.schema);\n\nconst validation = hasValidation\n ? useValidationField(__props.name!, fieldValueAsRef, __props.schema!)\n : undefined;\n\nconst resolvedTrigger = computed(() => {\n if (__props.validateTrigger) return Array.isArray(__props.validateTrigger) ? __props.validateTrigger : [__props.validateTrigger];\n const parentTrigger = formContext?.validateTrigger ?? BFormValidateTrigger.Change;\n return Array.isArray(parentTrigger) ? parentTrigger : [parentTrigger];\n});\n\nconst handleBlur = () => {\n if (validation && resolvedTrigger.value.includes(BFormValidateTrigger.Blur)) {\n validation.markTouched();\n validation.validate();\n }\n};\n\nconst handleChange = () => {\n if (validation && resolvedTrigger.value.includes(BFormValidateTrigger.Change)) {\n validation.validate();\n }\n};\n\nwatch(fieldValueRef, () => {\n handleChange();\n});\n\nconst computedStatus = computed<`${BFormValidateStatus}` | undefined>(() => {\n if (__props.validateStatus) return __props.validateStatus;\n if (!validation) return undefined;\n if (validation.errors.value.length > 0) return BFormValidateStatus.Error;\n if (validation.touched.value && validation.isValid.value) return BFormValidateStatus.Success;\n return undefined;\n});\n\nconst resolvedLayout = computed(() => {\n if (__props.layout !== undefined) return __props.layout;\n if (formContext?.layout !== undefined) return formContext.layout;\n return BFormLayout.Horizontal;\n});\nconst resolvedLabelAlign = computed(() => {\n if (__props.labelAlign !== undefined) return __props.labelAlign;\n if (formContext?.labelAlign !== undefined) return formContext.labelAlign;\n return 'right';\n});\nconst resolvedColon = computed(() => {\n if (__props.colon !== null) return __props.colon;\n if (formContext?.colon !== undefined) return formContext.colon;\n return true;\n});\nconst resolvedLabelWidth = computed(() => __props.labelWidth ?? formContext?.labelWidth);\nconst isDisabled = computed(() => formContext?.disabled ?? false);\n\nconst isRequired = computed(() => {\n if (__props.required) return true;\n if (__props.schema) {\n const result = __props.schema.safeParse(undefined);\n if (!result.success) return true;\n const emptyResult = __props.schema.safeParse('');\n if (!emptyResult.success) return true;\n }\n return false;\n});\n\nconst showColon = computed(() => resolvedColon.value && resolvedLayout.value === 'horizontal');\n\nconst showRequiredMark = computed(() => {\n const mark = formContext?.requiredMark ?? true;\n if (mark === false) return false;\n if (mark === BFormRequiredMark.Optional) return false;\n return isRequired.value;\n});\n\nconst showOptionalMark = computed(() => {\n const mark = formContext?.requiredMark ?? true;\n return mark === BFormRequiredMark.Optional && !isRequired.value;\n});\n\nconst helpMessage = computed(() => {\n if (__props.help !== undefined) return __props.help;\n if (validation && validation.errors.value.length > 0) return validation.errors.value[0];\n return undefined;\n});\n\nconst itemClasses = computed(() => [\n 'b-form-item',\n `b-form-item--${resolvedLayout.value}`,\n {\n 'b-form-item--has-error': computedStatus.value === BFormValidateStatus.Error,\n 'b-form-item--has-warning': computedStatus.value === BFormValidateStatus.Warning,\n 'b-form-item--has-success': computedStatus.value === BFormValidateStatus.Success,\n 'b-form-item--validating': computedStatus.value === BFormValidateStatus.Validating,\n 'b-form-item--has-feedback': __props.hasFeedback,\n 'b-form-item--hidden': __props.hidden,\n 'b-form-item--no-style': __props.noStyle,\n 'b-form-item--required': showRequiredMark.value,\n },\n]);\n\nconst labelStyle = computed(() => {\n const styles: Record<string, string> = {};\n if (resolvedLabelWidth.value) {\n styles.width = resolvedLabelWidth.value;\n styles.flexShrink = '0';\n }\n return styles;\n});\n\n__expose({\n validate: validation?.validate ?? (() => true),\n reset: validation?.reset ?? (() => {}),\n errors: validation?.errors ?? computed(() => []),\n isValid: validation?.isValid ?? computed(() => true),\n dirty: validation?.dirty ?? computed(() => false),\n touched: validation?.touched ?? computed(() => false),\n handleBlur,\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (!__props.noStyle)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass(itemClasses.value),\n \"data-form-field\": __props.name,\n role: \"group\",\n \"aria-labelledby\": __props.label ? `${fieldId.value}-label` : undefined\n }, [\n (__props.label || _ctx.$slots.label)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"b-form-item__label\", [`b-form-item__label--${resolvedLabelAlign.value}`]]),\n style: _normalizeStyle(labelStyle.value)\n }, [\n _createElementVNode(\"label\", {\n id: `${fieldId.value}-label`,\n for: fieldId.value\n }, [\n (showRequiredMark.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, \"*\"))\n : _createCommentVNode(\"\", true),\n _renderSlot(_ctx.$slots, \"label\", {}, () => [\n _createTextVNode(_toDisplayString(__props.label), 1)\n ], true),\n (showOptionalMark.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \"(optional)\"))\n : _createCommentVNode(\"\", true),\n (showColon.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_5, \":\"))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_2),\n (__props.tooltip)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"b-form-item__tooltip\",\n title: __props.tooltip,\n role: \"img\",\n \"aria-label\": \"Help\"\n }, [...(_cache[0] || (_cache[0] = [\n _createElementVNode(\"svg\", {\n viewBox: \"64 64 896 896\",\n width: \"14\",\n height: \"14\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n }, [\n _createElementVNode(\"path\", { d: \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" }),\n _createElementVNode(\"path\", { d: \"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.4-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7c0-19.7 12.4-37.7 30.9-44.8 59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3z\" }),\n _createElementVNode(\"path\", { d: \"M512 732a40 40 0 100-80 40 40 0 000 80z\" })\n ], -1)\n ]))], 8, _hoisted_6))\n : _createCommentVNode(\"\", true)\n ], 6))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"div\", _hoisted_8, [\n _renderSlot(_ctx.$slots, \"default\", {\n id: fieldId.value,\n status: computedStatus.value,\n disabled: isDisabled.value,\n onBlur: handleBlur\n }, undefined, true),\n (__props.hasFeedback && computedStatus.value)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_9, [\n (computedStatus.value === 'success')\n ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_10, [...(_cache[1] || (_cache[1] = [\n _createElementVNode(\"path\", { d: \"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\" }, null, -1)\n ]))]))\n : (computedStatus.value === 'error')\n ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_11, [...(_cache[2] || (_cache[2] = [\n _createElementVNode(\"path\", { d: \"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L512 449.8 295.9 191.7c-3-3.6-7.5-5.7-12.3-5.7H204c-6.8 0-10.5 7.9-6.1 13.1L460.2 512 197.8 824.9A7.95 7.95 0 00204 838h79.8c4.7 0 9.2-2.1 12.3-5.7L512 574.1l216.2 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\" }, null, -1)\n ]))]))\n : (computedStatus.value === 'warning')\n ? (_openBlock(), _createElementBlock(\"svg\", _hoisted_12, [...(_cache[3] || (_cache[3] = [\n _createElementVNode(\"path\", { d: \"M464 720a48 48 0 1096 0 48 48 0 10-96 0zm16-304v184c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V416c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8z\" }, null, -1),\n _createElementVNode(\"path\", { d: \"M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48z\" }, null, -1)\n ]))]))\n : (computedStatus.value === 'validating')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_13, [...(_cache[4] || (_cache[4] = [\n _createElementVNode(\"svg\", {\n viewBox: \"0 0 1024 1024\",\n width: \"14\",\n height: \"14\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n }, [\n _createElementVNode(\"path\", { d: \"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.3 199.3 0 19.9-16.1 36-36 36z\" })\n ], -1)\n ]))]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (helpMessage.value || _ctx.$slots.help)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"b-form-item__help\", {\n 'b-form-item__help--error': computedStatus.value === 'error',\n 'b-form-item__help--warning': computedStatus.value === 'warning',\n }]),\n id: `${fieldId.value}-help`,\n role: \"alert\",\n \"aria-live\": \"polite\"\n }, [\n _renderSlot(_ctx.$slots, \"help\", {}, () => [\n _createTextVNode(_toDisplayString(helpMessage.value), 1)\n ], true)\n ], 10, _hoisted_14))\n : _createCommentVNode(\"\", true),\n (__props.extra || _ctx.$slots.extra)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _renderSlot(_ctx.$slots, \"extra\", {}, () => [\n _createTextVNode(_toDisplayString(__props.extra), 1)\n ], true)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 10, _hoisted_1))\n : _renderSlot(_ctx.$slots, \"default\", {\n key: 1,\n id: fieldId.value,\n status: computedStatus.value,\n disabled: isDisabled.value,\n onBlur: handleBlur\n }, undefined, true)\n}\n}\n\n})"],"mappings":"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"}
1
+ {"version":3,"file":"design-system98.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.b-float-button-group--top .b-float-button-group__list {\n flex-direction: column-reverse;\n}\n\n.b-float-button-group--bottom .b-float-button-group__list {\n flex-direction: column;\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.b-float-button-group--right {\n flex-direction: row;\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"}
@@ -0,0 +1,114 @@
1
+ import type { BCalendarCellSlotScope, BCalendarEvent, BCalendarEventDetailsSlotScope, BCalendarHeaderSlotScope, BCalendarMode, BCalendarSelectInfo } from './types';
2
+ type __VLS_Props = {
3
+ /**
4
+ * Controlled selected date. Pair with `v-model` for two-way binding.
5
+ * AntD: `value`.
6
+ */
7
+ modelValue?: Date | null;
8
+ /**
9
+ * Initial selected date when uncontrolled.
10
+ * AntD: `defaultValue`.
11
+ */
12
+ defaultValue?: Date;
13
+ /**
14
+ * Controlled panel mode (month / year). When omitted, the component
15
+ * manages its own mode starting from `defaultMode`.
16
+ * AntD: `mode`.
17
+ */
18
+ mode?: BCalendarMode;
19
+ /**
20
+ * Initial panel mode when uncontrolled.
21
+ * @default 'month'
22
+ */
23
+ defaultMode?: BCalendarMode;
24
+ /**
25
+ * Full-screen layout when `true`, mini layout when `false`.
26
+ * AntD: `fullscreen`.
27
+ * @default true
28
+ */
29
+ fullscreen?: boolean;
30
+ /**
31
+ * Show a week-number column in month mode.
32
+ * AntD: `showWeek`.
33
+ * @default false
34
+ */
35
+ showWeek?: boolean;
36
+ /**
37
+ * Inclusive [start, end] range outside which dates are disabled.
38
+ * AntD: `validRange`.
39
+ */
40
+ validRange?: [Date, Date];
41
+ /**
42
+ * BCP 47 locale tag for weekday / month labels (e.g. `'en-US'`, `'vi-VN'`).
43
+ * AntD: `locale` (object). We accept a locale string and use Intl.
44
+ */
45
+ locale?: string;
46
+ /**
47
+ * Predicate to disable specific dates.
48
+ * AntD: `disabledDate`.
49
+ */
50
+ disabledDate?: (date: Date) => boolean;
51
+ /** Accessible label for the calendar root region. */
52
+ ariaLabel?: string;
53
+ /**
54
+ * Returns events for a given date. When provided, event titles are auto-rendered
55
+ * inside each day cell (unless the `dateCell` slot replaces them).
56
+ */
57
+ events?: (date: Date) => BCalendarEvent[];
58
+ /**
59
+ * Open a details modal when clicking a date that has events.
60
+ * Set `false` to keep clicks selection-only.
61
+ * @default true
62
+ */
63
+ showEventDetails?: boolean;
64
+ /**
65
+ * Maximum number of events shown inline per day cell. Extra events collapse
66
+ * into a "+N more" indicator (full list is still available in the modal).
67
+ * @default 3
68
+ */
69
+ maxEventsVisible?: number;
70
+ };
71
+ type __VLS_Slots = {
72
+ /** Custom header. AntD: `headerRender`. */
73
+ header?(scope: BCalendarHeaderSlotScope): unknown;
74
+ /** Inject extra content into a date cell. AntD: `cellRender` (date). */
75
+ dateCell?(scope: BCalendarCellSlotScope): unknown;
76
+ /** Inject extra content into a month cell. AntD: `cellRender` (month). */
77
+ monthCell?(scope: BCalendarCellSlotScope): unknown;
78
+ /** Replace the entire date cell. AntD: `fullCellRender` / `dateFullCellRender`. */
79
+ dateFullCell?(scope: BCalendarCellSlotScope): unknown;
80
+ /** Replace the entire month cell. AntD: `fullCellRender` / `monthFullCellRender`. */
81
+ monthFullCell?(scope: BCalendarCellSlotScope): unknown;
82
+ /** Replace the contents of the event-details modal. */
83
+ eventDetails?(scope: BCalendarEventDetailsSlotScope): unknown;
84
+ };
85
+ declare function setMode(next: BCalendarMode): void;
86
+ declare function setPanelDate(date: Date): void;
87
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
88
+ /** Programmatically select a date. */
89
+ select: (d: Date) => void;
90
+ /** Programmatically change the panel mode. */
91
+ setMode: typeof setMode;
92
+ /** Move the panel to a specific date without selecting. */
93
+ goTo: typeof setPanelDate;
94
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
95
+ "update:modelValue": (date: Date) => any;
96
+ select: (date: Date, info: BCalendarSelectInfo) => any;
97
+ change: (date: Date) => any;
98
+ "update:mode": (mode: BCalendarMode) => any;
99
+ panelChange: (date: Date, mode: BCalendarMode) => any;
100
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
101
+ "onUpdate:modelValue"?: (date: Date) => any;
102
+ onSelect?: (date: Date, info: BCalendarSelectInfo) => any;
103
+ onChange?: (date: Date) => any;
104
+ "onUpdate:mode"?: (mode: BCalendarMode) => any;
105
+ onPanelChange?: (date: Date, mode: BCalendarMode) => any;
106
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
107
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
108
+ declare const _default: typeof __VLS_export;
109
+ export default _default;
110
+ type __VLS_WithSlots<T, S> = T & {
111
+ new (): {
112
+ $slots: S;
113
+ };
114
+ };
@@ -0,0 +1,2 @@
1
+ export { default as BCalendar } from './BCalendar.vue';
2
+ export type { BCalendarCellRenderType, BCalendarCellSlotScope, BCalendarEvent, BCalendarEventDetailsSlotScope, BCalendarEventType, BCalendarHeaderSlotScope, BCalendarMode, BCalendarSelectInfo, BCalendarSelectSource, } from './types';
@@ -0,0 +1,54 @@
1
+ /** Display mode of the calendar panel. */
2
+ export type BCalendarMode = 'month' | 'year';
3
+ /** Source of a `select` event. */
4
+ export type BCalendarSelectSource = 'date' | 'month' | 'year' | 'customize';
5
+ /** Payload for the `select` event. */
6
+ export interface BCalendarSelectInfo {
7
+ source: BCalendarSelectSource;
8
+ }
9
+ /** Scope passed to `cellRender` / `fullCellRender`. */
10
+ export type BCalendarCellRenderType = 'date' | 'month';
11
+ /** Slot scope shared by all cell-render slots. */
12
+ export interface BCalendarCellSlotScope {
13
+ /** The Date represented by this cell. */
14
+ date: Date;
15
+ /** Whether this cell is the currently selected date. */
16
+ selected: boolean;
17
+ /** Whether this cell is "today". */
18
+ today: boolean;
19
+ /** Whether this cell falls outside the current panel month/year. */
20
+ outside: boolean;
21
+ /** Whether the cell is disabled (out of validRange or disabledDate). */
22
+ disabled: boolean;
23
+ }
24
+ /** Slot scope passed to `header` for custom header rendering. */
25
+ export interface BCalendarHeaderSlotScope {
26
+ /** Currently displayed panel date. */
27
+ value: Date;
28
+ /** Currently displayed mode. */
29
+ mode: BCalendarMode;
30
+ /** Update the panel mode. */
31
+ onTypeChange: (mode: BCalendarMode) => void;
32
+ /** Update the panel value (does not select). */
33
+ onChange: (value: Date) => void;
34
+ }
35
+ /** Visual variant for an event marker. */
36
+ export type BCalendarEventType = 'success' | 'info' | 'warning' | 'error' | 'default';
37
+ /** A user-supplied event attached to a date. */
38
+ export interface BCalendarEvent {
39
+ /** Short event title rendered inside the cell and modal. */
40
+ title: string;
41
+ /** Optional longer description shown in the details modal. */
42
+ description?: string;
43
+ /** Visual badge color. Defaults to `'default'`. */
44
+ type?: BCalendarEventType;
45
+ }
46
+ /** Slot scope for the `eventDetails` slot (modal content customization). */
47
+ export interface BCalendarEventDetailsSlotScope {
48
+ /** The date the modal is opened for. */
49
+ date: Date;
50
+ /** Events for that date. */
51
+ events: BCalendarEvent[];
52
+ /** Programmatically close the modal. */
53
+ close: () => void;
54
+ }