@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/index82.js CHANGED
@@ -1,7 +1,6 @@
1
- import { unsafeCSS, css, LitElement } from "lit";
1
+ import { unsafeCSS, css, LitElement, html } from "lit";
2
2
  import { property, customElement } from "lit/decorators.js";
3
- import { renderFooter } from "./index346.js";
4
- import componentCss from "./index347.js";
3
+ import timelineCss from "./index261.js";
5
4
  import sharedTokens from "./index196.js";
6
5
  var __defProp = Object.defineProperty;
7
6
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -13,141 +12,30 @@ var __decorateClass = (decorators, target, key, kind) => {
13
12
  if (kind && result) __defProp(target, key, result);
14
13
  return result;
15
14
  };
16
- let LibFooter = class extends LitElement {
15
+ let LibTimeline = class extends LitElement {
17
16
  constructor() {
18
17
  super(...arguments);
19
- this.variant = "social";
20
- this.brandName = "shibui";
21
- this.brandKanji = "渋";
22
- this.brandSub = "Design System · Zaragoza";
23
- this.location = "Zaragoza";
24
- this.version = "1.0.0";
25
- this.nodeVersion = "v22.0.0";
26
- this.githubHref = "#";
27
- this.linkedinHref = "#";
28
- this.rssHref = "#";
29
- this.email = "";
30
- this.columns = [
31
- {
32
- heading: "Librería",
33
- links: [
34
- { label: "Componentes", href: "#" },
35
- { label: "Tokens", href: "#" },
36
- { label: "Estilos", href: "#" }
37
- ]
38
- },
39
- {
40
- heading: "Ecosistema",
41
- links: [
42
- { label: "GitHub", href: "#" },
43
- { label: "NPM", href: "#" },
44
- { label: "Storybook", href: "#" }
45
- ]
46
- },
47
- {
48
- heading: "Recursos",
49
- links: [
50
- { label: "Docs", href: "#" },
51
- { label: "Changelog", href: "#" },
52
- { label: "Roadmap", href: "#" }
53
- ]
54
- }
55
- ];
56
- this.navLinks = [
57
- { label: "Componentes", href: "#" },
58
- { label: "Tokens", href: "#" },
59
- { label: "MIT License", href: "#" }
60
- ];
61
- this.legalLinks = [
62
- { label: "privacy.md", href: "#" },
63
- { label: "terms.md", href: "#" }
64
- ];
65
- this.runtimeLines = [
66
- { key: "node", value: "v22.0.0" },
67
- { key: "css", value: "pure · no-build" },
68
- { key: "fonts", value: "google CDN" },
69
- { key: "deps", value: "0" },
70
- { key: "size", value: "~180kb total" }
71
- ];
18
+ this.size = "md";
72
19
  }
73
- /* ── Computed ── */
74
- get year() {
75
- return (/* @__PURE__ */ new Date()).getFullYear();
76
- }
77
- /* ── Behaviour ── */
78
- /**
79
- * Abre / cierra un ítem de acordeón.
80
- * @internal
81
- */
82
- _toggleAccordion(trigger) {
83
- const body = trigger.nextElementSibling;
84
- const arrow = trigger.querySelector(".ft-acc-arrow");
85
- if (!body) return;
86
- const isOpen = body.style.maxHeight !== "" && body.style.maxHeight !== "0px";
87
- body.style.maxHeight = isOpen ? "0" : "300px";
88
- trigger.setAttribute("aria-expanded", String(!isOpen));
89
- if (arrow) {
90
- arrow.style.transform = isOpen ? "rotate(0deg)" : "rotate(180deg)";
91
- }
92
- }
93
- /* ── Render ── */
94
20
  render() {
95
- return renderFooter(this);
21
+ return html`
22
+ <div class="tl" role="list">
23
+ <slot></slot>
24
+ </div>
25
+ `;
96
26
  }
97
27
  };
98
- LibFooter.styles = [
28
+ LibTimeline.styles = [
99
29
  css`${unsafeCSS(sharedTokens)}`,
100
- css`${unsafeCSS(componentCss)}`
30
+ css`${unsafeCSS(timelineCss)}`
101
31
  ];
102
32
  __decorateClass([
103
- property({ type: String })
104
- ], LibFooter.prototype, "variant", 2);
105
- __decorateClass([
106
- property({ type: String, attribute: "brand-name" })
107
- ], LibFooter.prototype, "brandName", 2);
108
- __decorateClass([
109
- property({ type: String, attribute: "brand-kanji" })
110
- ], LibFooter.prototype, "brandKanji", 2);
111
- __decorateClass([
112
- property({ type: String, attribute: "brand-sub" })
113
- ], LibFooter.prototype, "brandSub", 2);
114
- __decorateClass([
115
- property({ type: String })
116
- ], LibFooter.prototype, "location", 2);
117
- __decorateClass([
118
- property({ type: String })
119
- ], LibFooter.prototype, "version", 2);
120
- __decorateClass([
121
- property({ type: String, attribute: "node-version" })
122
- ], LibFooter.prototype, "nodeVersion", 2);
123
- __decorateClass([
124
- property({ type: String, attribute: "github-href" })
125
- ], LibFooter.prototype, "githubHref", 2);
126
- __decorateClass([
127
- property({ type: String, attribute: "linkedin-href" })
128
- ], LibFooter.prototype, "linkedinHref", 2);
129
- __decorateClass([
130
- property({ type: String, attribute: "rss-href" })
131
- ], LibFooter.prototype, "rssHref", 2);
132
- __decorateClass([
133
- property({ type: String })
134
- ], LibFooter.prototype, "email", 2);
135
- __decorateClass([
136
- property({ type: Array })
137
- ], LibFooter.prototype, "columns", 2);
138
- __decorateClass([
139
- property({ type: Array, attribute: "nav-links" })
140
- ], LibFooter.prototype, "navLinks", 2);
141
- __decorateClass([
142
- property({ type: Array, attribute: "legal-links" })
143
- ], LibFooter.prototype, "legalLinks", 2);
144
- __decorateClass([
145
- property({ type: Array, attribute: "runtime-lines" })
146
- ], LibFooter.prototype, "runtimeLines", 2);
147
- LibFooter = __decorateClass([
148
- customElement("lib-footer")
149
- ], LibFooter);
33
+ property({ type: String, reflect: true })
34
+ ], LibTimeline.prototype, "size", 2);
35
+ LibTimeline = __decorateClass([
36
+ customElement("lib-timeline")
37
+ ], LibTimeline);
150
38
  export {
151
- LibFooter
39
+ LibTimeline
152
40
  };
