@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/index76.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
- import { property, customElement } from "lit/decorators.js";
3
- import { parallaxTextStackTemplate } from "./index336.js";
4
- import stackCss from "./index337.js";
2
+ import { property, query, customElement } from "lit/decorators.js";
3
+ import { horizontalScrollTemplate } from "./index249.js";
4
+ import sectionCss from "./index250.js";
5
5
  import sharedTokens from "./index196.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -13,100 +13,103 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibParallaxTextStack = class extends LitElement {
16
+ let LibHorizontalScrollSection = class extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
- this.lines = [];
20
- this.speed = 0.15;
21
- this.size = "lg";
22
- this.color = "default";
19
+ this.scrollDuration = 3;
20
+ this.paddingInline = 10;
21
+ this.showProgress = true;
23
22
  this._ticking = false;
24
- this._reducedMotion = false;
25
- this._onMotionChange = (e) => {
26
- this._reducedMotion = e.matches;
27
- if (this._reducedMotion) this._resetLayers();
28
- };
23
+ this._ro = null;
29
24
  this._onScroll = () => {
30
25
  if (this._ticking) return;
31
26
  this._ticking = true;
32
27
  requestAnimationFrame(() => {
33
- this._applyParallax();
28
+ this._calculate();
34
29
  this._ticking = false;
35
30
  });
36
31
  };
37
32
  }
38
- /* ════════════════════════════════════════
39
- Ciclo de vida
40
- ════════════════════════════════════════ */
33
+ /* ── Lifecycle ── */
41
34
  connectedCallback() {
42
35
  super.connectedCallback();
43
- this._motionQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
44
- this._reducedMotion = this._motionQuery.matches;
45
- this._motionQuery.addEventListener("change", this._onMotionChange);
46
36
  window.addEventListener("scroll", this._onScroll, { passive: true });
47
37
  }
48
38
  disconnectedCallback() {
49
39
  var _a;
50
40
  super.disconnectedCallback();
51
41
  window.removeEventListener("scroll", this._onScroll);
52
- (_a = this._motionQuery) == null ? void 0 : _a.removeEventListener("change", this._onMotionChange);
42
+ (_a = this._ro) == null ? void 0 : _a.disconnect();
53
43
  }
