@7pmlabs/design-system 2.0.9 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/README.md +4 -4
  2. package/dist/design-system.css +1 -1
  3. package/dist/design-system.js +65 -59
  4. package/dist/design-system100.js +1 -1
  5. package/dist/design-system100.js.map +1 -1
  6. package/dist/design-system101.js +87 -53
  7. package/dist/design-system101.js.map +1 -1
  8. package/dist/design-system103.js +5 -13
  9. package/dist/design-system103.js.map +1 -1
  10. package/dist/design-system104.js +53 -108
  11. package/dist/design-system104.js.map +1 -1
  12. package/dist/{design-system102.js → design-system105.js} +1 -1
  13. package/dist/{design-system102.js.map → design-system105.js.map} +1 -1
  14. package/dist/design-system106.js +13 -6
  15. package/dist/design-system106.js.map +1 -1
  16. package/dist/design-system107.js +93 -190
  17. package/dist/design-system107.js.map +1 -1
  18. package/dist/design-system109.js +2 -2
  19. package/dist/design-system109.js.map +1 -1
  20. package/dist/design-system110.js +183 -484
  21. package/dist/design-system110.js.map +1 -1
  22. package/dist/design-system112.js +5 -4
  23. package/dist/design-system112.js.map +1 -1
  24. package/dist/design-system113.js +507 -7
  25. package/dist/design-system113.js.map +1 -1
  26. package/dist/design-system115.js +8 -0
  27. package/dist/design-system115.js.map +1 -0
  28. package/dist/design-system116.js +7 -6
  29. package/dist/design-system116.js.map +1 -1
  30. package/dist/design-system117.js +154 -169
  31. package/dist/design-system117.js.map +1 -1
  32. package/dist/design-system119.js +2 -2
  33. package/dist/design-system119.js.map +1 -1
  34. package/dist/design-system120.js +210 -149
  35. package/dist/design-system120.js.map +1 -1
  36. package/dist/design-system122.js +5 -4
  37. package/dist/design-system122.js.map +1 -1
  38. package/dist/design-system123.js +160 -9
  39. package/dist/design-system123.js.map +1 -1
  40. package/dist/design-system125.js +8 -0
  41. package/dist/design-system125.js.map +1 -0
  42. package/dist/design-system126.js +176 -6
  43. package/dist/design-system126.js.map +1 -1
  44. package/dist/design-system128.js +8 -0
  45. package/dist/design-system128.js.map +1 -0
  46. package/dist/design-system129.js +213 -5
  47. package/dist/design-system129.js.map +1 -1
  48. package/dist/design-system131.js +5 -90
  49. package/dist/design-system131.js.map +1 -1
  50. package/dist/design-system132.js +166 -0
  51. package/dist/design-system132.js.map +1 -0
  52. package/dist/design-system134.js +5 -42
  53. package/dist/design-system134.js.map +1 -1
  54. package/dist/design-system135.js +12 -0
  55. package/dist/design-system135.js.map +1 -0
  56. package/dist/design-system136.js +274 -5
  57. package/dist/design-system136.js.map +1 -1
  58. package/dist/design-system138.js +9 -0
  59. package/dist/{design-system124.js.map → design-system138.js.map} +1 -1
  60. package/dist/design-system139.js +16 -5
  61. package/dist/design-system139.js.map +1 -1
  62. package/dist/design-system141.js +8 -0
  63. package/dist/{design-system127.js.map → design-system141.js.map} +1 -1
  64. package/dist/design-system142.js +12 -5
  65. package/dist/design-system142.js.map +1 -1
  66. package/dist/design-system143.js +78 -83
  67. package/dist/design-system143.js.map +1 -1
  68. package/dist/design-system145.js +1 -1
  69. package/dist/design-system145.js.map +1 -1
  70. package/dist/design-system146.js +42 -9
  71. package/dist/design-system146.js.map +1 -1
  72. package/dist/design-system148.js +3 -2
  73. package/dist/design-system148.js.map +1 -1
  74. package/dist/design-system149.js +230 -18
  75. package/dist/design-system149.js.map +1 -1
  76. package/dist/design-system151.js +5 -158
  77. package/dist/design-system151.js.map +1 -1
  78. package/dist/{design-system140.js → design-system152.js} +6 -6
  79. package/dist/{design-system140.js.map → design-system152.js.map} +1 -1
  80. package/dist/design-system154.js +5 -307
  81. package/dist/design-system154.js.map +1 -1
  82. package/dist/design-system155.js +98 -0
  83. package/dist/design-system155.js.map +1 -0
  84. package/dist/design-system157.js +5 -240
  85. package/dist/design-system157.js.map +1 -1
  86. package/dist/design-system158.js +12 -0
  87. package/dist/design-system158.js.map +1 -0
  88. package/dist/design-system159.js +37 -5
  89. package/dist/design-system159.js.map +1 -1
  90. package/dist/design-system160.js +4 -189
  91. package/dist/design-system160.js.map +1 -1
  92. package/dist/design-system161.js +24 -0
  93. package/dist/{design-system150.js.map → design-system161.js.map} +1 -1
  94. package/dist/design-system162.js +2 -3
  95. package/dist/design-system162.js.map +1 -1
  96. package/dist/design-system163.js +158 -3
  97. package/dist/design-system163.js.map +1 -1
  98. package/dist/{design-system153.js → design-system165.js} +2 -2
  99. package/dist/{design-system153.js.map → design-system165.js.map} +1 -1
  100. package/dist/design-system166.js +307 -6
  101. package/dist/design-system166.js.map +1 -1
  102. package/dist/{design-system156.js → design-system168.js} +2 -2
  103. package/dist/{design-system156.js.map → design-system168.js.map} +1 -1
  104. package/dist/design-system169.js +167 -6
  105. package/dist/design-system169.js.map +1 -1
  106. package/dist/design-system171.js +8 -0
  107. package/dist/design-system171.js.map +1 -0
  108. package/dist/design-system172.js +240 -6
  109. package/dist/design-system172.js.map +1 -1
  110. package/dist/design-system174.js +8 -0
  111. package/dist/design-system174.js.map +1 -0
  112. package/dist/design-system175.js +189 -6
  113. package/dist/design-system175.js.map +1 -1
  114. package/dist/design-system177.js +8 -0
  115. package/dist/design-system177.js.map +1 -0
  116. package/dist/design-system178.js +3 -5
  117. package/dist/design-system178.js.map +1 -1
  118. package/dist/design-system179.js +58 -11
  119. package/dist/design-system179.js.map +1 -1
  120. package/dist/design-system181.js +9 -0
  121. package/dist/design-system181.js.map +1 -0
  122. package/dist/design-system182.js +56 -6
  123. package/dist/design-system182.js.map +1 -1
  124. package/dist/design-system184.js +9 -0
  125. package/dist/{design-system167.js.map → design-system184.js.map} +1 -1
  126. package/dist/design-system185.js +69 -5
  127. package/dist/design-system185.js.map +1 -1
  128. package/dist/design-system187.js +9 -0
  129. package/dist/{design-system170.js.map → design-system187.js.map} +1 -1
  130. package/dist/design-system188.js +182 -5
  131. package/dist/design-system188.js.map +1 -1
  132. package/dist/design-system190.js +9 -0
  133. package/dist/design-system190.js.map +1 -0
  134. package/dist/design-system191.js +115 -5
  135. package/dist/design-system191.js.map +1 -1
  136. package/dist/design-system193.js +8 -0
  137. package/dist/{design-system176.js.map → design-system193.js.map} +1 -1
  138. package/dist/design-system194.js +11 -5
  139. package/dist/design-system194.js.map +1 -1
  140. package/dist/design-system195.js +453 -24
  141. package/dist/design-system195.js.map +1 -1
  142. package/dist/design-system197.js +5 -4
  143. package/dist/design-system197.js.map +1 -1
  144. package/dist/design-system198.js +20 -16
  145. package/dist/design-system198.js.map +1 -1
  146. package/dist/design-system200.js +1 -1
  147. package/dist/design-system200.js.map +1 -1
  148. package/dist/design-system201.js +70 -314
  149. package/dist/design-system201.js.map +1 -1
  150. package/dist/design-system203.js +1 -1
  151. package/dist/design-system203.js.map +1 -1
  152. package/dist/design-system204.js +24 -89
  153. package/dist/design-system204.js.map +1 -1
  154. package/dist/design-system206.js +1 -1
  155. package/dist/design-system206.js.map +1 -1
  156. package/dist/design-system207.js +26 -17
  157. package/dist/design-system207.js.map +1 -1
  158. package/dist/design-system209.js +5 -3
  159. package/dist/design-system209.js.map +1 -1
  160. package/dist/design-system210.js +22 -408
  161. package/dist/design-system210.js.map +1 -1
  162. package/dist/design-system212.js +1 -1
  163. package/dist/design-system212.js.map +1 -1
  164. package/dist/design-system213.js +24 -52
  165. package/dist/design-system213.js.map +1 -1
  166. package/dist/design-system215.js +1 -1
  167. package/dist/design-system215.js.map +1 -1
  168. package/dist/design-system216.js +329 -85
  169. package/dist/design-system216.js.map +1 -1
  170. package/dist/design-system218.js +5 -108
  171. package/dist/design-system218.js.map +1 -1
  172. package/dist/design-system219.js +103 -0
  173. package/dist/design-system219.js.map +1 -0
  174. package/dist/design-system221.js +5 -106
  175. package/dist/design-system221.js.map +1 -1
  176. package/dist/design-system222.js +22 -0
  177. package/dist/{design-system208.js.map → design-system222.js.map} +1 -1
  178. package/dist/design-system223.js +4 -6
  179. package/dist/design-system223.js.map +1 -1
  180. package/dist/design-system224.js +3 -737
  181. package/dist/design-system224.js.map +1 -1
  182. package/dist/design-system225.js +422 -0
  183. package/dist/design-system225.js.map +1 -0
  184. package/dist/design-system227.js +5 -11
  185. package/dist/design-system227.js.map +1 -1
  186. package/dist/design-system228.js +51 -517
  187. package/dist/design-system228.js.map +1 -1
  188. package/dist/design-system230.js +1 -1
  189. package/dist/design-system230.js.map +1 -1
  190. package/dist/design-system231.js +88 -3
  191. package/dist/design-system231.js.map +1 -1
  192. package/dist/design-system232.js +4 -46
  193. package/dist/design-system232.js.map +1 -1
  194. package/dist/design-system233.js +108 -4
  195. package/dist/design-system233.js.map +1 -1
  196. package/dist/{design-system220.js → design-system235.js} +2 -2
  197. package/dist/{design-system220.js.map → design-system235.js.map} +1 -1
  198. package/dist/design-system236.js +106 -5
  199. package/dist/design-system236.js.map +1 -1
  200. package/dist/design-system238.js +9 -0
  201. package/dist/design-system238.js.map +1 -0
  202. package/dist/design-system239.js +737 -5
  203. package/dist/design-system239.js.map +1 -1
  204. package/dist/{design-system226.js → design-system241.js} +2 -2
  205. package/dist/{design-system226.js.map → design-system241.js.map} +1 -1
  206. package/dist/design-system242.js +3 -5
  207. package/dist/design-system242.js.map +1 -1
  208. package/dist/design-system243.js +42 -50
  209. package/dist/design-system243.js.map +1 -1
  210. package/dist/design-system244.js +1 -1
  211. package/dist/design-system244.js.map +1 -1
  212. package/dist/design-system245.js +254 -141
  213. package/dist/design-system245.js.map +1 -1
  214. package/dist/design-system247.js +1 -1
  215. package/dist/design-system247.js.map +1 -1
  216. package/dist/design-system248.js +119 -7
  217. package/dist/design-system248.js.map +1 -1
  218. package/dist/design-system250.js +8 -0
  219. package/dist/design-system250.js.map +1 -0
  220. package/dist/design-system251.js +172 -5
  221. package/dist/design-system251.js.map +1 -1
  222. package/dist/design-system253.js +8 -0
  223. package/dist/design-system253.js.map +1 -0
  224. package/dist/design-system254.js +11 -6
  225. package/dist/design-system254.js.map +1 -1
  226. package/dist/design-system255.js +525 -9
  227. package/dist/design-system255.js.map +1 -1
  228. package/dist/design-system257.js +8 -0
  229. package/dist/design-system257.js.map +1 -0
  230. package/dist/design-system258.js +112 -6
  231. package/dist/design-system258.js.map +1 -1
  232. package/dist/design-system260.js +5 -374
  233. package/dist/design-system260.js.map +1 -1
  234. package/dist/design-system261.js +57 -0
  235. package/dist/design-system261.js.map +1 -0
  236. package/dist/design-system262.js +4 -6
  237. package/dist/design-system262.js.map +1 -1
  238. package/dist/design-system263.js +173 -0
  239. package/dist/design-system263.js.map +1 -0
  240. package/dist/design-system265.js +8 -0
  241. package/dist/design-system265.js.map +1 -0
  242. package/dist/design-system266.js +10 -0
  243. package/dist/design-system266.js.map +1 -0
  244. package/dist/{design-system249.js → design-system267.js} +2 -2
  245. package/dist/{design-system249.js.map → design-system267.js.map} +1 -1
  246. package/dist/design-system269.js +8 -0
  247. package/dist/design-system269.js.map +1 -0
  248. package/dist/{design-system252.js → design-system270.js} +1 -1
  249. package/dist/{design-system252.js.map → design-system270.js.map} +1 -1
  250. package/dist/design-system272.js +9 -0
  251. package/dist/design-system272.js.map +1 -0
  252. package/dist/design-system273.js +12 -0
  253. package/dist/design-system273.js.map +1 -0
  254. package/dist/{design-system256.js → design-system274.js} +2 -2
  255. package/dist/{design-system256.js.map → design-system274.js.map} +1 -1
  256. package/dist/design-system276.js +9 -0
  257. package/dist/design-system276.js.map +1 -0
  258. package/dist/{design-system259.js → design-system277.js} +1 -1
  259. package/dist/{design-system259.js.map → design-system277.js.map} +1 -1
  260. package/dist/design-system278.js +377 -0
  261. package/dist/design-system278.js.map +1 -0
  262. package/dist/design-system280.js +9 -0
  263. package/dist/design-system280.js.map +1 -0
  264. package/dist/design-system69.js +182 -13
  265. package/dist/design-system69.js.map +1 -1
  266. package/dist/design-system71.js +8 -0
  267. package/dist/design-system71.js.map +1 -0
  268. package/dist/design-system72.js +13 -5
  269. package/dist/design-system72.js.map +1 -1
  270. package/dist/design-system73.js +677 -139
  271. package/dist/design-system73.js.map +1 -1
  272. package/dist/design-system75.js +1 -1
  273. package/dist/design-system75.js.map +1 -1
  274. package/dist/design-system76.js +152 -23
  275. package/dist/design-system76.js.map +1 -1
  276. package/dist/design-system78.js +5 -49
  277. package/dist/design-system78.js.map +1 -1
  278. package/dist/design-system79.js +32 -0
  279. package/dist/design-system79.js.map +1 -0
  280. package/dist/design-system80.js +2 -3
  281. package/dist/design-system80.js.map +1 -1
  282. package/dist/design-system81.js +38 -188
  283. package/dist/design-system81.js.map +1 -1
  284. package/dist/design-system83.js +1 -1
  285. package/dist/design-system83.js.map +1 -1
  286. package/dist/design-system84.js +199 -7
  287. package/dist/design-system84.js.map +1 -1
  288. package/dist/design-system86.js +8 -0
  289. package/dist/design-system86.js.map +1 -0
  290. package/dist/design-system87.js +7 -5
  291. package/dist/design-system87.js.map +1 -1
  292. package/dist/design-system88.js +264 -48
  293. package/dist/design-system88.js.map +1 -1
  294. package/dist/design-system90.js +1 -1
  295. package/dist/design-system90.js.map +1 -1
  296. package/dist/design-system91.js +57 -11
  297. package/dist/design-system91.js.map +1 -1
  298. package/dist/design-system93.js +8 -0
  299. package/dist/design-system93.js.map +1 -0
  300. package/dist/design-system94.js +11 -5
  301. package/dist/design-system94.js.map +1 -1
  302. package/dist/design-system95.js +92 -59
  303. package/dist/design-system95.js.map +1 -1
  304. package/dist/design-system97.js +1 -1
  305. package/dist/design-system97.js.map +1 -1
  306. package/dist/design-system98.js +56 -78
  307. package/dist/design-system98.js.map +1 -1
  308. package/dist/types/components/BContextMenu/BContextMenu.spec.d.ts +1 -0
  309. package/dist/types/components/BContextMenu/BContextMenu.vue.d.ts +42 -0
  310. package/dist/types/components/BContextMenu/index.d.ts +2 -0
  311. package/dist/types/components/BContextMenu/types.d.ts +23 -0
  312. package/dist/types/components/BInputTags/BInputTags.spec.d.ts +1 -0
  313. package/dist/types/components/BInputTags/BInputTags.vue.d.ts +54 -0
  314. package/dist/types/components/BInputTags/index.d.ts +1 -0
  315. package/dist/types/components/BLink/BLink.spec.d.ts +1 -0
  316. package/dist/types/components/BLink/BLink.vue.d.ts +100 -0
  317. package/dist/types/components/BLink/index.d.ts +1 -0
  318. package/dist/types/components/BListbox/BListbox.spec.d.ts +1 -0
  319. package/dist/types/components/BListbox/BListbox.vue.d.ts +52 -0
  320. package/dist/types/components/BListbox/index.d.ts +1 -0
  321. package/dist/types/components/BModal/BModal.spec.d.ts +1 -0
  322. package/dist/types/components/BPinInput/BPinInput.spec.d.ts +1 -0
  323. package/dist/types/components/BPinInput/BPinInput.vue.d.ts +43 -0
  324. package/dist/types/components/BPinInput/index.d.ts +1 -0
  325. package/dist/types/components/BProgress/BProgress.vue.d.ts +47 -2
  326. package/dist/types/components/BTextarea/BTextarea.spec.d.ts +1 -0
  327. package/dist/types/components/BTextarea/BTextarea.vue.d.ts +77 -0
  328. package/dist/types/components/BTextarea/index.d.ts +1 -0
  329. package/dist/types/components/index.d.ts +7 -1
  330. package/package.json +1 -1
  331. package/dist/design-system114.js +0 -212
  332. package/dist/design-system114.js.map +0 -1
  333. package/dist/design-system124.js +0 -277
  334. package/dist/design-system127.js +0 -19
  335. package/dist/design-system130.js +0 -15
  336. package/dist/design-system130.js.map +0 -1
  337. package/dist/design-system133.js +0 -8
  338. package/dist/design-system133.js.map +0 -1
  339. package/dist/design-system137.js +0 -236
  340. package/dist/design-system137.js.map +0 -1
  341. package/dist/design-system147.js +0 -40
  342. package/dist/design-system147.js.map +0 -1
  343. package/dist/design-system150.js +0 -7
  344. package/dist/design-system164.js +0 -61
  345. package/dist/design-system164.js.map +0 -1
  346. package/dist/design-system167.js +0 -59
  347. package/dist/design-system170.js +0 -72
  348. package/dist/design-system173.js +0 -185
  349. package/dist/design-system173.js.map +0 -1
  350. package/dist/design-system176.js +0 -118
  351. package/dist/design-system180.js +0 -465
  352. package/dist/design-system180.js.map +0 -1
  353. package/dist/design-system183.js +0 -38
  354. package/dist/design-system183.js.map +0 -1
  355. package/dist/design-system186.js +0 -91
  356. package/dist/design-system186.js.map +0 -1
  357. package/dist/design-system189.js +0 -38
  358. package/dist/design-system189.js.map +0 -1
  359. package/dist/design-system192.js +0 -31
  360. package/dist/design-system192.js.map +0 -1
  361. package/dist/design-system208.js +0 -7
  362. package/dist/design-system217.js +0 -7
  363. package/dist/design-system217.js.map +0 -1
  364. package/dist/design-system234.js +0 -286
  365. package/dist/design-system234.js.map +0 -1
  366. package/dist/design-system237.js +0 -122
  367. package/dist/design-system237.js.map +0 -1
  368. package/dist/design-system240.js +0 -115
  369. package/dist/design-system240.js.map +0 -1
  370. package/dist/design-system70.js +0 -699
  371. package/dist/design-system70.js.map +0 -1
  372. package/dist/design-system77.js +0 -7
  373. package/dist/design-system77.js.map +0 -1
  374. package/dist/design-system85.js +0 -276
  375. package/dist/design-system85.js.map +0 -1
  376. package/dist/design-system92.js +0 -102
  377. package/dist/design-system92.js.map +0 -1