153
41
  //# sourceMappingURL=index82.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index82.js","sources":["../src/components/organisms/footer/lib-footer.component.ts"],"sourcesContent":["import { LitElement, TemplateResult, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { FooterColumn, FooterLink, FooterVariant } from './lib-footer.types';\nimport { renderFooter } from './lib-footer.html';\nimport componentCss from './lib-footer.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\n/**\n * `<lib-footer>` Footer polimórfico con 4 variantes de diseño.\n *\n * @tag lib-footer\n *\n * @attr {string} variant - Estilo del footer: 'social' | 'accordion' | 'kintsugi' | 'glitch'\n * @attr {string} brand-name - Nombre de marca (ej: \"shibui\")\n * @attr {string} brand-kanji - Caracter kanji decorativo (ej: \"渋\")\n * @attr {string} brand-sub - Subtítulo bajo el logo (ej: \"Design System · Zaragoza\")\n * @attr {string} location - Ciudad / país para el copyright\n * @attr {string} version - Versión del producto (ej: \"1.0.0\")\n * @attr {string} node-version - Versión de Node para la variante glitch (ej: \"v22.0.0\")\n * @attr {string} github-href - URL de GitHub\n * @attr {string} linkedin-href- URL de LinkedIn\n * @attr {string} rss-href - URL del feed RSS\n * @attr {string} email - Dirección de email de contacto\n *\n * @prop {FooterColumn[]} columns - Columnas de navegación (accordion / kintsugi)\n * @prop {FooterLink[]} nav-links - Links de navegación planos (social / glitch)\n * @prop {FooterLink[]} legal-links - Links de pie (privacidad, términos, etc.)\n * @prop {RuntimeLine[]} runtime-lines- Líneas de la tabla runtime (variante glitch)\n *\n * @fires ui-lib-footer-link-click - Cuando se pulsa un enlace del footer\n * @detail { label: string; href: string }\n */\n@customElement('lib-footer')\nexport class LibFooter extends LitElement {\n\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(componentCss)}`,\n ];\n\n /* ── Props principales ── */\n\n @property({ type: String })\n variant: FooterVariant = 'social';\n\n @property({ type: String, attribute: 'brand-name' })\n brandName = 'shibui';\n\n @property({ type: String, attribute: 'brand-kanji' })\n brandKanji = '';\n\n @property({ type: String, attribute: 'brand-sub' })\n brandSub = 'Design System · Zaragoza';\n\n @property({ type: String })\n location = 'Zaragoza';\n\n @property({ type: String })\n version = '1.0.0';\n\n @property({ type: String, attribute: 'node-version' })\n nodeVersion = 'v22.0.0';\n\n @property({ type: String, attribute: 'github-href' })\n githubHref = '#';\n\n @property({ type: String, attribute: 'linkedin-href' })\n linkedinHref = '#';\n\n @property({ type: String, attribute: 'rss-href' })\n rssHref = '#';\n\n @property({ type: String })\n email = '';\n\n /* ── Props de datos (pasadas como JSON o JS) ── */\n\n @property({ type: Array })\n columns: FooterColumn[] = [\n {\n heading: 'Librería',\n links: [\n { label: 'Componentes', href: '#' },\n { label: 'Tokens', href: '#' },\n { label: 'Estilos', href: '#' },\n ],\n },\n {\n heading: 'Ecosistema',\n links: [\n { label: 'GitHub', href: '#' },\n { label: 'NPM', href: '#' },\n { label: 'Storybook', href: '#' },\n ],\n },\n {\n heading: 'Recursos',\n links: [\n { label: 'Docs', href: '#' },\n { label: 'Changelog', href: '#' },\n { label: 'Roadmap', href: '#' },\n ],\n },\n ];\n\n @property({ type: Array, attribute: 'nav-links' })\n navLinks: FooterLink[] = [\n { label: 'Componentes', href: '#' },\n { label: 'Tokens', href: '#' },\n { label: 'MIT License', href: '#' },\n ];\n\n @property({ type: Array, attribute: 'legal-links' })\n legalLinks: FooterLink[] = [\n { label: 'privacy.md', href: '#' },\n { label: 'terms.md', href: '#' },\n ];\n\n @property({ type: Array, attribute: 'runtime-lines' })\n runtimeLines: { key: string; value: string }[] = [\n { key: 'node', value: 'v22.0.0' },\n { key: 'css', value: 'pure · no-build' },\n { key: 'fonts', value: 'google CDN' },\n { key: 'deps', value: '0' },\n { key: 'size', value: '~180kb total' },\n ];\n\n /* ── Computed ── */\n\n get year(): number {\n return new Date().getFullYear();\n }\n\n /* ── Behaviour ── */\n\n /**\n * Abre / cierra un ítem de acordeón.\n * @internal\n */\n _toggleAccordion(trigger: HTMLElement): void {\n const body = trigger.nextElementSibling as HTMLElement | null;\n const arrow = trigger.querySelector('.ft-acc-arrow') as HTMLElement | null;\n\n if (!body) return;\n\n const isOpen = body.style.maxHeight !== '' && body.style.maxHeight !== '0px';\n\n body.style.maxHeight = isOpen ? '0' : '300px';\n trigger.setAttribute('aria-expanded', String(!isOpen));\n\n if (arrow) {\n arrow.style.transform = isOpen ? 'rotate(0deg)' : 'rotate(180deg)';\n }\n }\n\n /* ── Render ── */\n\n protected override render(): TemplateResult {\n return renderFooter(this);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index82.js","sources":["../src/components/organisms/timeline/lib-timeline.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport timelineCss from './lib-timeline.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { TimelineSize } from './lib-timeline-item.types';\n\n/**\n * @element lib-timeline\n *\n * Contenedor de timeline. Acepta `<lib-timeline-item>` en su slot.\n *\n * @prop {TimelineSize} size Tamaño global: sm · md · lg (default: 'md')\n *\n * @slot Ítems del timeline (lib-timeline-item)\n */\n@customElement('lib-timeline')\nexport class LibTimeline extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(timelineCss)}`,\n ];\n\n @property({ type: String, reflect: true })\n size: TimelineSize = 'md';\n\n protected override render(): TemplateResult {\n return html`\n <div class=\"tl\" role=\"list\">\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-timeline': LibTimeline;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;AAgBO,IAAM,cAAN,cAA0B,WAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAOL,SAAA,OAAqB;AAAA,EAAA;AAAA,EAEF,SAAyB;AAC1C,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKT;AACF;AAhBa,YACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,WAAW,CAAC;AAC9B;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAN9B,YAOX,WAAA,QAAA,CAAA;AAPW,cAAN,gBAAA;AAAA,EADN,cAAc,cAAc;AAAA,GAChB,WAAA;"}