54
- /**
55
- * firstUpdated: primer render completado → shadow DOM listo.
56
- * connectedCallback se dispara ANTES de que Lit renderice,
57
- * por lo que querySelectorAll('.pts-layer') devuelve vacío ahí.
58
- */
59
44
  firstUpdated() {
60
- this._applyParallax();
61
- }
62
- /* ════════════════════════════════════════
63
- Lógica del efecto
64
- ════════════════════════════════════════ */
65
- _applyParallax() {
66
- var _a;
67
- if (this._reducedMotion) return;
68
- const layers = (_a = this.shadowRoot) == null ? void 0 : _a.querySelectorAll(".pts-layer");
69
- if (!(layers == null ? void 0 : layers.length)) return;
70
- const rect = this.getBoundingClientRect();
71
- const centerEl = rect.top + rect.height / 2;
72
- const centerVp = window.innerHeight / 2;
73
- const offset = centerVp - centerEl;
74
- layers.forEach((layer, i) => {
75
- const direction = i % 2 === 0 ? 1 : -1;
76
- const factor = (i + 1) * this.speed;
77
- layer.style.transform = `translateX(${offset * factor * direction}px)`;
45
+ this._ro = new ResizeObserver(() => {
46
+ if (!this._ticking) {
47
+ requestAnimationFrame(() => {
48
+ this._calculate();
49
+ this._ticking = false;
50
+ });
51
+ this._ticking = true;
52
+ }
78
53
  });
54
+ this._ro.observe(this);
79
55
  }
80
- _resetLayers() {
81
- var _a;
82
- (_a = this.shadowRoot) == null ? void 0 : _a.querySelectorAll(".pts-layer").forEach((l) => {
83
- l.style.transform = "";
84
- });
56
+ /* ── Props → CSS custom properties ── */
57
+ updated() {
58
+ this.style.setProperty("--_scroll-height", `${this.scrollDuration * 100}vh`);
59
+ this.style.setProperty("--_padding-inline", String(this.paddingInline));
60
+ }
61
+ /* ── Cálculo core ── */
62
+ _calculate() {
63
+ if (!this._content || !this._progressFill || !this._counter) return;
64
+ const rect = this.getBoundingClientRect();
65
+ const scrollable = rect.height - window.innerHeight;
66
+ if (rect.top > 0 || rect.bottom < window.innerHeight) return;
67
+ const scrolled = -rect.top;
68
+ const progress = Math.min(Math.max(scrolled / scrollable, 0), 1);
69
+ const paddingRight = window.innerWidth * (this.paddingInline / 100);
70
+ const maxMove = this._content.scrollWidth - window.innerWidth + paddingRight;
71
+ this._content.style.transform = `translateX(-${progress * maxMove}px)`;
72
+ this._progressFill.style.width = `${progress * 100}%`;
73
+ this._counter.textContent = `${Math.round(progress * 100)}%`;
74
+ this.dispatchEvent(new CustomEvent(
75
+ "ui-lib-scroll-progress",
76
+ {
77
+ detail: { progress, percent: Math.round(progress * 100) },
78
+ bubbles: true,
79
+ composed: true
80
+ }
81
+ ));
85
82
  }
86
83
  render() {
87
- return parallaxTextStackTemplate(this);
84
+ return horizontalScrollTemplate(this);
88
85
  }
89
86
  };
90
- LibParallaxTextStack.styles = [
87
+ LibHorizontalScrollSection.styles = [
91
88
  css`${unsafeCSS(sharedTokens)}`,
92
- css`${unsafeCSS(stackCss)}`
89
+ css`${unsafeCSS(sectionCss)}`
93
90
  ];
94
91
  __decorateClass([
95
- property({ type: Array })
96
- ], LibParallaxTextStack.prototype, "lines", 2);
92
+ property({ type: Number, attribute: "scroll-duration" })
93
+ ], LibHorizontalScrollSection.prototype, "scrollDuration", 2);
94
+ __decorateClass([
95
+ property({ type: Number, attribute: "padding-inline" })
96
+ ], LibHorizontalScrollSection.prototype, "paddingInline", 2);
97
+ __decorateClass([
98
+ property({ type: Boolean, attribute: "show-progress" })
99
+ ], LibHorizontalScrollSection.prototype, "showProgress", 2);
97
100
  __decorateClass([
98
- property({ type: Number })
99
- ], LibParallaxTextStack.prototype, "speed", 2);
101
+ query(".horizontal-content")
102
+ ], LibHorizontalScrollSection.prototype, "_content", 2);
100
103
  __decorateClass([
101
- property({ type: String, reflect: true })
102
- ], LibParallaxTextStack.prototype, "size", 2);
104
+ query(".progress-fill")
105
+ ], LibHorizontalScrollSection.prototype, "_progressFill", 2);
103
106
  __decorateClass([
104
- property({ type: String, reflect: true })
105
- ], LibParallaxTextStack.prototype, "color", 2);
106
- LibParallaxTextStack = __decorateClass([
107
- customElement("lib-parallax-text-stack")
108
- ], LibParallaxTextStack);
107
+ query(".counter")
108
+ ], LibHorizontalScrollSection.prototype, "_counter", 2);
109
+ LibHorizontalScrollSection = __decorateClass([
110
+ customElement("lib-horizontal-scroll-section")
111
+ ], LibHorizontalScrollSection);
109
112
  export {
110
- LibParallaxTextStack
113
+ LibHorizontalScrollSection
111
114
  };
