@shibui-ui/ui 1.24.1 → 1.25.1

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 (460) hide show
  1. package/dist/components/atoms/index.d.ts +45 -16
  2. package/dist/components/atoms/index.d.ts.map +1 -1
  3. package/dist/components/molecules/index.d.ts +20 -1
  4. package/dist/components/molecules/index.d.ts.map +1 -1
  5. package/dist/components/organisms/index.d.ts +17 -1
  6. package/dist/components/organisms/index.d.ts.map +1 -1
  7. package/dist/index.d.ts +3 -82
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +79 -80
  10. package/dist/index.js.map +1 -1
  11. package/dist/index10.js +82 -18
  12. package/dist/index10.js.map +1 -1
  13. package/dist/index11.js +84 -69
  14. package/dist/index11.js.map +1 -1
  15. package/dist/index12.js +40 -26
  16. package/dist/index12.js.map +1 -1
  17. package/dist/index13.js +16 -39
  18. package/dist/index13.js.map +1 -1
  19. package/dist/index14.js +29 -44
  20. package/dist/index14.js.map +1 -1
  21. package/dist/index15.js +16 -117
  22. package/dist/index15.js.map +1 -1
  23. package/dist/index16.js +48 -40
  24. package/dist/index16.js.map +1 -1
  25. package/dist/index17.js +41 -25
  26. package/dist/index17.js.map +1 -1
  27. package/dist/index18.js +76 -49
  28. package/dist/index18.js.map +1 -1
  29. package/dist/index19.js +19 -39
  30. package/dist/index19.js.map +1 -1
  31. package/dist/index194.js +94 -24
  32. package/dist/index194.js.map +1 -1
  33. package/dist/index195.js +2 -2
  34. package/dist/index197.js +2 -24
  35. package/dist/index197.js.map +1 -1
  36. package/dist/index198.js +74 -2
  37. package/dist/index198.js.map +1 -1
  38. package/dist/index199.js +64 -35
  39. package/dist/index199.js.map +1 -1
  40. package/dist/index20.js +21 -41
  41. package/dist/index20.js.map +1 -1
  42. package/dist/index200.js +2 -2
  43. package/dist/index201.js +54 -13
  44. package/dist/index201.js.map +1 -1
  45. package/dist/index202.js +2 -2
  46. package/dist/index203.js +2 -2
  47. package/dist/index204.js +143 -157
  48. package/dist/index204.js.map +1 -1
  49. package/dist/index205.js +43 -24
  50. package/dist/index205.js.map +1 -1
  51. package/dist/index206.js +51 -2
  52. package/dist/index206.js.map +1 -1
  53. package/dist/index207.js +2 -11
  54. package/dist/index207.js.map +1 -1
  55. package/dist/index208.js +33 -2
  56. package/dist/index208.js.map +1 -1
  57. package/dist/index209.js +2 -91
  58. package/dist/index209.js.map +1 -1
  59. package/dist/index21.js +90 -26
  60. package/dist/index21.js.map +1 -1
  61. package/dist/index210.js +6 -2
  62. package/dist/index210.js.map +1 -1
  63. package/dist/index211.js +2 -41
  64. package/dist/index211.js.map +1 -1
  65. package/dist/index212.js +260 -2
  66. package/dist/index212.js.map +1 -1
  67. package/dist/index213.js +16 -5
  68. package/dist/index213.js.map +1 -1
  69. package/dist/index214.js +2 -2
  70. package/dist/index215.js +2 -35
  71. package/dist/index215.js.map +1 -1
  72. package/dist/index216.js +59 -42
  73. package/dist/index216.js.map +1 -1
  74. package/dist/index217.js +32 -2
  75. package/dist/index217.js.map +1 -1
  76. package/dist/index218.js +2 -85
  77. package/dist/index218.js.map +1 -1
  78. package/dist/index219.js +2 -2
  79. package/dist/index22.js +41 -48
  80. package/dist/index22.js.map +1 -1
  81. package/dist/index220.js +73 -65
  82. package/dist/index220.js.map +1 -1
  83. package/dist/index221.js +81 -2
  84. package/dist/index221.js.map +1 -1
  85. package/dist/index222.js +2 -10
  86. package/dist/index222.js.map +1 -1
  87. package/dist/index223.js +133 -2
  88. package/dist/index223.js.map +1 -1
  89. package/dist/index224.js +2 -26
  90. package/dist/index224.js.map +1 -1
  91. package/dist/index225.js +2 -2
  92. package/dist/index226.js +66 -12
  93. package/dist/index226.js.map +1 -1
  94. package/dist/index227.js +97 -2
  95. package/dist/index227.js.map +1 -1
  96. package/dist/index228.js +2 -2
  97. package/dist/index229.js +62 -24
  98. package/dist/index229.js.map +1 -1
  99. package/dist/index23.js +50 -94
  100. package/dist/index23.js.map +1 -1
  101. package/dist/index230.js +2 -2
  102. package/dist/index231.js +2 -2
  103. package/dist/index232.js +12 -2
  104. package/dist/index232.js.map +1 -1
  105. package/dist/index233.js +5 -16
  106. package/dist/index233.js.map +1 -1
  107. package/dist/index234.js +2 -2
  108. package/dist/index235.js +11 -9
  109. package/dist/index235.js.map +1 -1
  110. package/dist/index236.js +2 -2
  111. package/dist/index237.js +76 -34
  112. package/dist/index237.js.map +1 -1
  113. package/dist/index238.js +2 -2
  114. package/dist/index239.js +2 -27
  115. package/dist/index239.js.map +1 -1
  116. package/dist/index24.js +37 -34
  117. package/dist/index24.js.map +1 -1
  118. package/dist/index240.js +39 -2
  119. package/dist/index240.js.map +1 -1
  120. package/dist/index241.js +2 -34
  121. package/dist/index241.js.map +1 -1
  122. package/dist/index242.js +235 -12
  123. package/dist/index242.js.map +1 -1
  124. package/dist/index243.js +82 -2
  125. package/dist/index243.js.map +1 -1
  126. package/dist/index244.js +2 -9
  127. package/dist/index244.js.map +1 -1
  128. package/dist/index245.js +94 -2
  129. package/dist/index245.js.map +1 -1
  130. package/dist/index246.js +2 -5
  131. package/dist/index246.js.map +1 -1
  132. package/dist/index247.js +268 -2
  133. package/dist/index247.js.map +1 -1
  134. package/dist/index248.js +2 -36
  135. package/dist/index248.js.map +1 -1
  136. package/dist/index249.js +21 -2
  137. package/dist/index249.js.map +1 -1
  138. package/dist/index25.js +51 -32
  139. package/dist/index25.js.map +1 -1
  140. package/dist/index250.js +2 -31
  141. package/dist/index250.js.map +1 -1
  142. package/dist/index251.js +9 -2
  143. package/dist/index251.js.map +1 -1
  144. package/dist/index252.js +2 -19
  145. package/dist/index252.js.map +1 -1
  146. package/dist/index253.js +15 -2
  147. package/dist/index253.js.map +1 -1
  148. package/dist/index254.js +2 -2
  149. package/dist/index255.js +135 -69
  150. package/dist/index255.js.map +1 -1
  151. package/dist/index256.js +2 -11
  152. package/dist/index256.js.map +1 -1
  153. package/dist/index257.js +5 -2
  154. package/dist/index257.js.map +1 -1
  155. package/dist/index258.js +2 -78
  156. package/dist/index258.js.map +1 -1
  157. package/dist/index259.js +9 -2
  158. package/dist/index259.js.map +1 -1
  159. package/dist/index26.js +31 -236
  160. package/dist/index26.js.map +1 -1
  161. package/dist/index260.js +2 -32
  162. package/dist/index260.js.map +1 -1
  163. package/dist/index261.js +2 -2
  164. package/dist/index262.js +92 -9
  165. package/dist/index262.js.map +1 -1
  166. package/dist/index263.js +59 -2
  167. package/dist/index263.js.map +1 -1
  168. package/dist/index264.js +2 -16
  169. package/dist/index264.js.map +1 -1
  170. package/dist/index265.js +41 -2
  171. package/dist/index265.js.map +1 -1
  172. package/dist/index266.js +2 -16
  173. package/dist/index266.js.map +1 -1
  174. package/dist/index267.js +34 -9
  175. package/dist/index267.js.map +1 -1
  176. package/dist/index268.js +8 -54
  177. package/dist/index268.js.map +1 -1
  178. package/dist/index269.js +2 -2
  179. package/dist/index27.js +27 -58
  180. package/dist/index27.js.map +1 -1
  181. package/dist/index270.js +42 -7
  182. package/dist/index270.js.map +1 -1
  183. package/dist/index271.js +2 -2
  184. package/dist/index272.js +2 -34
  185. package/dist/index272.js.map +1 -1
  186. package/dist/index273.js +16 -2
  187. package/dist/index273.js.map +1 -1
  188. package/dist/index274.js +9 -2
  189. package/dist/index274.js.map +1 -1
  190. package/dist/index275.js +6 -13
  191. package/dist/index275.js.map +1 -1
  192. package/dist/index276.js +2 -2
  193. package/dist/index277.js +8 -15
  194. package/dist/index277.js.map +1 -1
  195. package/dist/index278.js +2 -2
  196. package/dist/index279.js +55 -2
  197. package/dist/index279.js.map +1 -1
  198. package/dist/index28.js +247 -24
  199. package/dist/index28.js.map +1 -1
  200. package/dist/index280.js +2 -42
  201. package/dist/index280.js.map +1 -1
  202. package/dist/index281.js +2 -100
  203. package/dist/index281.js.map +1 -1
  204. package/dist/index282.js +20 -2
  205. package/dist/index282.js.map +1 -1
  206. package/dist/index283.js +2 -97
  207. package/dist/index283.js.map +1 -1
  208. package/dist/index284.js +33 -2
  209. package/dist/index284.js.map +1 -1
  210. package/dist/index285.js +6 -27
  211. package/dist/index285.js.map +1 -1
  212. package/dist/index286.js +2 -2
  213. package/dist/index287.js +9 -44
  214. package/dist/index287.js.map +1 -1
  215. package/dist/index288.js +2 -2
  216. package/dist/index289.js +2 -33
  217. package/dist/index289.js.map +1 -1
  218. package/dist/index29.js +249 -39
  219. package/dist/index29.js.map +1 -1
  220. package/dist/index290.js +36 -2
  221. package/dist/index290.js.map +1 -1
  222. package/dist/index291.js +2 -57
  223. package/dist/index291.js.map +1 -1
  224. package/dist/index292.js +24 -2
  225. package/dist/index292.js.map +1 -1
  226. package/dist/index293.js +2 -2
  227. package/dist/index294.js +26 -247
  228. package/dist/index294.js.map +1 -1
  229. package/dist/index295.js +2 -2
  230. package/dist/index296.js +2 -72
  231. package/dist/index296.js.map +1 -1
  232. package/dist/index297.js +42 -2
  233. package/dist/index297.js.map +1 -1
  234. package/dist/index298.js +7 -56
  235. package/dist/index298.js.map +1 -1
  236. package/dist/index299.js +2 -133
  237. package/dist/index299.js.map +1 -1
  238. package/dist/index30.js +32 -19
  239. package/dist/index30.js.map +1 -1
  240. package/dist/index300.js +30 -2
  241. package/dist/index300.js.map +1 -1
  242. package/dist/index301.js +2 -12
  243. package/dist/index301.js.map +1 -1
  244. package/dist/index302.js +34 -2
  245. package/dist/index302.js.map +1 -1
  246. package/dist/index303.js +2 -162
  247. package/dist/index303.js.map +1 -1
  248. package/dist/index304.js +26 -42
  249. package/dist/index304.js.map +1 -1
  250. package/dist/index305.js +2 -81
  251. package/dist/index305.js.map +1 -1
  252. package/dist/index306.js +10 -2
  253. package/dist/index306.js.map +1 -1
  254. package/dist/index307.js +2 -71
  255. package/dist/index307.js.map +1 -1
  256. package/dist/index308.js +2 -2
  257. package/dist/index309.js +19 -2
  258. package/dist/index309.js.map +1 -1
  259. package/dist/index31.js +96 -11
  260. package/dist/index31.js.map +1 -1
  261. package/dist/index310.js +2 -81
  262. package/dist/index310.js.map +1 -1
  263. package/dist/index311.js +2 -2
  264. package/dist/index312.js +42 -2
  265. package/dist/index312.js.map +1 -1
  266. package/dist/index313.js +2 -74
  267. package/dist/index313.js.map +1 -1
  268. package/dist/index314.js +25 -67
  269. package/dist/index314.js.map +1 -1
  270. package/dist/index315.js +2 -2
  271. package/dist/index316.js +9 -17
  272. package/dist/index316.js.map +1 -1
  273. package/dist/index317.js +2 -2
  274. package/dist/index318.js +84 -32
  275. package/dist/index318.js.map +1 -1
  276. package/dist/index319.js +2 -2
  277. package/dist/index32.js +40 -48
  278. package/dist/index32.js.map +1 -1
  279. package/dist/index320.js +68 -77
  280. package/dist/index320.js.map +1 -1
  281. package/dist/index321.js +2 -2
  282. package/dist/index322.js +12 -148
  283. package/dist/index322.js.map +1 -1
  284. package/dist/index323.js +1 -1
  285. package/dist/index324.js +28 -6
  286. package/dist/index324.js.map +1 -1
  287. package/dist/index325.js +2 -2
  288. package/dist/index326.js +78 -87
  289. package/dist/index326.js.map +1 -1
  290. package/dist/index327.js +2 -2
  291. package/dist/index328.js +78 -2
  292. package/dist/index328.js.map +1 -1
  293. package/dist/index329.js +2 -237
  294. package/dist/index329.js.map +1 -1
  295. package/dist/index33.js +20 -56
  296. package/dist/index33.js.map +1 -1
  297. package/dist/index330.js +11 -6
  298. package/dist/index330.js.map +1 -1
  299. package/dist/index331.js +2 -2
  300. package/dist/index332.js +18 -59
  301. package/dist/index332.js.map +1 -1
  302. package/dist/index333.js +2 -2
  303. package/dist/index334.js +12 -5
  304. package/dist/index334.js.map +1 -1
  305. package/dist/index335.js +2 -2
  306. package/dist/index336.js +2 -15
  307. package/dist/index336.js.map +1 -1
  308. package/dist/index337.js +88 -2
  309. package/dist/index337.js.map +1 -1
  310. package/dist/index338.js +24 -2
  311. package/dist/index338.js.map +1 -1
  312. package/dist/index339.js +2 -92
  313. package/dist/index339.js.map +1 -1
  314. package/dist/index34.js +59 -35
  315. package/dist/index34.js.map +1 -1
  316. package/dist/index340.js +42 -14
  317. package/dist/index340.js.map +1 -1
  318. package/dist/index341.js +2 -2
  319. package/dist/index342.js +22 -80
  320. package/dist/index342.js.map +1 -1
  321. package/dist/index343.js +2 -2
  322. package/dist/index344.js +2 -18
  323. package/dist/index344.js.map +1 -1
  324. package/dist/index345.js +16 -2
  325. package/dist/index345.js.map +1 -1
  326. package/dist/index346.js +2 -268
  327. package/dist/index346.js.map +1 -1
  328. package/dist/index347.js +176 -2
  329. package/dist/index347.js.map +1 -1
  330. package/dist/index348.js +2 -2
  331. package/dist/index349.js +35 -39
  332. package/dist/index349.js.map +1 -1
  333. package/dist/index35.js +101 -28
  334. package/dist/index35.js.map +1 -1
  335. package/dist/index350.js +3 -3
  336. package/dist/index350.js.map +1 -1
  337. package/dist/index351.js +2 -2
  338. package/dist/index352.js +19 -26
  339. package/dist/index352.js.map +1 -1
  340. package/dist/index357.js +26 -19
  341. package/dist/index357.js.map +1 -1
  342. package/dist/index36.js +115 -33
  343. package/dist/index36.js.map +1 -1
  344. package/dist/index37.js +41 -115
  345. package/dist/index37.js.map +1 -1
  346. package/dist/index38.js +34 -246
  347. package/dist/index38.js.map +1 -1
  348. package/dist/index39.js +30 -137
  349. package/dist/index39.js.map +1 -1
  350. package/dist/index4.js +26 -84
  351. package/dist/index4.js.map +1 -1
  352. package/dist/index40.js +26 -400
  353. package/dist/index40.js.map +1 -1
  354. package/dist/index41.js +28 -77
  355. package/dist/index41.js.map +1 -1
  356. package/dist/index42.js +23 -26
  357. package/dist/index42.js.map +1 -1
  358. package/dist/index43.js +36 -33
  359. package/dist/index43.js.map +1 -1
  360. package/dist/index44.js +62 -16
  361. package/dist/index44.js.map +1 -1
  362. package/dist/index45.js +138 -21
  363. package/dist/index45.js.map +1 -1
  364. package/dist/index46.js +129 -22
  365. package/dist/index46.js.map +1 -1
  366. package/dist/index47.js +41 -19
  367. package/dist/index47.js.map +1 -1
  368. package/dist/index48.js +11 -82
  369. package/dist/index48.js.map +1 -1
  370. package/dist/index49.js +56 -279
  371. package/dist/index49.js.map +1 -1
  372. package/dist/index5.js +21 -34
  373. package/dist/index5.js.map +1 -1
  374. package/dist/index50.js +280 -33
  375. package/dist/index50.js.map +1 -1
  376. package/dist/index51.js +74 -94
  377. package/dist/index51.js.map +1 -1
  378. package/dist/index52.js +66 -41
  379. package/dist/index52.js.map +1 -1
  380. package/dist/index53.js +333 -62
  381. package/dist/index53.js.map +1 -1
  382. package/dist/index54.js +96 -256
  383. package/dist/index54.js.map +1 -1
  384. package/dist/index55.js +38 -130
  385. package/dist/index55.js.map +1 -1
  386. package/dist/index56.js +251 -50
  387. package/dist/index56.js.map +1 -1
  388. package/dist/index57.js +144 -115
  389. package/dist/index57.js.map +1 -1
  390. package/dist/index58.js +93 -183
  391. package/dist/index58.js.map +1 -1
  392. package/dist/index59.js +33 -339
  393. package/dist/index59.js.map +1 -1
  394. package/dist/index6.js +2 -2
  395. package/dist/index60.js +102 -66
  396. package/dist/index60.js.map +1 -1
  397. package/dist/index61.js +73 -179
  398. package/dist/index61.js.map +1 -1
  399. package/dist/index62.js +117 -97
  400. package/dist/index62.js.map +1 -1
  401. package/dist/index63.js +113 -263
  402. package/dist/index63.js.map +1 -1
  403. package/dist/index64.js +258 -251
  404. package/dist/index64.js.map +1 -1
  405. package/dist/index65.js +177 -79
  406. package/dist/index65.js.map +1 -1
  407. package/dist/index66.js +261 -140
  408. package/dist/index66.js.map +1 -1
  409. package/dist/index67.js +183 -100
  410. package/dist/index67.js.map +1 -1
  411. package/dist/index68.js +28 -89
  412. package/dist/index68.js.map +1 -1
  413. package/dist/index69.js +20 -161
  414. package/dist/index69.js.map +1 -1
  415. package/dist/index7.js +394 -32
  416. package/dist/index7.js.map +1 -1
  417. package/dist/index70.js +190 -53
  418. package/dist/index70.js.map +1 -1
  419. package/dist/index71.js +204 -112
  420. package/dist/index71.js.map +1 -1
  421. package/dist/index72.js +2 -2
  422. package/dist/index73.js +89 -28
  423. package/dist/index73.js.map +1 -1
  424. package/dist/index74.js +126 -63
  425. package/dist/index74.js.map +1 -1
  426. package/dist/index75.js +122 -111
  427. package/dist/index75.js.map +1 -1
  428. package/dist/index76.js +67 -64
  429. package/dist/index76.js.map +1 -1
  430. package/dist/index77.js +112 -88
  431. package/dist/index77.js.map +1 -1
  432. package/dist/index78.js +87 -16
  433. package/dist/index78.js.map +1 -1
  434. package/dist/index79.js +151 -79
  435. package/dist/index79.js.map +1 -1
  436. package/dist/index8.js +25 -127
  437. package/dist/index8.js.map +1 -1
  438. package/dist/index80.js +104 -186
  439. package/dist/index80.js.map +1 -1
  440. package/dist/index81.js +59 -20
  441. package/dist/index81.js.map +1 -1
  442. package/dist/index82.js +17 -129
  443. package/dist/index82.js.map +1 -1
  444. package/dist/index83.js +88 -217
  445. package/dist/index83.js.map +1 -1
  446. package/dist/index84.js +64 -112
  447. package/dist/index84.js.map +1 -1
  448. package/dist/index9.js +30 -45
  449. package/dist/index9.js.map +1 -1
  450. package/dist/src/components/atoms/index.d.ts +45 -16
  451. package/dist/src/components/atoms/index.d.ts.map +1 -1
  452. package/dist/src/components/molecules/index.d.ts +20 -1
  453. package/dist/src/components/molecules/index.d.ts.map +1 -1
  454. package/dist/src/components/organisms/index.d.ts +17 -1
  455. package/dist/src/components/organisms/index.d.ts.map +1 -1
  456. package/dist/src/index.d.ts +3 -82
  457. package/dist/src/index.d.ts.map +1 -1
  458. package/dist/tokens.css +353 -7
  459. package/dist/vite.config.d.ts.map +1 -1
  460. package/package.json +4 -4
