@7pmlabs/design-system 1.0.10 → 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 (427) 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/BPagination/BPagination.vue.d.ts +1 -1
  358. package/dist/types/components/BStatistic/BStatistic.spec.d.ts +1 -0
  359. package/dist/types/components/BStatistic/BStatistic.vue.d.ts +44 -0
  360. package/dist/types/components/BStatistic/BStatisticTimer.vue.d.ts +50 -0
  361. package/dist/types/components/BStatistic/index.d.ts +3 -0
  362. package/dist/types/components/BStatistic/types.d.ts +6 -0
  363. package/dist/types/components/BTreeSelect/BTreeSelect.spec.d.ts +1 -0
  364. package/dist/types/components/BTreeSelect/BTreeSelect.vue.d.ts +143 -0
  365. package/dist/types/components/BTreeSelect/index.d.ts +2 -0
  366. package/dist/types/components/BTreeSelect/types.d.ts +77 -0
  367. package/dist/types/components/index.d.ts +4 -0
  368. package/dist/types/types.d.ts +3 -0
  369. package/package.json +6 -3
  370. package/dist/design-system105.js +0 -212
  371. package/dist/design-system105.js.map +0 -1
  372. package/dist/design-system108.js +0 -227
  373. package/dist/design-system108.js.map +0 -1
  374. package/dist/design-system111.js +0 -166
  375. package/dist/design-system111.js.map +0 -1
  376. package/dist/design-system115.js +0 -277
  377. package/dist/design-system115.js.map +0 -1
  378. package/dist/design-system118.js +0 -19
  379. package/dist/design-system118.js.map +0 -1
  380. package/dist/design-system121.js +0 -15
  381. package/dist/design-system121.js.map +0 -1
  382. package/dist/design-system125.js +0 -45
  383. package/dist/design-system125.js.map +0 -1
  384. package/dist/design-system128.js +0 -236
  385. package/dist/design-system128.js.map +0 -1
  386. package/dist/design-system141.js +0 -40
  387. package/dist/design-system141.js.map +0 -1
  388. package/dist/design-system144.js +0 -7
  389. package/dist/design-system158.js +0 -61
  390. package/dist/design-system158.js.map +0 -1
  391. package/dist/design-system161.js +0 -59
  392. package/dist/design-system161.js.map +0 -1
  393. package/dist/design-system174.js +0 -465
  394. package/dist/design-system174.js.map +0 -1
  395. package/dist/design-system177.js +0 -38
  396. package/dist/design-system177.js.map +0 -1
  397. package/dist/design-system222.js +0 -7
  398. package/dist/design-system222.js.map +0 -1
  399. package/dist/design-system225.js +0 -8
  400. package/dist/design-system225.js.map +0 -1
  401. package/dist/design-system229.js +0 -115
  402. package/dist/design-system229.js.map +0 -1
  403. package/dist/design-system238.js.map +0 -1
  404. package/dist/design-system241.js.map +0 -1
  405. package/dist/design-system40.js +0 -479
  406. package/dist/design-system40.js.map +0 -1
  407. package/dist/design-system43.js +0 -6
  408. package/dist/design-system43.js.map +0 -1
  409. package/dist/design-system46.js +0 -9
  410. package/dist/design-system46.js.map +0 -1
  411. package/dist/design-system50.js +0 -67
  412. package/dist/design-system50.js.map +0 -1
  413. package/dist/design-system60.js.map +0 -1
  414. package/dist/design-system63.js +0 -8
  415. package/dist/design-system67.js +0 -32
  416. package/dist/design-system67.js.map +0 -1
  417. package/dist/design-system74.js +0 -8
  418. package/dist/design-system74.js.map +0 -1
  419. package/dist/design-system79.js +0 -60
  420. package/dist/design-system79.js.map +0 -1
  421. package/dist/design-system82.js +0 -14
  422. package/dist/design-system82.js.map +0 -1
  423. package/dist/design-system86.js +0 -69
  424. package/dist/design-system86.js.map +0 -1
  425. package/dist/design-system89.js +0 -91
  426. package/dist/design-system89.js.map +0 -1
  427. package/dist/design-system93.js.map +0 -1
