@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/index36.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
- import { property, customElement } from "lit/decorators.js";
3
- import { bentoItemTemplate } from "./index256.js";
4
- import itemCss from "./index257.js";
2
+ import { property, state, customElement } from "lit/decorators.js";
3
+ import { readingProgressTemplate } from "./index328.js";
4
+ import componentCss from "./index329.js";
5
5
  import sharedTokens from "./index196.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -13,48 +13,130 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibBentoItem = class extends LitElement {
16
+ let LibReadingProgress = class extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
- this.cols = 1;
20
- this.rows = 1;
21
- this.interactive = false;
22
- this.flush = false;
23
- }
24
- /**
25
- * FIX: grid-column/row deben aplicarse sobre :host (el elemento
26
- * que participa en el grid del padre), NO sobre un div interno.
27
- * Las CSS custom properties no suben al padre, solo bajan.
28
- * La solución correcta es escribir directamente en this.style.
29
- */
30
- updated() {
31
- this.style.gridColumn = `span ${this.cols}`;
32
- this.style.gridRow = `span ${this.rows}`;
19
+ this.variant = "bar";
20
+ this.tone = "kaki";
21
+ this.target = "";
22
+ this.dotsCount = 5;
23
+ this.ringSize = 28;
24
+ this._progress = 0;
25
+ this._scrollEl = null;
26
+ this._onScroll = () => {
27
+ if (this._scrollEl) this._calculate(this._scrollEl);
28
+ };
33
29
  }
30
+ /* ── Lifecycle ───────────────────────────────────────── */
31
+ connectedCallback() {
32
+ super.connectedCallback();
33
+ this._bindScroll();
34
+ }
35
+ disconnectedCallback() {
36
+ super.disconnectedCallback();
37
+ this._unbindScroll();
38
+ }
39
+ updated(changed) {
40
+ if (changed.has("target")) {
41
+ this._unbindScroll();
42
+ this._bindScroll();
43
+ }
44
+ }
45
+ /* ── Scroll binding ──────────────────────────────────── */
46
+ _bindScroll() {
47
+ if (this.target) {
48
+ this.updateComplete.then(() => {
49
+ const el = document.querySelector(this.target);
50
+ if (el) {
51
+ this._scrollEl = el;
52
+ el.addEventListener("scroll", this._onScroll, { passive: true });
53
+ this._calculate(el);
54
+ }
55
+ });
56
+ } else {
57
+ this._scrollEl = window;
58
+ window.addEventListener("scroll", this._onScroll, { passive: true });
59
+ this._calculate(window);
60
+ }
61
+ }
62
+ _unbindScroll() {
63
+ if (!this._scrollEl) return;
64
+ this._scrollEl.removeEventListener("scroll", this._onScroll);
65
+ this._scrollEl = null;
66
+ }
67
+ _calculate(source) {
68
+ let p;
69
+ if (source instanceof Window) {
70
+ const scrolled = window.scrollY;
71
+ const total = document.documentElement.scrollHeight - window.innerHeight;
72
+ p = total > 0 ? Math.min(1, Math.max(0, scrolled / total)) : 0;
73
+ } else {
74
+ const { scrollTop, scrollHeight, clientHeight } = source;
75
+ const total = scrollHeight - clientHeight;
76
+ p = total > 0 ? Math.min(1, Math.max(0, scrollTop / total)) : 0;
77
+ }
78
+ const pct = Math.round(p * 100);
79
+ if (pct === this._progress) return;
80
+ this._progress = pct;
81
+ this._applyHostStyle();
82
+ }
83
+ /* Aplica width / height al host en lugar de forzar un re-render
84
+ para las variantes cuyo elemento visual ES el host */
85
+ _applyHostStyle() {
86
+ const v = this.variant;
87
+ if (v === "bar" || v === "line") {
88
+ this.style.width = `${this._progress}%`;
89
+ const active = this._progress > 1 && this._progress < 100;
90
+ this.toggleAttribute("active", active);
91
+ } else if (v === "vertical") {
92
+ this.style.height = `${this._progress}%`;
93
+ }
94
+ }
95
+ /* ── Render ──────────────────────────────────────────── */
34
96
  render() {
35
- return bentoItemTemplate();
97
+ return readingProgressTemplate({
98
+ variant: this.variant,
99
+ progress: this._progress,
100
+ dotsCount: this.dotsCount,
101
+ ringSize: this.ringSize
102
+ });
103
+ }
104
+ /* ── Public API ──────────────────────────────────────── */
105
+ /** Devuelve el progreso actual (0-100) */
106
+ get progress() {
107
+ return this._progress;
108
+ }
109
+ /** Fuerza un recálculo inmediato del progreso */
110
+ recalculate() {
111
+ if (this._scrollEl) this._calculate(this._scrollEl);
36
112
  }
