@7pmlabs/design-system 1.0.9 → 1.0.11

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 (438) hide show
  1. package/README.md +57 -6
  2. package/dist/design-system.css +1 -1
  3. package/dist/design-system.js +74 -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 +452 -90
  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 +33 -106
  127. package/dist/design-system183.js.map +1 -1
  128. package/dist/design-system185.js +4 -5
  129. package/dist/design-system185.js.map +1 -1
  130. package/dist/design-system186.js +71 -89
  131. package/dist/design-system186.js.map +1 -1
  132. package/dist/design-system188.js +4 -5
  133. package/dist/design-system188.js.map +1 -1
  134. package/dist/design-system189.js +25 -727
  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 +28 -11
  140. package/dist/design-system192.js.map +1 -1
  141. package/dist/design-system194.js +8 -0
  142. package/dist/design-system194.js.map +1 -0
  143. package/dist/design-system195.js +33 -5
  144. package/dist/design-system195.js.map +1 -1
  145. package/dist/design-system197.js +5 -46
  146. package/dist/design-system197.js.map +1 -1
  147. package/dist/design-system198.js +31 -4
  148. package/dist/design-system198.js.map +1 -1
  149. package/dist/design-system200.js +8 -0
  150. package/dist/design-system200.js.map +1 -0
  151. package/dist/design-system201.js +332 -5
  152. package/dist/design-system201.js.map +1 -1
  153. package/dist/design-system203.js +8 -0
  154. package/dist/design-system203.js.map +1 -0
  155. package/dist/design-system204.js +100 -5
  156. package/dist/design-system204.js.map +1 -1
  157. package/dist/design-system206.js +8 -0
  158. package/dist/design-system206.js.map +1 -0
  159. package/dist/design-system207.js +19 -5
  160. package/dist/design-system207.js.map +1 -1
  161. package/dist/design-system208.js +4 -54
  162. package/dist/design-system208.js.map +1 -1
  163. package/dist/design-system209.js +3 -4
  164. package/dist/design-system209.js.map +1 -1
  165. package/dist/design-system210.js +386 -137
  166. package/dist/design-system210.js.map +1 -1
  167. package/dist/design-system212.js +1 -1
  168. package/dist/design-system212.js.map +1 -1
  169. package/dist/design-system213.js +59 -7
  170. package/dist/design-system213.js.map +1 -1
  171. package/dist/design-system215.js +8 -0
  172. package/dist/design-system215.js.map +1 -0
  173. package/dist/design-system216.js +88 -5
  174. package/dist/design-system216.js.map +1 -1
  175. package/dist/design-system217.js +4 -580
  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 -7
  181. package/dist/design-system220.js.map +1 -1
  182. package/dist/design-system221.js +85 -353
  183. package/dist/design-system221.js.map +1 -1
  184. package/dist/design-system223.js +2 -2
  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 +8 -0
  189. package/dist/design-system226.js.map +1 -0
  190. package/dist/{design-system60.js → design-system227.js} +6 -8
  191. package/dist/design-system227.js.map +1 -0
  192. package/dist/{design-system193.js → design-system228.js} +2 -2
  193. package/dist/design-system228.js.map +1 -0
  194. package/dist/design-system230.js +8 -0
  195. package/dist/design-system230.js.map +1 -0
  196. package/dist/{design-system196.js → design-system231.js} +1 -1
  197. package/dist/{design-system196.js.map → design-system231.js.map} +1 -1
  198. package/dist/design-system232.js +49 -0
  199. package/dist/design-system232.js.map +1 -0
  200. package/dist/design-system233.js +7 -0
  201. package/dist/design-system233.js.map +1 -0
  202. package/dist/{design-system199.js → design-system234.js} +2 -2
  203. package/dist/design-system234.js.map +1 -0
  204. package/dist/design-system236.js +8 -0
  205. package/dist/design-system236.js.map +1 -0
  206. package/dist/{design-system202.js → design-system237.js} +1 -1
  207. package/dist/design-system237.js.map +1 -0
  208. package/dist/design-system239.js +8 -0
  209. package/dist/design-system239.js.map +1 -0
  210. package/dist/{design-system205.js → design-system240.js} +1 -1
  211. package/dist/design-system240.js.map +1 -0
  212. package/dist/design-system242.js +8 -0
  213. package/dist/design-system242.js.map +1 -0
  214. package/dist/design-system243.js +57 -0
  215. package/dist/design-system243.js.map +1 -0
  216. package/dist/design-system244.js +7 -0
  217. package/dist/design-system244.js.map +1 -0
  218. package/dist/design-system245.js +173 -0
  219. package/dist/design-system245.js.map +1 -0
  220. package/dist/design-system247.js +8 -0
  221. package/dist/design-system247.js.map +1 -0
  222. package/dist/design-system248.js +10 -0
  223. package/dist/design-system248.js.map +1 -0
  224. package/dist/{design-system214.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-system252.js +583 -0
  230. package/dist/design-system252.js.map +1 -0
  231. package/dist/{design-system219.js → design-system254.js} +2 -2
  232. package/dist/{design-system219.js.map → design-system254.js.map} +1 -1
  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/BPagination/BPagination.vue.d.ts +1 -1
  358. package/dist/types/components/BSkeleton/BSkeleton.spec.d.ts +1 -0
  359. package/dist/types/components/BSkeleton/BSkeleton.vue.d.ts +46 -0
  360. package/dist/types/components/BSkeleton/BSkeletonAvatar.vue.d.ts +12 -0
  361. package/dist/types/components/BSkeleton/BSkeletonButton.vue.d.ts +14 -0
  362. package/dist/types/components/BSkeleton/BSkeletonImage.vue.d.ts +7 -0
  363. package/dist/types/components/BSkeleton/BSkeletonInput.vue.d.ts +12 -0
  364. package/dist/types/components/BSkeleton/BSkeletonNode.vue.d.ts +19 -0
  365. package/dist/types/components/BSkeleton/index.d.ts +7 -0
  366. package/dist/types/components/BSkeleton/types.d.ts +20 -0
  367. package/dist/types/components/BSplitter/BSplitter.spec.d.ts +1 -0
  368. package/dist/types/components/BSplitter/BSplitter.vue.d.ts +45 -0
  369. package/dist/types/components/BSplitter/BSplitterPanel.vue.d.ts +40 -0
  370. package/dist/types/components/BSplitter/index.d.ts +3 -0
  371. package/dist/types/components/BSplitter/types.d.ts +42 -0
  372. package/dist/types/components/BStatistic/BStatistic.spec.d.ts +1 -0
  373. package/dist/types/components/BStatistic/BStatistic.vue.d.ts +44 -0
  374. package/dist/types/components/BStatistic/BStatisticTimer.vue.d.ts +50 -0
  375. package/dist/types/components/BStatistic/index.d.ts +3 -0
  376. package/dist/types/components/BStatistic/types.d.ts +6 -0
  377. package/dist/types/components/BTreeSelect/BTreeSelect.spec.d.ts +1 -0
  378. package/dist/types/components/BTreeSelect/BTreeSelect.vue.d.ts +143 -0
  379. package/dist/types/components/BTreeSelect/index.d.ts +2 -0
  380. package/dist/types/components/BTreeSelect/types.d.ts +77 -0
  381. package/dist/types/components/index.d.ts +6 -0
  382. package/dist/types/types.d.ts +3 -0
  383. package/package.json +6 -3
  384. package/dist/design-system105.js +0 -212
  385. package/dist/design-system105.js.map +0 -1
  386. package/dist/design-system108.js +0 -227
  387. package/dist/design-system108.js.map +0 -1
  388. package/dist/design-system111.js +0 -166
  389. package/dist/design-system111.js.map +0 -1
  390. package/dist/design-system115.js +0 -277
  391. package/dist/design-system115.js.map +0 -1
  392. package/dist/design-system118.js +0 -19
  393. package/dist/design-system118.js.map +0 -1
  394. package/dist/design-system121.js +0 -15
  395. package/dist/design-system121.js.map +0 -1
  396. package/dist/design-system125.js +0 -45
  397. package/dist/design-system125.js.map +0 -1
  398. package/dist/design-system128.js +0 -236
  399. package/dist/design-system128.js.map +0 -1
  400. package/dist/design-system141.js +0 -40
  401. package/dist/design-system141.js.map +0 -1
  402. package/dist/design-system144.js +0 -7
  403. package/dist/design-system158.js +0 -61
  404. package/dist/design-system158.js.map +0 -1
  405. package/dist/design-system161.js +0 -59
  406. package/dist/design-system161.js.map +0 -1
  407. package/dist/design-system174.js +0 -465
  408. package/dist/design-system174.js.map +0 -1
  409. package/dist/design-system177.js +0 -335
  410. package/dist/design-system177.js.map +0 -1
  411. package/dist/design-system193.js.map +0 -1
  412. package/dist/design-system199.js.map +0 -1
  413. package/dist/design-system202.js.map +0 -1
  414. package/dist/design-system205.js.map +0 -1
  415. package/dist/design-system214.js.map +0 -1
  416. package/dist/design-system40.js +0 -479
  417. package/dist/design-system40.js.map +0 -1
  418. package/dist/design-system43.js +0 -6
  419. package/dist/design-system43.js.map +0 -1
  420. package/dist/design-system46.js +0 -9
  421. package/dist/design-system46.js.map +0 -1
  422. package/dist/design-system50.js +0 -67
  423. package/dist/design-system50.js.map +0 -1
  424. package/dist/design-system60.js.map +0 -1
  425. package/dist/design-system63.js +0 -8
  426. package/dist/design-system67.js +0 -32
  427. package/dist/design-system67.js.map +0 -1
  428. package/dist/design-system74.js +0 -8
  429. package/dist/design-system74.js.map +0 -1
  430. package/dist/design-system79.js +0 -60
  431. package/dist/design-system79.js.map +0 -1
  432. package/dist/design-system82.js +0 -14
  433. package/dist/design-system82.js.map +0 -1
  434. package/dist/design-system86.js +0 -69
  435. package/dist/design-system86.js.map +0 -1
  436. package/dist/design-system89.js +0 -91
  437. package/dist/design-system89.js.map +0 -1
  438. package/dist/design-system93.js.map +0 -1
@@ -1,9 +1,209 @@
1
- import e from "./design-system14.js";
2
- import t from "./design-system105.js";
3
- /* empty css */
4
- //#region src/components/BInput/BInput.vue
5
- var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-4221495b"]]);
1
+ import { useComponentId as e } from "./design-system10.js";
2
+ import { useValidationField as t } from "./design-system101.js";
3
+ import { BFormContextKey as n } from "./design-system102.js";
4
+ import { BFormLayout as r, BFormRequiredMark as i, BFormValidateStatus as a, BFormValidateTrigger as o } from "./design-system103.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",
10
+ "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",
50
+ 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: {}
82
+ },
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", {
146
+ 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",
173
+ fill: "currentColor",
174
+ "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));
204
+ }
205
+ });
6
206
  //#endregion