@@ -1,72 +1,61 @@
1
- import { B_RADIO_GROUP_KEY as e } from "./design-system157.js";
2
- import t from "./design-system160.js";
3
- import n from "./design-system163.js";
4
- import { Fragment as r, computed as i, createBlock as a, createElementBlock as o, createTextVNode as s, defineComponent as c, mergeModels as l, normalizeClass as u, openBlock as d, provide as f, reactive as p, renderList as m, renderSlot as h, resolveDynamicComponent as g, toDisplayString as _, toRefs as v, useModel as y, withCtx as b } from "vue";
5
- //#region src/components/BRadio/BRadioGroup.vue?vue&type=script&setup=true&lang.ts
6
- var x = /* @__PURE__ */ c({
7
- __name: "BRadioGroup",
8
- props: /* @__PURE__ */ l({
1
+ import { useComponentId as e } from "./design-system10.js";
2
+ import { B_RADIO_GROUP_KEY as t } from "./design-system163.js";
3
+ import { computed as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, defineComponent as o, inject as s, mergeModels as c, normalizeClass as l, openBlock as u, renderSlot as d, useModel as f } from "vue";
4
+ //#region src/components/BRadio/BRadio.vue?vue&type=script&setup=true&lang.ts
5
+ var p = ["for"], m = [
6
+ "id",
7
+ "checked",
8
+ "disabled",
9
+ "name",
10
+ "value"
11
+ ], h = {
12
+ key: 0,
13
+ class: "b-radio__label"
14
+ }, g = /* @__PURE__ */ o({
15
+ __name: "BRadio",
16
+ props: /* @__PURE__ */ c({
17
+ id: { default: "" },
9
18
  disabled: {
10
19
  type: Boolean,
11
20
  default: !1
12
21
  },
13
- name: { default: "" },
14
- options: { default: () => void 0 },
15
- optionType: { default: "default" },
16
- size: { default: "middle" },
17
- buttonStyle: { default: "outline" },
18
- block: {
22
+ value: { default: "" },
23
+ name: { default: "" }
24
+ }, {
25
+ modelValue: {
19
26
  type: Boolean,
20
27
  default: !1
21
- }
22
- }, {
23
- modelValue: {},
28
+ },
24
29
  modelModifiers: {}
25
30
  }),
26
- emits: /* @__PURE__ */ l(["change"], ["update:modelValue"]),
27
- setup(c, { emit: l }) {
28
- let x = y(c, "modelValue"), S = l, C = i(() => c.options ? c.options.map((e) => typeof e == "string" || typeof e == "number" ? {
29
- label: String(e),
30
- value: e
31
- } : e) : []);
31
+ emits: /* @__PURE__ */ c(["change"], ["update:modelValue"]),
32
+ setup(o, { emit: c }) {
33
+ let g = f(o, "modelValue"), _ = c, v = s(t, null), y = n(() => o.disabled || v?.disabled.value || !1), b = n(() => o.name || v?.name.value || ""), x = n(() => v ? v.modelValue.value === o.value : g.value), { componentUID: S } = e(), C = n(() => o.id || `b-radio-${S.value}`);
32
34
  function w(e) {
33
- x.value = e, S("change", e);
35
+ y.value || (v ? v.setValue(o.value) : g.value = !0, _("change", !0, e));
34
36
  }
35
- let { disabled: T, name: E, size: D, optionType: O, buttonStyle: k } = v(p({
36
- disabled: c.disabled,
37
- name: c.name,
38
- size: c.size,
39
- optionType: c.optionType,
40
- buttonStyle: c.buttonStyle
41
- }));
42
- f(e, {
43
- modelValue: i(() => x.value),
44
- disabled: T,
45
- name: E,
46
- size: D,
47
- optionType: O,
48
- buttonStyle: k,
49
- setValue: w
50
- });
51
- let A = i(() => c.optionType === "button" ? n : t);
52
- return (e, t) => (d(), o("div", {
53
- class: u(["b-radio-group b:inline-flex b:flex-wrap b:items-center", {
54
- "b-radio-group--block b:flex b:w-full": c.block,
55
- "b:gap-2": c.optionType !== "button",
56
- "b:gap-0": c.optionType === "button"
57
- }]),
58
- role: "radiogroup"
59
- }, [C.value.length > 0 ? (d(!0), o(r, { key: 0 }, m(C.value, (e) => (d(), a(g(A.value), {
60
- key: e.value,
61
- value: e.value,
62
- disabled: e.disabled
63
- }, {
64
- default: b(() => [s(_(e.label), 1)]),
65
- _: 2
66
- }, 1032, ["value", "disabled"]))), 128)) : h(e.$slots, "default", { key: 1 }, void 0, !0)], 2));
37
+ return (e, t) => (u(), i("label", {
38
+ class: l(["b-radio b:inline-flex b:cursor-pointer b:items-center b:gap-2 b:leading-none b:select-none", { "b-radio--disabled b:cursor-not-allowed b:opacity-50": y.value }]),
39
+ for: C.value
40
+ }, [a("span", { class: l(["b-radio__indicator b:relative b:inline-flex b:shrink-0 b:items-center b:justify-center", {
41
+ "b-radio__indicator--checked": x.value,
42
+ "b-radio__indicator--disabled": y.value
43
+ }]) }, [a("input", {
44
+ id: C.value,
45
+ type: "radio",
46
+ class: "b-radio__input",
47
+ checked: x.value,
48
+ disabled: y.value,
49
+ name: b.value,
50
+ value: o.value,
51
+ onChange: w
52
+ }, null, 40, m), t[0] ||= a("span", {
53
+ class: "b-radio__inner",
54
+ "aria-hidden": "true"
55
+ }, null, -1)], 2), e.$slots.default ? (u(), i("span", h, [d(e.$slots, "default", {}, void 0, !0)])) : r("", !0)], 10, p));
67
56
  }
68
57
  });
69
58
  //#endregion
70
- export { x as default };
59
+ export { g as default };
71
60
 
72
61
  //# sourceMappingURL=design-system164.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system164.js","names":[],"sources":["../src/components/BRadio/BRadioGroup.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveDynamicComponent as _resolveDynamicComponent, withCtx as _withCtx, createBlock as _createBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass } from \"vue\"\n\nimport { computed, provide, reactive, toRefs } from 'vue';\nimport BRadio from './BRadio.vue';\nimport BRadioButton from './BRadioButton.vue';\nimport { B_RADIO_GROUP_KEY, type BRadioOption } from './types';\n\n//#region Props\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'BRadioGroup',\n props: /*@__PURE__*/_mergeModels({\n disabled: { type: Boolean, default: false },\n name: { default: '' },\n options: { default: () => (undefined) },\n optionType: { default: 'default' },\n size: { default: 'middle' },\n buttonStyle: { default: 'outline' },\n block: { type: Boolean, default: false }\n }, {\n \"modelValue\": {},\n \"modelModifiers\": {},\n }),\n emits: /*@__PURE__*/_mergeModels([\"change\"], [\"update:modelValue\"]),\n setup(__props: any, { emit: __emit }) {\n\n\n\n/**\n * Currently selected value.\n */\nconst model = _useModel<string | number>(__props, \"modelValue\");\n\nconst emit = __emit;\n//#endregion\n\n//#region Normalize options\nconst normalizedOptions = computed<BRadioOption[]>(() => {\n if (!__props.options) return [];\n return __props.options.map((opt) => {\n if (typeof opt === 'string' || typeof opt === 'number') {\n return { label: String(opt), value: opt };\n }\n return opt;\n });\n});\n//#endregion\n\n//#region Group context\nfunction setValue(val: string | number) {\n model.value = val;\n emit('change', val);\n}\n\nconst props = reactive({ disabled: __props.disabled, name: __props.name, size: __props.size, optionType: __props.optionType, buttonStyle: __props.buttonStyle });\nconst {\n disabled: disabledRef,\n name: nameRef,\n size: sizeRef,\n optionType: optionTypeRef,\n buttonStyle: buttonStyleRef,\n} = toRefs(props);\n\nprovide(B_RADIO_GROUP_KEY, {\n modelValue: computed(() => model.value),\n disabled: disabledRef,\n name: nameRef,\n size: sizeRef,\n optionType: optionTypeRef,\n buttonStyle: buttonStyleRef,\n setValue,\n});\n//#endregion\n\n//#region Computed component\nconst radioComponent = computed(() => (__props.optionType === 'button' ? BRadioButton : BRadio));\n//#endregion\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"b-radio-group b:inline-flex b:flex-wrap b:items-center\", {\n 'b-radio-group--block b:flex b:w-full': __props.block,\n 'b:gap-2': __props.optionType !== 'button',\n 'b:gap-0': __props.optionType === 'button',\n }]),\n role: \"radiogroup\"\n }, [\n (normalizedOptions.value.length > 0)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList(normalizedOptions.value, (opt) => {\n return (_openBlock(), _createBlock(_resolveDynamicComponent(radioComponent.value), {\n key: opt.value,\n value: opt.value,\n disabled: opt.disabled\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(opt.label), 1)\n ]),\n _: 2\n }, 1032, [\"value\", \"disabled\"]))\n }), 128))\n : _renderSlot(_ctx.$slots, \"default\", { key: 1 }, undefined, true)\n ], 2))\n}\n}\n\n})"],"mappings":";;;;;AAUA,IAAA,IAA4B,kBAAiB;CAC3C,QAAQ;CACR,OAAoB,kBAAa;EAC/B,UAAU;GAAE,MAAM;GAAS,SAAS;GAAO;EAC3C,MAAM,EAAE,SAAS,IAAI;EACrB,SAAS,EAAE,eAAgB,KAAA,GAAY;EACvC,YAAY,EAAE,SAAS,WAAW;EAClC,MAAM,EAAE,SAAS,UAAU;EAC3B,aAAa,EAAE,SAAS,WAAW;EACnC,OAAO;GAAE,MAAM;GAAS,SAAS;GAAO;EACzC,EAAE;EACD,YAAc,EAAE;EAChB,gBAAkB,EAAE;EACrB,CAAC;CACF,OAAoB,kBAAa,CAAC,SAAS,EAAE,CAAC,oBAAoB,CAAC;CACnE,MAAM,GAAc,EAAE,MAAM,KAAU;EAOxC,IAAM,IAAQ,EAA2B,GAAS,aAAa,EAEzD,IAAO,GAIP,IAAoB,QACnB,EAAQ,UACN,EAAQ,QAAQ,KAAK,MACtB,OAAO,KAAQ,YAAY,OAAO,KAAQ,WACrC;GAAE,OAAO,OAAO,EAAI;GAAE,OAAO;GAAK,GAEpC,EACP,GAN2B,EAAE,CAO/B;EAIF,SAAS,EAAS,GAAsB;AAEtC,GADA,EAAM,QAAQ,GACd,EAAK,UAAU,EAAI;;EAIrB,IAAM,EACJ,UAAU,GACV,MAAM,GACN,MAAM,GACN,YAAY,GACZ,aAAa,MACX,EAPU,EAAS;GAAE,UAAU,EAAQ;GAAU,MAAM,EAAQ;GAAM,MAAM,EAAQ;GAAM,YAAY,EAAQ;GAAY,aAAa,EAAQ;GAAa,CAAC,CAO/I;AAEjB,IAAQ,GAAmB;GACzB,YAAY,QAAe,EAAM,MAAM;GACvC,UAAU;GACV,MAAM;GACN,MAAM;GACN,YAAY;GACZ,aAAa;GACb;GACD,CAAC;EAIF,IAAM,IAAiB,QAAgB,EAAQ,eAAe,WAAW,IAAe,EAAQ;AAGhG,UAAQ,GAAU,OACR,GAAY,EAAE,EAAoB,OAAO;GAC/C,OAAO,EAAgB,CAAC,0DAA0D;IAChF,wCAAwC,EAAQ;IAChD,WAAW,EAAQ,eAAe;IAClC,WAAW,EAAQ,eAAe;IACnC,CAAC,CAAC;GACH,MAAM;GACP,EAAE,CACA,EAAkB,MAAM,SAAS,KAC7B,EAAW,GAAK,EAAE,EAAoB,GAAW,EAAE,KAAK,GAAG,EAAE,EAAY,EAAkB,QAAQ,OAC1F,GAAY,EAAE,EAAa,EAAyB,EAAe,MAAM,EAAE;GACjF,KAAK,EAAI;GACT,OAAO,EAAI;GACX,UAAU,EAAI;GACf,EAAE;GACD,SAAS,QAAe,CACtB,EAAiB,EAAiB,EAAI,MAAM,EAAE,EAAE,CACjD,CAAC;GACF,GAAG;GACJ,EAAE,MAAM,CAAC,SAAS,WAAW,CAAC,EAC/B,EAAE,IAAI,IACR,EAAY,EAAK,QAAQ,WAAW,EAAE,KAAK,GAAG,EAAE,KAAA,GAAW,GAAK,CACrE,EAAE,EAAE;;CAIN,CAAA"}
1
+ {"version":3,"file":"design-system164.js","names":["$slots"],"sources":["../src/components/BRadio/BRadio.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, inject } from 'vue';\nimport { B_RADIO_GROUP_KEY, type BRadioGroupContext } from './types';\n\n//#region Props\nconst {\n id = '',\n disabled = false,\n value = '',\n name = '',\n} = defineProps<{\n /** Custom id attribute for the radio input. */\n id?: string;\n /** Whether the radio is disabled. */\n disabled?: boolean;\n /** Value when used inside BRadioGroup. */\n value?: string | number;\n /** The name attribute for the input element. */\n name?: string;\n}>();\n\n/**\n * The checked state of the radio.\n */\nconst model = defineModel<boolean>({ default: false });\n\nconst emit = defineEmits<{\n change: [checked: boolean, event: Event];\n}>();\n//#endregion\n\n//#region Group integration\nconst group = inject<BRadioGroupContext | null>(B_RADIO_GROUP_KEY, null);\n\nconst isDisabled = computed(() => disabled || group?.disabled.value || false);\nconst inputName = computed(() => name || group?.name.value || '');\n\nconst isChecked = computed(() => {\n if (group) {\n return group.modelValue.value === value;\n }\n return model.value;\n});\n//#endregion\n\n//#region ID generation\nconst { componentUID } = useComponentId();\nconst inputId = computed(() => id || `b-radio-${componentUID.value}`);\n//#endregion\n\n//#region Handlers\nfunction handleChange(event: Event) {\n if (isDisabled.value) return;\n\n if (group) {\n group.setValue(value);\n } else {\n model.value = true;\n }\n emit('change', true, event);\n}\n//#endregion\n</script>\n\n<template>\n <label\n class=\"b-radio b:inline-flex b:cursor-pointer b:items-center b:gap-2 b:leading-none b:select-none\"\n :class=\"{ 'b-radio--disabled b:cursor-not-allowed b:opacity-50': isDisabled }\"\n :for=\"inputId\"\n >\n <span\n class=\"b-radio__indicator b:relative b:inline-flex b:shrink-0 b:items-center b:justify-center\"\n :class=\"{\n 'b-radio__indicator--checked': isChecked,\n 'b-radio__indicator--disabled': isDisabled,\n }\"\n >\n <input\n :id=\"inputId\"\n type=\"radio\"\n class=\"b-radio__input\"\n :checked=\"isChecked\"\n :disabled=\"isDisabled\"\n :name=\"inputName\"\n :value=\"value\"\n @change=\"handleChange\"\n />\n <span class=\"b-radio__inner\" aria-hidden=\"true\" />\n </span>\n <span v-if=\"$slots.default\" class=\"b-radio__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<style scoped>\n.b-radio {\n --b-radio-size: 16px;\n --b-radio-dot-size: 8px;\n --b-radio-color-primary: #1677ff;\n --b-radio-color-primary-hover: #4096ff;\n --b-radio-color-border: #d9d9d9;\n --b-radio-color-bg-container: #ffffff;\n --b-radio-color-bg-container-disabled: rgba(0, 0, 0, 0.04);\n --b-radio-color-text-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-color-border-disabled: #d9d9d9;\n --b-radio-dot-color-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-border-width: 1px;\n --b-radio-font-size: 14px;\n --b-radio-line-height: 1.5714;\n --b-radio-wrapper-margin-inline-end: 8px;\n --b-radio-transition-duration: 0.2s;\n}\n\n[data-prefers-color='dark'] .b-radio {\n --b-radio-color-primary: #3c89e8;\n --b-radio-color-primary-hover: #65a9f3;\n --b-radio-color-border: #424242;\n --b-radio-color-bg-container: #141414;\n --b-radio-color-bg-container-disabled: rgba(255, 255, 255, 0.08);\n --b-radio-color-text-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-color-border-disabled: #424242;\n --b-radio-dot-color-disabled: rgba(255, 255, 255, 0.25);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-radio {\n --b-radio-color-primary: #3c89e8;\n --b-radio-color-primary-hover: #65a9f3;\n --b-radio-color-border: #424242;\n --b-radio-color-bg-container: #141414;\n --b-radio-color-bg-container-disabled: rgba(255, 255, 255, 0.08);\n --b-radio-color-text-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-color-border-disabled: #424242;\n --b-radio-dot-color-disabled: rgba(255, 255, 255, 0.25);\n }\n}\n\n.b-radio__label {\n font-size: var(--b-radio-font-size);\n line-height: var(--b-radio-line-height);\n color: inherit;\n}\n\n.b-radio--disabled .b-radio__label {\n color: var(--b-radio-color-text-disabled);\n}\n\n.b-radio__indicator {\n width: var(--b-radio-size);\n height: var(--b-radio-size);\n}\n\n.b-radio__inner {\n position: absolute;\n inset: 0;\n border-radius: 50%;\n border: var(--b-radio-border-width) solid var(--b-radio-color-border);\n background-color: var(--b-radio-color-bg-container);\n transition:\n background-color var(--b-radio-transition-duration) ease-in-out,\n border-color var(--b-radio-transition-duration) ease-in-out;\n}\n\n/* Hover state */\n.b-radio:not(.b-radio--disabled):hover .b-radio__inner {\n border-color: var(--b-radio-color-primary-hover);\n}\n\n/* Checked state */\n.b-radio__indicator--checked .b-radio__inner {\n border-color: var(--b-radio-color-primary);\n}\n\n.b-radio__indicator--checked .b-radio__inner::after {\n content: '';\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n width: var(--b-radio-dot-size);\n height: var(--b-radio-dot-size);\n background-color: var(--b-radio-color-primary);\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n transition:\n transform var(--b-radio-transition-duration) ease-in-out,\n opacity var(--b-radio-transition-duration) ease-in-out;\n}\n\n/* Disabled state */\n.b-radio__indicator--disabled .b-radio__inner {\n background-color: var(--b-radio-color-bg-container-disabled);\n border-color: var(--b-radio-color-border-disabled);\n}\n\n.b-radio__indicator--disabled.b-radio__indicator--checked .b-radio__inner {\n border-color: var(--b-radio-color-border-disabled);\n}\n\n.b-radio__indicator--disabled.b-radio__indicator--checked .b-radio__inner::after {\n background-color: var(--b-radio-dot-color-disabled);\n}\n\n.b-radio__input {\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n margin: 0;\n padding: 0;\n cursor: pointer;\n z-index: 1;\n}\n\n.b-radio--disabled .b-radio__input {\n cursor: not-allowed;\n}\n\n/* Focus-visible ring */\n.b-radio__input:focus-visible + .b-radio__inner {\n outline: 2px solid var(--b-radio-color-primary);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-radio__inner,\n .b-radio__inner::after {\n transition: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,IAAM,IAAQ,EAAoB,GAAA,aAAoB,EAEhD,IAAO,GAMP,IAAQ,EAAkC,GAAmB,KAAK,EAElE,IAAa,QAAe,EAAA,YAAY,GAAO,SAAS,SAAS,GAAM,EACvE,IAAY,QAAe,EAAA,QAAQ,GAAO,KAAK,SAAS,GAAG,EAE3D,IAAY,QACZ,IACK,EAAM,WAAW,UAAU,EAAA,QAE7B,EAAM,MACb,EAII,EAAE,oBAAiB,GAAgB,EACnC,IAAU,QAAe,EAAA,MAAM,WAAW,EAAa,QAAQ;EAIrE,SAAS,EAAa,GAAc;AAC9B,KAAW,UAEX,IACF,EAAM,SAAS,EAAA,MAAM,GAErB,EAAM,QAAQ,IAEhB,EAAK,UAAU,IAAM,EAAM;;yBAM3B,EA2BQ,SAAA;GA1BN,OAAK,EAAA,CAAC,8FAA4F,EAAA,uDACjC,EAAA,OAAU,CAAA,CAAA;GAC1E,KAAK,EAAA;MAEN,EAkBO,QAAA,EAjBL,OAAK,EAAA,CAAC,0FAAwF;kCAC7C,EAAA;mCAAmD,EAAA;UAKpG,EASE,SAAA;GARC,IAAI,EAAA;GACL,MAAK;GACL,OAAM;GACL,SAAS,EAAA;GACT,UAAU,EAAA;GACV,MAAM,EAAA;GACN,OAAO,EAAA;GACP,UAAQ;4BAEX,EAAkD,QAAA;GAA5C,OAAM;GAAiB,eAAY;qBAE/BA,EAAAA,OAAO,WAAA,GAAA,EAAnB,EAEO,QAFP,GAEO,CADL,EAAQ,EAAA,QAAA,WAAA,EAAA,EAAA,KAAA,GAAA,GAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,EAAA"}
@@ -1,8 +1,8 @@
1
1
  import e from "./design-system14.js";
2
2
  import t from "./design-system164.js";
3
3
  /* empty css */
4
- //#region src/components/BRadio/BRadioGroup.vue
5
- var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-a8ec6dad"]]);
4
+ //#region src/components/BRadio/BRadio.vue
5
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-58cd3e1a"]]);
6
6
  //#endregion
7
7
  export { n as default };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"design-system166.js","names":[],"sources":["../src/components/BRadio/BRadioGroup.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed, provide, reactive, toRefs } from 'vue';\nimport BRadio from './BRadio.vue';\nimport BRadioButton from './BRadioButton.vue';\nimport { B_RADIO_GROUP_KEY, type BRadioOption } from './types';\n\n//#region Props\nconst {\n disabled = false,\n name = '',\n options = undefined,\n optionType = 'default',\n size = 'middle',\n buttonStyle = 'outline',\n block = false,\n} = defineProps<{\n /** Disable all radios in the group. */\n disabled?: boolean;\n /** The name property of all child input elements. */\n name?: string;\n /** Shorthand options to render radios from an array. */\n options?: BRadioOption[] | string[] | number[];\n /** Style type of radio: default or button. */\n optionType?: 'default' | 'button';\n /** Size of radio button (only works with button style). */\n size?: 'large' | 'middle' | 'small';\n /** Style of radio button appearance. */\n buttonStyle?: 'outline' | 'solid';\n /** Whether to fit the width of the parent container. */\n block?: boolean;\n}>();\n\n/**\n * Currently selected value.\n */\nconst model = defineModel<string | number>();\n\nconst emit = defineEmits<{\n change: [value: string | number | undefined, event?: Event];\n}>();\n//#endregion\n\n//#region Normalize options\nconst normalizedOptions = computed<BRadioOption[]>(() => {\n if (!options) return [];\n return options.map((opt) => {\n if (typeof opt === 'string' || typeof opt === 'number') {\n return { label: String(opt), value: opt };\n }\n return opt;\n });\n});\n//#endregion\n\n//#region Group context\nfunction setValue(val: string | number) {\n model.value = val;\n emit('change', val);\n}\n\nconst props = reactive({ disabled, name, size, optionType, buttonStyle });\nconst {\n disabled: disabledRef,\n name: nameRef,\n size: sizeRef,\n optionType: optionTypeRef,\n buttonStyle: buttonStyleRef,\n} = toRefs(props);\n\nprovide(B_RADIO_GROUP_KEY, {\n modelValue: computed(() => model.value),\n disabled: disabledRef,\n name: nameRef,\n size: sizeRef,\n optionType: optionTypeRef,\n buttonStyle: buttonStyleRef,\n setValue,\n});\n//#endregion\n\n//#region Computed component\nconst radioComponent = computed(() => (optionType === 'button' ? BRadioButton : BRadio));\n//#endregion\n</script>\n\n<template>\n <div\n class=\"b-radio-group b:inline-flex b:flex-wrap b:items-center\"\n :class=\"{\n 'b-radio-group--block b:flex b:w-full': block,\n 'b:gap-2': optionType !== 'button',\n 'b:gap-0': optionType === 'button',\n }\"\n role=\"radiogroup\"\n >\n <template v-if=\"normalizedOptions.length > 0\">\n <component\n :is=\"radioComponent\"\n v-for=\"opt in normalizedOptions\"\n :key=\"opt.value\"\n :value=\"opt.value\"\n :disabled=\"opt.disabled\"\n >\n {{ opt.label }}\n </component>\n </template>\n <slot v-else />\n </div>\n</template>\n\n<style scoped>\n.b-radio-group--block > * {\n flex: 1;\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"design-system166.js","names":[],"sources":["../src/components/BRadio/BRadio.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, inject } from 'vue';\nimport { B_RADIO_GROUP_KEY, type BRadioGroupContext } from './types';\n\n//#region Props\nconst {\n id = '',\n disabled = false,\n value = '',\n name = '',\n} = defineProps<{\n /** Custom id attribute for the radio input. */\n id?: string;\n /** Whether the radio is disabled. */\n disabled?: boolean;\n /** Value when used inside BRadioGroup. */\n value?: string | number;\n /** The name attribute for the input element. */\n name?: string;\n}>();\n\n/**\n * The checked state of the radio.\n */\nconst model = defineModel<boolean>({ default: false });\n\nconst emit = defineEmits<{\n change: [checked: boolean, event: Event];\n}>();\n//#endregion\n\n//#region Group integration\nconst group = inject<BRadioGroupContext | null>(B_RADIO_GROUP_KEY, null);\n\nconst isDisabled = computed(() => disabled || group?.disabled.value || false);\nconst inputName = computed(() => name || group?.name.value || '');\n\nconst isChecked = computed(() => {\n if (group) {\n return group.modelValue.value === value;\n }\n return model.value;\n});\n//#endregion\n\n//#region ID generation\nconst { componentUID } = useComponentId();\nconst inputId = computed(() => id || `b-radio-${componentUID.value}`);\n//#endregion\n\n//#region Handlers\nfunction handleChange(event: Event) {\n if (isDisabled.value) return;\n\n if (group) {\n group.setValue(value);\n } else {\n model.value = true;\n }\n emit('change', true, event);\n}\n//#endregion\n</script>\n\n<template>\n <label\n class=\"b-radio b:inline-flex b:cursor-pointer b:items-center b:gap-2 b:leading-none b:select-none\"\n :class=\"{ 'b-radio--disabled b:cursor-not-allowed b:opacity-50': isDisabled }\"\n :for=\"inputId\"\n >\n <span\n class=\"b-radio__indicator b:relative b:inline-flex b:shrink-0 b:items-center b:justify-center\"\n :class=\"{\n 'b-radio__indicator--checked': isChecked,\n 'b-radio__indicator--disabled': isDisabled,\n }\"\n >\n <input\n :id=\"inputId\"\n type=\"radio\"\n class=\"b-radio__input\"\n :checked=\"isChecked\"\n :disabled=\"isDisabled\"\n :name=\"inputName\"\n :value=\"value\"\n @change=\"handleChange\"\n />\n <span class=\"b-radio__inner\" aria-hidden=\"true\" />\n </span>\n <span v-if=\"$slots.default\" class=\"b-radio__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<style scoped>\n.b-radio {\n --b-radio-size: 16px;\n --b-radio-dot-size: 8px;\n --b-radio-color-primary: #1677ff;\n --b-radio-color-primary-hover: #4096ff;\n --b-radio-color-border: #d9d9d9;\n --b-radio-color-bg-container: #ffffff;\n --b-radio-color-bg-container-disabled: rgba(0, 0, 0, 0.04);\n --b-radio-color-text-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-color-border-disabled: #d9d9d9;\n --b-radio-dot-color-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-border-width: 1px;\n --b-radio-font-size: 14px;\n --b-radio-line-height: 1.5714;\n --b-radio-wrapper-margin-inline-end: 8px;\n --b-radio-transition-duration: 0.2s;\n}\n\n[data-prefers-color='dark'] .b-radio {\n --b-radio-color-primary: #3c89e8;\n --b-radio-color-primary-hover: #65a9f3;\n --b-radio-color-border: #424242;\n --b-radio-color-bg-container: #141414;\n --b-radio-color-bg-container-disabled: rgba(255, 255, 255, 0.08);\n --b-radio-color-text-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-color-border-disabled: #424242;\n --b-radio-dot-color-disabled: rgba(255, 255, 255, 0.25);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-radio {\n --b-radio-color-primary: #3c89e8;\n --b-radio-color-primary-hover: #65a9f3;\n --b-radio-color-border: #424242;\n --b-radio-color-bg-container: #141414;\n --b-radio-color-bg-container-disabled: rgba(255, 255, 255, 0.08);\n --b-radio-color-text-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-color-border-disabled: #424242;\n --b-radio-dot-color-disabled: rgba(255, 255, 255, 0.25);\n }\n}\n\n.b-radio__label {\n font-size: var(--b-radio-font-size);\n line-height: var(--b-radio-line-height);\n color: inherit;\n}\n\n.b-radio--disabled .b-radio__label {\n color: var(--b-radio-color-text-disabled);\n}\n\n.b-radio__indicator {\n width: var(--b-radio-size);\n height: var(--b-radio-size);\n}\n\n.b-radio__inner {\n position: absolute;\n inset: 0;\n border-radius: 50%;\n border: var(--b-radio-border-width) solid var(--b-radio-color-border);\n background-color: var(--b-radio-color-bg-container);\n transition:\n background-color var(--b-radio-transition-duration) ease-in-out,\n border-color var(--b-radio-transition-duration) ease-in-out;\n}\n\n/* Hover state */\n.b-radio:not(.b-radio--disabled):hover .b-radio__inner {\n border-color: var(--b-radio-color-primary-hover);\n}\n\n/* Checked state */\n.b-radio__indicator--checked .b-radio__inner {\n border-color: var(--b-radio-color-primary);\n}\n\n.b-radio__indicator--checked .b-radio__inner::after {\n content: '';\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n width: var(--b-radio-dot-size);\n height: var(--b-radio-dot-size);\n background-color: var(--b-radio-color-primary);\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n transition:\n transform var(--b-radio-transition-duration) ease-in-out,\n opacity var(--b-radio-transition-duration) ease-in-out;\n}\n\n/* Disabled state */\n.b-radio__indicator--disabled .b-radio__inner {\n background-color: var(--b-radio-color-bg-container-disabled);\n border-color: var(--b-radio-color-border-disabled);\n}\n\n.b-radio__indicator--disabled.b-radio__indicator--checked .b-radio__inner {\n border-color: var(--b-radio-color-border-disabled);\n}\n\n.b-radio__indicator--disabled.b-radio__indicator--checked .b-radio__inner::after {\n background-color: var(--b-radio-dot-color-disabled);\n}\n\n.b-radio__input {\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n margin: 0;\n padding: 0;\n cursor: pointer;\n z-index: 1;\n}\n\n.b-radio--disabled .b-radio__input {\n cursor: not-allowed;\n}\n\n/* Focus-visible ring */\n.b-radio__input:focus-visible + .b-radio__inner {\n outline: 2px solid var(--b-radio-color-primary);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-radio__inner,\n .b-radio__inner::after {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
@@ -1,185 +1,59 @@
1
1
  import { useComponentId as e } from "./design-system10.js";
2
- import { Fragment as t, computed as n, createElementBlock as r, createElementVNode as i, defineComponent as a, mergeModels as o, normalizeClass as s, openBlock as c, ref as l, renderList as u, renderSlot as d, unref as f, useModel as p, watch as m } from "vue";
3
- //#region src/components/BRate/BRate.vue?vue&type=script&setup=true&lang.ts
4
- var h = [
5
- "aria-label",
6
- "aria-disabled",
7
- "aria-valuenow",
8
- "aria-valuemax",
9
- "aria-valuetext",
10
- "tabindex"
11
- ], g = [
12
- "title",
13
- "onMousemove",
14
- "onClick"
15
- ], _ = {
16
- class: "b-rate__star-first",
17
- "aria-hidden": "true"
18
- }, v = ["data-character"], y = {
19
- key: 1,
20
- class: "b-rate__icon",
21
- viewBox: "0 0 24 24",
22
- fill: "currentColor",
23
- "aria-hidden": "true"
24
- }, b = {
25
- class: "b-rate__star-second",
26
- "aria-hidden": "true"
27
- }, x = ["data-character"], S = {
28
- key: 1,
29
- class: "b-rate__icon",
30
- viewBox: "0 0 24 24",
31
- fill: "currentColor",
32
- "aria-hidden": "true"
33
- }, C = ["name", "value"], w = /* @__PURE__ */ a({
34
- __name: "BRate",
35
- props: /* @__PURE__ */ o({
36
- allowClear: {
37
- type: Boolean,
38
- default: !0
39
- },
40
- allowHalf: {
41
- type: Boolean,
42
- default: !1
43
- },
44
- count: { default: 5 },
2
+ import { B_RADIO_GROUP_KEY as t } from "./design-system163.js";
3
+ import { computed as n, createElementBlock as r, createElementVNode as i, defineComponent as a, inject as o, mergeModels as s, normalizeClass as c, openBlock as l, renderSlot as u, useModel as d } from "vue";
4
+ //#region src/components/BRadio/BRadioButton.vue?vue&type=script&setup=true&lang.ts
5
+ var f = ["for"], p = [
6
+ "id",
7
+ "checked",
8
+ "disabled",
9
+ "name",
10
+ "value"
11
+ ], m = { class: "b-radio-button__label" }, h = /* @__PURE__ */ a({
12
+ __name: "BRadioButton",
13
+ props: /* @__PURE__ */ s({
14
+ id: { default: "" },
45
15
  disabled: {
46
16
  type: Boolean,
47
17
  default: !1
48
18
  },
49
- keyboard: {
19
+ value: { default: "" },
20
+ name: { default: "" }
21
+ }, {
22
+ modelValue: {
50
23
  type: Boolean,
51
- default: !0
24
+ default: !1
52
25
  },
53
- size: { default: "default" },
54
- tooltips: { default: () => [] },
55
- character: {}
56
- }, {
57
- modelValue: { default: 0 },
58
26
  modelModifiers: {}
59
27
  }),
60
- emits: /* @__PURE__ */ o([
61
- "hover-change",
62
- "change",
63
- "focus",
64
- "blur",
65
- "keydown"
66
- ], ["update:modelValue"]),
67
- setup(a, { expose: o, emit: w }) {
68
- let T = p(a, "modelValue"), E = w, { componentUID: D } = e(), O = l(0), k = l(!1), A = l(0), j = n(() => O.value > 0 ? O.value : T.value), M = n(() => {
69
- let e = [];
70
- for (let t = 1; t <= a.count; t++) e.push({
71
- index: t,
72
- value: t
73
- });
74
- return e;
75
- });
76
- function N(e) {
77
- let t = j.value;
78
- return e <= Math.floor(t) ? "full" : a.allowHalf && e - .5 <= t && e > t ? "half" : "zero";
79
- }
80
- function P(e, t) {
81
- if (a.disabled) return;
82
- let n = t && a.allowHalf ? e - .5 : e;
83
- a.allowClear && n === T.value ? (T.value = 0, E("change", 0)) : (T.value = n, E("change", n));
84
- }
85
- function F(e, t) {
86
- if (a.disabled) return;
87
- let n = t.currentTarget.getBoundingClientRect(), r = t.clientX - n.left < n.width / 2, i;
88
- i = a.allowHalf && r ? e - .5 : e, i !== O.value && (O.value = i, E("hover-change", i));
89
- }
90
- function I() {
91
- a.disabled || (O.value = 0, E("hover-change", 0));
92
- }
93
- function L() {
94
- k.value = !0, A.value = Math.ceil(T.value) || 1, E("focus");
95
- }
96
- function R() {
97
- k.value = !1, A.value = 0, E("blur");
98
- }
99
- function z(e) {
100
- if (a.disabled || !a.keyboard) return;
101
- E("keydown", e);
102
- let t = a.allowHalf ? .5 : 1;
103
- switch (e.key) {
104
- case "ArrowRight":
105
- case "ArrowUp": {
106
- e.preventDefault();
107
- let n = Math.min(T.value + t, a.count);
108
- T.value = n, A.value = Math.ceil(n), E("change", n);
109
- break;
28
+ emits: /* @__PURE__ */ s(["change"], ["update:modelValue"]),
29
+ setup(a, { emit: s }) {
30
+ let h = d(a, "modelValue"), g = s, _ = o(t, null), v = n(() => a.disabled || _?.disabled.value || !1), y = n(() => a.name || _?.name.value || ""), b = n(() => _?.size.value || "middle"), x = n(() => _?.buttonStyle.value || "outline"), S = n(() => _ ? _.modelValue.value === a.value : h.value), { componentUID: C } = e(), w = n(() => a.id || `b-radio-button-${C.value}`);
31
+ function T(e) {
32
+ v.value || (_ ? _.setValue(a.value) : h.value = !0, g("change", !0, e));
33
+ }
34
+ return (e, t) => (l(), r("label", {
35
+ class: c(["b-radio-button b:relative b:inline-flex b:cursor-pointer b:items-center b:justify-center b:leading-none b:select-none", [
36
+ `b-radio-button--${b.value}`,
37
+ `b-radio-button--${x.value}`,
38
+ {
39
+ "b-radio-button--checked": S.value,
40
+ "b-radio-button--disabled b:cursor-not-allowed": v.value
110
41
  }
111
- case "ArrowLeft":
112
- case "ArrowDown": {
113
- e.preventDefault();
114
- let n = Math.max(T.value - t, 0);
115
- T.value = n, A.value = Math.ceil(n) || 1, E("change", n);
116
- break;
117
- }
118
- case "Enter":
119
- case " ":
120
- e.preventDefault(), a.allowClear && A.value === Math.ceil(T.value) && (T.value = 0, E("change", 0));
121
- break;
122
- }
123
- }
124
- let B = l(null);
125
- function V() {
126
- B.value?.focus();
127
- }
128
- function H() {
129
- B.value?.blur();
130
- }
131
- return o({
132
- focus: V,
133
- blur: H
134
- }), m(O, (e) => {
135
- e === 0 && (A.value = Math.ceil(T.value) || 0);
136
- }), (e, n) => (c(), r("div", {
137
- ref_key: "rootRef",
138
- ref: B,
139
- class: s(["b-rate", [`b-rate--${a.size}`, {
140
- "b-rate--disabled": a.disabled,
141
- "b-rate--focused": k.value
142
- }]]),
143
- role: "slider",
144
- "aria-label": e.$attrs["aria-label"] || "Rating",
145
- "aria-disabled": a.disabled || void 0,
146
- "aria-valuenow": T.value,
147
- "aria-valuemin": 0,
148
- "aria-valuemax": a.count,
149
- "aria-valuetext": `${T.value} out of ${a.count} stars`,
150
- tabindex: a.disabled ? -1 : 0,
151
- onMouseleave: I,
152
- onFocus: L,
153
- onBlur: R,
154
- onKeydown: z
155
- }, [(c(!0), r(t, null, u(M.value, (t) => (c(), r("div", {
156
- key: t.index,
157
- class: s(["b-rate__star", {
158
- "b-rate__star--full": N(t.index) === "full",
159
- "b-rate__star--half": N(t.index) === "half",
160
- "b-rate__star--zero": N(t.index) === "zero",
161
- "b-rate__star--active": O.value > 0,
162
- "b-rate__star--focused": k.value && A.value === t.index
163
- }]),
164
- title: a.tooltips[t.index - 1] || void 0,
165
- onMousemove: (e) => F(t.index, e),
166
- onClick: (e) => P(t.index, a.allowHalf && e.offsetX < e.currentTarget.offsetWidth / 2)
167
- }, [i("div", _, [d(e.$slots, "character", { index: t.index }, () => [a.character ? (c(), r("span", {
168
- key: 0,
169
- class: "b-rate__character",
170
- "data-character": a.character
171
- }, null, 8, v)) : (c(), r("svg", y, [...n[0] ||= [i("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" }, null, -1)]]))], !0)]), i("div", b, [d(e.$slots, "character", { index: t.index }, () => [a.character ? (c(), r("span", {
172
- key: 0,
173
- class: "b-rate__character",
174
- "data-character": a.character
175
- }, null, 8, x)) : (c(), r("svg", S, [...n[1] ||= [i("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" }, null, -1)]]))], !0)])], 42, g))), 128)), i("input", {
176
- type: "hidden",
177
- name: `b-rate-${f(D)}`,
178
- value: T.value
179
- }, null, 8, C)], 42, h));
42
+ ]]),
43
+ for: w.value
44
+ }, [i("input", {
45
+ id: w.value,
46
+ type: "radio",
47
+ class: "b-radio-button__input",
48
+ checked: S.value,
49
+ disabled: v.value,
50
+ name: y.value,
51
+ value: a.value,
52
+ onChange: T
53
+ }, null, 40, p), i("span", m, [u(e.$slots, "default", {}, void 0, !0)])], 10, f));
180
54
  }
181
55
  });
182
56
  //#endregion
183
- export { w as default };
57
+ export { h as default };
184
58
 
185
59
  //# sourceMappingURL=design-system167.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system167.js","names":[],"sources":["../src/components/BRate/BRate.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref } from \"vue\"\n\nconst _hoisted_1 = [\"aria-label\", \"aria-disabled\", \"aria-valuenow\", \"aria-valuemax\", \"aria-valuetext\", \"tabindex\"]\nconst _hoisted_2 = [\"title\", \"onMousemove\", \"onClick\"]\nconst _hoisted_3 = {\n class: \"b-rate__star-first\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_4 = [\"data-character\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"b-rate__icon\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_6 = {\n class: \"b-rate__star-second\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_7 = [\"data-character\"]\nconst _hoisted_8 = {\n key: 1,\n class: \"b-rate__icon\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_9 = [\"name\", \"value\"]\n\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, ref, watch } from 'vue';\n\n//#region Props\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'BRate',\n props: /*@__PURE__*/_mergeModels({\n allowClear: { type: Boolean, default: true },\n allowHalf: { type: Boolean, default: false },\n count: { default: 5 },\n disabled: { type: Boolean, default: false },\n keyboard: { type: Boolean, default: true },\n size: { default: 'default' },\n tooltips: { default: () => ([]) },\n character: {}\n }, {\n \"modelValue\": { default: 0 },\n \"modelModifiers\": {},\n }),\n emits: /*@__PURE__*/_mergeModels([\"hover-change\", \"change\", \"focus\", \"blur\", \"keydown\"], [\"update:modelValue\"]),\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\n\n\n/**\n * The current rating value.\n * Supports v-model for controlled usage.\n */\nconst model = _useModel<number>(__props, \"modelValue\");\n\nconst emit = __emit;\n//#endregion\n\n//#region Internal state\nconst { componentUID } = useComponentId();\nconst hoverValue = ref(0);\nconst isFocused = ref(false);\nconst focusedIndex = ref(0);\n\nconst currentValue = computed(() =>\n hoverValue.value > 0 ? hoverValue.value : model.value,\n);\n\nconst stars = computed(() => {\n const items: { index: number; value: number }[] = [];\n for (let i = 1; i <= __props.count; i++) {\n items.push({ index: i, value: i });\n }\n return items;\n});\n//#endregion\n\n//#region Star state\nfunction getStarState(index: number): 'full' | 'half' | 'zero' {\n const val = currentValue.value;\n if (index <= Math.floor(val)) return 'full';\n if (__props.allowHalf && index - 0.5 <= val && index > val) return 'half';\n return 'zero';\n}\n//#endregion\n\n//#region Handlers\nfunction handleClick(index: number, isHalf: boolean) {\n if (__props.disabled) return;\n\n const newValue = isHalf && __props.allowHalf ? index - 0.5 : index;\n\n if (__props.allowClear && newValue === model.value) {\n model.value = 0;\n emit('change', 0);\n } else {\n model.value = newValue;\n emit('change', newValue);\n }\n}\n\nfunction handleMouseMove(index: number, event: MouseEvent) {\n if (__props.disabled) return;\n\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const isLeftHalf = event.clientX - rect.left < rect.width / 2;\n\n let newHoverValue: number;\n if (__props.allowHalf && isLeftHalf) {\n newHoverValue = index - 0.5;\n } else {\n newHoverValue = index;\n }\n\n if (newHoverValue !== hoverValue.value) {\n hoverValue.value = newHoverValue;\n emit('hover-change', newHoverValue);\n }\n}\n\nfunction handleMouseLeave() {\n if (__props.disabled) return;\n hoverValue.value = 0;\n emit('hover-change', 0);\n}\n\nfunction handleFocus() {\n isFocused.value = true;\n focusedIndex.value = Math.ceil(model.value) || 1;\n emit('focus');\n}\n\nfunction handleBlur() {\n isFocused.value = false;\n focusedIndex.value = 0;\n emit('blur');\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (__props.disabled || !__props.keyboard) return;\n emit('keydown', event);\n\n const step = __props.allowHalf ? 0.5 : 1;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp': {\n event.preventDefault();\n const next = Math.min(model.value + step, __props.count);\n model.value = next;\n focusedIndex.value = Math.ceil(next);\n emit('change', next);\n break;\n }\n case 'ArrowLeft':\n case 'ArrowDown': {\n event.preventDefault();\n const prev = Math.max(model.value - step, 0);\n model.value = prev;\n focusedIndex.value = Math.ceil(prev) || 1;\n emit('change', prev);\n break;\n }\n case 'Enter':\n case ' ': {\n event.preventDefault();\n if (__props.allowClear && focusedIndex.value === Math.ceil(model.value)) {\n model.value = 0;\n emit('change', 0);\n }\n break;\n }\n }\n}\n//#endregion\n\n//#region Expose\nconst rootRef = ref<HTMLElement | null>(null);\n\nfunction focus() {\n rootRef.value?.focus();\n}\n\nfunction blur() {\n rootRef.value?.blur();\n}\n\n__expose({ focus, blur });\n//#endregion\n\n//#region Watch hover for tooltip\nwatch(hoverValue, (val) => {\n if (val === 0) {\n focusedIndex.value = Math.ceil(model.value) || 0;\n }\n});\n//#endregion\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n ref_key: \"rootRef\",\n ref: rootRef,\n class: _normalizeClass([\"b-rate\", [\n `b-rate--${__props.size}`,\n {\n 'b-rate--disabled': __props.disabled,\n 'b-rate--focused': isFocused.value,\n },\n ]]),\n role: \"slider\",\n \"aria-label\": _ctx.$attrs['aria-label'] as string || 'Rating',\n \"aria-disabled\": __props.disabled || undefined,\n \"aria-valuenow\": model.value,\n \"aria-valuemin\": 0,\n \"aria-valuemax\": __props.count,\n \"aria-valuetext\": `${model.value} out of ${__props.count} stars`,\n tabindex: __props.disabled ? -1 : 0,\n onMouseleave: handleMouseLeave,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeydown: handleKeyDown\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(stars.value, (star) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: star.index,\n class: _normalizeClass([\"b-rate__star\", {\n 'b-rate__star--full': getStarState(star.index) === 'full',\n 'b-rate__star--half': getStarState(star.index) === 'half',\n 'b-rate__star--zero': getStarState(star.index) === 'zero',\n 'b-rate__star--active': hoverValue.value > 0,\n 'b-rate__star--focused': isFocused.value && focusedIndex.value === star.index,\n }]),\n title: __props.tooltips[star.index - 1] || undefined,\n onMousemove: (e) => handleMouseMove(star.index, e),\n onClick: (e) => handleClick(star.index, __props.allowHalf && (e.offsetX < (e.currentTarget as HTMLElement).offsetWidth / 2))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"character\", {\n index: star.index\n }, () => [\n (__props.character)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"b-rate__character\",\n \"data-character\": __props.character\n }, null, 8, _hoisted_4))\n : (_openBlock(), _createElementBlock(\"svg\", _hoisted_5, [...(_cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", { d: \"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\" }, null, -1)\n ]))]))\n ], true)\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _renderSlot(_ctx.$slots, \"character\", {\n index: star.index\n }, () => [\n (__props.character)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"b-rate__character\",\n \"data-character\": __props.character\n }, null, 8, _hoisted_7))\n : (_openBlock(), _createElementBlock(\"svg\", _hoisted_8, [...(_cache[1] || (_cache[1] = [\n _createElementVNode(\"path\", { d: \"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\" }, null, -1)\n ]))]))\n ], true)\n ])\n ], 42, _hoisted_2))\n }), 128)),\n _createElementVNode(\"input\", {\n type: \"hidden\",\n name: `b-rate-${_unref(componentUID)}`,\n value: model.value\n }, null, 8, _hoisted_9)\n ], 42, _hoisted_1))\n}\n}\n\n})"],"mappings":"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"}
1
+ {"version":3,"file":"design-system167.js","names":[],"sources":["../src/components/BRadio/BRadioButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, inject } from 'vue';\nimport { B_RADIO_GROUP_KEY, type BRadioGroupContext } from './types';\n\n//#region Props\nconst {\n id = '',\n disabled = false,\n value = '',\n name = '',\n} = defineProps<{\n /** Custom id attribute for the radio button input. */\n id?: string;\n /** Whether the radio button is disabled. */\n disabled?: boolean;\n /** Value when used inside BRadioGroup. */\n value?: string | number;\n /** The name attribute for the input element. */\n name?: string;\n}>();\n\n/**\n * The checked state of the radio button.\n */\nconst model = defineModel<boolean>({ default: false });\n\nconst emit = defineEmits<{\n change: [checked: boolean, event: Event];\n}>();\n//#endregion\n\n//#region Group integration\nconst group = inject<BRadioGroupContext | null>(B_RADIO_GROUP_KEY, null);\n\nconst isDisabled = computed(() => disabled || group?.disabled.value || false);\nconst inputName = computed(() => name || group?.name.value || '');\nconst groupSize = computed(() => group?.size.value || 'middle');\nconst groupButtonStyle = computed(() => group?.buttonStyle.value || 'outline');\n\nconst isChecked = computed(() => {\n if (group) {\n return group.modelValue.value === value;\n }\n return model.value;\n});\n//#endregion\n\n//#region ID generation\nconst { componentUID } = useComponentId();\nconst inputId = computed(() => id || `b-radio-button-${componentUID.value}`);\n//#endregion\n\n//#region Handlers\nfunction handleChange(event: Event) {\n if (isDisabled.value) return;\n\n if (group) {\n group.setValue(value);\n } else {\n model.value = true;\n }\n emit('change', true, event);\n}\n//#endregion\n</script>\n\n<template>\n <label\n class=\"b-radio-button b:relative b:inline-flex b:cursor-pointer b:items-center b:justify-center b:leading-none b:select-none\"\n :class=\"[\n `b-radio-button--${groupSize}`,\n `b-radio-button--${groupButtonStyle}`,\n {\n 'b-radio-button--checked': isChecked,\n 'b-radio-button--disabled b:cursor-not-allowed': isDisabled,\n },\n ]\"\n :for=\"inputId\"\n >\n <input\n :id=\"inputId\"\n type=\"radio\"\n class=\"b-radio-button__input\"\n :checked=\"isChecked\"\n :disabled=\"isDisabled\"\n :name=\"inputName\"\n :value=\"value\"\n @change=\"handleChange\"\n />\n <span class=\"b-radio-button__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<style scoped>\n.b-radio-button {\n --b-radio-button-bg: #ffffff;\n --b-radio-button-checked-bg: #ffffff;\n --b-radio-button-color: rgba(0, 0, 0, 0.88);\n --b-radio-button-color-primary: #0958d9;\n --b-radio-button-color-primary-hover: #0958d9;\n --b-radio-button-color-primary-active: #003eb3;\n --b-radio-button-color-border: #d9d9d9;\n --b-radio-button-color-disabled-bg: rgba(0, 0, 0, 0.04);\n --b-radio-button-color-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-button-solid-checked-bg: #0958d9;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #003eb3;\n --b-radio-button-solid-checked-active-bg: #002b80;\n --b-radio-button-padding-inline: 15px;\n --b-radio-button-border-width: 1px;\n --b-radio-button-transition-duration: 0.2s;\n\n border: var(--b-radio-button-border-width) solid var(--b-radio-button-color-border);\n background-color: var(--b-radio-button-bg);\n color: var(--b-radio-button-color);\n padding-inline: var(--b-radio-button-padding-inline);\n transition:\n color var(--b-radio-button-transition-duration) ease-in-out,\n background-color var(--b-radio-button-transition-duration) ease-in-out,\n border-color var(--b-radio-button-transition-duration) ease-in-out;\n margin-inline-start: calc(-1 * var(--b-radio-button-border-width));\n}\n\n.b-radio-button:first-child {\n margin-inline-start: 0;\n border-start-start-radius: 6px;\n border-end-start-radius: 6px;\n}\n\n.b-radio-button:last-child {\n border-start-end-radius: 6px;\n border-end-end-radius: 6px;\n}\n\n/* Sizes */\n.b-radio-button--large {\n padding-block: 8px;\n font-size: 16px;\n line-height: 1.5;\n}\n\n.b-radio-button--middle {\n padding-block: 5px;\n font-size: 14px;\n line-height: 1.5714;\n}\n\n.b-radio-button--small {\n padding-block: 1px;\n font-size: 14px;\n line-height: 1.5714;\n}\n\n/* Outline style — checked */\n.b-radio-button--outline.b-radio-button--checked {\n color: var(--b-radio-button-color-primary);\n border-color: var(--b-radio-button-color-primary);\n background-color: var(--b-radio-button-checked-bg);\n z-index: 1;\n}\n\n.b-radio-button--outline:not(.b-radio-button--disabled):hover {\n color: var(--b-radio-button-color-primary-hover);\n border-color: var(--b-radio-button-color-primary-hover);\n z-index: 1;\n}\n\n/* Solid style — checked */\n.b-radio-button--solid.b-radio-button--checked {\n color: var(--b-radio-button-solid-checked-color);\n background-color: var(--b-radio-button-solid-checked-bg);\n border-color: var(--b-radio-button-solid-checked-bg);\n z-index: 1;\n}\n\n.b-radio-button--solid.b-radio-button--checked:hover {\n background-color: var(--b-radio-button-solid-checked-hover-bg);\n border-color: var(--b-radio-button-solid-checked-hover-bg);\n}\n\n.b-radio-button--solid:not(.b-radio-button--checked):not(.b-radio-button--disabled):hover {\n color: var(--b-radio-button-color-primary-hover);\n border-color: var(--b-radio-button-color-primary-hover);\n z-index: 1;\n}\n\n/* Disabled */\n.b-radio-button--disabled {\n background-color: var(--b-radio-button-color-disabled-bg);\n color: var(--b-radio-button-color-disabled);\n border-color: var(--b-radio-button-color-border);\n opacity: 1;\n}\n\n.b-radio-button--disabled.b-radio-button--checked {\n background-color: var(--b-radio-button-color-disabled-bg);\n color: var(--b-radio-button-color-disabled);\n border-color: var(--b-radio-button-color-border);\n}\n\n/* Hidden input */\n.b-radio-button__input {\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n margin: 0;\n padding: 0;\n cursor: pointer;\n z-index: 1;\n}\n\n.b-radio-button--disabled .b-radio-button__input {\n cursor: not-allowed;\n}\n\n/* Focus-visible ring */\n.b-radio-button__input:focus-visible ~ .b-radio-button__label {\n outline: 2px solid var(--b-radio-button-color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* Dark mode */\n[data-prefers-color='dark'] .b-radio-button {\n --b-radio-button-bg: #141414;\n --b-radio-button-checked-bg: #141414;\n --b-radio-button-color: rgba(255, 255, 255, 0.85);\n --b-radio-button-color-primary: #4d94e8;\n --b-radio-button-color-primary-hover: #4d94e8;\n --b-radio-button-color-primary-active: #3c89e8;\n --b-radio-button-color-border: #424242;\n --b-radio-button-color-disabled-bg: rgba(255, 255, 255, 0.08);\n --b-radio-button-color-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-button-solid-checked-bg: #1668dc;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #0958d9;\n --b-radio-button-solid-checked-active-bg: #003eb3;\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-radio-button {\n --b-radio-button-bg: #141414;\n --b-radio-button-checked-bg: #141414;\n --b-radio-button-color: rgba(255, 255, 255, 0.85);\n --b-radio-button-color-primary: #4d94e8;\n --b-radio-button-color-primary-hover: #4d94e8;\n --b-radio-button-color-primary-active: #3c89e8;\n --b-radio-button-color-border: #424242;\n --b-radio-button-color-disabled-bg: rgba(255, 255, 255, 0.08);\n --b-radio-button-color-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-button-solid-checked-bg: #1668dc;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #0958d9;\n --b-radio-button-solid-checked-active-bg: #003eb3;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-radio-button {\n transition: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,IAAM,IAAQ,EAAoB,GAAA,aAAoB,EAEhD,IAAO,GAMP,IAAQ,EAAkC,GAAmB,KAAK,EAElE,IAAa,QAAe,EAAA,YAAY,GAAO,SAAS,SAAS,GAAM,EACvE,IAAY,QAAe,EAAA,QAAQ,GAAO,KAAK,SAAS,GAAG,EAC3D,IAAY,QAAe,GAAO,KAAK,SAAS,SAAS,EACzD,IAAmB,QAAe,GAAO,YAAY,SAAS,UAAU,EAExE,IAAY,QACZ,IACK,EAAM,WAAW,UAAU,EAAA,QAE7B,EAAM,MACb,EAII,EAAE,oBAAiB,GAAgB,EACnC,IAAU,QAAe,EAAA,MAAM,kBAAkB,EAAa,QAAQ;EAI5E,SAAS,EAAa,GAAc;AAC9B,KAAW,UAEX,IACF,EAAM,SAAS,EAAA,MAAM,GAErB,EAAM,QAAQ,IAEhB,EAAK,UAAU,IAAM,EAAM;;yBAM3B,EAyBQ,SAAA;GAxBN,OAAK,EAAA,CAAC,yHAAuH;uBAC1F,EAAA;uBAAsC,EAAA;;gCAA+D,EAAA;sDAAoE,EAAA;;;GAQ3M,KAAK,EAAA;MAEN,EASE,SAAA;GARC,IAAI,EAAA;GACL,MAAK;GACL,OAAM;GACL,SAAS,EAAA;GACT,UAAU,EAAA;GACV,MAAM,EAAA;GACN,OAAO,EAAA;GACP,UAAQ;mBAEX,EAEO,QAFP,GAEO,CADL,EAAQ,EAAA,QAAA,WAAA,EAAA,EAAA,KAAA,GAAA,GAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA"}
@@ -1,8 +1,8 @@
1
1
  import e from "./design-system14.js";
2
2
  import t from "./design-system167.js";
3
3
  /* empty css */
4
- //#region src/components/BRate/BRate.vue
5
- var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-60355169"]]);
4
+ //#region src/components/BRadio/BRadioButton.vue
5
+ var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-401aa983"]]);
6
6
  //#endregion
7
7
  export { n as default };
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"design-system169.js","names":[],"sources":["../src/components/BRate/BRate.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, ref, watch } from 'vue';\n\n//#region Props\nconst {\n allowClear = true,\n allowHalf = false,\n count = 5,\n disabled = false,\n keyboard = true,\n size = 'default',\n tooltips = [],\n character,\n} = defineProps<{\n /** Whether to allow clearing the value when clicking the same star again. */\n allowClear?: boolean;\n /** Whether to allow half-star selection. */\n allowHalf?: boolean;\n /** Total number of stars. */\n count?: number;\n /** If true, the component is read-only and cannot be interacted with. */\n disabled?: boolean;\n /** Whether keyboard navigation is enabled. */\n keyboard?: boolean;\n /** Size of the stars. */\n size?: 'small' | 'default' | 'large';\n /** Array of tooltip strings displayed on hover for each star. */\n tooltips?: string[];\n /** Custom character/icon rendered as each star. Receives `{ index }`. */\n character?: string;\n}>();\n\n/**\n * The current rating value.\n * Supports v-model for controlled usage.\n */\nconst model = defineModel<number>({ default: 0 });\n\nconst emit = defineEmits<{\n 'hover-change': [value: number];\n change: [value: number];\n focus: [];\n blur: [];\n keydown: [event: KeyboardEvent];\n}>();\n//#endregion\n\n//#region Internal state\nconst { componentUID } = useComponentId();\nconst hoverValue = ref(0);\nconst isFocused = ref(false);\nconst focusedIndex = ref(0);\n\nconst currentValue = computed(() =>\n hoverValue.value > 0 ? hoverValue.value : model.value,\n);\n\nconst stars = computed(() => {\n const items: { index: number; value: number }[] = [];\n for (let i = 1; i <= count; i++) {\n items.push({ index: i, value: i });\n }\n return items;\n});\n//#endregion\n\n//#region Star state\nfunction getStarState(index: number): 'full' | 'half' | 'zero' {\n const val = currentValue.value;\n if (index <= Math.floor(val)) return 'full';\n if (allowHalf && index - 0.5 <= val && index > val) return 'half';\n return 'zero';\n}\n//#endregion\n\n//#region Handlers\nfunction handleClick(index: number, isHalf: boolean) {\n if (disabled) return;\n\n const newValue = isHalf && allowHalf ? index - 0.5 : index;\n\n if (allowClear && newValue === model.value) {\n model.value = 0;\n emit('change', 0);\n } else {\n model.value = newValue;\n emit('change', newValue);\n }\n}\n\nfunction handleMouseMove(index: number, event: MouseEvent) {\n if (disabled) return;\n\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const isLeftHalf = event.clientX - rect.left < rect.width / 2;\n\n let newHoverValue: number;\n if (allowHalf && isLeftHalf) {\n newHoverValue = index - 0.5;\n } else {\n newHoverValue = index;\n }\n\n if (newHoverValue !== hoverValue.value) {\n hoverValue.value = newHoverValue;\n emit('hover-change', newHoverValue);\n }\n}\n\nfunction handleMouseLeave() {\n if (disabled) return;\n hoverValue.value = 0;\n emit('hover-change', 0);\n}\n\nfunction handleFocus() {\n isFocused.value = true;\n focusedIndex.value = Math.ceil(model.value) || 1;\n emit('focus');\n}\n\nfunction handleBlur() {\n isFocused.value = false;\n focusedIndex.value = 0;\n emit('blur');\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (disabled || !keyboard) return;\n emit('keydown', event);\n\n const step = allowHalf ? 0.5 : 1;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp': {\n event.preventDefault();\n const next = Math.min(model.value + step, count);\n model.value = next;\n focusedIndex.value = Math.ceil(next);\n emit('change', next);\n break;\n }\n case 'ArrowLeft':\n case 'ArrowDown': {\n event.preventDefault();\n const prev = Math.max(model.value - step, 0);\n model.value = prev;\n focusedIndex.value = Math.ceil(prev) || 1;\n emit('change', prev);\n break;\n }\n case 'Enter':\n case ' ': {\n event.preventDefault();\n if (allowClear && focusedIndex.value === Math.ceil(model.value)) {\n model.value = 0;\n emit('change', 0);\n }\n break;\n }\n }\n}\n//#endregion\n\n//#region Expose\nconst rootRef = ref<HTMLElement | null>(null);\n\nfunction focus() {\n rootRef.value?.focus();\n}\n\nfunction blur() {\n rootRef.value?.blur();\n}\n\ndefineExpose({ focus, blur });\n//#endregion\n\n//#region Watch hover for tooltip\nwatch(hoverValue, (val) => {\n if (val === 0) {\n focusedIndex.value = Math.ceil(model.value) || 0;\n }\n});\n//#endregion\n</script>\n\n<template>\n <div\n ref=\"rootRef\"\n class=\"b-rate\"\n :class=\"[\n `b-rate--${size}`,\n {\n 'b-rate--disabled': disabled,\n 'b-rate--focused': isFocused,\n },\n ]\"\n role=\"slider\"\n :aria-label=\"$attrs['aria-label'] as string || 'Rating'\"\n :aria-disabled=\"disabled || undefined\"\n :aria-valuenow=\"model\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"count\"\n :aria-valuetext=\"`${model} out of ${count} stars`\"\n :tabindex=\"disabled ? -1 : 0\"\n @mouseleave=\"handleMouseLeave\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @keydown=\"handleKeyDown\"\n >\n <div\n v-for=\"star in stars\"\n :key=\"star.index\"\n class=\"b-rate__star\"\n :class=\"{\n 'b-rate__star--full': getStarState(star.index) === 'full',\n 'b-rate__star--half': getStarState(star.index) === 'half',\n 'b-rate__star--zero': getStarState(star.index) === 'zero',\n 'b-rate__star--active': hoverValue > 0,\n 'b-rate__star--focused': isFocused && focusedIndex === star.index,\n }\"\n :title=\"tooltips[star.index - 1] || undefined\"\n @mousemove=\"(e) => handleMouseMove(star.index, e)\"\n @click=\"(e) => handleClick(star.index, allowHalf && (e.offsetX < (e.currentTarget as HTMLElement).offsetWidth / 2))\"\n >\n <div class=\"b-rate__star-first\" aria-hidden=\"true\">\n <slot name=\"character\" :index=\"star.index\">\n <span v-if=\"character\" class=\"b-rate__character\" :data-character=\"character\" />\n <svg\n v-else\n class=\"b-rate__icon\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"\n />\n </svg>\n </slot>\n </div>\n <div class=\"b-rate__star-second\" aria-hidden=\"true\">\n <slot name=\"character\" :index=\"star.index\">\n <span v-if=\"character\" class=\"b-rate__character\" :data-character=\"character\" />\n <svg\n v-else\n class=\"b-rate__icon\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"\n />\n </svg>\n </slot>\n </div>\n </div>\n\n <input\n type=\"hidden\"\n :name=\"`b-rate-${componentUID}`\"\n :value=\"model\"\n />\n </div>\n</template>\n\n<style scoped>\n.b-rate {\n --b-rate-star-bg: rgba(0, 0, 0, 0.06);\n --b-rate-star-color: #fadb14;\n --b-rate-star-hover-scale: scale(1.1);\n --b-rate-star-size: 20px;\n\n display: inline-flex;\n gap: 8px;\n align-items: center;\n outline: none;\n cursor: pointer;\n line-height: 1;\n}\n\n.b-rate--small {\n --b-rate-star-size: 15px;\n gap: 6px;\n}\n\n.b-rate--large {\n --b-rate-star-size: 25px;\n gap: 10px;\n}\n\n.b-rate--disabled {\n cursor: not-allowed;\n opacity: 0.65;\n}\n\n.b-rate:focus-visible {\n outline: 2px solid var(--b-rate-star-color);\n outline-offset: 4px;\n border-radius: 2px;\n}\n\n.b-rate__star {\n position: relative;\n display: inline-flex;\n width: var(--b-rate-star-size);\n height: var(--b-rate-star-size);\n cursor: pointer;\n transition: transform 0.15s ease;\n}\n\n.b-rate--disabled .b-rate__star {\n cursor: not-allowed;\n}\n\n.b-rate__star:not(.b-rate--disabled .b-rate__star):hover {\n transform: var(--b-rate-star-hover-scale);\n}\n\n.b-rate__star--focused {\n outline: 2px solid var(--b-rate-star-color);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n.b-rate__star-first,\n.b-rate__star-second {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n user-select: none;\n}\n\n.b-rate__star-first {\n width: 50%;\n overflow: hidden;\n z-index: 1;\n}\n\n.b-rate__star-second {\n z-index: 0;\n}\n\n/* Zero state: both halves use background color */\n.b-rate__star--zero .b-rate__star-first,\n.b-rate__star--zero .b-rate__star-second {\n color: var(--b-rate-star-bg);\n}\n\n/* Full state: both halves use active color */\n.b-rate__star--full .b-rate__star-first,\n.b-rate__star--full .b-rate__star-second {\n color: var(--b-rate-star-color);\n}\n\n/* Half state: first half active, second half background */\n.b-rate__star--half .b-rate__star-first {\n color: var(--b-rate-star-color);\n}\n\n.b-rate__star--half .b-rate__star-second {\n color: var(--b-rate-star-bg);\n}\n\n.b-rate__icon {\n width: var(--b-rate-star-size);\n height: var(--b-rate-star-size);\n flex-shrink: 0;\n display: block;\n}\n\n.b-rate__character {\n font-size: var(--b-rate-star-size);\n line-height: 1;\n white-space: nowrap;\n}\n\n.b-rate__character::before {\n content: attr(data-character);\n}\n\n/* Dark mode */\n[data-prefers-color='dark'] .b-rate {\n --b-rate-star-bg: rgba(255, 255, 255, 0.12);\n --b-rate-star-color: #fadb14;\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-rate {\n --b-rate-star-bg: rgba(255, 255, 255, 0.12);\n --b-rate-star-color: #fadb14;\n }\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .b-rate__star {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
1
+ {"version":3,"file":"design-system169.js","names":[],"sources":["../src/components/BRadio/BRadioButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, inject } from 'vue';\nimport { B_RADIO_GROUP_KEY, type BRadioGroupContext } from './types';\n\n//#region Props\nconst {\n id = '',\n disabled = false,\n value = '',\n name = '',\n} = defineProps<{\n /** Custom id attribute for the radio button input. */\n id?: string;\n /** Whether the radio button is disabled. */\n disabled?: boolean;\n /** Value when used inside BRadioGroup. */\n value?: string | number;\n /** The name attribute for the input element. */\n name?: string;\n}>();\n\n/**\n * The checked state of the radio button.\n */\nconst model = defineModel<boolean>({ default: false });\n\nconst emit = defineEmits<{\n change: [checked: boolean, event: Event];\n}>();\n//#endregion\n\n//#region Group integration\nconst group = inject<BRadioGroupContext | null>(B_RADIO_GROUP_KEY, null);\n\nconst isDisabled = computed(() => disabled || group?.disabled.value || false);\nconst inputName = computed(() => name || group?.name.value || '');\nconst groupSize = computed(() => group?.size.value || 'middle');\nconst groupButtonStyle = computed(() => group?.buttonStyle.value || 'outline');\n\nconst isChecked = computed(() => {\n if (group) {\n return group.modelValue.value === value;\n }\n return model.value;\n});\n//#endregion\n\n//#region ID generation\nconst { componentUID } = useComponentId();\nconst inputId = computed(() => id || `b-radio-button-${componentUID.value}`);\n//#endregion\n\n//#region Handlers\nfunction handleChange(event: Event) {\n if (isDisabled.value) return;\n\n if (group) {\n group.setValue(value);\n } else {\n model.value = true;\n }\n emit('change', true, event);\n}\n//#endregion\n</script>\n\n<template>\n <label\n class=\"b-radio-button b:relative b:inline-flex b:cursor-pointer b:items-center b:justify-center b:leading-none b:select-none\"\n :class=\"[\n `b-radio-button--${groupSize}`,\n `b-radio-button--${groupButtonStyle}`,\n {\n 'b-radio-button--checked': isChecked,\n 'b-radio-button--disabled b:cursor-not-allowed': isDisabled,\n },\n ]\"\n :for=\"inputId\"\n >\n <input\n :id=\"inputId\"\n type=\"radio\"\n class=\"b-radio-button__input\"\n :checked=\"isChecked\"\n :disabled=\"isDisabled\"\n :name=\"inputName\"\n :value=\"value\"\n @change=\"handleChange\"\n />\n <span class=\"b-radio-button__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<style scoped>\n.b-radio-button {\n --b-radio-button-bg: #ffffff;\n --b-radio-button-checked-bg: #ffffff;\n --b-radio-button-color: rgba(0, 0, 0, 0.88);\n --b-radio-button-color-primary: #0958d9;\n --b-radio-button-color-primary-hover: #0958d9;\n --b-radio-button-color-primary-active: #003eb3;\n --b-radio-button-color-border: #d9d9d9;\n --b-radio-button-color-disabled-bg: rgba(0, 0, 0, 0.04);\n --b-radio-button-color-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-button-solid-checked-bg: #0958d9;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #003eb3;\n --b-radio-button-solid-checked-active-bg: #002b80;\n --b-radio-button-padding-inline: 15px;\n --b-radio-button-border-width: 1px;\n --b-radio-button-transition-duration: 0.2s;\n\n border: var(--b-radio-button-border-width) solid var(--b-radio-button-color-border);\n background-color: var(--b-radio-button-bg);\n color: var(--b-radio-button-color);\n padding-inline: var(--b-radio-button-padding-inline);\n transition:\n color var(--b-radio-button-transition-duration) ease-in-out,\n background-color var(--b-radio-button-transition-duration) ease-in-out,\n border-color var(--b-radio-button-transition-duration) ease-in-out;\n margin-inline-start: calc(-1 * var(--b-radio-button-border-width));\n}\n\n.b-radio-button:first-child {\n margin-inline-start: 0;\n border-start-start-radius: 6px;\n border-end-start-radius: 6px;\n}\n\n.b-radio-button:last-child {\n border-start-end-radius: 6px;\n border-end-end-radius: 6px;\n}\n\n/* Sizes */\n.b-radio-button--large {\n padding-block: 8px;\n font-size: 16px;\n line-height: 1.5;\n}\n\n.b-radio-button--middle {\n padding-block: 5px;\n font-size: 14px;\n line-height: 1.5714;\n}\n\n.b-radio-button--small {\n padding-block: 1px;\n font-size: 14px;\n line-height: 1.5714;\n}\n\n/* Outline style — checked */\n.b-radio-button--outline.b-radio-button--checked {\n color: var(--b-radio-button-color-primary);\n border-color: var(--b-radio-button-color-primary);\n background-color: var(--b-radio-button-checked-bg);\n z-index: 1;\n}\n\n.b-radio-button--outline:not(.b-radio-button--disabled):hover {\n color: var(--b-radio-button-color-primary-hover);\n border-color: var(--b-radio-button-color-primary-hover);\n z-index: 1;\n}\n\n/* Solid style — checked */\n.b-radio-button--solid.b-radio-button--checked {\n color: var(--b-radio-button-solid-checked-color);\n background-color: var(--b-radio-button-solid-checked-bg);\n border-color: var(--b-radio-button-solid-checked-bg);\n z-index: 1;\n}\n\n.b-radio-button--solid.b-radio-button--checked:hover {\n background-color: var(--b-radio-button-solid-checked-hover-bg);\n border-color: var(--b-radio-button-solid-checked-hover-bg);\n}\n\n.b-radio-button--solid:not(.b-radio-button--checked):not(.b-radio-button--disabled):hover {\n color: var(--b-radio-button-color-primary-hover);\n border-color: var(--b-radio-button-color-primary-hover);\n z-index: 1;\n}\n\n/* Disabled */\n.b-radio-button--disabled {\n background-color: var(--b-radio-button-color-disabled-bg);\n color: var(--b-radio-button-color-disabled);\n border-color: var(--b-radio-button-color-border);\n opacity: 1;\n}\n\n.b-radio-button--disabled.b-radio-button--checked {\n background-color: var(--b-radio-button-color-disabled-bg);\n color: var(--b-radio-button-color-disabled);\n border-color: var(--b-radio-button-color-border);\n}\n\n/* Hidden input */\n.b-radio-button__input {\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n margin: 0;\n padding: 0;\n cursor: pointer;\n z-index: 1;\n}\n\n.b-radio-button--disabled .b-radio-button__input {\n cursor: not-allowed;\n}\n\n/* Focus-visible ring */\n.b-radio-button__input:focus-visible ~ .b-radio-button__label {\n outline: 2px solid var(--b-radio-button-color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* Dark mode */\n[data-prefers-color='dark'] .b-radio-button {\n --b-radio-button-bg: #141414;\n --b-radio-button-checked-bg: #141414;\n --b-radio-button-color: rgba(255, 255, 255, 0.85);\n --b-radio-button-color-primary: #4d94e8;\n --b-radio-button-color-primary-hover: #4d94e8;\n --b-radio-button-color-primary-active: #3c89e8;\n --b-radio-button-color-border: #424242;\n --b-radio-button-color-disabled-bg: rgba(255, 255, 255, 0.08);\n --b-radio-button-color-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-button-solid-checked-bg: #1668dc;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #0958d9;\n --b-radio-button-solid-checked-active-bg: #003eb3;\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-radio-button {\n --b-radio-button-bg: #141414;\n --b-radio-button-checked-bg: #141414;\n --b-radio-button-color: rgba(255, 255, 255, 0.85);\n --b-radio-button-color-primary: #4d94e8;\n --b-radio-button-color-primary-hover: #4d94e8;\n --b-radio-button-color-primary-active: #3c89e8;\n --b-radio-button-color-border: #424242;\n --b-radio-button-color-disabled-bg: rgba(255, 255, 255, 0.08);\n --b-radio-button-color-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-button-solid-checked-bg: #1668dc;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #0958d9;\n --b-radio-button-solid-checked-active-bg: #003eb3;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-radio-button {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}