37
113
  };
38
- LibBentoItem.styles = [
114
+ LibReadingProgress.styles = [
39
115
  css`${unsafeCSS(sharedTokens)}`,
40
- css`${unsafeCSS(itemCss)}`
116
+ css`${unsafeCSS(componentCss)}`
41
117
  ];
42
118
  __decorateClass([
43
- property({ type: Number })
44
- ], LibBentoItem.prototype, "cols", 2);
119
+ property({ type: String, reflect: true })
120
+ ], LibReadingProgress.prototype, "variant", 2);
121
+ __decorateClass([
122
+ property({ type: String, reflect: true })
123
+ ], LibReadingProgress.prototype, "tone", 2);
124
+ __decorateClass([
125
+ property({ type: String })
126
+ ], LibReadingProgress.prototype, "target", 2);
45
127
  __decorateClass([
46
- property({ type: Number })
47
- ], LibBentoItem.prototype, "rows", 2);
128
+ property({ type: Number, attribute: "dots-count" })
129
+ ], LibReadingProgress.prototype, "dotsCount", 2);
48
130
  __decorateClass([
49
- property({ type: Boolean, reflect: true })
50
- ], LibBentoItem.prototype, "interactive", 2);
131
+ property({ type: Number, attribute: "ring-size" })
132
+ ], LibReadingProgress.prototype, "ringSize", 2);
51
133
  __decorateClass([
52
- property({ type: Boolean, reflect: true })
53
- ], LibBentoItem.prototype, "flush", 2);
54
- LibBentoItem = __decorateClass([
55
- customElement("lib-bento-item")
56
- ], LibBentoItem);
134
+ state()
135
+ ], LibReadingProgress.prototype, "_progress", 2);
136
+ LibReadingProgress = __decorateClass([
137
+ customElement("lib-reading-progress")
138
+ ], LibReadingProgress);
57
139
  export {
58
- LibBentoItem
140
+ LibReadingProgress
59
141
  };
60
142
  //# sourceMappingURL=index36.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index36.js","sources":["../src/components/atoms/bento-item/lib-bento-item.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { bentoItemTemplate } from './lib-bento-item.html';\nimport itemCss from './lib-bento-item.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\n/**\n * lib-bento-itemCelda de la rejilla bento\n *\n * Úsalo como hijo directo de lib-bento-grid.\n *\n * @prop cols Columnas que ocupa (default 1)\n * @prop rows Filas que ocupa (default 1)\n * @prop interactive Añade hover y cursor pointer\n * @prop flush Elimina el padding interno (para imágenes a sangre)\n *\n * @slotContenido de la celda\n */\n@customElement('lib-bento-item')\nexport class LibBentoItem extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(itemCss)}`,\n ];\n\n @property({ type: Number })\n cols = 1;\n\n @property({ type: Number })\n rows = 1;\n\n @property({ type: Boolean, reflect: true })\n interactive = false;\n\n @property({ type: Boolean, reflect: true })\n flush = false;\n\n /**\n * FIX: grid-column/row deben aplicarse sobre :host (el elemento\n * que participa en el grid del padre), NO sobre un div interno.\n * Las CSS custom properties no suben al padre, solo bajan.\n * La solución correcta es escribir directamente en this.style.\n */\n override updated(): void {\n this.style.gridColumn = `span ${this.cols}`;\n this.style.gridRow = `span ${this.rows}`;\n }\n\n protected override render(): TemplateResult {\n return bentoItemTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-bento-item': LibBentoItem;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAmBO,IAAM,eAAN,cAA2B,WAAW;AAAA,EAAtC,cAAA;AAAA,UAAA,GAAA,SAAA;AAOL,SAAA,OAAO;AAGP,SAAA,OAAO;AAGP,SAAA,cAAc;AAGd,SAAA,QAAQ;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQC,UAAgB;AACvB,SAAK,MAAM,aAAa,QAAQ,KAAK,IAAI;AACzC,SAAK,MAAM,UAAa,QAAQ,KAAK,IAAI;AAAA,EAC3C;AAAA,EAEmB,SAAyB;AAC1C,WAAO,kBAAsB;AAAA,EAC/B;AACF;AAhCa,aACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,OAAO,CAAC;AAC1B;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GANf,aAOX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GATf,aAUX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAZ/B,aAaX,WAAA,eAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAf/B,aAgBX,WAAA,SAAA,CAAA;AAhBW,eAAN,gBAAA;AAAA,EADN,cAAc,gBAAgB;AAAA,GAClB,YAAA;"}