@@ -1,10 +1,510 @@
1
- //#region src/components/BInput/types.ts
2
- var e = /* @__PURE__ */ function(e) {
3
- return e.Outlined = "outlined", e.Filled = "filled", e.Borderless = "borderless", e.Underlined = "underlined", e;
4
- }({}), t = /* @__PURE__ */ function(e) {
5
- return e.Error = "error", e.Warning = "warning", e;
6
- }({});
1
+ import { Teleport as e, Transition as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as ee, createVNode as s, defineComponent as c, nextTick as l, normalizeClass as u, normalizeStyle as d, onBeforeUnmount as te, openBlock as f, ref as p, renderSlot as m, toDisplayString as h, vShow as g, watch as _, withCtx as ne, withDirectives as re, withModifiers as ie } from "vue";
2
+ //#region src/components/BImage/BImage.vue?vue&type=script&setup=true&lang.ts
3
+ var ae = ["src", "alt"], oe = {
4
+ key: 1,
5
+ class: "b-image__placeholder",
6
+ "aria-hidden": "true"
7
+ }, v = [
8
+ "src",
9
+ "alt",
10
+ "width",
11
+ "height",
12
+ "loading",
13
+ "crossorigin",
14
+ "decoding",
15
+ "referrerpolicy"
16
+ ], se = ["aria-label"], ce = ["aria-label"], le = ["aria-label"], ue = { class: "b-image-preview__body" }, y = ["src", "alt"], b = ["aria-pressed"], x = ["aria-pressed"], S = ["disabled"], C = {
17
+ class: "b-image-preview__scale",
18
+ "aria-live": "polite",
19
+ "aria-atomic": "true"
20
+ }, de = ["disabled"], w = /* @__PURE__ */ c({
21
+ __name: "BImage",
22
+ props: {
23
+ src: { default: void 0 },
24
+ alt: { default: "" },
25
+ width: { default: void 0 },
26
+ height: { default: void 0 },
27
+ fallback: { default: void 0 },
28
+ placeholder: {
29
+ type: Boolean,
30
+ default: !1
31
+ },
32
+ placeholderSrc: { default: void 0 },
33
+ preview: {
34
+ type: Boolean,
35
+ default: !0
36
+ },
37
+ mask: {
38
+ type: Boolean,
39
+ default: !0
40
+ },
41
+ previewSrc: { default: void 0 },
42
+ previewVisible: {
43
+ type: Boolean,
44
+ default: void 0
45
+ },
46
+ scaleStep: { default: .5 },
47
+ minScale: { default: 1 },
48
+ maxScale: { default: 50 },
49
+ movable: {
50
+ type: Boolean,
51
+ default: !0
52
+ },
53
+ loading: { default: void 0 },
54
+ crossOrigin: { default: void 0 },
55
+ decoding: { default: void 0 },
56
+ referrerPolicy: { default: void 0 }
57
+ },
58
+ emits: [
59
+ "error",
60
+ "update:previewVisible",
61
+ "transform"
62
+ ],
63
+ setup(c, { emit: w }) {
64
+ let T = c, E = w, D = p("loading"), O = p(!1);
65
+ function fe() {
66
+ D.value = "loaded";
67
+ }
68
+ function pe(e) {
69
+ T.fallback && !O.value ? (O.value = !0, D.value = "loading") : D.value = "error", E("error", e);
70
+ }
71
+ let me = n(() => O.value && T.fallback ? T.fallback : T.src);
72
+ _(() => T.src, () => {
73
+ D.value = "loading", O.value = !1;
74
+ });
75
+ let k = n(() => T.placeholderSrc && D.value === "loading"), A = n(() => {
76
+ let e = {};
77
+ return T.width != null && (e.width = typeof T.width == "number" ? `${T.width}px` : T.width), T.height != null && (e.height = typeof T.height == "number" ? `${T.height}px` : T.height), e;
78
+ }), j = n(() => T.preview && T.mask && D.value === "loaded"), M = p(!1), N = n(() => T.previewVisible !== void 0), P = n(() => N.value ? T.previewVisible : M.value);
79
+ function F() {
80
+ T.preview && (N.value ? E("update:previewVisible", !0) : M.value = !0, l(() => {
81
+ De();
82
+ }));
83
+ }
84
+ function I() {
85
+ N.value ? E("update:previewVisible", !1) : M.value = !1, l(() => {
86
+ Z.value?.focus();
87
+ });
88
+ }
89
+ let L = p(1), R = p(0), z = p(!1), B = p(!1), V = p(0), H = p(0);
90
+ function he() {
91
+ return {
92
+ scale: L.value,
93
+ rotate: R.value,
94
+ flipX: z.value,
95
+ flipY: B.value,
96
+ x: V.value,
97
+ y: H.value
98
+ };
99
+ }
100
+ function U(e) {
101
+ E("transform", {
102
+ transform: he(),
103
+ action: e
104
+ });
105
+ }
106
+ function W() {
107
+ L.value = 1, R.value = 0, z.value = !1, B.value = !1, V.value = 0, H.value = 0;
108
+ }
109
+ function ge() {
110
+ W(), U("reset");
111
+ }
112
+ function _e() {
113
+ let e = L.value + T.scaleStep;
114
+ L.value = Math.min(e, T.maxScale), U("zoomIn");
115
+ }
116
+ function ve() {
117
+ let e = L.value - T.scaleStep;
118
+ L.value = Math.max(e, T.minScale), U("zoomOut");
119
+ }
120
+ function ye() {
121
+ R.value -= 90, U("rotateLeft");
122
+ }
123
+ function be() {
124
+ R.value += 90, U("rotateRight");
125
+ }
126
+ function xe() {
127
+ z.value = !z.value, U("flipX");
128
+ }
129
+ function Se() {
130
+ B.value = !B.value, U("flipY");
131
+ }
132
+ let Ce = n(() => {
133
+ let e = [];
134
+ return e.push(`translate(${V.value}px, ${H.value}px)`), e.push(`scale(${z.value ? -1 : 1}, ${B.value ? -1 : 1})`), e.push(`scale(${L.value})`), e.push(`rotate(${R.value}deg)`), e.join(" ");
135
+ });
136
+ _(P, (e) => {
137
+ e && W();
138
+ });
139
+ let we = n(() => T.previewSrc || T.src), G = p(!1), K = p(0), q = p(0), J = p(0), Y = p(0);
140
+ function Te(e) {
141
+ if (!T.movable) return;
142
+ let t = e.target;
143
+ t.closest(".b-image-preview__toolbar") || t.closest(".b-image-preview__close") || (G.value = !0, K.value = e.clientX, q.value = e.clientY, J.value = V.value, Y.value = H.value, e.currentTarget?.setPointerCapture(e.pointerId), U("dragStart"));
144
+ }
145
+ function Ee(e) {
146
+ if (!G.value) return;
147
+ let t = e.clientX - K.value, n = e.clientY - q.value;
148
+ V.value = J.value + t, H.value = Y.value + n;
149
+ }
150
+ function X() {
151
+ G.value && (G.value = !1, U("dragEnd"));
152
+ }
153
+ let Z = p(null), Q = p(null);
154
+ function De() {
155
+ l(() => {
156
+ if (!Q.value) return;
157
+ let e = Q.value.querySelectorAll("button, [tabindex]:not([tabindex=\"-1\"])");
158
+ e.length > 0 && e[0].focus();
159
+ });
160
+ }
161
+ function Oe(e) {
162
+ if (e.key === "Escape") {
163
+ e.stopPropagation(), I();
164
+ return;
165
+ }
166
+ if (e.key === "Tab" && Q.value) {
167
+ let t = Array.from(Q.value.querySelectorAll("button, [tabindex]:not([tabindex=\"-1\"])"));
168
+ if (t.length === 0) return;
169
+ let n = t[0], r = t[t.length - 1];
170
+ e.shiftKey && document.activeElement === n ? (e.preventDefault(), r.focus()) : !e.shiftKey && document.activeElement === r && (e.preventDefault(), n.focus());
171
+ }
172
+ }
173
+ function $(e) {
174
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), F());
175
+ }
176
+ _(P, (e) => {
177
+ typeof document > "u" || (e ? document.body.style.overflow = "hidden" : document.body.style.overflow = "");
178
+ }), te(() => {
179
+ typeof document < "u" && (document.body.style.overflow = "");
180
+ });
181
+ function ke(e) {
182
+ if (e.preventDefault(), e.deltaY < 0) {
183
+ let e = L.value + T.scaleStep;
184
+ L.value = Math.min(e, T.maxScale);
185
+ } else {
186
+ let e = L.value - T.scaleStep;
187
+ L.value = Math.max(e, T.minScale);
188
+ }
189
+ U("wheel");
190
+ }
191
+ function Ae(e) {
192
+ let t = e.target;
193
+ if (t.tagName !== "BUTTON") return;
194
+ let n = t.closest(".b-image-preview__toolbar");
195
+ if (!n) return;
196
+ let r = Array.from(n.querySelectorAll("button:not(:disabled)")), i = r.indexOf(t), a = -1;
197
+ e.key === "ArrowRight" || e.key === "ArrowDown" ? (e.preventDefault(), a = (i + 1) % r.length) : e.key === "ArrowLeft" || e.key === "ArrowUp" ? (e.preventDefault(), a = (i - 1 + r.length) % r.length) : e.key === "Home" ? (e.preventDefault(), a = 0) : e.key === "End" && (e.preventDefault(), a = r.length - 1), a >= 0 && r[a].focus();
198
+ }
199
+ return (n, l) => (f(), a("div", {
200
+ class: u(["b-image", {
201
+ "b-image--error": D.value === "error" && !c.fallback,
202
+ "b-image--preview": c.preview
203
+ }]),
204
+ style: d(A.value)
205
+ }, [
206
+ k.value ? (f(), a("img", {
207
+ key: 0,
208
+ class: "b-image__progressive-placeholder",
209
+ src: c.placeholderSrc,
210
+ alt: c.alt,
211
+ "aria-hidden": "true"
212
+ }, null, 8, ae)) : i("", !0),
213
+ (c.placeholder || n.$slots.placeholder) && D.value === "loading" && !c.placeholderSrc ? (f(), a("div", oe, [m(n.$slots, "placeholder", {}, () => [l[0] ||= o("div", { class: "b-image__placeholder-shimmer" }, null, -1)])])) : i("", !0),
214
+ re(o("img", {
215
+ class: "b-image__img",
216
+ src: me.value,
217
+ alt: c.alt,
218
+ width: typeof c.width == "number" ? c.width : void 0,
219
+ height: typeof c.height == "number" ? c.height : void 0,
220
+ loading: c.loading,
221
+ crossorigin: c.crossOrigin,
222
+ decoding: c.decoding,
223
+ referrerpolicy: c.referrerPolicy,
224
+ onLoad: fe,
225
+ onError: pe
226
+ }, null, 40, v), [[g, D.value !== "loading" || !c.placeholder && !n.$slots.placeholder && !c.placeholderSrc]]),
227
+ j.value ? (f(), a("div", {
228
+ key: 2,
229
+ ref_key: "triggerRef",
230
+ ref: Z,
231
+ class: "b-image__mask",
232
+ role: "button",
233
+ tabindex: "0",
234
+ "aria-label": `Preview image${c.alt ? ": " + c.alt : ""}`,
235
+ onClick: F,
236
+ onKeydown: $
237
+ }, [m(n.$slots, "preview-mask", {}, () => [l[1] ||= o("span", {
238
+ class: "b-image__mask-text",
239
+ "aria-hidden": "true"
240
+ }, [o("svg", {
241
+ class: "b-image__mask-icon",
242
+ viewBox: "0 0 24 24",
243
+ fill: "none",
244
+ stroke: "currentColor",
245
+ "stroke-width": "2",
246
+ "stroke-linecap": "round",
247
+ "stroke-linejoin": "round",
248
+ "aria-hidden": "true",
249
+ focusable: "false"
250
+ }, [o("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }), o("circle", {
251
+ cx: "12",
252
+ cy: "12",
253
+ r: "3"
254
+ })]), ee(" Preview ")], -1)])], 40, se)) : c.preview && !c.mask && D.value === "loaded" ? (f(), a("div", {
255
+ key: 3,
256
+ ref_key: "triggerRef",
257
+ ref: Z,
258
+ class: "b-image__click-target",
259
+ role: "button",
260
+ tabindex: "0",
261
+ "aria-label": `Preview image${c.alt ? ": " + c.alt : ""}`,
262
+ onClick: F,
263
+ onKeydown: $
264
+ }, null, 40, ce)) : i("", !0),
265
+ (f(), r(e, { to: "body" }, [s(t, { name: "b-image-preview" }, {
266
+ default: ne(() => [P.value ? (f(), a("div", {
267
+ key: 0,
268
+ ref_key: "overlayRef",
269
+ ref: Q,
270
+ class: u(["b-image-preview", { "b-image-preview--dragging": G.value }]),
271
+ role: "dialog",
272
+ "aria-modal": "true",
273
+ "aria-label": `Image preview${c.alt ? ": " + c.alt : ""}`,
274
+ onKeydown: Oe,
275
+ onWheel: ie(ke, ["prevent"]),
276
+ onPointerdown: Te,
277
+ onPointermove: Ee,
278
+ onPointerup: X,
279
+ onPointercancel: X
280
+ }, [
281
+ o("div", {
282
+ class: "b-image-preview__backdrop",
283
+ onClick: I
284
+ }),
285
+ o("button", {
286
+ class: "b-image-preview__close",
287
+ type: "button",
288
+ "aria-label": "Close preview",
289
+ onClick: I
290
+ }, [...l[2] ||= [o("svg", {
291
+ viewBox: "0 0 24 24",
292
+ fill: "none",
293
+ stroke: "currentColor",
294
+ "stroke-width": "2",
295
+ "stroke-linecap": "round",
296
+ "stroke-linejoin": "round",
297
+ "aria-hidden": "true",
298
+ focusable: "false"
299
+ }, [o("line", {
300
+ x1: "18",
301
+ y1: "6",
302
+ x2: "6",
303
+ y2: "18"
304
+ }), o("line", {
305
+ x1: "6",
306
+ y1: "6",
307
+ x2: "18",
308
+ y2: "18"
309
+ })], -1)]]),
310
+ o("div", ue, [o("img", {
311
+ class: "b-image-preview__img",
312
+ src: we.value,
313
+ alt: c.alt,
314
+ style: d({ transform: Ce.value }),
315
+ draggable: "false"
316
+ }, null, 12, y)]),
317
+ o("div", {
318
+ class: "b-image-preview__toolbar",
319
+ role: "toolbar",
320
+ "aria-label": "Image preview controls",
321
+ onKeydown: Ae
322
+ }, [
323
+ o("button", {
324
+ type: "button",
325
+ "aria-label": "Flip horizontal",
326
+ "aria-pressed": z.value,
327
+ onClick: xe
328
+ }, [...l[3] ||= [o("svg", {
329
+ viewBox: "0 0 24 24",
330
+ fill: "none",
331
+ stroke: "currentColor",
332
+ "stroke-width": "2",
333
+ "aria-hidden": "true",
334
+ focusable: "false"
335
+ }, [
336
+ o("path", { d: "M8 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h3" }),
337
+ o("path", { d: "M16 3h3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-3" }),
338
+ o("line", {
339
+ x1: "12",
340
+ y1: "1",
341
+ x2: "12",
342
+ y2: "23",
343
+ "stroke-dasharray": "2 2"
344
+ })
345
+ ], -1)]], 8, b),
346
+ o("button", {
347
+ type: "button",
348
+ "aria-label": "Flip vertical",
349
+ "aria-pressed": B.value,
350
+ onClick: Se
351
+ }, [...l[4] ||= [o("svg", {
352
+ viewBox: "0 0 24 24",
353
+ fill: "none",
354
+ stroke: "currentColor",
355
+ "stroke-width": "2",
356
+ "aria-hidden": "true",
357
+ focusable: "false"
358
+ }, [
359
+ o("path", { d: "M3 8V5a2 2 0 0 1 2-2h14c1.1 0 2 .9 2 2v3" }),
360
+ o("path", { d: "M3 16v3a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-3" }),
361
+ o("line", {
362
+ x1: "1",
363
+ y1: "12",
364
+ x2: "23",
365
+ y2: "12",
366
+ "stroke-dasharray": "2 2"
367
+ })
368
+ ], -1)]], 8, x),
369
+ o("button", {
370
+ type: "button",
371
+ "aria-label": "Rotate left",
372
+ onClick: ye
373
+ }, [...l[5] ||= [o("svg", {
374
+ viewBox: "0 0 24 24",
375
+ fill: "none",
376
+ stroke: "currentColor",
377
+ "stroke-width": "2",
378
+ "stroke-linecap": "round",
379
+ "stroke-linejoin": "round",
380
+ "aria-hidden": "true",
381
+ focusable: "false"
382
+ }, [o("polyline", { points: "1 4 1 10 7 10" }), o("path", { d: "M3.51 15a9 9 0 1 0 2.13-9.36L1 10" })], -1)]]),
383
+ o("button", {
384
+ type: "button",
385
+ "aria-label": "Rotate right",
386
+ onClick: be
387
+ }, [...l[6] ||= [o("svg", {
388
+ viewBox: "0 0 24 24",
389
+ fill: "none",
390
+ stroke: "currentColor",
391
+ "stroke-width": "2",
392
+ "stroke-linecap": "round",
393
+ "stroke-linejoin": "round",
394
+ "aria-hidden": "true",
395
+ focusable: "false"
396
+ }, [o("polyline", { points: "23 4 23 10 17 10" }), o("path", { d: "M20.49 15a9 9 0 1 1-2.13-9.36L23 10" })], -1)]]),
397
+ o("button", {
398
+ type: "button",
399
+ "aria-label": "Zoom out",
400
+ disabled: L.value <= c.minScale,
401
+ onClick: ve
402
+ }, [...l[7] ||= [o("svg", {
403
+ viewBox: "0 0 24 24",
404
+ fill: "none",
405
+ stroke: "currentColor",
406
+ "stroke-width": "2",
407
+ "stroke-linecap": "round",
408
+ "stroke-linejoin": "round",
409
+ "aria-hidden": "true",
410
+ focusable: "false"
411
+ }, [
412
+ o("circle", {
413
+ cx: "11",
414
+ cy: "11",
415
+ r: "8"
416
+ }),
417
+ o("line", {
418
+ x1: "21",
419
+ y1: "21",
420
+ x2: "16.65",
421
+ y2: "16.65"
422
+ }),
423
+ o("line", {
424
+ x1: "8",
425
+ y1: "11",
426
+ x2: "14",
427
+ y2: "11"
428
+ })
429
+ ], -1)]], 8, S),
430
+ o("span", C, h(Math.round(L.value * 100)) + "% ", 1),
431
+ o("button", {
432
+ type: "button",
433
+ "aria-label": "Zoom in",
434
+ disabled: L.value >= c.maxScale,
435
+ onClick: _e
436
+ }, [...l[8] ||= [o("svg", {
437
+ viewBox: "0 0 24 24",
438
+ fill: "none",
439
+ stroke: "currentColor",
440
+ "stroke-width": "2",
441
+ "stroke-linecap": "round",
442
+ "stroke-linejoin": "round",
443
+ "aria-hidden": "true",
444
+ focusable: "false"
445
+ }, [
446
+ o("circle", {
447
+ cx: "11",
448
+ cy: "11",
449
+ r: "8"
450
+ }),
451
+ o("line", {
452
+ x1: "21",
453
+ y1: "21",
454
+ x2: "16.65",
455
+ y2: "16.65"
456
+ }),
457
+ o("line", {
458
+ x1: "11",
459
+ y1: "8",
460
+ x2: "11",
461
+ y2: "14"
462
+ }),
463
+ o("line", {
464
+ x1: "8",
465
+ y1: "11",
466
+ x2: "14",
467
+ y2: "11"
468
+ })
469
+ ], -1)]], 8, de),
470
+ o("button", {
471
+ type: "button",
472
+ "aria-label": "Reset to original size",
473
+ onClick: ge
474
+ }, [...l[9] ||= [o("svg", {
475
+ viewBox: "0 0 24 24",
476
+ fill: "none",
477
+ stroke: "currentColor",
478
+ "stroke-width": "2",
479
+ "stroke-linecap": "round",
480
+ "stroke-linejoin": "round",
481
+ "aria-hidden": "true",
482
+ focusable: "false"
483
+ }, [o("rect", {
484
+ x: "3",
485
+ y: "3",
486
+ width: "18",
487
+ height: "18",
488
+ rx: "2",
489
+ ry: "2"
490
+ }), o("text", {
491
+ x: "12",
492
+ y: "16",
493
+ "text-anchor": "middle",
494
+ fill: "currentColor",
495
+ stroke: "none",
496
+ "font-size": "10",
497
+ "font-weight": "600",
498
+ "font-family": "system-ui"
499
+ }, " 1:1 ")], -1)]])
500
+ ], 32)
501
+ ], 42, le)) : i("", !0)]),
502
+ _: 1
503
+ })]))
504
+ ], 6));
505
+ }
506
+ });
7
507
  //#endregion