package/dist/index83.js CHANGED
@@ -1,8 +1,8 @@
1
- import { unsafeCSS, css, LitElement, html } from "lit";
2
- import { property, customElement } from "lit/decorators.js";
3
- import cursorCss from "./index348.js";
1
+ import { unsafeCSS, css, LitElement } from "lit";
2
+ import { property, state, customElement } from "lit/decorators.js";
3
+ import timelineCss from "./index261.js";
4
4
  import sharedTokens from "./index196.js";
5
- import { CURSOR_MODES } from "./index349.js";
5
+ import { timelineItemTemplate } from "./index262.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
8
  var __decorateClass = (decorators, target, key, kind) => {
@@ -13,235 +13,106 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibCursorFollower = class extends LitElement {
16
+ let LibTimelineItem = class extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
- this.mode = "ink";
20
- this.lerp = 0;
21
- this.trail = false;
22
- this._mouse = { x: -200, y: -200 };
23
- this._lerped = { x: -200, y: -200 };
24
- this._curstate = "hidden";
25
- this._lastTrail = { x: 0, y: 0, t: 0 };
26
- this._rafId = 0;
27
- this._onMove = (e) => {
28
- this._mouse.x = e.clientX;
29
- this._mouse.y = e.clientY;
30
- const dot = this._dot;
31
- if (dot) {
32
- dot.style.left = `${e.clientX}px`;
33
- dot.style.top = `${e.clientY}px`;
34
- }
35
- const label = this._label;
36
- if (label == null ? void 0 : label.classList.contains("is-visible")) {
37
- label.style.left = `${e.clientX}px`;
38
- label.style.top = `${e.clientY}px`;
39
- }
40
- if (this.trail) this._maybeSpawnTrail(e.clientX, e.clientY);
41
- if (this._curstate === "hidden") this._setState("default");
42
- };
43
- this._onLeave = () => {
44
- this._setState("hidden");
45
- };
46
- this._onEnter = () => {
47
- this._setState("default");
48
- };
49
- this._onDown = () => {
50
- this._setState("press");
51
- };
52
- this._onUp = () => {
53
- const el = document.elementFromPoint(this._mouse.x, this._mouse.y);
54
- this._setState(this._detectState(el));
55
- };
56
- this._onOver = (e) => {
57
- if (this._curstate === "press") return;
58
- const el = e.target;
59
- const state = this._detectState(el);
60
- this._setState(state);
61
- const isDark = !!(el == null ? void 0 : el.closest('[data-cursor-zone="dark"]'));
62
- this.toggleAttribute("dark-zone", isDark);
63
- const labelAnchor = el == null ? void 0 : el.closest("[data-cursor-label]");
64
- const label = this._label;
65
- if (label) {
66
- if (labelAnchor == null ? void 0 : labelAnchor.dataset["cursorLabel"]) {
67
- label.textContent = labelAnchor.dataset["cursorLabel"];
68
- label.classList.add("is-visible");
69
- label.style.left = `${this._mouse.x}px`;
70
- label.style.top = `${this._mouse.y}px`;
71
- } else {
72
- label.classList.remove("is-visible");
73
- }
74
- }
75
- };
76
- this._loop = () => {
77
- const factor = this.lerp > 0 ? this.lerp : CURSOR_MODES[this.mode].lerpFactor;
78
- this._lerped.x += (this._mouse.x - this._lerped.x) * factor;
79
- this._lerped.y += (this._mouse.y - this._lerped.y) * factor;
80
- const ring = this._ring;
81
- if (ring) {
82
- ring.style.left = `${this._lerped.x}px`;
83
- ring.style.top = `${this._lerped.y}px`;
84
- }
85
- this._rafId = requestAnimationFrame(this._loop);
86
- };
87
- }
88
- /* ── Refs a los elementos del shadow ── */
89
- get _dot() {
90
- return this.shadowRoot.querySelector(".cur-dot");
91
- }
92
- get _ring() {
93
- return this.shadowRoot.querySelector(".cur-ring");
94
- }
95
- get _label() {
96
- return this.shadowRoot.querySelector(".cur-label");
97
- }
98
- /* ── Lifecycle ── */
99
- connectedCallback() {
100
- super.connectedCallback();
101
- document.documentElement.style.cursor = "none";
102
- window.addEventListener("mousemove", this._onMove, { passive: true });
103
- window.addEventListener("mouseleave", this._onLeave, { passive: true });
104
- window.addEventListener("mouseenter", this._onEnter, { passive: true });
105
- window.addEventListener("mousedown", this._onDown, { passive: true });
106
- window.addEventListener("mouseup", this._onUp, { passive: true });
107
- window.addEventListener("mouseover", this._onOver, { passive: true });
108
- this._rafId = requestAnimationFrame(this._loop);
109
- }
110
- disconnectedCallback() {
111
- super.disconnectedCallback();
112
- document.documentElement.style.cursor = "";
113
- window.removeEventListener("mousemove", this._onMove);
114
- window.removeEventListener("mouseleave", this._onLeave);
115
- window.removeEventListener("mouseenter", this._onEnter);
116
- window.removeEventListener("mousedown", this._onDown);
117
- window.removeEventListener("mouseup", this._onUp);
118
- window.removeEventListener("mouseover", this._onOver);
119
- cancelAnimationFrame(this._rafId);
120
- }
121
- /** Aplica el modo visual al dot y ring */
122
- updated(changed) {
123
- if (changed.has("mode")) {
124
- this._applyMode();
125
- }
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;
126
33
  }
127
34
  /* ── API pública ── */
128
- /** Cambia el modo en tiempo de ejecución */
129
- setMode(mode) {
130
- this.mode = mode;
35
+ /** Expande el ítem si es collapsible */
36
+ expand() {
37
+ this._collapsed = false;
131
38
  }
132
- /** Activa o desactiva el trail de tinta */
133
- toggleTrail() {
134
- this.trail = !this.trail;
135
- this._lastTrail = { x: this._mouse.x, y: this._mouse.y, t: performance.now() };
39
+ /** Contrae el ítem si es collapsible */
40
+ collapse() {
41
+ this._collapsed = true;
136
42
  }
137
43
  /* ── Render ── */
138
44
  render() {
139
- return html`
140
- <div class="cur-dot" part="dot"></div>
141
- <div class="cur-ring" part="ring"></div>
142
- <div class="cur-label" part="label"></div>
143
- `;
144
- }
145
- /* ── Helpers ── */
146
- _detectState(el) {
147
- if (!el) return "default";
148
- const textZone = el.closest('[data-cursor-zone="text"]');
149
- if (textZone && el.matches("p, h1, h2, h3, h4, h5, h6, em, strong, span:not(.cursor-zone-label)")) {
150
- return "text";
151
- }
152
- if (el.matches('a, button, input, select, textarea, [role="button"], [data-interactive], .interactive')) {
153
- return "hover";
154
- }
155
- if (el.closest('a, button, [role="button"]')) {
156
- return "hover";
157
- }
158
- return "default";
159
- }
160
- _setState(state) {
161
- if (this._curstate === state) return;
162
- this._curstate = state;
163
- this.setAttribute("curstate", state);
164
- }
165
- /** Aplica los estilos base del modo al dot y ring */
166
- _applyMode() {
167
- const m = CURSOR_MODES[this.mode];
168
- if (!m) return;
169
- const dot = this._dot;
170
- const ring = this._ring;
171
- if (!dot || !ring) return;
172
- dot.style.background = m.dotBg;
173
- dot.style.width = m.dotSize;
174
- dot.style.height = m.dotSize;
175
- ring.style.border = m.ringBorder;
176
- ring.style.background = m.ringBg;
177
- ring.style.width = m.ringSize;
178
- ring.style.height = m.ringSize;
179
- ring.style.mixBlendMode = m.ringMix;
180
- }
181
- /** Genera partículas de tinta proporcionales a la velocidad */
182
- _maybeSpawnTrail(x, y) {
183
- const now = performance.now();
184
- const dx = x - this._lastTrail.x;
185
- const dy = y - this._lastTrail.y;
186
- const dist = Math.sqrt(dx * dx + dy * dy);
187
- const dt = Math.max(1, now - this._lastTrail.t);
188
- const speed = dist / dt;
189
- if (dist > 4) {
190
- this._spawnTrailParticle(x, y, speed);
191
- this._lastTrail = { x, y, t: now };
192
- }
193
- }
194
- _spawnTrailParticle(x, y, speed) {
195
- const size = Math.max(2, Math.min(8, speed * 1.5));
196
- const isLight = this.mode === "ghost";
197
- const color = isLight ? "rgba(250,247,244,0.4)" : "var(--color-kaki-500)";
198
- const el = document.createElement("div");
199
- el.style.cssText = `
200
- position: fixed;
201
- border-radius: 50%;
202
- pointer-events: none;
203
- z-index: 9997;
204
- left: ${x}px;
205
- top: ${y}px;
206
- width: ${size}px;
207
- height: ${size}px;
208
- background: ${color};
209
- transform: translate(-50%, -50%) scale(1);
210
- opacity: 0.4;
211
- animation: lib-ink-fade ${600 + speed * 50}ms cubic-bezier(0.2, 0, 0.8, 1) forwards;
212
- `;
213
- document.body.appendChild(el);
214
- setTimeout(() => el.remove(), 900);
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;
62
+ }
63
+ });
215
64
  }