package/dist/index62.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
2
  import { property, customElement } from "lit/decorators.js";
3
+ import { rangeSliderTemplate } from "./index223.js";
4
+ import sliderCss from "./index224.js";
3
5
  import sharedTokens from "./index196.js";
4
- import modalCss from "./index309.js";
5
- import { modalTemplate } from "./index310.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
8
  var __decorateClass = (decorators, target, key, kind) => {
@@ -13,135 +13,155 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibModal = class extends LitElement {
16
+ let LibRangeSlider = class extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
- this.open = false;
19
+ this.min = 0;
20
+ this.max = 100;
21
+ this.step = 1;
22
+ this.value = 50;
23
+ this.valueMin = 25;
24
+ this.valueMax = 75;
25
+ this.dual = false;
26
+ this.vertical = false;
20
27
  this.size = "md";
21
- this.variant = "default";
22
- this._animate = "scale";
23
- this.dark = false;
24
- this.heading = "";
25
- this.subtitle = "";
26
- this.iconTone = null;
27
- this.footerInfo = "";
28
- this.noBackdropClose = false;
29
- this._prevFocus = null;
30
- this._onKeydown = (e) => {
31
- if (e.key === "Escape" && this.open) {
32
- e.stopPropagation();
33
- this._close("escape");
34
- }
35
- };
28
+ this.tone = "default";
29
+ this.disabled = false;
30
+ this.label = "";
31
+ this.unit = "";
32
+ this.showLimits = false;
33
+ this.limitMin = "";
34
+ this.limitMax = "";
35
+ this.tooltip = false;
36
+ this.marks = "";
36
37
  }
37
- /* ── Lifecycle ──────────────────────────────────────────── */
38
- connectedCallback() {
39
- super.connectedCallback();
40
- document.addEventListener("keydown", this._onKeydown, true);
38
+ /* ── Computed ────────────────────────────────────────── */
39
+ _pct(v) {
40
+ const clamped = Math.min(Math.max(v, this.min), this.max);
41
+ return (clamped - this.min) / (this.max - this.min) * 100;
41
42
  }
42
- disconnectedCallback() {
43
- super.disconnectedCallback();
44
- document.removeEventListener("keydown", this._onKeydown, true);
45
- if (this.open) document.body.style.overflow = "";
46
- }
47
- updated(changed) {
48
- if (!changed.has("open")) return;
49
- if (this.open) {
50
- this._prevFocus = document.activeElement;
51
- document.body.style.overflow = "hidden";
52
- requestAnimationFrame(() => this._focusFirst());
53
- } else {
54
- document.body.style.overflow = "";
55
- if (this._prevFocus instanceof HTMLElement) {
56
- this._prevFocus.focus();
57
- }
58
- this._prevFocus = null;
43
+ get _parsedMarks() {
44
+ if (!this.marks) return [];
45
+ try {
46
+ return JSON.parse(this.marks);
47
+ } catch {
48
+ return [];
59
49
  }
60
50
  }
61
- /* ── API pública ────────────────────────────────────────── */
62
- /** Cierra el modal programáticamente. */
63
- close() {
64
- this._close("button");
51
+ /* ── Handlers ────────────────────────────────────────── */
52
+ _onInput(e) {
53
+ this.value = parseFloat(e.target.value);
54
+ this._dispatchChange();
65
55
  }
66
- /* ── Helpers privados ───────────────────────────────────── */
67
- _close(reason) {
68
- this.open = false;
69
- this.dispatchEvent(
70
- new CustomEvent("ui-lib-modal-close", {
71
- detail: { reason },
72
- bubbles: true,
73
- composed: true
74
- })
75
- );
56
+ _onInputMin(e) {
57
+ const v = parseFloat(e.target.value);
58
+ this.valueMin = Math.min(v, this.valueMax - this.step);
59
+ this._dispatchChange();
76
60
  }
77
- _onBackdropClick(e) {
78
- if (!this.noBackdropClose && e.target === e.currentTarget) {
79
- this._close("backdrop");
80
- }
61
+ _onInputMax(e) {
62
+ const v = parseFloat(e.target.value);
63
+ this.valueMax = Math.max(v, this.valueMin + this.step);
64
+ this._dispatchChange();
81
65
  }
82
- _focusFirst() {
83
- const panel = this.renderRoot.querySelector(".mo-panel");
84
- if (!panel) return;
85
- const focusable = panel.querySelector(
86
- 'button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])'
87
- );
88
- focusable == null ? void 0 : focusable.focus();
66
+ _dispatchChange() {
67
+ const detail = this.dual ? { valueMin: this.valueMin, valueMax: this.valueMax } : { value: this.value };
68
+ this.dispatchEvent(new CustomEvent("ui-lib-change", {
69
+ detail,
70
+ bubbles: true,
71
+ composed: true
72
+ }));
89
73
  }
90
- /* ── Render ─────────────────────────────────────────────── */
91
74
  render() {
92
- return modalTemplate({
93
- open: this.open,
75
+ return rangeSliderTemplate({
94
76
  size: this.size,
95
- variant: this.variant,
96
- _animate: this._animate,
97
- dark: this.dark,
98
- heading: this.heading,
99
- subtitle: this.subtitle,
100
- iconTone: this.iconTone,
101
- footerInfo: this.footerInfo,
102
- onClose: () => this._close("button"),
103
- onBackdropClick: (e) => this._onBackdropClick(e)
77
+ tone: this.tone,
78
+ dual: this.dual,
79
+ vertical: this.vertical,
80
+ disabled: this.disabled,
81
+ tooltip: this.tooltip,
82
+ min: this.min,
83
+ max: this.max,
84
+ step: this.step,
85
+ value: this.value,
86
+ valueMin: this.valueMin,
87
+ valueMax: this.valueMax,
88
+ pct: this._pct(this.value),
89
+ minPct: this._pct(this.valueMin),
90
+ maxPct: this._pct(this.valueMax),
91
+ label: this.label,
92
+ unit: this.unit,
93
+ showLimits: this.showLimits,
94
+ limitMinText: this.limitMin || String(this.min),
95
+ limitMaxText: this.limitMax || String(this.max),
96
+ marks: this._parsedMarks,
97
+ onInput: this._onInput.bind(this),
98
+ onInputMin: this._onInputMin.bind(this),
99
+ onInputMax: this._onInputMax.bind(this)
104
100
  });
105
101
  }
106
102
  };
107
- LibModal.styles = [
103
+ LibRangeSlider.styles = [
108
104
  css`${unsafeCSS(sharedTokens)}`,
109
- css`${unsafeCSS(modalCss)}`
105
+ css`${unsafeCSS(sliderCss)}`
110
106
  ];
107
+ __decorateClass([
108
+ property({ type: Number })
109
+ ], LibRangeSlider.prototype, "min", 2);
110
+ __decorateClass([
111
+ property({ type: Number })
112
+ ], LibRangeSlider.prototype, "max", 2);
113
+ __decorateClass([
114
+ property({ type: Number })
115
+ ], LibRangeSlider.prototype, "step", 2);
116
+ __decorateClass([
117
+ property({ type: Number })
118
+ ], LibRangeSlider.prototype, "value", 2);
119
+ __decorateClass([
120
+ property({ type: Number, attribute: "value-min" })
121
+ ], LibRangeSlider.prototype, "valueMin", 2);
122
+ __decorateClass([
123
+ property({ type: Number, attribute: "value-max" })
124
+ ], LibRangeSlider.prototype, "valueMax", 2);
111
125
  __decorateClass([
112
126
  property({ type: Boolean, reflect: true })
113
- ], LibModal.prototype, "open", 2);
127
+ ], LibRangeSlider.prototype, "dual", 2);
114
128
  __decorateClass([
115
- property({ type: String, reflect: true })
116
- ], LibModal.prototype, "size", 2);
129
+ property({ type: Boolean, reflect: true })
130
+ ], LibRangeSlider.prototype, "vertical", 2);
117
131
  __decorateClass([
118
132
  property({ type: String, reflect: true })
119
- ], LibModal.prototype, "variant", 2);
133
+ ], LibRangeSlider.prototype, "size", 2);
120
134
  __decorateClass([
121
135
  property({ type: String, reflect: true })
122
- ], LibModal.prototype, "_animate", 2);
136
+ ], LibRangeSlider.prototype, "tone", 2);
123
137
  __decorateClass([
124
138
  property({ type: Boolean, reflect: true })
125
- ], LibModal.prototype, "dark", 2);
139
+ ], LibRangeSlider.prototype, "disabled", 2);
126
140
  __decorateClass([
127
141
  property({ type: String })
128
- ], LibModal.prototype, "heading", 2);
142
+ ], LibRangeSlider.prototype, "label", 2);
129
143
  __decorateClass([
130
144
  property({ type: String })
131
- ], LibModal.prototype, "subtitle", 2);
145
+ ], LibRangeSlider.prototype, "unit", 2);
132
146
  __decorateClass([
133
- property({ type: String, attribute: "icon-tone" })
134
- ], LibModal.prototype, "iconTone", 2);
147
+ property({ type: Boolean, attribute: "show-limits" })
148
+ ], LibRangeSlider.prototype, "showLimits", 2);
135
149
  __decorateClass([
136
- property({ type: String, attribute: "footer-info" })
137
- ], LibModal.prototype, "footerInfo", 2);
150
+ property({ type: String, attribute: "limit-min" })
151
+ ], LibRangeSlider.prototype, "limitMin", 2);
138
152
  __decorateClass([
139
- property({ type: Boolean, attribute: "no-backdrop-close" })
140
- ], LibModal.prototype, "noBackdropClose", 2);
141
- LibModal = __decorateClass([
142
- customElement("lib-modal")
143
- ], LibModal);
153
+ property({ type: String, attribute: "limit-max" })
154
+ ], LibRangeSlider.prototype, "limitMax", 2);
155
+ __decorateClass([
156
+ property({ type: Boolean })
157
+ ], LibRangeSlider.prototype, "tooltip", 2);
158
+ __decorateClass([
159
+ property({ type: String })
160
+ ], LibRangeSlider.prototype, "marks", 2);
161
+ LibRangeSlider = __decorateClass([
162
+ customElement("lib-range-slider")
163
+ ], LibRangeSlider);
144
164
  export {
145
- LibModal
165
+ LibRangeSlider
146
166
  };