1
+ {"version":3,"file":"index36.js","sources":["../src/components/atoms/reading-progress/lib-reading-progress.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { readingProgressTemplate } from './lib-reading-progress.html';\nimport componentCss from './lib-reading-progress.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\nexport type ReadingProgressVariant = 'bar' | 'line' | 'dots' | 'ring' | 'vertical';\nexport type ReadingProgressTone = 'kaki' | 'celadon' | 'ink' | 'kintsugi';\n\n\n/**\n * @element lib-reading-progress\n *\n * Cinco variantes de progreso de lectura todas se alimentan del mismo\n * valor interno `_progress` (0-100) calculado con scroll.\n *\n * Variantes\n * ─────────\n * bar → 2px debajo del nav. El HOST es el elemento visual.\n * Coloca el componente DENTRO de un contenedor con\n * position:relative; overflow:hidden.\n *\n * line → 1px, más sutil. Mismos requisitos de posicionamiento.\n *\n * dots → fila de N puntos. Display inline-flex. Va dentro del nav.\n *\n * ring → anillo SVG. Display inline-flex. Va junto al brand.\n *\n * vertical → barra fija en el margen izquierdo de la ventana.\n * Se posiciona sola con position:fixed.\n *\n * @attr {ReadingProgressVariant} variant bar · line · dots · ring · vertical\n * @attr {ReadingProgressTone} tone kaki · celadon · ink\n * @attr {string} target selector CSS del contenedor scrollable.\n * Si se omite, trackea window.\n * @attr {number} dots-count número de puntos (variant=dots, default: 5)\n * @attr {number} ring-size diámetro del anillo en px (variant=ring, default: 28)\n */\n@customElement('lib-reading-progress')\nexport class LibReadingProgress extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(componentCss)}`,\n ];\n\n /* ── Props ───────────────────────────────────────────── */\n\n @property({ type: String, reflect: true })\n variant: ReadingProgressVariant = 'bar';\n\n @property({ type: String, reflect: true })\n tone: ReadingProgressTone = 'kaki';\n\n /** Selector CSS del elemento scrollable que se quiere observar.\n * Si está vacío, escucha el scroll de window. */\n @property({ type: String })\n target = '';\n\n @property({ type: Number, attribute: 'dots-count' })\n dotsCount = 5;\n\n @property({ type: Number, attribute: 'ring-size' })\n ringSize = 28;\n\n /* ── Estado interno ──────────────────────────────────── */\n\n @state()\n private _progress = 0;\n\n /* ── Elemento scrollable resuelto ───────────────────── */\n\n private _scrollEl: Element | Window | null = null;\n\n /* ── Lifecycle ───────────────────────────────────────── */\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._bindScroll();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._unbindScroll();\n }\n\n override updated(changed: Map<string, unknown>): void {\n /* Si cambia el target, revinculamos el listener */\n if (changed.has('target')) {\n this._unbindScroll();\n this._bindScroll();\n }\n }\n\n /* ── Scroll binding ──────────────────────────────────── */\n\n private _bindScroll(): void {\n if (this.target) {\n /* Esperamos al primer update para que el DOM esté disponible */\n this.updateComplete.then(() => {\n const el = document.querySelector(this.target);\n if (el) {\n this._scrollEl = el;\n el.addEventListener('scroll', this._onScroll, { passive: true });\n this._calculate(el);\n }\n });\n } else {\n this._scrollEl = window;\n window.addEventListener('scroll', this._onScroll, { passive: true });\n this._calculate(window);\n }\n }\n\n private _unbindScroll(): void {\n if (!this._scrollEl) return;\n this._scrollEl.removeEventListener('scroll', this._onScroll);\n this._scrollEl = null;\n }\n\n /* ── Cálculo de progreso ─────────────────────────────── */\n\n private _onScroll = (): void => {\n if (this._scrollEl) this._calculate(this._scrollEl);\n };\n\n private _calculate(source: Element | Window): void {\n let p: number;\n\n if (source instanceof Window) {\n const scrolled = window.scrollY;\n const total = document.documentElement.scrollHeight - window.innerHeight;\n p = total > 0 ? Math.min(1, Math.max(0, scrolled / total)) : 0;\n } else {\n const { scrollTop, scrollHeight, clientHeight } = source as Element;\n const total = scrollHeight - clientHeight;\n p = total > 0 ? Math.min(1, Math.max(0, scrollTop / total)) : 0;\n }\n\n const pct = Math.round(p * 100);\n if (pct === this._progress) return;\n this._progress = pct;\n\n /* Actualiza el host directamente para bar / line / vertical\n para evitar un re-render completo en cada frame de scroll */\n this._applyHostStyle();\n }\n\n /* Aplica width / height al host en lugar de forzar un re-render\n para las variantes cuyo elemento visual ES el host */\n private _applyHostStyle(): void {\n const v = this.variant;\n if (v === 'bar' || v === 'line') {\n this.style.width = `${this._progress}%`;\n /* Activa el destello solo cuando hay progreso real y no está al 100% */\n const active = this._progress > 1 && this._progress < 100;\n this.toggleAttribute('active', active);\n } else if (v === 'vertical') {\n this.style.height = `${this._progress}%`;\n }\n }\n\n /* ── Render ──────────────────────────────────────────── */\n\n override render(): TemplateResult {\n return readingProgressTemplate({\n variant: this.variant,\n progress: this._progress,\n dotsCount: this.dotsCount,\n ringSize: this.ringSize,\n });\n }\n\n /* ── Public API ──────────────────────────────────────── */\n\n /** Devuelve el progreso actual (0-100) */\n get progress(): number {\n return this._progress;\n }\n\n /** Fuerza un recálculo inmediato del progreso */\n recalculate(): void {\n if (this._scrollEl) this._calculate(this._scrollEl);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-reading-progress': LibReadingProgress;\n }\n}"],"names":[],"mappings":"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"}
package/dist/index37.js CHANGED
@@ -1,8 +1,7 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
- import { property, state, customElement } from "lit/decorators.js";
3
- import { readingProgressTemplate } from "./index258.js";
4
- import componentCss from "./index259.js";
5
- import sharedTokens from "./index196.js";
2
+ import { state, customElement } from "lit/decorators.js";
3
+ import { rippleTemplate } from "./index330.js";
4
+ import styles from "./index331.js";
6
5
  var __defProp = Object.defineProperty;