112
115
  //# sourceMappingURL=index76.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index76.js","sources":["../src/components/organisms/parallax-text/lib-parallax-text-stack.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { parallaxTextStackTemplate } from './lib-parallax-text-stack.html';\nimport stackCss from './lib-parallax-text-stack.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { ParallaxTextSize, ParallaxTextColor } from './lib-parallax-text-stack.types';\n\n/**\n * lib-parallax-text-stack — Shibui UI\n *\n * Apila líneas tipográficas con parallax horizontal al hacer scroll.\n * Capas pares → outline (trazo, sin relleno).\n * Capas impares italic serif (relleno).\n *\n * @prop linesArray de strings, una por capa\n * @prop speed Factor de velocidad (default 0.15)\n * @prop size 'sm' | 'md' | 'lg'(default) | 'xl' | '2xl'\n * @prop color 'default' | 'muted' | 'kaki' | 'celadon'\n *\n * IMPORTANTE: el padre debe llevar overflow-x:hidden.\n * El componente NO lo aplica en :host si lo hiciera, el\n * translateX quedaría clipado y el efecto sería invisible.\n */\n@customElement('lib-parallax-text-stack')\nexport class LibParallaxTextStack extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(stackCss)}`,\n ];\n\n @property({ type: Array })\n lines: string[] = [];\n\n @property({ type: Number })\n speed = 0.15;\n\n @property({ type: String, reflect: true })\n size: ParallaxTextSize = 'lg';\n\n @property({ type: String, reflect: true })\n color: ParallaxTextColor = 'default';\n\n /* ── Estado interno ── */\n private _ticking = false;\n private _reducedMotion = false;\n private _motionQuery!: MediaQueryList;\n\n /* ════════════════════════════════════════\n Ciclo de vida\n ════════════════════════════════════════ */\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this._motionQuery = window.matchMedia('(prefers-reduced-motion: reduce)');\n this._reducedMotion = this._motionQuery.matches;\n this._motionQuery.addEventListener('change', this._onMotionChange);\n\n // { passive: true } — no bloquea el hilo principal\n window.addEventListener('scroll', this._onScroll, { passive: true });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('scroll', this._onScroll);\n this._motionQuery?.removeEventListener('change', this._onMotionChange);\n }\n\n /**\n * firstUpdated: primer render completado shadow DOM listo.\n * connectedCallback se dispara ANTES de que Lit renderice,\n * por lo que querySelectorAll('.pts-layer') devuelve vacío ahí.\n */\n override firstUpdated(): void {\n this._applyParallax();\n }\n\n /* ════════════════════════════════════════\n Manejadores\n ════════════════════════════════════════ */\n\n private _onMotionChange = (e: MediaQueryListEvent): void => {\n this._reducedMotion = e.matches;\n if (this._reducedMotion) this._resetLayers();\n };\n\n private _onScroll = (): void => {\n if (this._ticking) return;\n this._ticking = true;\n requestAnimationFrame(() => {\n this._applyParallax();\n this._ticking = false;\n });\n };\n\n /* ════════════════════════════════════════\n Lógica del efecto\n ════════════════════════════════════════ */\n\n private _applyParallax(): void {\n if (this._reducedMotion) return;\n\n // Clase correcta: pts-layer (no parallax-layer del original)\n const layers = this.shadowRoot?.querySelectorAll<HTMLElement>('.pts-layer');\n if (!layers?.length) return;\n\n const rect = this.getBoundingClientRect();\n const centerEl = rect.top + rect.height / 2;\n const centerVp = window.innerHeight / 2;\n // offset > 0: componente bajo el centro capas se separan\n // offset < 0: componente sobre el centro capas se contraen\n const offset = centerVp - centerEl;\n\n layers.forEach((layer, i) => {\n // Capas alternas en direcciones opuestas efecto acordeón\n const direction = i % 2 === 0 ? 1 : -1;\n const factor = (i + 1) * this.speed;\n layer.style.transform = `translateX(${offset * factor * direction}px)`;\n });\n }\n\n private _resetLayers(): void {\n this.shadowRoot\n ?.querySelectorAll<HTMLElement>('.pts-layer')\n .forEach(l => { l.style.transform = ''; });\n }\n\n protected override render(): TemplateResult {\n return parallaxTextStackTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-parallax-text-stack': LibParallaxTextStack;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAwBO,IAAM,uBAAN,cAAmC,WAAW;AAAA,EAA9C,cAAA;AAAA,UAAA,GAAA,SAAA;AAOL,SAAA,QAAkB,CAAA;AAGlB,SAAA,QAAQ;AAGR,SAAA,OAAyB;AAGzB,SAAA,QAA2B;AAG3B,SAAQ,WAAW;AACnB,SAAQ,iBAAiB;AAqCzB,SAAQ,kBAAkB,CAAC,MAAiC;AAC1D,WAAK,iBAAiB,EAAE;AACxB,UAAI,KAAK,eAAgB,MAAK,aAAA;AAAA,IAChC;AAEA,SAAQ,YAAY,MAAY;AAC9B,UAAI,KAAK,SAAU;AACnB,WAAK,WAAW;AAChB,4BAAsB,MAAM;AAC1B,aAAK,eAAA;AACL,aAAK,WAAW;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EA1CS,oBAA0B;AACjC,UAAM,kBAAA;AAEN,SAAK,eAAe,OAAO,WAAW,kCAAkC;AACxE,SAAK,iBAAiB,KAAK,aAAa;AACxC,SAAK,aAAa,iBAAiB,UAAU,KAAK,eAAe;AAGjE,WAAO,iBAAiB,UAAU,KAAK,WAAW,EAAE,SAAS,MAAM;AAAA,EACrE;AAAA,EAES,uBAA6B;;AACpC,UAAM,qBAAA;AACN,WAAO,oBAAoB,UAAU,KAAK,SAAS;AACnD,eAAK,iBAAL,mBAAmB,oBAAoB,UAAU,KAAK;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOS,eAAqB;AAC5B,SAAK,eAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA,EAwBQ,iBAAuB;;AAC7B,QAAI,KAAK,eAAgB;AAGzB,UAAM,UAAS,UAAK,eAAL,mBAAiB,iBAA8B;AAC9D,QAAI,EAAC,iCAAQ,QAAQ;AAErB,UAAM,OAAW,KAAK,sBAAA;AACtB,UAAM,WAAW,KAAK,MAAM,KAAK,SAAS;AAC1C,UAAM,WAAW,OAAO,cAAc;AAGtC,UAAM,SAAW,WAAW;AAE5B,WAAO,QAAQ,CAAC,OAAO,MAAM;AAE3B,YAAM,YAAY,IAAI,MAAM,IAAI,IAAI;AACpC,YAAM,UAAa,IAAI,KAAK,KAAK;AACjC,YAAM,MAAM,YAAY,cAAc,SAAS,SAAS,SAAS;AAAA,IACnE,CAAC;AAAA,EACH;AAAA,EAEQ,eAAqB;;AAC3B,eAAK,eAAL,mBACI,iBAA8B,cAC/B,QAAQ,CAAA,MAAK;AAAE,QAAE,MAAM,YAAY;AAAA,IAAI;AAAA,EAC5C;AAAA,EAEmB,SAAyB;AAC1C,WAAO,0BAA0B,IAAI;AAAA,EACvC;AACF;AA1Ga,qBACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,QAAQ,CAAC;AAC3B;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,MAAA,CAAO;AAAA,GANd,qBAOX,WAAA,SAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GATf,qBAUX,WAAA,SAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAZ9B,qBAaX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAf9B,qBAgBX,WAAA,SAAA,CAAA;AAhBW,uBAAN,gBAAA;AAAA,EADN,cAAc,yBAAyB;AAAA,GAC3B,oBAAA;"}