147
167
  //# sourceMappingURL=index62.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index62.js","sources":["../src/components/molecules/modal/lib-modal.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport modalCss from './lib-modal.css?inline';\nimport { modalTemplate } from './lib-modal.html';\nimport { ModalAnimate, ModalCloseEventDetail, ModalIconTone, ModalSize, ModalVariant } from './lib-modal.types';\n\n\n/**\n * @element lib-modal\n *\n * Diálogo bloqueante con backdrop difuminado. Seis tamaños, tres variantes\n * de panel, tres animaciones de entrada y soporte de surface oscura.\n *\n * ## Uso básico\n * ```html\n * <lib-modal heading=\"Editar componente\" open>\n * <p>Contenido del cuerpo.</p>\n * <div slot=\"footer\">\n * <button class=\"mo-btn mo-btn-ghost\">Cancelar</button>\n * <button class=\"mo-btn mo-btn-primary\">Guardar</button>\n * </div>\n * </lib-modal>\n * ```\n *\n * ## Con ícono y subtítulo\n * ```html\n * <lib-modal heading=\"Nuevo componente\" subtitle=\"Shibui DS · añadir\" icon-tone=\"kaki\">\n * <ph-plus slot=\"icon\" weight=\"bold\"></ph-plus>\n * ...\n * </lib-modal>\n * ```\n *\n * ## Control de apertura\n * ```ts\n * modal.open = true;\n * modal.addEventListener('ui-lib-modal-close', e => {\n * console.log(e.detail.reason); // 'button' | 'backdrop' | 'escape'\n * modal.open = false;\n * });\n * ```\n *\n * @prop {boolean} open — Abre el modal. Reflected.\n * @prop {ModalSize} size — xs · sm · md · lg · xl · full (default md).\n * @prop {ModalVariant} variant — default · editorial · danger.\n * @prop {ModalAnimate} _animate — scale · slide-up · slide-down.\n * @prop {boolean} dark — Surface oscura.\n * @prop {string} heading — Título del modal (requerido para a11y).\n * @prop {string} subtitle — Subtítulo mono debajo del título.\n * @prop {ModalIconTone|null} icon-tone — Tono del ícono. Si es null no se renderiza el wrapper.\n * @prop {string} footer-info — Texto secundario izquierda en el footer.\n * @prop {boolean} no-backdrop-close — Desactiva el cierre al hacer click en el backdrop.\n *\n * @slot — Cuerpo del modal (secciones, formularios, contenido libre).\n * @slot icon — Contenido del ícono del header (visible solo si icon-tone no es null).\n * @slot footer — Acciones del footer (botones).\n *\n * @csspart backdrop — Capa de fondo difuminada.\n * @csspart panel-wrap — Contenedor animado (tamaño + animación).\n * @csspart panel — El panel blanco real.\n * @csspart header — Zona del header.\n * @csspart icon — Wrapper del ícono.\n * @csspart close-btn — Botón ×.\n * @csspart body — Zona scrollable del cuerpo.\n * @csspart footer — Zona del footer.\n *\n * @fires ui-lib-modal-close — Emitido cuando el modal se cierra. Detail: { reason }.\n */\n@customElement('lib-modal')\nexport class LibModal extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(modalCss)}`,\n ];\n\n /* ── Props ─────────────────────────────────────────────── */\n\n @property({ type: Boolean, reflect: true })\n open: boolean = false;\n\n @property({ type: String, reflect: true })\n size: ModalSize = 'md';\n\n @property({ type: String, reflect: true })\n variant: ModalVariant = 'default';\n\n @property({ type: String, reflect: true })\n _animate: ModalAnimate = 'scale';\n\n @property({ type: Boolean, reflect: true })\n dark: boolean = false;\n\n /** Título del modal — requerido para accesibilidad (aria-labelledby). */\n @property({ type: String })\n heading: string = '';\n\n @property({ type: String })\n subtitle: string = '';\n\n /**\n * Tono del ícono del header.\n * Acepta: 'default' | 'kaki' | 'celadon' | 'error' | 'info' | null.\n * Cuando es null no se renderiza el wrapper del ícono.\n */\n @property({ type: String, attribute: 'icon-tone' })\n iconTone: ModalIconTone | null = null;\n\n @property({ type: String, attribute: 'footer-info' })\n footerInfo: string = '';\n\n /** Desactiva el cierre al hacer click fuera del panel. */\n @property({ type: Boolean, attribute: 'no-backdrop-close' })\n noBackdropClose: boolean = false;\n\n /* ── Estado interno ─────────────────────────────────────── */\n\n /** Elemento con foco antes de abrir — se restaura al cerrar. */\n private _prevFocus: Element | null = null;\n\n /** Handler de Escape vinculado para poder desregistrarlo. */\n private readonly _onKeydown = (e: KeyboardEvent): void => {\n if (e.key === 'Escape' && this.open) {\n e.stopPropagation();\n this._close('escape');\n }\n };\n\n /* ── Lifecycle ──────────────────────────────────────────── */\n\n override connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener('keydown', this._onKeydown, true);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('keydown', this._onKeydown, true);\n // Restaurar scroll si el componente se desmonta mientras está abierto\n if (this.open) document.body.style.overflow = '';\n }\n\n override updated(changed: Map<string, unknown>): void {\n if (!changed.has('open')) return;\n\n if (this.open) {\n this._prevFocus = document.activeElement;\n document.body.style.overflow = 'hidden';\n // Foco al primer elemento interactivo tras el render\n requestAnimationFrame(() => this._focusFirst());\n } else {\n document.body.style.overflow = '';\n // Restaurar foco al trigger original\n if (this._prevFocus instanceof HTMLElement) {\n this._prevFocus.focus();\n }\n this._prevFocus = null;\n }\n }\n\n /* ── API pública ────────────────────────────────────────── */\n\n /** Cierra el modal programáticamente. */\n close(): void {\n this._close('button');\n }\n\n /* ── Helpers privados ───────────────────────────────────── */\n\n private _close(reason: ModalCloseEventDetail['reason']): void {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent<ModalCloseEventDetail>('ui-lib-modal-close', {\n detail: { reason },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _onBackdropClick(e: MouseEvent): void {\n // Solo cierra si el click es directamente sobre el backdrop\n if (!this.noBackdropClose && e.target === e.currentTarget) {\n this._close('backdrop');\n }\n }\n\n private _focusFirst(): void {\n const panel = this.renderRoot.querySelector('.mo-panel');\n if (!panel) return;\n const focusable = panel.querySelector<HTMLElement>(\n 'button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])',\n );\n focusable?.focus();\n }\n\n /* ── Render ─────────────────────────────────────────────── */\n\n override render(): TemplateResult {\n return modalTemplate({\n open: this.open,\n size: this.size,\n variant: this.variant,\n _animate: this._animate,\n dark: this.dark,\n heading: this.heading,\n subtitle: this.subtitle,\n iconTone: this.iconTone,\n footerInfo: this.footerInfo,\n onClose: () => this._close('button'),\n onBackdropClick: (e) => this._onBackdropClick(e),\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-modal': LibModal;\n }\n}\n\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index62.js","sources":["../src/components/molecules/range-slider/lib-range-slider.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { rangeSliderTemplate } from './lib-range-slider.html';\nimport sliderCss from './lib-range-slider.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\nexport type RsSize = 'sm' | 'md' | 'lg';\nexport type RsTone = 'default' | 'kaki' | 'celadon' | 'error' | 'washi' | 'dark';\n\nexport interface RsMark {\n /** Posición 0–100 sobre el track */\n pct: number;\n /** Etiqueta opcional bajo la marca */\n label?: string;\n}\n\n/**\n * @element lib-range-slider\n *\n * Control de selección de valor numérico — single, dual y vertical.\n *\n * @prop value — valor actual (modo single)\n * @prop value-min — valor inferior (modo dual)\n * @prop value-max — valor superior (modo dual)\n * @prop dual — activa dos thumbs para rango min/max\n * @prop vertical — orientación vertical\n * @prop tooltip — globito flotante sobre el thumb (solo single horizontal)\n * @prop marks — JSON string de marcas: '[{\"pct\":0,\"label\":\"XS\"},...]'\n * @prop show-limits — muestra min/max labels bajo el track\n * @prop limit-min / limit-max — texto personalizado de los extremos\n *\n * @fires ui-lib-change — { value } (single) | { valueMin, valueMax } (dual)\n *\n * @example single\n * <lib-range-slider label=\"Volumen\" value=\"48\" unit=\"%\" show-limits></lib-range-slider>\n *\n * @example dual\n * <lib-range-slider dual label=\"Precio\" value-min=\"120\" value-max=\"480\"\n * unit=\"€\" show-limits limit-min=\"0 €\" limit-max=\"500 €\" tone=\"kaki\">\n * </lib-range-slider>\n *\n * @example vertical\n * <lib-range-slider vertical tone=\"kaki\" value=\"80\" label=\"Bajo\"\n * style=\"height:220px\"></lib-range-slider>\n */\n@customElement('lib-range-slider')\nexport class LibRangeSlider extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(sliderCss)}`,\n ];\n\n /* ── Range attrs ─────────────────────────────────────── */\n @property({ type: Number })\n min = 0;\n\n @property({ type: Number })\n max = 100;\n\n @property({ type: Number })\n step = 1;\n\n /* ── Values ──────────────────────────────────────────── */\n /** Valor actual — modo single. */\n @property({ type: Number })\n value = 50;\n\n /** Límite inferior — modo dual. */\n @property({ type: Number, attribute: 'value-min' })\n valueMin = 25;\n\n /** Límite superior — modo dual. */\n @property({ type: Number, attribute: 'value-max' })\n valueMax = 75;\n\n /* ── Modes ───────────────────────────────────────────── */\n @property({ type: Boolean, reflect: true })\n dual = false;\n\n @property({ type: Boolean, reflect: true })\n vertical = false;\n\n /* ── Appearance ──────────────────────────────────────── */\n @property({ type: String, reflect: true })\n size: RsSize = 'md';\n\n @property({ type: String, reflect: true })\n tone: RsTone = 'default';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /* ── Display ─────────────────────────────────────────── */\n @property({ type: String })\n label = '';\n\n @property({ type: String })\n unit = '';\n\n @property({ type: Boolean, attribute: 'show-limits' })\n showLimits = false;\n\n /** Texto personalizado extremo izquierdo/abajo. Por defecto: `min`. */\n @property({ type: String, attribute: 'limit-min' })\n limitMin = '';\n\n /** Texto personalizado extremo derecho/arriba. Por defecto: `max`. */\n @property({ type: String, attribute: 'limit-max' })\n limitMax = '';\n\n /* ── Extras ──────────────────────────────────────────── */\n /** Globito flotante sobre el thumb (solo modo single horizontal). */\n @property({ type: Boolean })\n tooltip = false;\n\n /**\n * Marcas de paso como JSON string.\n * Formato: '[{\"pct\":0,\"label\":\"XS\"},{\"pct\":25,\"label\":\"S\"},...]'\n * `pct` = posición 0–100 sobre el track. `label` es opcional.\n */\n @property({ type: String })\n marks = '';\n\n /* ── Computed ────────────────────────────────────────── */\n private _pct(v: number): number {\n const clamped = Math.min(Math.max(v, this.min), this.max);\n return ((clamped - this.min) / (this.max - this.min)) * 100;\n }\n\n private get _parsedMarks(): RsMark[] {\n if (!this.marks) return [];\n try { return JSON.parse(this.marks) as RsMark[]; }\n catch { return []; }\n }\n\n /* ── Handlers ────────────────────────────────────────── */\n private _onInput(e: Event): void {\n this.value = parseFloat((e.target as HTMLInputElement).value);\n this._dispatchChange();\n }\n\n private _onInputMin(e: Event): void {\n const v = parseFloat((e.target as HTMLInputElement).value);\n this.valueMin = Math.min(v, this.valueMax - this.step);\n this._dispatchChange();\n }\n\n private _onInputMax(e: Event): void {\n const v = parseFloat((e.target as HTMLInputElement).value);\n this.valueMax = Math.max(v, this.valueMin + this.step);\n this._dispatchChange();\n }\n\n private _dispatchChange(): void {\n const detail = this.dual\n ? { valueMin: this.valueMin, valueMax: this.valueMax }\n : { value: this.value };\n\n this.dispatchEvent(new CustomEvent('ui-lib-change', {\n detail,\n bubbles: true,\n composed: true,\n }));\n }\n\n override render(): TemplateResult {\n return rangeSliderTemplate({\n size: this.size,\n tone: this.tone,\n dual: this.dual,\n vertical: this.vertical,\n disabled: this.disabled,\n tooltip: this.tooltip,\n min: this.min,\n max: this.max,\n step: this.step,\n value: this.value,\n valueMin: this.valueMin,\n valueMax: this.valueMax,\n pct: this._pct(this.value),\n minPct: this._pct(this.valueMin),\n maxPct: this._pct(this.valueMax),\n label: this.label,\n unit: this.unit,\n showLimits: this.showLimits,\n limitMinText: this.limitMin || String(this.min),\n limitMaxText: this.limitMax || String(this.max),\n marks: this._parsedMarks,\n onInput: this._onInput.bind(this),\n onInputMin: this._onInputMin.bind(this),\n onInputMax: this._onInputMax.bind(this),\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-range-slider': LibRangeSlider;\n }\n}"],"names":[],"mappings":"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"}