8
- export { t as BInputStatus, e as BInputVariant };
508
+ export { w as default };
9
509
 
10
510
  //# sourceMappingURL=design-system113.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"design-system113.js","names":[],"sources":["../src/components/BInput/types.ts"],"sourcesContent":["export enum BInputVariant {\n Outlined = 'outlined',\n Filled = 'filled',\n Borderless = 'borderless',\n Underlined = 'underlined',\n}\n\nexport enum BInputStatus {\n Error = 'error',\n Warning = 'warning',\n}\n\nexport interface BInputCountConfig {\n /** Custom character count strategy (e.g., for emoji or CJK). */\n strategy?: (value: string) => number;\n /** Maximum count to display. Triggers exceedFormatter when exceeded. */\n max?: number;\n /** Formatter when count exceeds max. */\n exceedFormatter?: (value: string, config: { max: number }) => string;\n /** Whether to show the count indicator. */\n show?: boolean | ((args: { value: string; count: number; maxLength?: number }) => string);\n}\n\nexport interface BInputFocusOptions {\n preventScroll?: boolean;\n cursor?: 'start' | 'end' | 'all';\n}\n"],"mappings":";AAAA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,WAAA,YACA,EAAA,SAAA,UACA,EAAA,aAAA,cACA,EAAA,aAAA;KACD,EAEW,IAAL,yBAAA,GAAA;QACL,EAAA,QAAA,SACA,EAAA,UAAA;KACD"}