1
+ {"version":3,"file":"index76.js","sources":["../src/components/organisms/horizontal-scroll-section/lib-horizontal-scroll-section.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { horizontalScrollTemplate } from './lib-horizontal-scroll-section.html';\nimport sectionCss from './lib-horizontal-scroll-section.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { HorizontalScrollProgressEvent } from './lib-horizontal-scroll-section.types';\n\n/**\n * lib-horizontal-scroll-section\n *\n * Convierte scroll vertical en desplazamiento horizontal sticky.\n * El bloque ocupa `scrollDuration` vh de altura — esa \"duración\"\n * determina cuánto debe bajar el usuario para ver todo el contenido.\n *\n * @prop scroll-durationMultiplicador de vh (default 3 → 300vh)\n * @prop padding-inline Padding lateral en vw (default 10 → 10vw)\n * @prop show-progress Muestra barra de progreso y contador (default true)\n *\n * @fires ui-lib-scroll-progress — { detail: HorizontalScrollProgressEvent }\n *\n * @slotItems del carrusel horizontal (flex-shrink: 0 automático)\n *\n * @cssvar --_scroll-height — Sobreescribe la altura total del bloque\n * @cssvar --_gap — Gap entre items (default: calc(--lib-space-xl * 2))\n * @cssvar --_padding-inline — Padding lateral en vw (sincronizado con el prop)\n */\n@customElement('lib-horizontal-scroll-section')\nexport class LibHorizontalScrollSection extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(sectionCss)}`,\n ];\n\n /** Cuántas veces la altura del viewport dura el efecto (default: 3 300vh) */\n @property({ type: Number, attribute: 'scroll-duration' })\n scrollDuration = 3;\n\n /** Padding lateral en vw aplicado a ambos lados del track (default: 10) */\n @property({ type: Number, attribute: 'padding-inline' })\n paddingInline = 10;\n\n /** Muestra la barra de progreso y el contador de porcentaje */\n @property({ type: Boolean, attribute: 'show-progress' })\n showProgress = true;\n\n @query('.horizontal-content') declare private _content: HTMLElement;\n @query('.progress-fill') declare private _progressFill: HTMLElement;\n @query('.counter') declare private _counter: HTMLElement;\n\n private _ticking = false;\n private _ro: ResizeObserver | null = null;\n\n /* ── Lifecycle ── */\n override connectedCallback(): void {\n super.connectedCallback();\n window.addEventListener('scroll', this._onScroll, { passive: true });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('scroll', this._onScroll);\n this._ro?.disconnect();\n }\n\n override firstUpdated(): void {\n // ResizeObserver: recalcula si cambia el viewport o el contenido\n this._ro = new ResizeObserver((): void => {\n // Forzar recálculo en el siguiente frame\n if (!this._ticking) {\n requestAnimationFrame((): void => {\n this._calculate();\n this._ticking = false;\n });\n this._ticking = true;\n }\n });\n this._ro.observe(this);\n }\n\n /* ── Props → CSS custom properties ── */\n override updated(): void {\n this.style.setProperty('--_scroll-height', `${this.scrollDuration * 100}vh`);\n this.style.setProperty('--_padding-inline', String(this.paddingInline));\n }\n\n /* ── Scroll handler — con rAF throttle ── */\n private _onScroll = (): void => {\n if (this._ticking) return;\n this._ticking = true;\n requestAnimationFrame((): void => {\n this._calculate();\n this._ticking = false;\n });\n };\n\n /* ── Cálculo core ── */\n private _calculate(): void {\n if (!this._content || !this._progressFill || !this._counter) return;\n\n const rect = this.getBoundingClientRect();\n const scrollable = rect.height - window.innerHeight;\n\n // Solo actualiza mientras el bloque está sticky en pantalla\n if (rect.top > 0 || rect.bottom < window.innerHeight) return;\n\n const scrolled = -rect.top;\n const progress = Math.min(Math.max(scrolled / scrollable, 0), 1);\n\n // maxMove: cuántos px debe desplazarse el track.\n // scrollWidth incluye el padding-left; el padding-right se añade manualmente\n // porque CSS no lo suma al scrollWidth del flex container.\n const paddingRight = window.innerWidth * (this.paddingInline / 100);\n const maxMove = this._content.scrollWidth - window.innerWidth + paddingRight;\n\n // Mutar el DOM directamente sin Lit reactivity para mantener 60fps\n this._content.style.transform = `translateX(-${progress * maxMove}px)`;\n this._progressFill.style.width = `${progress * 100}%`;\n this._counter.textContent = `${Math.round(progress * 100)}%`;\n\n // Emitir evento solo cuando hay cambio real (evita flooding)\n this.dispatchEvent(new CustomEvent<HorizontalScrollProgressEvent>(\n 'ui-lib-scroll-progress',\n {\n detail: { progress, percent: Math.round(progress * 100) },\n bubbles: true,\n composed: true,\n },\n ));\n }\n\n protected override render(): TemplateResult {\n return horizontalScrollTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-horizontal-scroll-section': LibHorizontalScrollSection;\n }\n}"],"names":[],"mappings":"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"}
package/dist/index77.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
- import { property, state, customElement } from "lit/decorators.js";
3
- import timelineCss from "./index338.js";
2
+ import { property, customElement } from "lit/decorators.js";
3
+ import { parallaxTemplate } from "./index251.js";
4
+ import parallaxCss from "./index252.js";
4
5
  import sharedTokens from "./index196.js";