216
65
  };
217
- LibCursorFollower.styles = [
66
+ LibTimelineItem.styles = [
218
67
  css`${unsafeCSS(sharedTokens)}`,
219
- css`${unsafeCSS(cursorCss)}`
68
+ css`${unsafeCSS(timelineCss)}`
220
69
  ];
70
+ __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);
221
82
  __decorateClass([
222
83
  property({ type: String, reflect: true })
223
- ], LibCursorFollower.prototype, "mode", 2);
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);
224
106
  __decorateClass([
225
- property({ type: Number })
226
- ], LibCursorFollower.prototype, "lerp", 2);
107
+ property({ type: Boolean, reflect: true })
108
+ ], LibTimelineItem.prototype, "collapsible", 2);
227
109
  __decorateClass([
228
- property({ type: Boolean })
229
- ], LibCursorFollower.prototype, "trail", 2);
230
- LibCursorFollower = __decorateClass([
231
- customElement("lib-cursor-follower")
232
- ], LibCursorFollower);
233
- if (!document.head.querySelector("#lib-cursor-keyframes")) {
234
- const s = document.createElement("style");
235
- s.id = "lib-cursor-keyframes";
236
- s.textContent = `
237
- @keyframes lib-ink-fade {
238
- 0% { opacity: 0.4; transform: translate(-50%,-50%) scale(1); }
239
- 100% { opacity: 0; transform: translate(-50%,-50%) scale(0.2); }
240
- }
241
- `;
242
- document.head.appendChild(s);
243
- }
110
+ state()
111
+ ], LibTimelineItem.prototype, "_collapsed", 2);
112
+ LibTimelineItem = __decorateClass([
113
+ customElement("lib-timeline-item")
114
+ ], LibTimelineItem);
244
115
  export {
245
- LibCursorFollower
116
+ LibTimelineItem
246
117
  };