7
6
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
7
  var __decorateClass = (decorators, target, key, kind) => {
@@ -13,130 +12,57 @@ var __decorateClass = (decorators, target, key, kind) => {
13
12
  if (kind && result) __defProp(target, key, result);
14
13
  return result;
15
14
  };
16
- let LibReadingProgress = class extends LitElement {
15
+ let LibRipple = class extends LitElement {
17
16
  constructor() {
18
17
  super(...arguments);
19
- this.variant = "bar";
20
- this.tone = "kaki";
21
- this.target = "";
22
- this.dotsCount = 5;
23
- this.ringSize = 28;
24
- this._progress = 0;
25
- this._scrollEl = null;
26
- this._onScroll = () => {
27
- if (this._scrollEl) this._calculate(this._scrollEl);
18
+ this.ripples = [];
19
+ this.count = 0;
20
+ this.createRipple = (event) => {
21
+ console.log("LibRipple: Click detectado en coordenadas:", event.clientX, event.clientY);
22
+ if (!this.parentElement) return;
23
+ const rect = this.parentElement.getBoundingClientRect();
24
+ const size = Math.sqrt(rect.width ** 2 + rect.height ** 2) * 2;
25
+ const x = event.clientX - rect.left - size / 2;
26
+ const y = event.clientY - rect.top - size / 2;
27
+ const id = this.count++;
28
+ const newRipple = { id, x, y, size };
29
+ this.ripples = [...this.ripples, newRipple];
30
+ setTimeout(() => {
31
+ this.ripples = this.ripples.filter((r) => r.id !== id);
32
+ }, 600);
28
33
  };
29
34
  }
30
- /* ── Lifecycle ───────────────────────────────────────── */
31
- connectedCallback() {
32
- super.connectedCallback();
33
- this._bindScroll();
34
- }
35
- disconnectedCallback() {
36
- super.disconnectedCallback();
37
- this._unbindScroll();
38
- }
39
- updated(changed) {
40
- if (changed.has("target")) {
41
- this._unbindScroll();
42
- this._bindScroll();
43
- }
44
- }
45
- /* ── Scroll binding ──────────────────────────────────── */
46
- _bindScroll() {
47
- if (this.target) {
48
- this.updateComplete.then(() => {
49
- const el = document.querySelector(this.target);
50
- if (el) {
51
- this._scrollEl = el;
52
- el.addEventListener("scroll", this._onScroll, { passive: true });
53
- this._calculate(el);
54
- }
55
- });
56
- } else {
57
- this._scrollEl = window;
58
- window.addEventListener("scroll", this._onScroll, { passive: true });
59
- this._calculate(window);
60
- }
61
- }
62
- _unbindScroll() {
63
- if (!this._scrollEl) return;
64
- this._scrollEl.removeEventListener("scroll", this._onScroll);
65
- this._scrollEl = null;
66
- }
67
- _calculate(source) {
68
- let p;
69
- if (source instanceof Window) {
70
- const scrolled = window.scrollY;
71
- const total = document.documentElement.scrollHeight - window.innerHeight;
72
- p = total > 0 ? Math.min(1, Math.max(0, scrolled / total)) : 0;
35
+ // 1. Aseguramos la conexión al padre cuando el componente entra al DOM
36
+ firstUpdated() {
37
+ console.log("LibRipple: ¡Estoy vivo y montado!");
38
+ if (this.parentElement) {
39
+ console.log("LibRipple: Padre detectado ->", this.parentElement.tagName);
40
+ const parentStyle = window.getComputedStyle(this.parentElement);
41
+ if (parentStyle.position === "static") {
42
+ this.parentElement.style.position = "relative";
43
+ }
44
+ this.parentElement.addEventListener("mousedown", this.createRipple);
73
45
  } else {
74
- const { scrollTop, scrollHeight, clientHeight } = source;
75
- const total = scrollHeight - clientHeight;
76
- p = total > 0 ? Math.min(1, Math.max(0, scrollTop / total)) : 0;
46
+ console.error("LibRipple: No se encontró parentElement. ¿Está el componente dentro de un contenedor?");
77
47
  }
78
- const pct = Math.round(p * 100);
79
- if (pct === this._progress) return;
80
- this._progress = pct;
81
- this._applyHostStyle();
82
48
  }
83
- /* Aplica width / height al host en lugar de forzar un re-render
84
- para las variantes cuyo elemento visual ES el host */
85
- _applyHostStyle() {
86
- const v = this.variant;
87
- if (v === "bar" || v === "line") {
88
- this.style.width = `${this._progress}%`;
89
- const active = this._progress > 1 && this._progress < 100;
90
- this.toggleAttribute("active", active);
91
- } else if (v === "vertical") {
92
- this.style.height = `${this._progress}%`;
93
- }
49
+ disconnectedCallback() {
50
+ var _a;
51
+ (_a = this.parentElement) == null ? void 0 : _a.removeEventListener("mousedown", this.createRipple);
52
+ super.disconnectedCallback();
94
53
  }
95
- /* ── Render ──────────────────────────────────────────── */
96
54
  render() {
97
- return readingProgressTemplate({
98
- variant: this.variant,
99
- progress: this._progress,
100
- dotsCount: this.dotsCount,
101
- ringSize: this.ringSize
102
- });
103
- }
104
- /* ── Public API ──────────────────────────────────────── */
105
- /** Devuelve el progreso actual (0-100) */
106
- get progress() {
107
- return this._progress;
108
- }
109
- /** Fuerza un recálculo inmediato del progreso */
110
- recalculate() {
111
- if (this._scrollEl) this._calculate(this._scrollEl);
55
+ return rippleTemplate(this.ripples);
112
56
  }
113
57
  };
114
- LibReadingProgress.styles = [
115
- css`${unsafeCSS(sharedTokens)}`,
116
- css`${unsafeCSS(componentCss)}`
117
- ];
118
- __decorateClass([
119
- property({ type: String, reflect: true })
120
- ], LibReadingProgress.prototype, "variant", 2);
121
- __decorateClass([
122
- property({ type: String, reflect: true })
123
- ], LibReadingProgress.prototype, "tone", 2);
124
- __decorateClass([
125
- property({ type: String })
126
- ], LibReadingProgress.prototype, "target", 2);
127
- __decorateClass([
128
- property({ type: Number, attribute: "dots-count" })
129
- ], LibReadingProgress.prototype, "dotsCount", 2);
130
- __decorateClass([
131
- property({ type: Number, attribute: "ring-size" })
132
- ], LibReadingProgress.prototype, "ringSize", 2);
58
+ LibRipple.styles = [css`${unsafeCSS(styles)}`];
133
59
  __decorateClass([
134
60
  state()
135
- ], LibReadingProgress.prototype, "_progress", 2);
136
- LibReadingProgress = __decorateClass([
137
- customElement("lib-reading-progress")
138
- ], LibReadingProgress);
61
+ ], LibRipple.prototype, "ripples", 2);
62
+ LibRipple = __decorateClass([
63
+ customElement("lib-ripple")
64
+ ], LibRipple);
139
65
  export {
140
- LibReadingProgress
66
+ LibRipple
141
67
  };
142
68
  //# sourceMappingURL=index37.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index37.js","sources":["../src/components/atoms/reading-progress/lib-reading-progress.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { readingProgressTemplate } from './lib-reading-progress.html';\nimport componentCss from './lib-reading-progress.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\nexport type ReadingProgressVariant = 'bar' | 'line' | 'dots' | 'ring' | 'vertical';\nexport type ReadingProgressTone = 'kaki' | 'celadon' | 'ink' | 'kintsugi';\n\n\n/**\n * @element lib-reading-progress\n *\n * Cinco variantes de progreso de lectura — todas se alimentan del mismo\n * valor interno `_progress` (0-100) calculado con scroll.\n *\n * Variantes\n * ─────────\n * bar → 2px debajo del nav. El HOST es el elemento visual.\n * Coloca el componente DENTRO de un contenedor con\n * position:relative; overflow:hidden.\n *\n * line → 1px, más sutil. Mismos requisitos de posicionamiento.\n *\n * dots → fila de N puntos. Display inline-flex. Va dentro del nav.\n *\n * ring → anillo SVG. Display inline-flex. Va junto al brand.\n *\n * vertical → barra fija en el margen izquierdo de la ventana.\n * Se posiciona sola con position:fixed.\n *\n * @attr {ReadingProgressVariant} variant — bar · line · dots · ring · vertical\n * @attr {ReadingProgressTone} tone — kaki · celadon · ink\n * @attr {string} target — selector CSS del contenedor scrollable.\n * Si se omite, trackea window.\n * @attr {number} dots-count — número de puntos (variant=dots, default: 5)\n * @attr {number} ring-size — diámetro del anillo en px (variant=ring, default: 28)\n */\n@customElement('lib-reading-progress')\nexport class LibReadingProgress extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(componentCss)}`,\n ];\n\n /* ── Props ───────────────────────────────────────────── */\n\n @property({ type: String, reflect: true })\n variant: ReadingProgressVariant = 'bar';\n\n @property({ type: String, reflect: true })\n tone: ReadingProgressTone = 'kaki';\n\n /** Selector CSS del elemento scrollable que se quiere observar.\n * Si está vacío, escucha el scroll de window. */\n @property({ type: String })\n target = '';\n\n @property({ type: Number, attribute: 'dots-count' })\n dotsCount = 5;\n\n @property({ type: Number, attribute: 'ring-size' })\n ringSize = 28;\n\n /* ── Estado interno ──────────────────────────────────── */\n\n @state()\n private _progress = 0;\n\n /* ── Elemento scrollable resuelto ───────────────────── */\n\n private _scrollEl: Element | Window | null = null;\n\n /* ── Lifecycle ───────────────────────────────────────── */\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._bindScroll();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._unbindScroll();\n }\n\n override updated(changed: Map<string, unknown>): void {\n /* Si cambia el target, revinculamos el listener */\n if (changed.has('target')) {\n this._unbindScroll();\n this._bindScroll();\n }\n }\n\n /* ── Scroll binding ──────────────────────────────────── */\n\n private _bindScroll(): void {\n if (this.target) {\n /* Esperamos al primer update para que el DOM esté disponible */\n this.updateComplete.then(() => {\n const el = document.querySelector(this.target);\n if (el) {\n this._scrollEl = el;\n el.addEventListener('scroll', this._onScroll, { passive: true });\n this._calculate(el);\n }\n });\n } else {\n this._scrollEl = window;\n window.addEventListener('scroll', this._onScroll, { passive: true });\n this._calculate(window);\n }\n }\n\n private _unbindScroll(): void {\n if (!this._scrollEl) return;\n this._scrollEl.removeEventListener('scroll', this._onScroll);\n this._scrollEl = null;\n }\n\n /* ── Cálculo de progreso ─────────────────────────────── */\n\n private _onScroll = (): void => {\n if (this._scrollEl) this._calculate(this._scrollEl);\n };\n\n private _calculate(source: Element | Window): void {\n let p: number;\n\n if (source instanceof Window) {\n const scrolled = window.scrollY;\n const total = document.documentElement.scrollHeight - window.innerHeight;\n p = total > 0 ? Math.min(1, Math.max(0, scrolled / total)) : 0;\n } else {\n const { scrollTop, scrollHeight, clientHeight } = source as Element;\n const total = scrollHeight - clientHeight;\n p = total > 0 ? Math.min(1, Math.max(0, scrollTop / total)) : 0;\n }\n\n const pct = Math.round(p * 100);\n if (pct === this._progress) return;\n this._progress = pct;\n\n /* Actualiza el host directamente para bar / line / vertical\n para evitar un re-render completo en cada frame de scroll */\n this._applyHostStyle();\n }\n\n /* Aplica width / height al host en lugar de forzar un re-render\n para las variantes cuyo elemento visual ES el host */\n private _applyHostStyle(): void {\n const v = this.variant;\n if (v === 'bar' || v === 'line') {\n this.style.width = `${this._progress}%`;\n /* Activa el destello solo cuando hay progreso real y no está al 100% */\n const active = this._progress > 1 && this._progress < 100;\n this.toggleAttribute('active', active);\n } else if (v === 'vertical') {\n this.style.height = `${this._progress}%`;\n }\n }\n\n /* ── Render ──────────────────────────────────────────── */\n\n override render(): TemplateResult {\n return readingProgressTemplate({\n variant: this.variant,\n progress: this._progress,\n dotsCount: this.dotsCount,\n ringSize: this.ringSize,\n });\n }\n\n /* ── Public API ──────────────────────────────────────── */\n\n /** Devuelve el progreso actual (0-100) */\n get progress(): number {\n return this._progress;\n }\n\n /** Fuerza un recálculo inmediato del progreso */\n recalculate(): void {\n if (this._scrollEl) this._calculate(this._scrollEl);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-reading-progress': LibReadingProgress;\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index37.js","sources":["../src/components/atoms/ripple/lib-ripple.component.ts"],"sourcesContent":["import { LitElement, TemplateResult, css, unsafeCSS } from 'lit';\nimport { customElement, state } from 'lit/decorators.js';\nimport { rippleTemplate } from './lib-ripple.html';\nimport styles from './lib-ripple.css?inline';\n\nexport interface RippleEffect {\n id: number;\n x: number;\n y: number;\n size: number;\n}\n\n@customElement('lib-ripple')\nexport class LibRipple extends LitElement {\n // Importante: usamos unsafeCSS para el string del CSS inyectado\n static override styles = [css`${unsafeCSS(styles)}`];\n\n @state() private ripples: RippleEffect[] = [];\n private count: number = 0;\n\n // 1. Aseguramos la conexión al padre cuando el componente entra al DOM\n override firstUpdated(): void {\n console.log('LibRipple: ¡Estoy vivo y montado!');\n \n if (this.parentElement) {\n console.log('LibRipple: Padre detectado ->', this.parentElement.tagName);\n \n // Forzamos que el padre sea relativo si no lo es\n const parentStyle = window.getComputedStyle(this.parentElement);\n if (parentStyle.position === 'static') {\n this.parentElement.style.position = 'relative';\n }\n\n this.parentElement.addEventListener('mousedown', this.createRipple);\n } else {\n console.error('LibRipple: No se encontró parentElement. ¿Está el componente dentro de un contenedor?');\n }\n }\n\n override disconnectedCallback(): void {\n this.parentElement?.removeEventListener('mousedown', this.createRipple);\n super.disconnectedCallback();\n }\n\n private createRipple = (event: MouseEvent): void => {\n console.log('LibRipple: Click detectado en coordenadas:', event.clientX, event.clientY);\n \n if (!this.parentElement) return;\n\n const rect: DOMRect = this.parentElement.getBoundingClientRect();\n \n // Calculamos el tamaño para cubrir todo el contenedor (Pitágoras pro)\n const size: number = Math.sqrt(rect.width ** 2 + rect.height ** 2) * 2;\n \n const x: number = event.clientX - rect.left - size / 2;\n const y: number = event.clientY - rect.top - size / 2;\n\n const id: number = this.count++;\n const newRipple: RippleEffect = { id, x, y, size };\n \n this.ripples = [...this.ripples, newRipple];\n\n // Limpiamos después de la animación (600ms según tus tokens)\n setTimeout(() => {\n this.ripples = this.ripples.filter(r => r.id !== id);\n }, 600);\n };\n\n protected override render(): TemplateResult {\n return rippleTemplate(this.ripples);\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;AAaO,IAAM,YAAN,cAAwB,WAAW;AAAA,EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA;AAII,SAAQ,UAA0B,CAAA;AAC3C,SAAQ,QAAgB;AA0BxB,SAAQ,eAAe,CAAC,UAA4B;AAClD,cAAQ,IAAI,8CAA8C,MAAM,SAAS,MAAM,OAAO;AAEtF,UAAI,CAAC,KAAK,cAAe;AAEzB,YAAM,OAAgB,KAAK,cAAc,sBAAA;AAGzC,YAAM,OAAe,KAAK,KAAK,KAAK,SAAS,IAAI,KAAK,UAAU,CAAC,IAAI;AAErE,YAAM,IAAY,MAAM,UAAU,KAAK,OAAO,OAAO;AACrD,YAAM,IAAY,MAAM,UAAU,KAAK,MAAM,OAAO;AAEpD,YAAM,KAAa,KAAK;AACxB,YAAM,YAA0B,EAAE,IAAI,GAAG,GAAG,KAAA;AAE5C,WAAK,UAAU,CAAC,GAAG,KAAK,SAAS,SAAS;AAG1C,iBAAW,MAAM;AACf,aAAK,UAAU,KAAK,QAAQ,OAAO,CAAA,MAAK,EAAE,OAAO,EAAE;AAAA,MACrD,GAAG,GAAG;AAAA,IACR;AAAA,EAAA;AAAA;AAAA,EA7CS,eAAqB;AAC5B,YAAQ,IAAI,mCAAmC;AAE/C,QAAI,KAAK,eAAe;AACtB,cAAQ,IAAI,iCAAiC,KAAK,cAAc,OAAO;AAGvE,YAAM,cAAc,OAAO,iBAAiB,KAAK,aAAa;AAC9D,UAAI,YAAY,aAAa,UAAU;AACrC,aAAK,cAAc,MAAM,WAAW;AAAA,MACtC;AAEA,WAAK,cAAc,iBAAiB,aAAa,KAAK,YAAY;AAAA,IACpE,OAAO;AACL,cAAQ,MAAM,uFAAuF;AAAA,IACvG;AAAA,EACF;AAAA,EAES,uBAA6B;;AACpC,eAAK,kBAAL,mBAAoB,oBAAoB,aAAa,KAAK;AAC1D,UAAM,qBAAA;AAAA,EACR;AAAA,EA0BmB,SAAyB;AAC1C,WAAO,eAAe,KAAK,OAAO;AAAA,EACpC;AACF;AA1Da,UAEK,SAAS,CAAC,MAAM,UAAU,MAAM,CAAC,EAAE;AAElC,gBAAA;AAAA,EAAhB,MAAA;AAAM,GAJI,UAIM,WAAA,WAAA,CAAA;AAJN,YAAN,gBAAA;AAAA,EADN,cAAc,YAAY;AAAA,GACd,SAAA;"}