1
+ {"version":3,"file":"design-system113.js","names":["$slots"],"sources":["../src/components/BImage/BImage.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue';\n\n// ─────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────\nexport type BImageTransformAction =\n | 'flipX'\n | 'flipY'\n | 'rotateLeft'\n | 'rotateRight'\n | 'zoomIn'\n | 'zoomOut'\n | 'reset'\n | 'wheel'\n | 'dragStart'\n | 'dragEnd';\n\nexport interface BImageTransform {\n scale: number;\n rotate: number;\n flipX: boolean;\n flipY: boolean;\n x: number;\n y: number;\n}\n\n// ─────────────────────────────────────────────\n// Props\n// ─────────────────────────────────────────────\nconst props = withDefaults(\n defineProps<{\n /** Image source URL. */\n src?: string;\n /** Alt text for the image. */\n alt?: string;\n /** Image width (px or CSS value). */\n width?: string | number;\n /** Image height (px or CSS value). */\n height?: string | number;\n /** Fallback source when loading fails. */\n fallback?: string;\n /**\n * Show loading placeholder. Set to `true` for built-in shimmer,\n * or use the `placeholder` slot for custom content.\n */\n placeholder?: boolean;\n /**\n * Low-resolution source for progressive loading.\n * Shown blurred while the full image loads.\n */\n placeholderSrc?: string;\n /** Enable image preview on click. */\n preview?: boolean;\n /** Show the hover mask overlay over the image. Set `false` to hide the mask entirely while keeping preview on click. */\n mask?: boolean;\n /** Custom source for preview (defaults to `src`). */\n previewSrc?: string;\n /** Controlled preview visibility (v-model:previewVisible). */\n previewVisible?: boolean;\n /** Zoom scale step for preview controls. */\n scaleStep?: number;\n /** Min zoom scale. */\n minScale?: number;\n /** Max zoom scale. */\n maxScale?: number;\n /** Allow dragging/panning the image inside the preview. */\n movable?: boolean;\n /** Native `loading` attribute - `'lazy'` for below-the-fold images. */\n loading?: 'lazy' | 'eager';\n /** CORS setting for the image. */\n crossOrigin?: '' | 'anonymous' | 'use-credentials';\n /** Decoding hint for the browser. */\n decoding?: 'async' | 'auto' | 'sync';\n /** Referrer policy for the image request. */\n referrerPolicy?:\n | ''\n | 'no-referrer'\n | 'no-referrer-when-downgrade'\n | 'origin'\n | 'origin-when-cross-origin'\n | 'same-origin'\n | 'strict-origin'\n | 'strict-origin-when-cross-origin'\n | 'unsafe-url';\n }>(),\n {\n src: undefined,\n alt: '',\n width: undefined,\n height: undefined,\n fallback: undefined,\n placeholder: false,\n placeholderSrc: undefined,\n preview: true,\n mask: true,\n previewSrc: undefined,\n previewVisible: undefined,\n scaleStep: 0.5,\n minScale: 1,\n maxScale: 50,\n movable: true,\n loading: undefined,\n crossOrigin: undefined,\n decoding: undefined,\n referrerPolicy: undefined,\n },\n);\n\n// ─────────────────────────────────────────────\n// Emits\n// ─────────────────────────────────────────────\nconst emit = defineEmits<{\n /** Fires when the <img> fails to load. */\n (e: 'error', event: Event): void;\n /** Fires when controlled preview visibility changes. */\n (e: 'update:previewVisible', visible: boolean): void;\n /** Fires on every preview transform change (zoom, rotate, flip, drag). */\n (e: 'transform', payload: { transform: BImageTransform; action: BImageTransformAction }): void;\n}>();\n\n// ─────────────────────────────────────────────\n// Slots\n// ─────────────────────────────────────────────\ndefineSlots<{\n /** Custom loading placeholder content. */\n placeholder?(): unknown;\n /** Custom preview mask overlay. */\n 'preview-mask'?(): unknown;\n}>();\n\n// ─────────────────────────────────────────────\n// Image loading state\n// ─────────────────────────────────────────────\nconst loadStatus = ref<'loading' | 'loaded' | 'error'>('loading');\nconst useFallback = ref(false);\n\nfunction handleLoad() {\n loadStatus.value = 'loaded';\n}\n\nfunction handleError(event: Event) {\n if (props.fallback && !useFallback.value) {\n useFallback.value = true;\n loadStatus.value = 'loading';\n } else {\n loadStatus.value = 'error';\n }\n emit('error', event);\n}\n\nconst displaySrc = computed(() => {\n if (useFallback.value && props.fallback) return props.fallback;\n return props.src;\n});\n\n// Reset state when src changes\nwatch(\n () => props.src,\n () => {\n loadStatus.value = 'loading';\n useFallback.value = false;\n },\n);\n\n// ─────────────────────────────────────────────\n// Progressive loading (low-res blurry placeholder)\n// ─────────────────────────────────────────────\nconst showProgressivePlaceholder = computed(\n () => props.placeholderSrc && loadStatus.value === 'loading',\n);\n\n// ─────────────────────────────────────────────\n// Dimension helpers\n// ─────────────────────────────────────────────\nconst dimensionStyle = computed(() => {\n const s: Record<string, string> = {};\n if (props.width != null) {\n s.width = typeof props.width === 'number' ? `${props.width}px` : props.width;\n }\n if (props.height != null) {\n s.height = typeof props.height === 'number' ? `${props.height}px` : props.height;\n }\n return s;\n});\n\n// ─────────────────────────────────────────────\n// Show mask logic\n// ─────────────────────────────────────────────\nconst showMask = computed(() => props.preview && props.mask && loadStatus.value === 'loaded');\n\n// ─────────────────────────────────────────────\n// Preview overlay\n// ─────────────────────────────────────────────\nconst internalPreviewOpen = ref(false);\nconst isControlled = computed(() => props.previewVisible !== undefined);\n\nconst previewOpen = computed(() =>\n isControlled.value ? props.previewVisible : internalPreviewOpen.value,\n);\n\nfunction openPreview() {\n if (!props.preview) return;\n if (isControlled.value) {\n emit('update:previewVisible', true);\n } else {\n internalPreviewOpen.value = true;\n }\n nextTick(() => {\n trapFocusInPreview();\n });\n}\n\nfunction closePreview() {\n if (isControlled.value) {\n emit('update:previewVisible', false);\n } else {\n internalPreviewOpen.value = false;\n }\n // Return focus to trigger\n nextTick(() => {\n triggerRef.value?.focus();\n });\n}\n\n// ─────────────────────────────────────────────\n// Preview transform state\n// ─────────────────────────────────────────────\nconst scale = ref(1);\nconst rotate = ref(0);\nconst flipX = ref(false);\nconst flipY = ref(false);\nconst dragX = ref(0);\nconst dragY = ref(0);\n\nfunction currentTransform(): BImageTransform {\n return {\n scale: scale.value,\n rotate: rotate.value,\n flipX: flipX.value,\n flipY: flipY.value,\n x: dragX.value,\n y: dragY.value,\n };\n}\n\nfunction emitTransform(action: BImageTransformAction) {\n emit('transform', { transform: currentTransform(), action });\n}\n\nfunction resetTransform() {\n scale.value = 1;\n rotate.value = 0;\n flipX.value = false;\n flipY.value = false;\n dragX.value = 0;\n dragY.value = 0;\n}\n\nfunction doResetTransform() {\n resetTransform();\n emitTransform('reset');\n}\n\nfunction zoomIn() {\n const next = scale.value + props.scaleStep;\n scale.value = Math.min(next, props.maxScale);\n emitTransform('zoomIn');\n}\n\nfunction zoomOut() {\n const next = scale.value - props.scaleStep;\n scale.value = Math.max(next, props.minScale);\n emitTransform('zoomOut');\n}\n\nfunction rotateLeft() {\n rotate.value -= 90;\n emitTransform('rotateLeft');\n}\n\nfunction rotateRight() {\n rotate.value += 90;\n emitTransform('rotateRight');\n}\n\nfunction toggleFlipX() {\n flipX.value = !flipX.value;\n emitTransform('flipX');\n}\n\nfunction toggleFlipY() {\n flipY.value = !flipY.value;\n emitTransform('flipY');\n}\n\nconst previewTransform = computed(() => {\n const parts: string[] = [];\n parts.push(`translate(${dragX.value}px, ${dragY.value}px)`);\n parts.push(`scale(${flipX.value ? -1 : 1}, ${flipY.value ? -1 : 1})`);\n parts.push(`scale(${scale.value})`);\n parts.push(`rotate(${rotate.value}deg)`);\n return parts.join(' ');\n});\n\n// Reset transform when preview is opened\nwatch(previewOpen, (open) => {\n if (open) {\n resetTransform();\n }\n});\n\nconst previewImageSrc = computed(() => props.previewSrc || props.src);\n\n// ─────────────────────────────────────────────\n// Drag-to-pan (movable)\n// ─────────────────────────────────────────────\nconst isDragging = ref(false);\nconst dragStartX = ref(0);\nconst dragStartY = ref(0);\nconst dragStartTranslateX = ref(0);\nconst dragStartTranslateY = ref(0);\n\nfunction handlePreviewPointerDown(event: PointerEvent) {\n if (!props.movable) return;\n // Only initiate drag on the image body (not toolbar/close)\n const target = event.target as HTMLElement;\n if (target.closest('.b-image-preview__toolbar') || target.closest('.b-image-preview__close')) {\n return;\n }\n\n isDragging.value = true;\n dragStartX.value = event.clientX;\n dragStartY.value = event.clientY;\n dragStartTranslateX.value = dragX.value;\n dragStartTranslateY.value = dragY.value;\n\n (event.currentTarget as HTMLElement)?.setPointerCapture(event.pointerId);\n emitTransform('dragStart');\n}\n\nfunction handlePreviewPointerMove(event: PointerEvent) {\n if (!isDragging.value) return;\n const dx = event.clientX - dragStartX.value;\n const dy = event.clientY - dragStartY.value;\n dragX.value = dragStartTranslateX.value + dx;\n dragY.value = dragStartTranslateY.value + dy;\n}\n\nfunction handlePreviewPointerUp() {\n if (!isDragging.value) return;\n isDragging.value = false;\n emitTransform('dragEnd');\n}\n\n// ─────────────────────────────────────────────\n// Focus management\n// ─────────────────────────────────────────────\nconst triggerRef = ref<HTMLElement | null>(null);\nconst overlayRef = ref<HTMLElement | null>(null);\n\nfunction trapFocusInPreview() {\n nextTick(() => {\n if (!overlayRef.value) return;\n const focusable = overlayRef.value.querySelectorAll<HTMLElement>(\n 'button, [tabindex]:not([tabindex=\"-1\"])',\n );\n if (focusable.length > 0) {\n focusable[0].focus();\n }\n });\n}\n\nfunction handleOverlayKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n event.stopPropagation();\n closePreview();\n return;\n }\n\n if (event.key === 'Tab' && overlayRef.value) {\n const focusable = Array.from(\n overlayRef.value.querySelectorAll<HTMLElement>('button, [tabindex]:not([tabindex=\"-1\"])'),\n );\n if (focusable.length === 0) return;\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n if (event.shiftKey && document.activeElement === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && document.activeElement === last) {\n event.preventDefault();\n first.focus();\n }\n }\n}\n\nfunction handleTriggerKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n openPreview();\n }\n}\n\n// ─────────────────────────────────────────────\n// Body scroll lock\n// ─────────────────────────────────────────────\nwatch(previewOpen, (open) => {\n if (typeof document === 'undefined') return;\n if (open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n});\n\nonBeforeUnmount(() => {\n if (typeof document !== 'undefined') {\n document.body.style.overflow = '';\n }\n});\n\n// ─────────────────────────────────────────────\n// Zoom with mouse wheel in preview\n// ─────────────────────────────────────────────\nfunction handlePreviewWheel(event: WheelEvent) {\n event.preventDefault();\n if (event.deltaY < 0) {\n const next = scale.value + props.scaleStep;\n scale.value = Math.min(next, props.maxScale);\n } else {\n const next = scale.value - props.scaleStep;\n scale.value = Math.max(next, props.minScale);\n }\n emitTransform('wheel');\n}\n\n// ─────────────────────────────────────────────\n// Toolbar keyboard support\n// ─────────────────────────────────────────────\nfunction handleToolbarKeydown(event: KeyboardEvent) {\n const target = event.target as HTMLElement;\n if (target.tagName !== 'BUTTON') return;\n\n const toolbar = target.closest('.b-image-preview__toolbar');\n if (!toolbar) return;\n const buttons = Array.from(toolbar.querySelectorAll<HTMLElement>('button:not(:disabled)'));\n const index = buttons.indexOf(target);\n\n let nextIndex = -1;\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n event.preventDefault();\n nextIndex = (index + 1) % buttons.length;\n } else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') {\n event.preventDefault();\n nextIndex = (index - 1 + buttons.length) % buttons.length;\n } else if (event.key === 'Home') {\n event.preventDefault();\n nextIndex = 0;\n } else if (event.key === 'End') {\n event.preventDefault();\n nextIndex = buttons.length - 1;\n }\n\n if (nextIndex >= 0) {\n buttons[nextIndex].focus();\n }\n}\n</script>\n\n<template>\n <div\n class=\"b-image\"\n :class=\"{\n 'b-image--error': loadStatus === 'error' && !fallback,\n 'b-image--preview': preview,\n }\"\n :style=\"dimensionStyle\"\n >\n <!-- Progressive placeholder (blurred low-res image) -->\n <img\n v-if=\"showProgressivePlaceholder\"\n class=\"b-image__progressive-placeholder\"\n :src=\"placeholderSrc\"\n :alt=\"alt\"\n aria-hidden=\"true\"\n />\n\n <!-- Placeholder (shimmer or slot) -->\n <div\n v-if=\"(placeholder || $slots.placeholder) && loadStatus === 'loading' && !placeholderSrc\"\n class=\"b-image__placeholder\"\n aria-hidden=\"true\"\n >\n <slot name=\"placeholder\">\n <div class=\"b-image__placeholder-shimmer\" />\n </slot>\n </div>\n\n <!-- Image -->\n <img\n v-show=\"loadStatus !== 'loading' || (!placeholder && !$slots.placeholder && !placeholderSrc)\"\n class=\"b-image__img\"\n :src=\"displaySrc\"\n :alt=\"alt\"\n :width=\"typeof width === 'number' ? width : undefined\"\n :height=\"typeof height === 'number' ? height : undefined\"\n :loading=\"loading\"\n :crossorigin=\"crossOrigin\"\n :decoding=\"decoding\"\n :referrerpolicy=\"referrerPolicy\"\n @load=\"handleLoad\"\n @error=\"handleError\"\n />\n\n <!-- Preview mask overlay (clickable) -->\n <div\n v-if=\"showMask\"\n ref=\"triggerRef\"\n class=\"b-image__mask\"\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"`Preview image${alt ? ': ' + alt : ''}`\"\n @click=\"openPreview\"\n @keydown=\"handleTriggerKeydown\"\n >\n <slot name=\"preview-mask\">\n <span class=\"b-image__mask-text\" aria-hidden=\"true\">\n <!-- Eye icon -->\n <svg\n class=\"b-image__mask-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n Preview\n </span>\n </slot>\n </div>\n\n <!-- Invisible click target when mask is hidden but preview is enabled -->\n <div\n v-else-if=\"preview && !mask && loadStatus === 'loaded'\"\n ref=\"triggerRef\"\n class=\"b-image__click-target\"\n role=\"button\"\n tabindex=\"0\"\n :aria-label=\"`Preview image${alt ? ': ' + alt : ''}`\"\n @click=\"openPreview\"\n @keydown=\"handleTriggerKeydown\"\n />\n\n <!-- Preview overlay (teleported to body) -->\n <Teleport to=\"body\">\n <Transition name=\"b-image-preview\">\n <div\n v-if=\"previewOpen\"\n ref=\"overlayRef\"\n class=\"b-image-preview\"\n :class=\"{ 'b-image-preview--dragging': isDragging }\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-label=\"`Image preview${alt ? ': ' + alt : ''}`\"\n @keydown=\"handleOverlayKeydown\"\n @wheel.prevent=\"handlePreviewWheel\"\n @pointerdown=\"handlePreviewPointerDown\"\n @pointermove=\"handlePreviewPointerMove\"\n @pointerup=\"handlePreviewPointerUp\"\n @pointercancel=\"handlePreviewPointerUp\"\n >\n <!-- Backdrop -->\n <div class=\"b-image-preview__backdrop\" @click=\"closePreview\" />\n\n <!-- Close button -->\n <button\n class=\"b-image-preview__close\"\n type=\"button\"\n aria-label=\"Close preview\"\n @click=\"closePreview\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n\n <!-- Preview image -->\n <div class=\"b-image-preview__body\">\n <img\n class=\"b-image-preview__img\"\n :src=\"previewImageSrc\"\n :alt=\"alt\"\n :style=\"{ transform: previewTransform }\"\n draggable=\"false\"\n />\n </div>\n\n <!-- Toolbar -->\n <div\n class=\"b-image-preview__toolbar\"\n role=\"toolbar\"\n aria-label=\"Image preview controls\"\n @keydown=\"handleToolbarKeydown\"\n >\n <!-- Flip Horizontal -->\n <button\n type=\"button\"\n aria-label=\"Flip horizontal\"\n :aria-pressed=\"flipX\"\n @click=\"toggleFlipX\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M8 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h3\" />\n <path d=\"M16 3h3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-3\" />\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\" stroke-dasharray=\"2 2\" />\n </svg>\n </button>\n\n <!-- Flip Vertical -->\n <button\n type=\"button\"\n aria-label=\"Flip vertical\"\n :aria-pressed=\"flipY\"\n @click=\"toggleFlipY\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M3 8V5a2 2 0 0 1 2-2h14c1.1 0 2 .9 2 2v3\" />\n <path d=\"M3 16v3a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-3\" />\n <line x1=\"1\" y1=\"12\" x2=\"23\" y2=\"12\" stroke-dasharray=\"2 2\" />\n </svg>\n </button>\n\n <!-- Rotate Left -->\n <button type=\"button\" aria-label=\"Rotate left\" @click=\"rotateLeft\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <polyline points=\"1 4 1 10 7 10\" />\n <path d=\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\" />\n </svg>\n </button>\n\n <!-- Rotate Right -->\n <button type=\"button\" aria-label=\"Rotate right\" @click=\"rotateRight\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <polyline points=\"23 4 23 10 17 10\" />\n <path d=\"M20.49 15a9 9 0 1 1-2.13-9.36L23 10\" />\n </svg>\n </button>\n\n <!-- Zoom Out -->\n <button\n type=\"button\"\n aria-label=\"Zoom out\"\n :disabled=\"scale <= minScale\"\n @click=\"zoomOut\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n <line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\" />\n </svg>\n </button>\n\n <!-- Scale indicator -->\n <span class=\"b-image-preview__scale\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ Math.round(scale * 100) }}%\n </span>\n\n <!-- Zoom In -->\n <button\n type=\"button\"\n aria-label=\"Zoom in\"\n :disabled=\"scale >= maxScale\"\n @click=\"zoomIn\"\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n <line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\" />\n <line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\" />\n </svg>\n </button>\n\n <!-- Reset (1:1) -->\n <button type=\"button\" aria-label=\"Reset to original size\" @click=\"doResetTransform\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <text\n x=\"12\"\n y=\"16\"\n text-anchor=\"middle\"\n fill=\"currentColor\"\n stroke=\"none\"\n font-size=\"10\"\n font-weight=\"600\"\n font-family=\"system-ui\"\n >\n 1:1\n </text>\n </svg>\n </button>\n </div>\n </div>\n </Transition>\n </Teleport>\n </div>\n</template>\n\n<style>\n/* ────────────────────────────────────────────\n CSS Custom Properties (tokens)\n ──────────────────────────────────────────── */\n.b-image {\n /* Layout */\n --b-image-border-radius: 8px;\n --b-image-bg: oklch(95% 0.003 260);\n --b-image-object-fit: cover;\n\n /* Placeholder */\n --b-image-placeholder-bg: oklch(93% 0.005 260);\n --b-image-placeholder-shimmer: linear-gradient(\n 90deg,\n oklch(93% 0.005 260) 25%,\n oklch(96% 0.003 260) 50%,\n oklch(93% 0.005 260) 75%\n );\n --b-image-progressive-blur: 20px;\n\n /* Mask */\n --b-image-mask-bg: oklch(0% 0 0 / 50%);\n --b-image-mask-color: oklch(100% 0 0);\n --b-image-mask-font-size: 14px;\n --b-image-mask-icon-size: 20px;\n\n /* Error */\n --b-image-error-bg: oklch(95% 0.003 260);\n --b-image-error-color: oklch(55% 0.01 260);\n --b-image-error-icon-size: 32px;\n\n /* Animation */\n --b-image-transition-duration: 200ms;\n\n /* Focus */\n --b-image-focus-ring: 2px solid oklch(54.6% 0.245 262.881);\n --b-image-focus-ring-offset: 2px;\n}\n\n/* Preview overlay tokens */\n.b-image-preview {\n --b-image-preview-backdrop-bg: oklch(0% 0 0 / 65%);\n --b-image-preview-toolbar-bg: oklch(15% 0.005 260 / 85%);\n --b-image-preview-toolbar-color: oklch(95% 0.005 260);\n --b-image-preview-toolbar-btn-size: 40px;\n --b-image-preview-toolbar-icon-size: 20px;\n --b-image-preview-toolbar-gap: 8px;\n --b-image-preview-toolbar-radius: 24px;\n --b-image-preview-toolbar-padding: 4px 16px;\n --b-image-preview-close-size: 40px;\n --b-image-preview-close-color: oklch(90% 0.005 260);\n --b-image-preview-close-hover-bg: oklch(100% 0 0 / 12%);\n --b-image-preview-transition-duration: 250ms;\n --b-image-preview-scale-font-size: 13px;\n --b-image-preview-scale-min-width: 52px;\n}\n\n/* ── Dark mode ─────────────────────────────── */\n[data-prefers-color='dark'] .b-image {\n --b-image-bg: oklch(22% 0.005 260);\n --b-image-placeholder-bg: oklch(25% 0.005 260);\n --b-image-placeholder-shimmer: linear-gradient(\n 90deg,\n oklch(25% 0.005 260) 25%,\n oklch(30% 0.003 260) 50%,\n oklch(25% 0.005 260) 75%\n );\n --b-image-error-bg: oklch(22% 0.005 260);\n --b-image-error-color: oklch(70% 0.01 260);\n}\n\n[data-prefers-color='dark'] .b-image-preview {\n --b-image-preview-backdrop-bg: oklch(0% 0 0 / 80%);\n --b-image-preview-toolbar-bg: oklch(10% 0.005 260 / 90%);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-image {\n --b-image-bg: oklch(22% 0.005 260);\n --b-image-placeholder-bg: oklch(25% 0.005 260);\n --b-image-placeholder-shimmer: linear-gradient(\n 90deg,\n oklch(25% 0.005 260) 25%,\n oklch(30% 0.003 260) 50%,\n oklch(25% 0.005 260) 75%\n );\n --b-image-error-bg: oklch(22% 0.005 260);\n --b-image-error-color: oklch(70% 0.01 260);\n }\n [data-prefers-color='system'] .b-image-preview {\n --b-image-preview-backdrop-bg: oklch(0% 0 0 / 80%);\n --b-image-preview-toolbar-bg: oklch(10% 0.005 260 / 90%);\n }\n}\n\n/* ─────────────────────────────────────────────\n Base layout\n ───────────────────────────────────────────── */\n.b-image {\n position: relative;\n display: inline-block;\n overflow: hidden;\n border-radius: var(--b-image-border-radius);\n background-color: var(--b-image-bg);\n line-height: 0;\n box-sizing: border-box;\n}\n\n.b-image__img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: var(--b-image-object-fit);\n border-radius: var(--b-image-border-radius);\n}\n\n/* ─────────────────────────────────────────────\n Progressive placeholder (blurred low-res)\n ───────────────────────────────────────────── */\n.b-image__progressive-placeholder {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: var(--b-image-object-fit);\n border-radius: var(--b-image-border-radius);\n filter: blur(var(--b-image-progressive-blur));\n transform: scale(1.1);\n z-index: 1;\n}\n\n/* ─────────────────────────────────────────────\n Placeholder\n ───────────────────────────────────────────── */\n.b-image__placeholder {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--b-image-placeholder-bg);\n border-radius: var(--b-image-border-radius);\n z-index: 1;\n}\n\n.b-image__placeholder-shimmer {\n width: 100%;\n height: 100%;\n background: var(--b-image-placeholder-shimmer);\n background-size: 200% 100%;\n animation: b-image-shimmer 1.5s infinite;\n border-radius: var(--b-image-border-radius);\n}\n\n@keyframes b-image-shimmer {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n\n/* ─────────────────────────────────────────────\n Preview mask\n ───────────────────────────────────────────── */\n.b-image__mask {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--b-image-mask-bg);\n color: var(--b-image-mask-color);\n font-size: var(--b-image-mask-font-size);\n border-radius: var(--b-image-border-radius);\n opacity: 0;\n cursor: pointer;\n transition: opacity var(--b-image-transition-duration) ease;\n z-index: 2;\n outline: none;\n}\n\n.b-image--preview:hover .b-image__mask,\n.b-image__mask:focus-visible {\n opacity: 1;\n}\n\n.b-image__mask:focus-visible {\n outline: var(--b-image-focus-ring);\n outline-offset: var(--b-image-focus-ring-offset);\n}\n\n.b-image__mask-text {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n user-select: none;\n}\n\n.b-image__mask-icon {\n width: var(--b-image-mask-icon-size);\n height: var(--b-image-mask-icon-size);\n}\n\n/* Invisible click target (mask=false, preview=true) */\n.b-image__click-target {\n position: absolute;\n inset: 0;\n z-index: 2;\n cursor: pointer;\n outline: none;\n}\n\n.b-image__click-target:focus-visible {\n outline: var(--b-image-focus-ring);\n outline-offset: var(--b-image-focus-ring-offset);\n}\n\n/* ─────────────────────────────────────────────\n Error state\n ───────────────────────────────────────────── */\n.b-image--error {\n background-color: var(--b-image-error-bg);\n}\n\n/* ─────────────────────────────────────────────\n Preview overlay\n ───────────────────────────────────────────── */\n.b-image-preview {\n position: fixed;\n inset: 0;\n z-index: 1080;\n display: flex;\n align-items: center;\n justify-content: center;\n touch-action: none;\n}\n\n.b-image-preview--dragging {\n cursor: grabbing;\n}\n\n.b-image-preview__backdrop {\n position: absolute;\n inset: 0;\n background-color: var(--b-image-preview-backdrop-bg);\n}\n\n.b-image-preview__close {\n position: absolute;\n top: 16px;\n right: 16px;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--b-image-preview-close-size);\n height: var(--b-image-preview-close-size);\n border: none;\n border-radius: 50%;\n background: transparent;\n color: var(--b-image-preview-close-color);\n cursor: pointer;\n padding: 0;\n transition: background-color var(--b-image-preview-transition-duration) ease;\n}\n\n.b-image-preview__close:hover,\n.b-image-preview__close:focus-visible {\n background-color: var(--b-image-preview-close-hover-bg);\n}\n\n.b-image-preview__close:focus-visible {\n outline: var(--b-image-focus-ring);\n outline-offset: var(--b-image-focus-ring-offset);\n}\n\n.b-image-preview__close svg {\n width: 20px;\n height: 20px;\n}\n\n.b-image-preview__body {\n position: relative;\n z-index: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 100%;\n max-height: 100%;\n padding: 40px;\n box-sizing: border-box;\n cursor: grab;\n}\n\n.b-image-preview--dragging .b-image-preview__body {\n cursor: grabbing;\n}\n\n.b-image-preview__img {\n max-width: 100%;\n max-height: calc(100vh - 120px);\n object-fit: contain;\n transition: transform var(--b-image-preview-transition-duration) ease;\n user-select: none;\n -webkit-user-drag: none;\n pointer-events: none;\n}\n\n.b-image-preview--dragging .b-image-preview__img {\n transition: none;\n}\n\n/* ─────────────────────────────────────────────\n Toolbar\n ───────────────────────────────────────────── */\n.b-image-preview__toolbar {\n position: absolute;\n bottom: 24px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 1;\n display: flex;\n align-items: center;\n gap: var(--b-image-preview-toolbar-gap);\n padding: var(--b-image-preview-toolbar-padding);\n background-color: var(--b-image-preview-toolbar-bg);\n color: var(--b-image-preview-toolbar-color);\n border-radius: var(--b-image-preview-toolbar-radius);\n backdrop-filter: blur(8px);\n}\n\n.b-image-preview__toolbar button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--b-image-preview-toolbar-btn-size);\n height: var(--b-image-preview-toolbar-btn-size);\n border: none;\n border-radius: 50%;\n background: transparent;\n color: inherit;\n cursor: pointer;\n padding: 0;\n transition: background-color var(--b-image-preview-transition-duration) ease;\n}\n\n.b-image-preview__toolbar button:hover:not(:disabled),\n.b-image-preview__toolbar button:focus-visible {\n background-color: var(--b-image-preview-close-hover-bg);\n}\n\n.b-image-preview__toolbar button:focus-visible {\n outline: var(--b-image-focus-ring);\n outline-offset: var(--b-image-focus-ring-offset);\n}\n\n.b-image-preview__toolbar button:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n}\n\n.b-image-preview__toolbar button svg {\n width: var(--b-image-preview-toolbar-icon-size);\n height: var(--b-image-preview-toolbar-icon-size);\n}\n\n.b-image-preview__scale {\n font-size: var(--b-image-preview-scale-font-size);\n min-width: var(--b-image-preview-scale-min-width);\n text-align: center;\n font-variant-numeric: tabular-nums;\n user-select: none;\n}\n\n/* ─────────────────────────────────────────────\n Preview transitions\n ───────────────────────────────────────────── */\n.b-image-preview-enter-active,\n.b-image-preview-leave-active {\n transition: opacity var(--b-image-preview-transition-duration) ease;\n}\n\n.b-image-preview-enter-from,\n.b-image-preview-leave-to {\n opacity: 0;\n}\n\n/* ─────────────────────────────────────────────\n Reduced motion\n ───────────────────────────────────────────── */\n@media (prefers-reduced-motion: reduce) {\n .b-image {\n --b-image-transition-duration: 0ms;\n }\n\n .b-image-preview {\n --b-image-preview-transition-duration: 0ms;\n }\n\n .b-image__placeholder-shimmer {\n animation: none;\n }\n\n .b-image-preview-enter-active,\n .b-image-preview-leave-active {\n transition-duration: 0ms;\n }\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import e from "./design-system113.js";
2
+ /* empty css */
3
+ //#region src/components/BImage/BImage.vue
4
+ var t = e;
5
+ //#endregion
6
+ export { t as default };
7
+
8
+ //# sourceMappingURL=design-system115.js.map