247
118
  //# sourceMappingURL=index83.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index83.js","sources":["../src/components/organisms/cursor-follower/lib-cursor-follower.component.ts"],"sourcesContent":["import { LitElement, html, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport cursorCss from './lib-cursor-follower.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport { CURSOR_MODES } from './lib-cursor-follower.types';\nimport type { CursorMode, CursorState } from './lib-cursor-follower.types';\n\n/**\n * @element lib-cursor-follower\n *\n * Cursor personalizado con tres capas: dot exacto, ring con lerp e inercia,\n * y label contextual. Detecta automáticamente el tipo de elemento bajo el cursor.\n *\n * Coloca el componente una sola vez al inicio del <body>. Se encarga de ocultar\n * el cursor nativo del documento.\n *\n * @prop {CursorMode} mode — ink · minimal · kaki · ghost (default: 'ink')\n * @prop {number} lerp — Factor de interpolación del ring 0–1 (override del modo)\n * @prop {boolean} trail — Activa la cola de tinta al mover rápido\n *\n * @method setMode(mode) — Cambia el modo en tiempo de ejecución\n * @method toggleTrail() — Activa/desactiva el trail\n *\n * @csspart dot — El punto exacto\n * @csspart ring — El anillo con lag\n * @csspart label — La etiqueta contextual\n */\n@customElement('lib-cursor-follower')\nexport class LibCursorFollower extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(cursorCss)}`,\n ];\n\n /* ── Props ── */\n\n @property({ type: String, reflect: true })\n mode: CursorMode = 'ink';\n\n @property({ type: Number })\n lerp = 0; // 0 = usar el del modo\n\n @property({ type: Boolean })\n trail = false;\n\n /* ── Estado interno del cursor (no reactivo — actualizado en rAF) ── */\n\n /** Posición exacta del ratón */\n private _mouse = { x: -200, y: -200 };\n /** Posición interpolada del ring */\n private _lerped = { x: -200, y: -200 };\n\n /** Estado contextual actual */\n private _curstate: CursorState = 'hidden';\n\n /** Anclajes para el trail */\n private _lastTrail = { x: 0, y: 0, t: 0 };\n private _rafId = 0;\n\n /* ── Refs a los elementos del shadow ── */\n\n private get _dot(): HTMLElement { return this.shadowRoot!.querySelector('.cur-dot') as HTMLElement; }\n private get _ring(): HTMLElement { return this.shadowRoot!.querySelector('.cur-ring') as HTMLElement; }\n private get _label(): HTMLElement { return this.shadowRoot!.querySelector('.cur-label') as HTMLElement; }\n\n /* ── Lifecycle ── */\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Ocultar cursor nativo\n document.documentElement.style.cursor = 'none';\n\n window.addEventListener('mousemove', this._onMove, { passive: true });\n window.addEventListener('mouseleave', this._onLeave, { passive: true });\n window.addEventListener('mouseenter', this._onEnter, { passive: true });\n window.addEventListener('mousedown', this._onDown, { passive: true });\n window.addEventListener('mouseup', this._onUp, { passive: true });\n window.addEventListener('mouseover', this._onOver, { passive: true });\n\n this._rafId = requestAnimationFrame(this._loop);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n document.documentElement.style.cursor = '';\n\n window.removeEventListener('mousemove', this._onMove);\n window.removeEventListener('mouseleave', this._onLeave);\n window.removeEventListener('mouseenter', this._onEnter);\n window.removeEventListener('mousedown', this._onDown);\n window.removeEventListener('mouseup', this._onUp);\n window.removeEventListener('mouseover', this._onOver);\n\n cancelAnimationFrame(this._rafId);\n }\n\n /** Aplica el modo visual al dot y ring */\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('mode')) {\n this._applyMode();\n }\n }\n\n /* ── API pública ── */\n\n /** Cambia el modo en tiempo de ejecución */\n public setMode(mode: CursorMode): void {\n this.mode = mode;\n }\n\n /** Activa o desactiva el trail de tinta */\n public toggleTrail(): void {\n this.trail = !this.trail;\n this._lastTrail = { x: this._mouse.x, y: this._mouse.y, t: performance.now() };\n }\n\n /* ── Render ── */\n\n protected override render(): TemplateResult {\n return html`\n <div class=\"cur-dot\" part=\"dot\"></div>\n <div class=\"cur-ring\" part=\"ring\"></div>\n <div class=\"cur-label\" part=\"label\"></div>\n `;\n }\n\n /* ── Event handlers ── */\n\n private _onMove = (e: MouseEvent): void => {\n this._mouse.x = e.clientX;\n this._mouse.y = e.clientY;\n\n // Dot sigue instantáneamente\n const dot = this._dot;\n if (dot) {\n dot.style.left = `${e.clientX}px`;\n dot.style.top = `${e.clientY}px`;\n }\n\n // Label sigue al dot\n const label = this._label;\n if (label?.classList.contains('is-visible')) {\n label.style.left = `${e.clientX}px`;\n label.style.top = `${e.clientY}px`;\n }\n\n // Trail\n if (this.trail) this._maybeSpawnTrail(e.clientX, e.clientY);\n\n // Si estaba oculto, restaurar\n if (this._curstate === 'hidden') this._setState('default');\n };\n\n private _onLeave = (): void => { this._setState('hidden'); };\n private _onEnter = (): void => { this._setState('default'); };\n private _onDown = (): void => { this._setState('press'); };\n private _onUp = (): void => {\n // Volver al estado previo al press\n const el = document.elementFromPoint(this._mouse.x, this._mouse.y);\n this._setState(this._detectState(el));\n };\n\n private _onOver = (e: MouseEvent): void => {\n if (this._curstate === 'press') return; // no interrumpir press\n\n const el = e.target as Element | null;\n const state = this._detectState(el);\n this._setState(state);\n\n // Zona oscura — el ring adapta el color\n const isDark = !!el?.closest('[data-cursor-zone=\"dark\"]');\n this.toggleAttribute('dark-zone', isDark);\n\n // Label contextual\n const labelAnchor = el?.closest('[data-cursor-label]') as HTMLElement | null;\n const label = this._label;\n if (label) {\n if (labelAnchor?.dataset['cursorLabel']) {\n label.textContent = labelAnchor.dataset['cursorLabel'];\n label.classList.add('is-visible');\n label.style.left = `${this._mouse.x}px`;\n label.style.top = `${this._mouse.y}px`;\n } else {\n label.classList.remove('is-visible');\n }\n }\n };\n\n /* ── Loop de animación del ring ── */\n\n private _loop = (): void => {\n const factor = this.lerp > 0\n ? this.lerp\n : CURSOR_MODES[this.mode].lerpFactor;\n\n this._lerped.x += (this._mouse.x - this._lerped.x) * factor;\n this._lerped.y += (this._mouse.y - this._lerped.y) * factor;\n\n const ring = this._ring;\n if (ring) {\n ring.style.left = `${this._lerped.x}px`;\n ring.style.top = `${this._lerped.y}px`;\n }\n\n this._rafId = requestAnimationFrame(this._loop);\n };\n\n /* ── Helpers ── */\n\n private _detectState(el: Element | null): CursorState {\n if (!el) return 'default';\n\n // Texto editable / seleccionable\n const textZone = el.closest('[data-cursor-zone=\"text\"]');\n if (textZone && el.matches('p, h1, h2, h3, h4, h5, h6, em, strong, span:not(.cursor-zone-label)')) {\n return 'text';\n }\n\n // Elemento interactivo\n if (el.matches('a, button, input, select, textarea, [role=\"button\"], [data-interactive], .interactive')) {\n return 'hover';\n }\n if (el.closest('a, button, [role=\"button\"]')) {\n return 'hover';\n }\n\n return 'default';\n }\n\n private _setState(state: CursorState): void {\n if (this._curstate === state) return;\n this._curstate = state;\n this.setAttribute('curstate', state);\n }\n\n /** Aplica los estilos base del modo al dot y ring */\n private _applyMode(): void {\n const m = CURSOR_MODES[this.mode];\n if (!m) return;\n\n const dot = this._dot;\n const ring = this._ring;\n if (!dot || !ring) return;\n\n dot.style.background = m.dotBg;\n dot.style.width = m.dotSize;\n dot.style.height = m.dotSize;\n\n ring.style.border = m.ringBorder;\n ring.style.background = m.ringBg;\n ring.style.width = m.ringSize;\n ring.style.height = m.ringSize;\n ring.style.mixBlendMode = m.ringMix;\n }\n\n /** Genera partículas de tinta proporcionales a la velocidad */\n private _maybeSpawnTrail(x: number, y: number): void {\n const now = performance.now();\n const dx = x - this._lastTrail.x;\n const dy = y - this._lastTrail.y;\n const dist = Math.sqrt(dx * dx + dy * dy);\n const dt = Math.max(1, now - this._lastTrail.t);\n const speed = dist / dt;\n\n if (dist > 4) {\n this._spawnTrailParticle(x, y, speed);\n this._lastTrail = { x, y, t: now };\n }\n }\n\n private _spawnTrailParticle(x: number, y: number, speed: number): void {\n const size = Math.max(2, Math.min(8, speed * 1.5));\n const isLight = this.mode === 'ghost';\n const color = isLight\n ? 'rgba(250,247,244,0.4)'\n : 'var(--color-kaki-500)';\n\n const el = document.createElement('div');\n el.style.cssText = `\n position: fixed;\n border-radius: 50%;\n pointer-events: none;\n z-index: 9997;\n left: ${x}px;\n top: ${y}px;\n width: ${size}px;\n height: ${size}px;\n background: ${color};\n transform: translate(-50%, -50%) scale(1);\n opacity: 0.4;\n animation: lib-ink-fade ${600 + speed * 50}ms cubic-bezier(0.2, 0, 0.8, 1) forwards;\n `;\n document.body.appendChild(el);\n setTimeout(() => el.remove(), 900);\n }\n}\n\n/* Keyframe global para las partículas de trail */\nif (!document.head.querySelector('#lib-cursor-keyframes')) {\n const s = document.createElement('style');\n s.id = 'lib-cursor-keyframes';\n s.textContent = `\n @keyframes lib-ink-fade {\n 0% { opacity: 0.4; transform: translate(-50%,-50%) scale(1); }\n 100% { opacity: 0; transform: translate(-50%,-50%) scale(0.2); }\n }\n `;\n document.head.appendChild(s);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-cursor-follower': LibCursorFollower;\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index83.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-variant — Estilo 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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"}