7
- export { n as default };
207
+ export { P as default };
8
208
 
9
209
  //# sourceMappingURL=design-system107.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system107.js","names":[],"sources":["../src/components/BInput/BInput.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { BCommonSize } from '@/types.ts';\nimport { computed, ref, useSlots, watch } from 'vue';\nimport {\n BInputStatus,\n BInputVariant,\n type BInputCountConfig,\n type BInputFocusOptions,\n} from './types.ts';\n\ndefineOptions({ inheritAttrs: false });\n\nconst slots = useSlots();\n\nconst {\n size = BCommonSize.Medium,\n variant = BInputVariant.Outlined,\n type = 'text',\n allowClear = false,\n showCount = false,\n disabled = false,\n readOnly = false,\n placeholder,\n maxLength,\n id,\n count,\n status,\n} = defineProps<{\n /** The size of the input. */\n size?: `${BCommonSize}`;\n /** Visual variant of the input. */\n variant?: `${BInputVariant}`;\n /** Whether the input is disabled. */\n disabled?: boolean;\n /** Whether the input is read-only. */\n readOnly?: boolean;\n /** Validation status. */\n status?: `${BInputStatus}`;\n /** HTML input type (text, password, email, etc.). */\n type?: string;\n /** Maximum number of characters. */\n maxLength?: number;\n /** Placeholder text. */\n placeholder?: string;\n /** HTML id attribute. */\n id?: string;\n /** Show clear button when input has value. */\n allowClear?: boolean;\n /** Display character count. Can be boolean or a formatter function. */\n showCount?: boolean | ((args: { value: string; count: number; maxLength?: number }) => string);\n /** Advanced character counting configuration. */\n count?: BInputCountConfig;\n}>();\n\nconst emit = defineEmits<{\n /** Fired when input value changes. */\n change: [value: string, event: Event];\n /** Fired when Enter key is pressed. */\n pressEnter: [event: KeyboardEvent];\n /** Fired when clear button is clicked. */\n clear: [];\n /** Fired on input focus. */\n focus: [event: FocusEvent];\n /** Fired on input blur. */\n blur: [event: FocusEvent];\n}>();\n\nconst model = defineModel<string>({ default: '' });\n\nconst { componentUID } = useComponentId();\nconst inputId = computed(() => id ?? `b-input-${componentUID.value}`);\n\nconst inputRef = ref<HTMLInputElement | null>(null);\nconst isFocused = ref(false);\nconst passwordVisible = ref(false);\n\nconst hasAddonBefore = computed(() => !!slots.addonBefore);\nconst hasAddonAfter = computed(() => !!slots.addonAfter);\nconst hasPrefix = computed(() => !!slots.prefix);\nconst hasSuffix = computed(() => !!slots.suffix);\nconst isPasswordType = computed(() => type === 'password');\nconst showPasswordToggle = computed(() => isPasswordType.value);\nconst computedType = computed(() => {\n if (isPasswordType.value) {\n return passwordVisible.value ? 'text' : 'password';\n }\n return type;\n});\n\nconst charCount = computed(() => {\n const val = model.value ?? '';\n if (count?.strategy) return count.strategy(val);\n return val.length;\n});\n\nconst countMax = computed(() => count?.max ?? maxLength);\n\nconst showCountIndicator = computed(() => {\n if (count?.show === false) return false;\n if (count?.show !== undefined) return true;\n return !!showCount;\n});\n\nconst countText = computed(() => {\n const val = model.value ?? '';\n const currentCount = charCount.value;\n\n if (typeof count?.show === 'function') {\n return count.show({ value: val, count: currentCount, maxLength: countMax.value });\n }\n if (typeof showCount === 'function') {\n return showCount({ value: val, count: currentCount, maxLength: countMax.value });\n }\n if (countMax.value !== undefined) {\n return `${currentCount} / ${countMax.value}`;\n }\n return `${currentCount}`;\n});\n\nconst isOverCount = computed(() => {\n if (countMax.value === undefined) return false;\n return charCount.value > countMax.value;\n});\n\nconst showClearButton = computed(() => {\n return allowClear && !!model.value && !disabled && !readOnly;\n});\n\nconst handleInput = (e: Event) => {\n const target = e.target as HTMLInputElement;\n let value = target.value;\n\n if (count?.exceedFormatter && countMax.value !== undefined) {\n const strategy = count.strategy ?? ((v: string) => v.length);\n if (strategy(value) > countMax.value) {\n value = count.exceedFormatter(value, { max: countMax.value });\n target.value = value;\n }\n }\n\n model.value = value;\n emit('change', value, e);\n};\n\nconst handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n emit('pressEnter', e);\n }\n};\n\nconst handleFocus = (e: FocusEvent) => {\n isFocused.value = true;\n emit('focus', e);\n};\n\nconst handleBlur = (e: FocusEvent) => {\n isFocused.value = false;\n emit('blur', e);\n};\n\nconst handleClear = () => {\n model.value = '';\n emit('clear');\n emit('change', '', new Event('change'));\n inputRef.value?.focus();\n};\n\nconst togglePasswordVisibility = () => {\n passwordVisible.value = !passwordVisible.value;\n inputRef.value?.focus();\n};\n\nconst focus = (options?: BInputFocusOptions) => {\n inputRef.value?.focus({ preventScroll: options?.preventScroll });\n if (options?.cursor && inputRef.value) {\n const len = inputRef.value.value.length;\n switch (options.cursor) {\n case 'start':\n inputRef.value.setSelectionRange(0, 0);\n break;\n case 'end':\n inputRef.value.setSelectionRange(len, len);\n break;\n case 'all':\n inputRef.value.setSelectionRange(0, len);\n break;\n }\n }\n};\n\nconst blur = () => {\n inputRef.value?.blur();\n};\n\nwatch(model, (val) => {\n if (count?.exceedFormatter && countMax.value !== undefined) {\n const strategy = count.strategy ?? ((v: string) => v.length);\n if (strategy(val) > countMax.value) {\n model.value = count.exceedFormatter(val, { max: countMax.value });\n }\n }\n});\n\ndefineExpose({ focus, blur });\n</script>\n\n<template>\n <span\n class=\"b-input\"\n :class=\"[\n `b-input--${size}`,\n `b-input--${variant}`,\n {\n 'b-input--focused': isFocused,\n 'b-input--disabled': disabled,\n 'b-input--readonly': readOnly,\n 'b-input--error': status === BInputStatus.Error,\n 'b-input--warning': status === BInputStatus.Warning,\n 'b-input--has-addon-before': hasAddonBefore,\n 'b-input--has-addon-after': hasAddonAfter,\n 'b-input--over-count': isOverCount,\n },\n ]\"\n >\n <span v-if=\"hasAddonBefore\" class=\"b-input__addon b-input__addon--before\">\n <slot name=\"addonBefore\" />\n </span>\n\n <span class=\"b-input__wrapper\">\n <span v-if=\"hasPrefix\" class=\"b-input__prefix\" aria-hidden=\"true\">\n <slot name=\"prefix\" />\n </span>\n\n <input\n :id=\"inputId\"\n ref=\"inputRef\"\n :value=\"model\"\n :type=\"computedType\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :readonly=\"readOnly\"\n :maxlength=\"maxLength && !count?.exceedFormatter ? maxLength : undefined\"\n :aria-invalid=\"status === BInputStatus.Error ? true : undefined\"\n :aria-describedby=\"showCountIndicator ? `${inputId}-count` : undefined\"\n class=\"b-input__input\"\n @input=\"handleInput\"\n @keydown=\"handleKeyDown\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n />\n\n <span v-if=\"showClearButton\" class=\"b-input__clear-wrapper\">\n <button\n type=\"button\"\n class=\"b-input__clear\"\n aria-label=\"Clear input\"\n tabindex=\"-1\"\n @mousedown.prevent=\"handleClear\"\n >\n <svg\n viewBox=\"64 64 896 896\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm165.4 618.2l-66-.3L512 563.4l-99.3 118.4-66.1.3c-4.4 0-8-3.5-8-8 0-1.9.7-3.7 1.9-5.2l130.1-155L340.5 359a8.32 8.32 0 01-1.9-5.2c0-4.4 3.6-8 8-8l66.1.3L512 464.6l99.3-118.4 66-.3c4.4 0 8 3.5 8 8 0 1.9-.7 3.7-1.9 5.2L553.5 514l130 155c1.2 1.5 1.9 3.3 1.9 5.2 0 4.4-3.6 8-8 8z\"\n />\n </svg>\n </button>\n </span>\n\n <span v-if=\"showPasswordToggle\" class=\"b-input__password-toggle-wrapper\">\n <button\n type=\"button\"\n class=\"b-input__password-toggle\"\n :aria-label=\"passwordVisible ? 'Hide password' : 'Show password'\"\n :aria-pressed=\"passwordVisible\"\n tabindex=\"-1\"\n @mousedown.prevent=\"togglePasswordVisibility\"\n >\n <svg\n v-if=\"!passwordVisible\"\n viewBox=\"64 64 896 896\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 000 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 730c-114.9 0-208-93.1-208-208s93.1-208 208-208 208 93.1 208 208-93.1 208-208 208zm0-319.8c-61.7 0-111.8 50.1-111.8 111.8S450.3 633.8 512 633.8 623.8 583.7 623.8 522 573.7 410.2 512 410.2z\"\n />\n </svg>\n <svg\n v-else\n viewBox=\"64 64 896 896\"\n width=\"1em\"\n height=\"1em\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M942.2 486.2C847.4 286.5 704.1 186 512 186c-53.8 0-104.5 9.6-151.7 28.4L212.7 67.2a8.03 8.03 0 00-11.3 0L160 108.5a8.03 8.03 0 000 11.3l740.3 740.3a8.03 8.03 0 0011.3 0l41.3-41.3a8.03 8.03 0 000-11.3l-106.8-106.8c53.1-57.6 94.3-127.4 106.2-153a60.3 60.3 0 000-51.5zM512 730c-114.9 0-208-93.1-208-208 0-40.1 11.4-77.6 31-109.4L297 374.6C270.6 414.1 256 466 256 522c0 141.4 114.6 256 256 256 56 0 107.9-18 150.2-48.5l-38-38C597.6 714.6 556.1 730 512 730zm0-520c114.9 0 208 93.1 208 208 0 40.1-11.4 77.6-31 109.4L727 565.4C753.4 525.9 768 474 768 418c0-141.4-114.6-256-256-256-56 0-107.9 18-150.2 48.5l38 38C426.4 225.4 467.9 210 512 210z\"\n />\n </svg>\n </button>\n </span>\n\n <span v-if=\"hasSuffix\" class=\"b-input__suffix\" aria-hidden=\"true\">\n <slot name=\"suffix\" />\n </span>\n\n <span\n v-if=\"showCountIndicator\"\n :id=\"`${inputId}-count`\"\n class=\"b-input__count\"\n :class=\"{ 'b-input__count--over': isOverCount }\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {{ countText }}\n </span>\n </span>\n\n <span v-if=\"hasAddonAfter\" class=\"b-input__addon b-input__addon--after\">\n <slot name=\"addonAfter\" />\n </span>\n </span>\n</template>\n\n<style scoped>\n.b-input {\n --b-input-active-bg: #ffffff;\n --b-input-active-border-color: #1677ff;\n --b-input-active-shadow: 0 0 0 2px rgba(5, 145, 255, 0.1);\n --b-input-addon-bg: rgba(0, 0, 0, 0.02);\n --b-input-error-active-shadow: 0 0 0 2px rgba(255, 38, 5, 0.06);\n --b-input-hover-bg: #ffffff;\n --b-input-hover-border-color: #4096ff;\n --b-input-font-size: 14px;\n --b-input-font-size-lg: 16px;\n --b-input-font-size-sm: 14px;\n --b-input-padding-block: 4px;\n --b-input-padding-block-lg: 7px;\n --b-input-padding-block-sm: 0px;\n --b-input-padding-inline: 11px;\n --b-input-padding-inline-lg: 11px;\n --b-input-padding-inline-sm: 7px;\n --b-input-warning-active-shadow: 0 0 0 2px rgba(255, 215, 5, 0.1);\n --b-input-border-color: #d9d9d9;\n --b-input-bg: #ffffff;\n --b-input-color: rgba(0, 0, 0, 0.88);\n --b-input-placeholder-color: rgba(0, 0, 0, 0.25);\n --b-input-border-radius: 6px;\n --b-input-clear-color: rgba(0, 0, 0, 0.25);\n --b-input-clear-hover-color: rgba(0, 0, 0, 0.45);\n --b-input-count-color: rgba(0, 0, 0, 0.65);\n --b-input-disabled-bg: rgba(0, 0, 0, 0.04);\n --b-input-disabled-color: rgba(0, 0, 0, 0.25);\n --b-input-error-border-color: #ff4d4f;\n --b-input-error-hover-border-color: #ff7875;\n --b-input-warning-border-color: #faad14;\n --b-input-warning-hover-border-color: #ffc53d;\n --b-input-filled-bg: rgba(0, 0, 0, 0.04);\n --b-input-filled-hover-bg: rgba(0, 0, 0, 0.04);\n\n display: inline-flex;\n align-items: stretch;\n width: 100%;\n font-size: var(--b-input-font-size);\n color: var(--b-input-color);\n line-height: 1.5714;\n}\n\n.b-input--lg {\n font-size: var(--b-input-font-size-lg);\n}\n\n.b-input--sm {\n font-size: var(--b-input-font-size-sm);\n}\n\n.b-input__wrapper {\n display: inline-flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n position: relative;\n transition: all 0.2s;\n}\n\n/* Outlined */\n.b-input--outlined .b-input__wrapper {\n background: var(--b-input-bg);\n border: 1px solid var(--b-input-border-color);\n border-radius: var(--b-input-border-radius);\n}\n\n.b-input--outlined:not(.b-input--disabled):hover .b-input__wrapper {\n border-color: var(--b-input-hover-border-color);\n background: var(--b-input-hover-bg);\n}\n\n.b-input--outlined.b-input--focused .b-input__wrapper {\n border-color: var(--b-input-active-border-color);\n background: var(--b-input-active-bg);\n box-shadow: var(--b-input-active-shadow);\n}\n\n/* Filled */\n.b-input--filled .b-input__wrapper {\n background: var(--b-input-filled-bg);\n border: 1px solid transparent;\n border-radius: var(--b-input-border-radius);\n}\n\n.b-input--filled:not(.b-input--disabled):hover .b-input__wrapper {\n background: var(--b-input-filled-hover-bg);\n}\n\n.b-input--filled.b-input--focused .b-input__wrapper {\n background: var(--b-input-active-bg);\n border-color: var(--b-input-active-border-color);\n box-shadow: var(--b-input-active-shadow);\n}\n\n/* Borderless */\n.b-input--borderless .b-input__wrapper {\n background: transparent;\n border: 1px solid transparent;\n border-radius: var(--b-input-border-radius);\n}\n\n/* Underlined */\n.b-input--underlined .b-input__wrapper {\n background: transparent;\n border: none;\n border-bottom: 1px solid var(--b-input-border-color);\n border-radius: 0;\n}\n\n.b-input--underlined:not(.b-input--disabled):hover .b-input__wrapper {\n border-bottom-color: var(--b-input-hover-border-color);\n}\n\n.b-input--underlined.b-input--focused .b-input__wrapper {\n border-bottom-color: var(--b-input-active-border-color);\n box-shadow: 0 1px 0 0 var(--b-input-active-border-color);\n}\n\n/* Error */\n.b-input--error.b-input--outlined .b-input__wrapper {\n border-color: var(--b-input-error-border-color);\n}\n\n.b-input--error.b-input--outlined:not(.b-input--disabled):hover .b-input__wrapper {\n border-color: var(--b-input-error-hover-border-color);\n}\n\n.b-input--error.b-input--outlined.b-input--focused .b-input__wrapper,\n.b-input--error.b-input--filled.b-input--focused .b-input__wrapper {\n border-color: var(--b-input-error-border-color);\n box-shadow: var(--b-input-error-active-shadow);\n}\n\n.b-input--error.b-input--underlined .b-input__wrapper {\n border-bottom-color: var(--b-input-error-border-color);\n}\n\n.b-input--error.b-input--underlined.b-input--focused .b-input__wrapper {\n border-bottom-color: var(--b-input-error-border-color);\n box-shadow: 0 1px 0 0 var(--b-input-error-border-color);\n}\n\n/* Warning */\n.b-input--warning.b-input--outlined .b-input__wrapper {\n border-color: var(--b-input-warning-border-color);\n}\n\n.b-input--warning.b-input--outlined:not(.b-input--disabled):hover .b-input__wrapper {\n border-color: var(--b-input-warning-hover-border-color);\n}\n\n.b-input--warning.b-input--outlined.b-input--focused .b-input__wrapper,\n.b-input--warning.b-input--filled.b-input--focused .b-input__wrapper {\n border-color: var(--b-input-warning-border-color);\n box-shadow: var(--b-input-warning-active-shadow);\n}\n\n.b-input--warning.b-input--underlined .b-input__wrapper {\n border-bottom-color: var(--b-input-warning-border-color);\n}\n\n.b-input--warning.b-input--underlined.b-input--focused .b-input__wrapper {\n border-bottom-color: var(--b-input-warning-border-color);\n box-shadow: 0 1px 0 0 var(--b-input-warning-border-color);\n}\n\n/* Disabled */\n.b-input--disabled .b-input__wrapper {\n background: var(--b-input-disabled-bg);\n cursor: not-allowed;\n}\n\n.b-input--disabled .b-input__input {\n color: var(--b-input-disabled-color);\n cursor: not-allowed;\n}\n\n/* Addon border radius */\n.b-input--has-addon-before .b-input__wrapper {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.b-input--has-addon-after .b-input__wrapper {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n/* Input element */\n.b-input__input {\n flex: 1;\n min-width: 0;\n width: 100%;\n border: none;\n outline: none;\n background: transparent;\n color: inherit;\n font-size: inherit;\n font-family: inherit;\n line-height: inherit;\n}\n\n.b-input--md .b-input__input {\n padding: var(--b-input-padding-block) var(--b-input-padding-inline);\n}\n\n.b-input--lg .b-input__input {\n padding: var(--b-input-padding-block-lg) var(--b-input-padding-inline-lg);\n}\n\n.b-input--sm .b-input__input {\n padding: var(--b-input-padding-block-sm) var(--b-input-padding-inline-sm);\n}\n\n.b-input__input::placeholder {\n color: var(--b-input-placeholder-color);\n}\n\n/* Prefix & Suffix */\n.b-input__prefix,\n.b-input__suffix {\n display: inline-flex;\n align-items: center;\n color: var(--b-input-color);\n flex-shrink: 0;\n}\n\n.b-input__prefix {\n margin-left: var(--b-input-padding-inline);\n}\n\n.b-input__suffix {\n margin-right: var(--b-input-padding-inline);\n}\n\n.b-input__prefix ~ .b-input__input {\n padding-left: 4px;\n}\n\n/* Clear & password toggle */\n.b-input__clear-wrapper,\n.b-input__password-toggle-wrapper {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-right: var(--b-input-padding-inline);\n}\n\n.b-input__clear,\n.b-input__password-toggle {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: none;\n padding: 0;\n cursor: pointer;\n color: var(--b-input-clear-color);\n font-size: 14px;\n line-height: 1;\n transition: color 0.2s;\n}\n\n.b-input__clear:hover,\n.b-input__password-toggle:hover {\n color: var(--b-input-clear-hover-color);\n}\n\n/* Count */\n.b-input__count {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-right: var(--b-input-padding-inline);\n color: var(--b-input-count-color);\n font-size: 0.857em;\n white-space: nowrap;\n pointer-events: none;\n}\n\n.b-input__count--over {\n color: var(--b-input-error-border-color);\n}\n\n/* Addons */\n.b-input__addon {\n display: inline-flex;\n align-items: center;\n padding: 0 11px;\n background: var(--b-input-addon-bg);\n border: 1px solid var(--b-input-border-color);\n color: var(--b-input-color);\n font-size: inherit;\n white-space: nowrap;\n}\n\n.b-input__addon--before {\n border-right: none;\n border-radius: var(--b-input-border-radius) 0 0 var(--b-input-border-radius);\n}\n\n.b-input__addon--after {\n border-left: none;\n border-radius: 0 var(--b-input-border-radius) var(--b-input-border-radius) 0;\n}\n\n/* Dark mode — activated via data attribute on ancestor */\n[data-prefers-color='dark'] .b-input {\n --b-input-active-bg: #141414;\n --b-input-active-border-color: #1668dc;\n --b-input-active-shadow: 0 0 0 2px rgba(22, 104, 220, 0.15);\n --b-input-addon-bg: rgba(255, 255, 255, 0.04);\n --b-input-error-active-shadow: 0 0 0 2px rgba(220, 56, 56, 0.1);\n --b-input-hover-bg: #141414;\n --b-input-hover-border-color: #3c89e8;\n --b-input-warning-active-shadow: 0 0 0 2px rgba(209, 163, 0, 0.1);\n --b-input-border-color: #424242;\n --b-input-bg: #141414;\n --b-input-color: rgba(255, 255, 255, 0.88);\n --b-input-placeholder-color: rgba(255, 255, 255, 0.25);\n --b-input-clear-color: rgba(255, 255, 255, 0.25);\n --b-input-clear-hover-color: rgba(255, 255, 255, 0.45);\n --b-input-count-color: rgba(255, 255, 255, 0.65);\n --b-input-disabled-bg: rgba(255, 255, 255, 0.08);\n --b-input-disabled-color: rgba(255, 255, 255, 0.25);\n --b-input-error-border-color: #dc3838;\n --b-input-error-hover-border-color: #e86e6e;\n --b-input-warning-border-color: #d1a300;\n --b-input-warning-hover-border-color: #e8c631;\n --b-input-filled-bg: rgba(255, 255, 255, 0.08);\n --b-input-filled-hover-bg: rgba(255, 255, 255, 0.12);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-input {\n --b-input-active-bg: #141414;\n --b-input-active-border-color: #1668dc;\n --b-input-active-shadow: 0 0 0 2px rgba(22, 104, 220, 0.15);\n --b-input-addon-bg: rgba(255, 255, 255, 0.04);\n --b-input-error-active-shadow: 0 0 0 2px rgba(220, 56, 56, 0.1);\n --b-input-hover-bg: #141414;\n --b-input-hover-border-color: #3c89e8;\n --b-input-warning-active-shadow: 0 0 0 2px rgba(209, 163, 0, 0.1);\n --b-input-border-color: #424242;\n --b-input-bg: #141414;\n --b-input-color: rgba(255, 255, 255, 0.88);\n --b-input-placeholder-color: rgba(255, 255, 255, 0.25);\n --b-input-clear-color: rgba(255, 255, 255, 0.25);\n --b-input-clear-hover-color: rgba(255, 255, 255, 0.45);\n --b-input-count-color: rgba(255, 255, 255, 0.65);\n --b-input-disabled-bg: rgba(255, 255, 255, 0.08);\n --b-input-disabled-color: rgba(255, 255, 255, 0.25);\n --b-input-error-border-color: #dc3838;\n --b-input-error-hover-border-color: #e86e6e;\n --b-input-warning-border-color: #d1a300;\n --b-input-warning-hover-border-color: #e8c631;\n --b-input-filled-bg: rgba(255, 255, 255, 0.08);\n --b-input-filled-hover-bg: rgba(255, 255, 255, 0.12);\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-input__wrapper,\n .b-input__clear,\n .b-input__password-toggle {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"design-system107.js","names":["$slots"],"sources":["../src/components/BForm/BFormItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\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\nconst {\n label,\n name,\n schema,\n required = false,\n validateStatus,\n help,\n extra,\n colon = null,\n labelAlign,\n labelWidth,\n hidden = false,\n noStyle = false,\n hasFeedback = false,\n tooltip,\n layout,\n validateTrigger,\n} = defineProps<{\n /** Label text for the form item. */\n label?: string;\n /** Field name (used for validation and form data collection). */\n name?: string;\n /** Zod schema for field validation. */\n schema?: ZodType;\n /** Whether to display a required mark (visual only, does not add validation). */\n required?: boolean;\n /** Manual validation status override. */\n validateStatus?: `${BFormValidateStatus}`;\n /** Custom help/error message (overrides auto-generated). */\n help?: string;\n /** Extra hint text below the control. */\n extra?: string;\n /** Override parent form colon setting. Pass true/false to override, omit to inherit. */\n colon?: boolean | null;\n /** Override parent form label alignment. */\n labelAlign?: 'left' | 'right';\n /** Override parent form label width. */\n labelWidth?: string;\n /** Hide the form item visually but still validate. */\n hidden?: boolean;\n /** Render control only, no wrapper/label/margin. */\n noStyle?: boolean;\n /** Show validation feedback icon. */\n hasFeedback?: boolean;\n /** Override validation trigger. */\n validateTrigger?: `${BFormValidateTrigger}` | `${BFormValidateTrigger}`[];\n /** Tooltip text for the label. */\n tooltip?: string;\n /** Per-item layout override. */\n layout?: 'horizontal' | 'vertical';\n}>();\n\nconst formContext = inject(BFormContextKey, undefined);\n\nconst { componentUID } = useComponentId();\nconst fieldId = computed(() => `b-form-item-${name ? name + '-' : ''}${componentUID.value}`);\n\nconst fieldValueRef = computed(() => {\n if (name && formContext?.model) {\n return formContext.model[name];\n }\n return undefined;\n});\n\nconst fieldValueAsRef = ref(fieldValueRef.value);\nwatch(fieldValueRef, (val) => {\n fieldValueAsRef.value = val;\n});\n\nconst hasValidation = !!(name && schema);\n\nconst validation = hasValidation\n ? useValidationField(name!, fieldValueAsRef, schema!)\n : undefined;\n\nconst resolvedTrigger = computed(() => {\n if (validateTrigger) return Array.isArray(validateTrigger) ? validateTrigger : [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 (validateStatus) return 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 (layout !== undefined) return layout;\n if (formContext?.layout !== undefined) return formContext.layout;\n return BFormLayout.Horizontal;\n});\nconst resolvedLabelAlign = computed(() => {\n if (labelAlign !== undefined) return labelAlign;\n if (formContext?.labelAlign !== undefined) return formContext.labelAlign;\n return 'right';\n});\nconst resolvedColon = computed(() => {\n if (colon !== null) return colon;\n if (formContext?.colon !== undefined) return formContext.colon;\n return true;\n});\nconst resolvedLabelWidth = computed(() => labelWidth ?? formContext?.labelWidth);\nconst isDisabled = computed(() => formContext?.disabled ?? false);\n\nconst isRequired = computed(() => {\n if (required) return true;\n if (schema) {\n const result = schema.safeParse(undefined);\n if (!result.success) return true;\n const emptyResult = 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 (help !== undefined) return 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': hasFeedback,\n 'b-form-item--hidden': hidden,\n 'b-form-item--no-style': 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\ndefineExpose({\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</script>\n\n<template>\n <div\n v-if=\"!noStyle\"\n :class=\"itemClasses\"\n :data-form-field=\"name\"\n role=\"group\"\n :aria-labelledby=\"label ? `${fieldId}-label` : undefined\"\n >\n <div\n v-if=\"label || $slots.label\"\n class=\"b-form-item__label\"\n :class=\"[`b-form-item__label--${resolvedLabelAlign}`]\"\n :style=\"labelStyle\"\n >\n <label :id=\"`${fieldId}-label`\" :for=\"fieldId\">\n <span v-if=\"showRequiredMark\" class=\"b-form-item__required-mark\" aria-hidden=\"true\">*</span>\n <slot name=\"label\">{{ label }}</slot>\n <span v-if=\"showOptionalMark\" class=\"b-form-item__optional-mark\">(optional)</span>\n <span\n v-if=\"showColon\"\n class=\"b-form-item__colon\"\n aria-hidden=\"true\"\n >:</span>\n </label>\n <span v-if=\"tooltip\" class=\"b-form-item__tooltip\" :title=\"tooltip\" role=\"img\" aria-label=\"Help\">\n <svg viewBox=\"64 64 896 896\" width=\"14\" height=\"14\" fill=\"currentColor\" aria-hidden=\"true\">\n <path\n 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 />\n <path\n 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 />\n <path d=\"M512 732a40 40 0 100-80 40 40 0 000 80z\" />\n </svg>\n </span>\n </div>\n\n <div class=\"b-form-item__control\">\n <div class=\"b-form-item__control-input\">\n <slot :id=\"fieldId\" :status=\"computedStatus\" :disabled=\"isDisabled\" :on-blur=\"handleBlur\" />\n <span v-if=\"hasFeedback && computedStatus\" class=\"b-form-item__feedback-icon\">\n <svg\n v-if=\"computedStatus === 'success'\"\n viewBox=\"64 64 896 896\"\n width=\"14\"\n height=\"14\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n 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\"\n />\n </svg>\n <svg\n v-else-if=\"computedStatus === 'error'\"\n viewBox=\"64 64 896 896\"\n width=\"14\"\n height=\"14\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n 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\"\n />\n </svg>\n <svg\n v-else-if=\"computedStatus === 'warning'\"\n viewBox=\"64 64 896 896\"\n width=\"14\"\n height=\"14\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n 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\"\n />\n <path\n 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\"\n />\n </svg>\n <span v-else-if=\"computedStatus === 'validating'\" class=\"b-form-item__loading-icon\">\n <svg viewBox=\"0 0 1024 1024\" width=\"14\" height=\"14\" fill=\"currentColor\" aria-hidden=\"true\">\n <path\n 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 />\n </svg>\n </span>\n </span>\n </div>\n\n <div\n v-if=\"helpMessage || $slots.help\"\n class=\"b-form-item__help\"\n :class=\"{\n 'b-form-item__help--error': computedStatus === 'error',\n 'b-form-item__help--warning': computedStatus === 'warning',\n }\"\n :id=\"`${fieldId}-help`\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n <slot name=\"help\">{{ helpMessage }}</slot>\n </div>\n\n <div v-if=\"extra || $slots.extra\" class=\"b-form-item__extra\">\n <slot name=\"extra\">{{ extra }}</slot>\n </div>\n </div>\n </div>\n\n <template v-else>\n <slot :id=\"fieldId\" :status=\"computedStatus\" :disabled=\"isDisabled\" :on-blur=\"handleBlur\" />\n </template>\n</template>\n\n<style scoped>\n.b-form-item {\n margin-bottom: var(--b-form-item-margin-bottom, 24px);\n}\n\n.b-form-item--horizontal {\n display: flex;\n align-items: flex-start;\n}\n\n.b-form-item--vertical {\n display: flex;\n flex-direction: column;\n}\n\n.b-form-item--hidden {\n display: none;\n}\n\n:deep(.b-form--inline) .b-form-item {\n margin-bottom: var(--b-form-inline-item-margin-bottom, 0);\n}\n\n/* Label */\n.b-form-item__label {\n display: inline-flex;\n align-items: center;\n height: var(--b-form-label-height, 32px);\n color: var(--b-form-label-color, rgba(0, 0, 0, 0.88));\n font-size: var(--b-form-label-font-size, 14px);\n line-height: 1.5714;\n white-space: nowrap;\n}\n\n.b-form-item--horizontal .b-form-item__label {\n margin-right: 8px;\n flex-shrink: 0;\n}\n\n.b-form-item--vertical .b-form-item__label {\n margin: var(--b-form-vertical-label-margin, 0);\n padding: var(--b-form-vertical-label-padding, 0 0 8px);\n height: auto;\n}\n\n.b-form-item__label--left {\n text-align: left;\n justify-content: flex-start;\n}\n\n.b-form-item__label--right {\n text-align: right;\n justify-content: flex-end;\n}\n\n.b-form-item__label label {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n cursor: default;\n}\n\n.b-form-item__required-mark {\n color: var(--b-form-label-required-mark-color, #ff4d4f);\n margin-right: 4px;\n font-family: SimSun, sans-serif;\n line-height: 1;\n}\n\n.b-form-item__optional-mark {\n color: var(--b-form-help-color, rgba(0, 0, 0, 0.65));\n margin-left: 4px;\n font-size: 12px;\n font-style: italic;\n}\n\n.b-form-item__colon {\n margin-inline-start: var(--b-form-label-colon-margin-inline-start, 2px);\n margin-inline-end: var(--b-form-label-colon-margin-inline-end, 8px);\n}\n\n.b-form-item__tooltip {\n display: inline-flex;\n align-items: center;\n margin-left: 4px;\n color: var(--b-form-help-color, rgba(0, 0, 0, 0.65));\n cursor: help;\n}\n\n/* Control */\n.b-form-item__control {\n flex: 1;\n min-width: 0;\n}\n\n.b-form-item__control-input {\n display: flex;\n align-items: center;\n position: relative;\n}\n\n/* Feedback icon */\n.b-form-item__feedback-icon {\n display: inline-flex;\n align-items: center;\n margin-left: 8px;\n flex-shrink: 0;\n}\n\n.b-form-item--has-success .b-form-item__feedback-icon {\n color: var(--b-form-success-color, #52c41a);\n}\n\n.b-form-item--has-error .b-form-item__feedback-icon {\n color: var(--b-form-error-color, #ff4d4f);\n}\n\n.b-form-item--has-warning .b-form-item__feedback-icon {\n color: var(--b-form-warning-color, #faad14);\n}\n\n.b-form-item__loading-icon {\n display: inline-flex;\n animation: b-form-spin 1s linear infinite;\n}\n\n@keyframes b-form-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Help & Extra */\n.b-form-item__help {\n min-height: 22px;\n padding-top: 2px;\n font-size: 14px;\n line-height: 1.5714;\n color: var(--b-form-help-color, rgba(0, 0, 0, 0.65));\n transition: color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);\n}\n\n.b-form-item__help--error {\n color: var(--b-form-error-color, #ff4d4f);\n}\n\n.b-form-item__help--warning {\n color: var(--b-form-warning-color, #faad14);\n}\n\n.b-form-item__extra {\n padding-top: 2px;\n font-size: 14px;\n line-height: 1.5714;\n color: var(--b-form-help-color, rgba(0, 0, 0, 0.65));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-form-item__help {\n transition: none;\n }\n\n .b-form-item__loading-icon {\n animation: none;\n }\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import e from "./design-system14.js";