5
- import { timelineItemTemplate } from "./index339.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
8
  var __decorateClass = (decorators, target, key, kind) => {
@@ -13,106 +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 LibTimelineItem = class extends LitElement {
16
+ let LibParallaxContainer = class extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
- this.nKind = "dot";
20
- this.nodeColor = "default";
21
- this.icon = "circle";
22
- this.avatar = "";
23
- this.status = "default";
24
- this.lineVariant = "solid";
25
- this.lineProgress = 0;
26
- this.hideLine = false;
27
- this.timestamp = "";
28
- this.title = "";
29
- this.body = "";
30
- this.card = false;
31
- this.collapsible = false;
32
- this._collapsed = false;
19
+ this.speed = 0.2;
20
+ this.axis = "y";
21
+ this.clamp = 0;
22
+ this._observer = null;
23
+ this._isVisible = false;
24
+ this._ticking = false;
25
+ this._reducedMotion = false;
26
+ this._onScroll = () => {
27
+ if (!this._isVisible || this._reducedMotion) return;
28
+ if (this._ticking) return;
29
+ this._ticking = true;
30
+ requestAnimationFrame(() => {
31
+ this._applyParallax();
32
+ this._ticking = false;
33
+ });
34
+ };
33
35
  }
34
- /* ── API pública ── */
35
- /** Expande el ítem si es collapsible */
36
- expand() {
37
- this._collapsed = false;
36
+ /* ── Lifecycle ── */
37
+ connectedCallback() {
38
+ super.connectedCallback();
39
+ const mq = window.matchMedia("(prefers-reduced-motion: reduce)");
40
+ this._reducedMotion = mq.matches;
41
+ mq.addEventListener("change", (e) => {
42
+ this._reducedMotion = e.matches;
43
+ if (this._reducedMotion) this._resetTransforms();
44
+ });
45
+ window.addEventListener("scroll", this._onScroll, { passive: true });
46
+ this._setupObserver();
38
47
  }
39
- /** Contrae el ítem si es collapsible */
40
- collapse() {
41
- this._collapsed = true;
48
+ disconnectedCallback() {
49
+ var _a;
50
+ super.disconnectedCallback();
51
+ window.removeEventListener("scroll", this._onScroll);
52
+ (_a = this._observer) == null ? void 0 : _a.disconnect();
53
+ this._observer = null;
42
54
  }
43
- /* ── Render ── */
44
- render() {
45
- return timelineItemTemplate({
46
- nodeType: this.nKind,
47
- nodeColor: this.nodeColor,
48
- icon: this.icon,
49
- avatar: this.avatar,
50
- status: this.status,
51
- lineVariant: this.lineVariant,
52
- lineProgress: this.lineProgress,
53
- hideLine: this.hideLine,
54
- timestamp: this.timestamp,
55
- title: this.title,
56
- body: this.body,
57
- card: this.card,
58
- collapsed: this._collapsed,
59
- collapsible: this.collapsible,
60
- onToggleCollapse: () => {
61
- this._collapsed = !this._collapsed;
55
+ /* ── IntersectionObserver — activa/desactiva will-change ── */
56
+ _setupObserver() {
57
+ this._observer = new IntersectionObserver(
58
+ (entries) => {
59
+ const entry = entries[0];
60
+ if (!entry) return;
61
+ this._isVisible = entry.isIntersecting;
62
+ if (this._isVisible) {
63
+ this.setAttribute("visible", "");
64
+ requestAnimationFrame(() => this._applyParallax());
65
+ } else {
66
+ this.removeAttribute("visible");
67
+ }
68
+ },
69
+ { threshold: 0.01 }
70
+ );
71
+ this._observer.observe(this);
72
+ }
73
+ /**
74
+ * Cálculo del desplazamiento parallax.
75
+ *
76
+ * Fórmula: centerOffset = distancia entre el centro del elemento
77
+ * y el centro del viewport. Cuando el elemento está centrado en
78
+ * pantalla → offset = 0, sin desplazamiento.
79
+ * Cuando el elemento sube por encima → offset negativo → el elemento
80
+ * se desplaza hacia arriba (más rápido o más lento que el scroll).
81
+ *
82
+ * Esto es más correcto que `(scrollY - offsetTop) * speed` porque:
83
+ * 1. No depende del offsetParent (fiable en Shadow DOM)
84
+ * 2. El punto neutro es el centro visual, no el top de la página
85
+ */
86
+ _applyParallax() {
87
+ var _a;
88
+ const slot = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector("slot");
89
+ if (!slot) return;
90
+ const rect = this.getBoundingClientRect();
91
+ const centerOffset = rect.top + rect.height / 2 - window.innerHeight / 2;
92
+ const elements = slot.assignedElements();
93
+ elements.forEach((el) => {
94
+ const factor = parseFloat(el.dataset["parallaxFactor"] ?? "1");
95
+ const move = centerOffset * this.speed * factor;
96
+ const clamped = this.clamp > 0 ? Math.min(Math.max(move, -this.clamp), this.clamp) : move;
97
+ switch (this.axis) {
98
+ case "x":
99
+ el.style.transform = `translate3d(${clamped}px, 0, 0)`;
100
+ break;
101
+ case "xy":
102
+ el.style.transform = `translate3d(${clamped}px, ${clamped}px, 0)`;
103
+ break;
104
+ case "y":
105
+ default:
106
+ el.style.transform = `translate3d(0, ${clamped}px, 0)`;
62
107
  }
63
108
  });
64
109
  }
110
+ /** Limpia los transforms (p.ej. al activar prefers-reduced-motion en runtime) */
111
+ _resetTransforms() {
112
+ var _a;
113
+ const slot = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector("slot");
114
+ const elements = slot == null ? void 0 : slot.assignedElements();
115
+ elements == null ? void 0 : elements.forEach((el) => {
116
+ el.style.transform = "";
117
+ });
118
+ }
119
+ render() {
120
+ return parallaxTemplate();
121
+ }
65
122
  };
66
- LibTimelineItem.styles = [
123
+ LibParallaxContainer.styles = [
67
124
  css`${unsafeCSS(sharedTokens)}`,
68
- css`${unsafeCSS(timelineCss)}`
125
+ css`${unsafeCSS(parallaxCss)}`
69
126
  ];
70
127
  __decorateClass([
71
- property({ type: String, reflect: true, attribute: "node-type" })
72
- ], LibTimelineItem.prototype, "nKind", 2);
73
- __decorateClass([
74
- property({ type: String, reflect: true, attribute: "node-color" })
75
- ], LibTimelineItem.prototype, "nodeColor", 2);
76
- __decorateClass([
77
- property({ type: String })
78
- ], LibTimelineItem.prototype, "icon", 2);
79
- __decorateClass([
80
- property({ type: String })
81
- ], LibTimelineItem.prototype, "avatar", 2);
128
+ property({ type: Number })
129
+ ], LibParallaxContainer.prototype, "speed", 2);
82
130
  __decorateClass([
83
131
  property({ type: String, reflect: true })
84
- ], LibTimelineItem.prototype, "status", 2);
85
- __decorateClass([
86
- property({ type: String, reflect: true, attribute: "line-variant" })
87
- ], LibTimelineItem.prototype, "lineVariant", 2);
88
- __decorateClass([
89
- property({ type: Number, attribute: "line-progress" })
90
- ], LibTimelineItem.prototype, "lineProgress", 2);
91
- __decorateClass([
92
- property({ type: Boolean, reflect: true, attribute: "hide-line" })
93
- ], LibTimelineItem.prototype, "hideLine", 2);
94
- __decorateClass([
95
- property({ type: String })
96
- ], LibTimelineItem.prototype, "timestamp", 2);
97
- __decorateClass([
98
- property({ type: String })
99
- ], LibTimelineItem.prototype, "title", 2);
100
- __decorateClass([
101
- property({ type: String })
102
- ], LibTimelineItem.prototype, "body", 2);
103
- __decorateClass([
104
- property({ type: Boolean, reflect: true })
105
- ], LibTimelineItem.prototype, "card", 2);
106
- __decorateClass([
107
- property({ type: Boolean, reflect: true })
108
- ], LibTimelineItem.prototype, "collapsible", 2);
132
+ ], LibParallaxContainer.prototype, "axis", 2);
109
133
  __decorateClass([
110
- state()
111
- ], LibTimelineItem.prototype, "_collapsed", 2);
112
- LibTimelineItem = __decorateClass([
113
- customElement("lib-timeline-item")
114
- ], LibTimelineItem);
134
+ property({ type: Number })
135
+ ], LibParallaxContainer.prototype, "clamp", 2);
136
+ LibParallaxContainer = __decorateClass([
137
+ customElement("lib-parallax-container")
138
+ ], LibParallaxContainer);
115
139
  export {
116
- LibTimelineItem
140
+ LibParallaxContainer
117
141
  };
118
142
  //# sourceMappingURL=index77.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index77.js","sources":["../src/components/organisms/timeline/lib-timeline-item.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport timelineCss from './lib-timeline.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport { timelineItemTemplate } from './lib-timeline-item.html';\nimport type {\n TimelineNodeType,\n TimelineNodeColor,\n TimelineItemStatus,\n TimelineLineVariant,\n} from './lib-timeline-item.types';\n\n/**\n * @element lib-timeline-item\n *\n * Ítem de timeline. Debe usarse dentro de `<lib-timeline>`.\n *\n * @prop {TimelineNodeType} node-type — Tipo de nodo: dot · icon · avatar (default: 'dot')\n * @prop {TimelineNodeColor} node-color — Color del nodo: default · kaki · celadon · error · muted\n * @prop {string} icon — Nombre de icono Phosphor (node-type='icon')\n * @prop {string} avatar — Iniciales (node-type='avatar')\n * @prop {TimelineItemStatus} status — Estado: default · active · done · error · pending\n * @prop {TimelineLineVariant} line-variantEstilo de línea: solid · dashed · progress\n * @prop {number} line-progress Progreso de la línea 0–100 (line-variant='progress')\n * @prop {boolean} hide-line — Oculta la línea (útil en el último ítem)\n * @prop {string} timestamp Texto de fecha/hora\n * @prop {string} title — Título del evento\n * @prop {string} body — Texto descriptivo (alternativa al slot)\n * @prop {boolean} card — Envuelve el contenido en una tarjeta con borde\n * @prop {boolean} collapsible Muestra botón de expandir/contraer\n *\n * @slot — Contenido libre (body del evento)\n * @slot meta — Badges, avatares y metadatos en fila\n * @slot media Imágenes o bloques adjuntos (solo dentro de card)\n */\n@customElement('lib-timeline-item')\nexport class LibTimelineItem extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(timelineCss)}`,\n ];\n\n /* ── Nodo ── */\n\n @property({ type: String, reflect: true, attribute: 'node-type' })\n nKind: TimelineNodeType = 'dot';\n\n @property({ type: String, reflect: true, attribute: 'node-color' })\n nodeColor: TimelineNodeColor = 'default';\n\n @property({ type: String })\n icon = 'circle';\n\n @property({ type: String })\n avatar = '';\n\n /* ── Estado ── */\n\n @property({ type: String, reflect: true })\n status: TimelineItemStatus = 'default';\n\n /* ── Línea ── */\n\n @property({ type: String, reflect: true, attribute: 'line-variant' })\n lineVariant: TimelineLineVariant = 'solid';\n\n @property({ type: Number, attribute: 'line-progress' })\n lineProgress = 0;\n\n @property({ type: Boolean, reflect: true, attribute: 'hide-line' })\n hideLine = false;\n\n /* ── Contenido ── */\n\n @property({ type: String })\n timestamp = '';\n\n @property({ type: String })\n override title = '';\n\n @property({ type: String })\n body = '';\n\n @property({ type: Boolean, reflect: true })\n card = false;\n\n /* ── Collapsible ── */\n\n @property({ type: Boolean, reflect: true })\n collapsible = false;\n\n @state() private _collapsed = false;\n\n /* ── API pública ── */\n\n /** Expande el ítem si es collapsible */\n public expand(): void {\n this._collapsed = false;\n }\n\n /** Contrae el ítem si es collapsible */\n public collapse(): void {\n this._collapsed = true;\n }\n\n /* ── Render ── */\n\n protected override render(): TemplateResult {\n return timelineItemTemplate({\n nodeType: this.nKind,\n nodeColor: this.nodeColor,\n icon: this.icon,\n avatar: this.avatar,\n status: this.status,\n lineVariant: this.lineVariant,\n lineProgress: this.lineProgress,\n hideLine: this.hideLine,\n timestamp: this.timestamp,\n title: this.title,\n body: this.body,\n card: this.card,\n collapsed: this._collapsed,\n collapsible: this.collapsible,\n onToggleCollapse: (): void => { this._collapsed = !this._collapsed; },\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-timeline-item': LibTimelineItem;\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index77.js","sources":["../src/components/organisms/parallax-container/lib-parallax.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { parallaxTemplate } from './lib-parallax.html';\nimport parallaxCss from './lib-parallax.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { ParallaxAxis } from './lib-parallax.types';\n\n/**\n * lib-parallax-container\n *\n * Aplica desplazamiento parallax a los hijos directos del slot\n * al hacer scroll. El efecto es 0 cuando el elemento está centrado\n * en el viewport, y se desplaza proporcionalmente al alejarse del centro.\n *\n * Cada hijo puede sobrescribir el multiplicador con `data-parallax-factor`.\n * Ejemplo: `<div data-parallax-factor=\"0.3\">fondo lento</div>`\n * `<div data-parallax-factor=\"2\">elemento rápido</div>`\n *\n * @prop speedMultiplicador de desplazamiento base (default 0.2)\n * @prop axis Eje del efecto: 'y' | 'x' | 'xy' (default 'y')\n * @prop clamp Máximo desplazamiento en px (0 = sin límite, default 0)\n *\n * @cssvar --parallax-speed Alternativa CSS al prop speed (no reactivo)\n *\n * @slot — Elementos a desplazar. Cada hijo acepta data-parallax-factor.\n */\n@customElement('lib-parallax-container')\nexport class LibParallaxContainer extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(parallaxCss)}`,\n ];\n\n /** Multiplicador de desplazamiento base */\n @property({ type: Number })\n speed = 0.2;\n\n /** Eje sobre el que opera el efecto */\n @property({ type: String, reflect: true })\n axis: ParallaxAxis = 'y';\n\n /** Máximo desplazamiento absoluto en px (0 = sin límite) */\n @property({ type: Number })\n clamp = 0;\n\n private _observer: IntersectionObserver | null = null;\n private _isVisible = false;\n private _ticking = false;\n private _reducedMotion = false;\n\n /* ── Lifecycle ── */\n override connectedCallback(): void {\n super.connectedCallback();\n // matchMedia para prefers-reduced-motion\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\n this._reducedMotion = mq.matches;\n mq.addEventListener('change', (e: MediaQueryListEvent): void => {\n this._reducedMotion = e.matches;\n if (this._reducedMotion) this._resetTransforms();\n });\n\n window.addEventListener('scroll', this._onScroll, { passive: true });\n this._setupObserver();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('scroll', this._onScroll);\n this._observer?.disconnect();\n this._observer = null;\n }\n\n /* ── IntersectionObserver — activa/desactiva will-change ── */\n private _setupObserver(): void {\n this._observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]): void => {\n const entry = entries[0];\n if (!entry) return;\n this._isVisible = entry.isIntersecting;\n // Sincroniza el atributo [visible] → activa/desactiva will-change via CSS\n if (this._isVisible) {\n this.setAttribute('visible', '');\n // Calcular posición inicial al entrar en viewport\n requestAnimationFrame((): void => this._applyParallax());\n } else {\n this.removeAttribute('visible');\n }\n },\n { threshold: 0.01 },\n );\n this._observer.observe(this);\n }\n\n /* ── Scroll handler con rAF throttle ── */\n private _onScroll = (): void => {\n if (!this._isVisible || this._reducedMotion) return;\n if (this._ticking) return;\n this._ticking = true;\n requestAnimationFrame((): void => {\n this._applyParallax();\n this._ticking = false;\n });\n };\n\n /**\n * Cálculo del desplazamiento parallax.\n *\n * Fórmula: centerOffset = distancia entre el centro del elemento\n * y el centro del viewport. Cuando el elemento está centrado en\n * pantalla → offset = 0, sin desplazamiento.\n * Cuando el elemento sube por encima → offset negativo → el elemento\n * se desplaza hacia arriba (más rápido o más lento que el scroll).\n *\n * Esto es más correcto que `(scrollY - offsetTop) * speed` porque:\n * 1. No depende del offsetParent (fiable en Shadow DOM)\n * 2. El punto neutro es el centro visual, no el top de la página\n */\n private _applyParallax(): void {\n const slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement | null;\n if (!slot) return;\n\n const rect = this.getBoundingClientRect();\n const centerOffset = (rect.top + rect.height / 2) - (window.innerHeight / 2);\n\n const elements = slot.assignedElements() as HTMLElement[];\n\n elements.forEach((el): void => {\n const factor = parseFloat(el.dataset['parallaxFactor'] ?? '1');\n const move = centerOffset * this.speed * factor;\n const clamped = this.clamp > 0\n ? Math.min(Math.max(move, -this.clamp), this.clamp)\n : move;\n\n switch (this.axis) {\n case 'x':\n el.style.transform = `translate3d(${clamped}px, 0, 0)`;\n break;\n case 'xy':\n el.style.transform = `translate3d(${clamped}px, ${clamped}px, 0)`;\n break;\n case 'y':\n default:\n el.style.transform = `translate3d(0, ${clamped}px, 0)`;\n }\n });\n }\n\n /** Limpia los transforms (p.ej. al activar prefers-reduced-motion en runtime) */\n private _resetTransforms(): void {\n const slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement | null;\n const elements = slot?.assignedElements() as HTMLElement[] | undefined;\n elements?.forEach((el): void => { el.style.transform = ''; });\n }\n\n protected override render(): TemplateResult {\n return parallaxTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-parallax-container': LibParallaxContainer;\n }\n}"],"names":[],"mappings":"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"}