2
+ import t from "./design-system107.js";
3
+ /* empty css */
4
+ //#region src/components/BForm/BFormItem.vue
5
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-6fe6001b"]]);
6
+ //#endregion
7
+ export { n as default };
8
+
9
+ //# sourceMappingURL=design-system109.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-system109.js","names":[],"sources":["../src/components/BForm/BFormItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\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\nconst {\n label,\n name,\n schema,\n required = false,\n validateStatus,\n help,\n extra,\n colon = null,\n labelAlign,\n labelWidth,\n hidden = false,\n noStyle = false,\n hasFeedback = false,\n tooltip,\n layout,\n validateTrigger,\n} = defineProps<{\n /** Label text for the form item. */\n label?: string;\n /** Field name (used for validation and form data collection). */\n name?: string;\n /** Zod schema for field validation. */\n schema?: ZodType;\n /** Whether to display a required mark (visual only, does not add validation). */\n required?: boolean;\n /** Manual validation status override. */\n validateStatus?: `${BFormValidateStatus}`;\n /** Custom help/error message (overrides auto-generated). */\n help?: string;\n /** Extra hint text below the control. */\n extra?: string;\n /** Override parent form colon setting. Pass true/false to override, omit to inherit. */\n colon?: boolean | null;\n /** Override parent form label alignment. */\n labelAlign?: 'left' | 'right';\n /** Override parent form label width. */\n labelWidth?: string;\n /** Hide the form item visually but still validate. */\n hidden?: boolean;\n /** Render control only, no wrapper/label/margin. */\n noStyle?: boolean;\n /** Show validation feedback icon. */\n hasFeedback?: boolean;\n /** Override validation trigger. */\n validateTrigger?: `${BFormValidateTrigger}` | `${BFormValidateTrigger}`[];\n /** Tooltip text for the label. */\n tooltip?: string;\n /** Per-item layout override. */\n layout?: 'horizontal' | 'vertical';\n}>();\n\nconst formContext = inject(BFormContextKey, undefined);\n\nconst { componentUID } = useComponentId();\nconst fieldId = computed(() => `b-form-item-${name ? name + '-' : ''}${componentUID.value}`);\n\nconst fieldValueRef = computed(() => {\n if (name && formContext?.model) {\n return formContext.model[name];\n }\n return undefined;\n});\n\nconst fieldValueAsRef = ref(fieldValueRef.value);\nwatch(fieldValueRef, (val) => {\n fieldValueAsRef.value = val;\n});\n\nconst hasValidation = !!(name && schema);\n\nconst validation = hasValidation\n ? useValidationField(name!, fieldValueAsRef, schema!)\n : undefined;\n\nconst resolvedTrigger = computed(() => {\n if (validateTrigger) return Array.isArray(validateTrigger) ? validateTrigger : [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 (validateStatus) return 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 (layout !== undefined) return layout;\n if (formContext?.layout !== undefined) return formContext.layout;\n return BFormLayout.Horizontal;\n});\nconst resolvedLabelAlign = computed(() => {\n if (labelAlign !== undefined) return labelAlign;\n if (formContext?.labelAlign !== undefined) return formContext.labelAlign;\n return 'right';\n});\nconst resolvedColon = computed(() => {\n if (colon !== null) return colon;\n if (formContext?.colon !== undefined) return formContext.colon;\n return true;\n});\nconst resolvedLabelWidth = computed(() => labelWidth ?? formContext?.labelWidth);\nconst isDisabled = computed(() => formContext?.disabled ?? false);\n\nconst isRequired = computed(() => {\n if (required) return true;\n if (schema) {\n const result = schema.safeParse(undefined);\n if (!result.success) return true;\n const emptyResult = 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 (help !== undefined) return 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': hasFeedback,\n 'b-form-item--hidden': hidden,\n 'b-form-item--no-style': 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\ndefineExpose({\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</script>\n\n<template>\n <div\n v-if=\"!noStyle\"\n :class=\"itemClasses\"\n :data-form-field=\"name\"\n role=\"group\"\n :aria-labelledby=\"label ? `${fieldId}-label` : undefined\"\n >\n <div\n v-if=\"label || $slots.label\"\n class=\"b-form-item__label\"\n :class=\"[`b-form-item__label--${resolvedLabelAlign}`]\"\n :style=\"labelStyle\"\n >\n <label :id=\"`${fieldId}-label`\" :for=\"fieldId\">\n <span v-if=\"showRequiredMark\" class=\"b-form-item__required-mark\" aria-hidden=\"true\">*</span>\n <slot name=\"label\">{{ label }}</slot>\n <span v-if=\"showOptionalMark\" class=\"b-form-item__optional-mark\">(optional)</span>\n <span\n v-if=\"showColon\"\n class=\"b-form-item__colon\"\n aria-hidden=\"true\"\n >:</span>\n </label>\n <span v-if=\"tooltip\" class=\"b-form-item__tooltip\" :title=\"tooltip\" role=\"img\" aria-label=\"Help\">\n <svg viewBox=\"64 64 896 896\" width=\"14\" height=\"14\" fill=\"currentColor\" aria-hidden=\"true\">\n <path\n 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 />\n <path\n 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 />\n <path d=\"M512 732a40 40 0 100-80 40 40 0 000 80z\" />\n </svg>\n </span>\n </div>\n\n <div class=\"b-form-item__control\">\n <div class=\"b-form-item__control-input\">\n <slot :id=\"fieldId\" :status=\"computedStatus\" :disabled=\"isDisabled\" :on-blur=\"handleBlur\" />\n <span v-if=\"hasFeedback && computedStatus\" class=\"b-form-item__feedback-icon\">\n <svg\n v-if=\"computedStatus === 'success'\"\n viewBox=\"64 64 896 896\"\n width=\"14\"\n height=\"14\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n 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\"\n />\n </svg>\n <svg\n v-else-if=\"computedStatus === 'error'\"\n viewBox=\"64 64 896 896\"\n width=\"14\"\n height=\"14\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n 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\"\n />\n </svg>\n <svg\n v-else-if=\"computedStatus === 'warning'\"\n viewBox=\"64 64 896 896\"\n width=\"14\"\n height=\"14\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n 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\"\n />\n <path\n 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\"\n />\n </svg>\n <span v-else-if=\"computedStatus === 'validating'\" class=\"b-form-item__loading-icon\">\n <svg viewBox=\"0 0 1024 1024\" width=\"14\" height=\"14\" fill=\"currentColor\" aria-hidden=\"true\">\n <path\n 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 />\n </svg>\n </span>\n </span>\n </div>\n\n <div\n v-if=\"helpMessage || $slots.help\"\n class=\"b-form-item__help\"\n :class=\"{\n 'b-form-item__help--error': computedStatus === 'error',\n 'b-form-item__help--warning': computedStatus === 'warning',\n }\"\n :id=\"`${fieldId}-help`\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n <slot name=\"help\">{{ helpMessage }}</slot>\n </div>\n\n <div v-if=\"extra || $slots.extra\" class=\"b-form-item__extra\">\n <slot name=\"extra\">{{ extra }}</slot>\n </div>\n </div>\n </div>\n\n <template v-else>\n <slot :id=\"fieldId\" :status=\"computedStatus\" :disabled=\"isDisabled\" :on-blur=\"handleBlur\" />\n </template>\n</template>\n\n<style scoped>\n.b-form-item {\n margin-bottom: var(--b-form-item-margin-bottom, 24px);\n}\n\n.b-form-item--horizontal {\n display: flex;\n align-items: flex-start;\n}\n\n.b-form-item--vertical {\n display: flex;\n flex-direction: column;\n}\n\n.b-form-item--hidden {\n display: none;\n}\n\n:deep(.b-form--inline) .b-form-item {\n margin-bottom: var(--b-form-inline-item-margin-bottom, 0);\n}\n\n/* Label */\n.b-form-item__label {\n display: inline-flex;\n align-items: center;\n height: var(--b-form-label-height, 32px);\n color: var(--b-form-label-color, rgba(0, 0, 0, 0.88));\n font-size: var(--b-form-label-font-size, 14px);\n line-height: 1.5714;\n white-space: nowrap;\n}\n\n.b-form-item--horizontal .b-form-item__label {\n margin-right: 8px;\n flex-shrink: 0;\n}\n\n.b-form-item--vertical .b-form-item__label {\n margin: var(--b-form-vertical-label-margin, 0);\n padding: var(--b-form-vertical-label-padding, 0 0 8px);\n height: auto;\n}\n\n.b-form-item__label--left {\n text-align: left;\n justify-content: flex-start;\n}\n\n.b-form-item__label--right {\n text-align: right;\n justify-content: flex-end;\n}\n\n.b-form-item__label label {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n cursor: default;\n}\n\n.b-form-item__required-mark {\n color: var(--b-form-label-required-mark-color, #ff4d4f);\n margin-right: 4px;\n font-family: SimSun, sans-serif;\n line-height: 1;\n}\n\n.b-form-item__optional-mark {\n color: var(--b-form-help-color, rgba(0, 0, 0, 0.65));\n margin-left: 4px;\n font-size: 12px;\n font-style: italic;\n}\n\n.b-form-item__colon {\n margin-inline-start: var(--b-form-label-colon-margin-inline-start, 2px);\n margin-inline-end: var(--b-form-label-colon-margin-inline-end, 8px);\n}\n\n.b-form-item__tooltip {\n display: inline-flex;\n align-items: center;\n margin-left: 4px;\n color: var(--b-form-help-color, rgba(0, 0, 0, 0.65));\n cursor: help;\n}\n\n/* Control */\n.b-form-item__control {\n flex: 1;\n min-width: 0;\n}\n\n.b-form-item__control-input {\n display: flex;\n align-items: center;\n position: relative;\n}\n\n/* Feedback icon */\n.b-form-item__feedback-icon {\n display: inline-flex;\n align-items: center;\n margin-left: 8px;\n flex-shrink: 0;\n}\n\n.b-form-item--has-success .b-form-item__feedback-icon {\n color: var(--b-form-success-color, #52c41a);\n}\n\n.b-form-item--has-error .b-form-item__feedback-icon {\n color: var(--b-form-error-color, #ff4d4f);\n}\n\n.b-form-item--has-warning .b-form-item__feedback-icon {\n color: var(--b-form-warning-color, #faad14);\n}\n\n.b-form-item__loading-icon {\n display: inline-flex;\n animation: b-form-spin 1s linear infinite;\n}\n\n@keyframes b-form-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Help & Extra */\n.b-form-item__help {\n min-height: 22px;\n padding-top: 2px;\n font-size: 14px;\n line-height: 1.5714;\n color: var(--b-form-help-color, rgba(0, 0, 0, 0.65));\n transition: color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);\n}\n\n.b-form-item__help--error {\n color: var(--b-form-error-color, #ff4d4f);\n}\n\n.b-form-item__help--warning {\n color: var(--b-form-warning-color, #faad14);\n}\n\n.b-form-item__extra {\n padding-top: 2px;\n font-size: 14px;\n line-height: 1.5714;\n color: var(--b-form-help-color, rgba(0, 0, 0, 0.65));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-form-item__help {\n transition: none;\n }\n\n .b-form-item__loading-icon {\n animation: none;\n }\n}\n</style>\n"],"mappings":""}