@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
@@ -1 +1 @@
1
- {"version":3,"file":"index8.js","sources":["../src/components/atoms/text-list/lib-text-list.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport textListCss from './lib-text-list.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport { textListTemplate } from './lib-text-list.html';\nimport type {\n ListFamily,\n ContentItem,\n UiItem,\n UiRow,\n DlItem,\n ContentMarker,\n OrderedCounter,\n ListSize,\n DlLayout,\n ListRowClickDetail,\n ListToggleDetail,\n} from './lib-text-list.types';\n\n/**\n * @element lib-text-list\n *\n * Sistema de listas con tres familias:\n *\n * **Content list** (`family=\"ul\" | \"ol\"`) — listas tipográficas para prosa.\n * Marcadores: default · kaki · dash · check.\n * Contadores (ol): decimal · roman · alpha.\n *\n * **UI list** (`family=\"ui\"`) — filas de interfaz con icono, avatar,\n * meta, badge, toggle, chevron. Soporta separadores y headers de sección.\n *\n * **Description list** (`family=\"dl\"`) — pares clave/valor.\n * Layouts: inline · wide · stack.\n *\n * @prop {ListFamily} family — Familia activa (default: 'ul')\n *\n * — Content list —\n * @prop {ContentItem[]} items — Ítems de contenido\n * @prop {ContentMarker} marker — Tipo de viñeta (default: 'default')\n * @prop {OrderedCounter} counter — Tipo de contador ol (default: 'decimal')\n * @prop {ListSize} size — Tamaño (default: 'md')\n *\n * UI list —\n * @prop {UiItem[]} uiItems — Filas, separadores y headers\n * @prop {boolean} divided — Separadores entre filas\n * @prop {boolean} bordered — Borde exterior\n * @prop {boolean} inset — Fondo de superficie\n * @prop {boolean} interactive — Hover + cursor pointer\n *\n * — Description list —\n * @prop {DlItem[]} dlItems — Pares clave/valor\n * @prop {DlLayout} dlLayout — Layout (default: 'inline')\n * @prop {boolean} dlDivided — Separadores entre pares\n *\n * Global —\n * @prop {boolean} dark — Superficie oscura\n * @prop {boolean} loading — Estado de carga (skeleton)\n * @prop {number} skeletonCount — Número de skeletons (default: 4)\n *\n * @fires ui-lib-row-click — Al hacer clic en una fila UI\n * Detail: { key: string, item: UiRow }\n * @fires ui-lib-toggle — Al cambiar un toggle en una fila UI\n * Detail: { key: string, value: boolean }\n */\n@customElement('lib-text-list')\nexport class LibTextList extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(textListCss)}`,\n ];\n\n /* ── Familia ── */\n\n @property({ type: String, reflect: true })\n family: ListFamily = 'ul';\n\n /* ── Content list ── */\n\n @property({ type: Array })\n items: ContentItem[] = [];\n\n @property({ type: String, reflect: true })\n marker: ContentMarker = 'default';\n\n @property({ type: String, reflect: true })\n counter: OrderedCounter = 'decimal';\n\n @property({ type: String, reflect: true })\n size: ListSize = 'md';\n\n /* ── UI list ── */\n\n @property({ type: Array, attribute: 'ui-items' })\n uiItems: UiItem[] = [];\n\n @property({ type: Boolean, reflect: true })\n divided = false;\n\n @property({ type: Boolean, reflect: true })\n bordered = false;\n\n @property({ type: Boolean, reflect: true })\n inset = false;\n\n @property({ type: Boolean, reflect: true })\n interactive = false;\n\n /* ── Description list ── */\n\n @property({ type: Array, attribute: 'dl-items' })\n dlItems: DlItem[] = [];\n\n @property({ type: String, reflect: true, attribute: 'dl-layout' })\n dlLayout: DlLayout = 'inline';\n\n @property({ type: Boolean, reflect: true, attribute: 'dl-divided' })\n dlDivided = false;\n\n /* ── Global ── */\n\n @property({ type: Boolean, reflect: true })\n dark = false;\n\n @property({ type: Boolean, reflect: true })\n loading = false;\n\n @property({ type: Number, attribute: 'skeleton-count' })\n skeletonCount = 4;\n\n /* ── Handlers ── */\n\n private _handleRowClick(item: UiRow): void {\n this.dispatchEvent(\n new CustomEvent<ListRowClickDetail>('ui-lib-row-click', {\n detail: { key: item.key, item },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private _handleToggle(item: UiRow, value: boolean): void {\n this.dispatchEvent(\n new CustomEvent<ListToggleDetail>('ui-lib-toggle', {\n detail: { key: item.key, value },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /* ── Render ── */\n\n protected override render(): TemplateResult {\n /* Loading skeleton — solo content list */\n if (this.loading && (this.family === 'ul' || this.family === 'ol')) {\n const skeletons: ContentItem[] = Array.from(\n { length: this.skeletonCount },\n (_, i): ContentItem => ({ label: `skeleton-${i}` })\n );\n\n return textListTemplate({\n family: this.family,\n contentItems: skeletons,\n marker: 'default',\n counter: this.counter,\n size: this.size,\n nested: false,\n uiItems: [],\n divided: this.divided,\n bordered: this.bordered,\n inset: this.inset,\n interactive: this.interactive,\n dark: this.dark,\n dlItems: [],\n dlLayout: this.dlLayout,\n dlDivided: this.dlDivided,\n onRowClick: (): void => {},\n onToggle: (): void => {},\n });\n }\n\n return textListTemplate({\n family: this.family,\n contentItems: this.items,\n marker: this.marker,\n counter: this.counter,\n size: this.size,\n nested: false,\n uiItems: this.uiItems,\n divided: this.divided,\n bordered: this.bordered,\n inset: this.inset,\n interactive: this.interactive,\n dark: this.dark,\n dlItems: this.dlItems,\n dlLayout: this.dlLayout,\n dlDivided: this.dlDivided,\n onRowClick: (item): void => this._handleRowClick(item),\n onToggle: (item, v): void => this._handleToggle(item, v),\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-text-list': LibTextList;\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index8.js","sources":["../src/components/atoms/badge/lib-badge.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport type { LibBadgeVariant, LibBadgeSize } from './lib-badge.html';\nimport { badgeTemplate } from './lib-badge.html';\nimport badgeCss from './lib-badge.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\n/**\n * @element lib-badge\n *\n * Indicador visual compacto para estado, notificaciones o etiquetas.\n *\n * @slot - Contenido del badge (texto o icono)\n * @csspart badge - El elemento <span> raíz del badge\n *\n * @example\n * <lib-badge variant=\"success\" dot>Activo</lib-badge>\n * <lib-badge variant=\"error\">Error</lib-badge>\n * <lib-badge variant=\"accent\" pill>Nuevo</lib-badge>\n */\n@customElement('lib-badge')\nexport class LibBadge extends LitElement {\n static override styles = [\n css`\n ${unsafeCSS(sharedTokens)}\n `,\n css`\n ${unsafeCSS(badgeCss)}\n `,\n ];\n\n /** Variante visual del badge */\n @property({ type: String, reflect: true })\n variant: LibBadgeVariant = 'default';\n\n /** Tamaño del badge */\n @property({ type: String, reflect: true })\n size: LibBadgeSize = 'md';\n\n /** Muestra un punto indicador de color a la izquierda del texto */\n @property({ type: Boolean, reflect: true })\n dot = false;\n\n /** Aplica border-radius completo (estilo píldora) */\n @property({ type: Boolean, reflect: true })\n pill = false;\n\n override render(): TemplateResult {\n return badgeTemplate({\n variant: this.variant,\n size: this.size,\n dot: this.dot,\n pill: this.pill,\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-badge': LibBadge;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAqBO,IAAM,WAAN,cAAuB,WAAW;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AAYL,SAAA,UAA2B;AAI3B,SAAA,OAAqB;AAIrB,SAAA,MAAM;AAIN,SAAA,OAAO;AAAA,EAAA;AAAA,EAEE,SAAyB;AAChC,WAAO,cAAc;AAAA,MACnB,SAAS,KAAK;AAAA,MACd,MAAM,KAAK;AAAA,MACX,KAAK,KAAK;AAAA,MACV,MAAM,KAAK;AAAA,IAAA,CACZ;AAAA,EACH;AACF;AAlCa,SACK,SAAS;AAAA,EACvB;AAAA,QACI,UAAU,YAAY,CAAC;AAAA;AAAA,EAE3B;AAAA,QACI,UAAU,QAAQ,CAAC;AAAA;AAEzB;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAX9B,SAYX,WAAA,WAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAf9B,SAgBX,WAAA,QAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAnB/B,SAoBX,WAAA,OAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAvB/B,SAwBX,WAAA,QAAA,CAAA;AAxBW,WAAN,gBAAA;AAAA,EADN,cAAc,WAAW;AAAA,GACb,QAAA;"}
package/dist/index80.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
- import { property, query, queryAssignedElements, customElement } from "lit/decorators.js";
3
- import { carouselTemplate } from "./index342.js";
4
- import carouselCss from "./index343.js";
2
+ import { property, queryAssignedElements, customElement } from "lit/decorators.js";
3
+ import { staggerTemplate } from "./index257.js";
4
+ import staggerCss from "./index258.js";
5
5
  import sharedTokens from "./index196.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -13,210 +13,128 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibCarousel = class extends LitElement {
16
+ const DIRECTION_MAP = {
17
+ up: "translateY(var(--lib-space-lg))",
18
+ down: "translateY(calc(-1 * var(--lib-space-lg)))",
19
+ left: "translateX(var(--lib-space-lg))",
20
+ right: "translateX(calc(-1 * var(--lib-space-lg)))",
21
+ fade: "none"
22
+ };
23
+ const EASING_MAP = {
24
+ default: "var(--ease-default)",
25
+ out: "var(--ease-out)",
26
+ bounce: "var(--ease-bounce)"
27
+ };
28
+ let LibStaggerContainer = class extends LitElement {
17
29
  constructor() {
18
30
  super(...arguments);
19
- this.mode = "slide";
20
- this.peek = 1;
21
- this.arrows = true;
22
- this.dots = true;
23
- this.counter = false;
24
- this.loop = false;
25
- this.autoplay = 0;
26
- this._current = 0;
27
- this._total = 0;
31
+ this.delay = 100;
32
+ this.duration = 600;
33
+ this.direction = "up";
34
+ this.easing = "out";
35
+ this.threshold = 0.15;
36
+ this.once = true;
37
+ this._observer = null;
38
+ }
39
+ /* ── Lifecycle ── */
40
+ /**
41
+ * firstUpdated: el DOM ya está renderizado y el slot poblado.
42
+ * Es el momento correcto para iniciar el observer,
43
+ * a diferencia de connectedCallback que dispara antes del render.
44
+ */
45
+ firstUpdated() {
46
+ var _a;
47
+ this._applyCssVars();
48
+ this._setupObserver();
49
+ const slot = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector("slot");
50
+ slot == null ? void 0 : slot.addEventListener("slotchange", () => {
51
+ this._applyCssVars();
52
+ });
28
53
  }
29
- /* ── Lifecycle ──────────────────────────────────────── */
30
54
  disconnectedCallback() {
55
+ var _a;
31
56
  super.disconnectedCallback();
32
- this._clearAutoplay();
33
- }
34
- render() {
35
- return carouselTemplate({
36
- mode: this.mode,
37
- current: this._current,
38
- total: this._total,
39
- peek: this.peek,
40
- arrows: this.arrows,
41
- dots: this.dots,
42
- counter: this.counter,
43
- loop: this.loop,
44
- handlePrev: this._prev.bind(this),
45
- handleNext: this._next.bind(this),
46
- handleDot: this._goTo.bind(this),
47
- handleSlot: this._onSlotChange.bind(this),
48
- handleThumb: this._onThumbSlotChange.bind(this),
49
- handleKey: this._onKeyDown.bind(this)
50
- });
51
- }
52
- /* ── Slot handlers ──────────────────────────────────── */
53
- _onSlotChange() {
54
- this._total = this._slides.length;
55
- this._applyState(this._current, false);
56
- this._syncThumbs();
57
- this.requestUpdate();
58
- this._clearAutoplay();
59
- this._startAutoplay();
60
- }
61
- _onThumbSlotChange() {
62
- this._syncThumbs();
63
- }
64
- /* ── Navigation ─────────────────────────────────────── */
65
- _prev() {
66
- if (this._current === 0) {
67
- if (this.loop) this._goTo(this._total - 1);
68
- } else {
69
- this._goTo(this._current - 1);
70
- }
71
- }
72
- _next() {
73
- if (this._current === this._total - 1) {
74
- if (this.loop) this._goTo(0);
75
- } else {
76
- this._goTo(this._current + 1);
77
- }
78
- }
79
- _goTo(index) {
80
- if (!this._total) return;
81
- const clamped = Math.max(0, Math.min(index, this._total - 1));
82
- this._applyState(clamped, true);
83
- this._syncThumbs();
84
- this.requestUpdate();
85
- this.dispatchEvent(
86
- new CustomEvent("ui-lib-slide-change", {
87
- detail: { current: this._current, total: this._total },
88
- bubbles: true,
89
- composed: true
90
- })
91
- );
92
- }
93
- /* ── Apply visual state ─────────────────────────────── */
94
- _applyState(index, animate) {
95
- this._current = index;
96
- if (this.mode === "fade") {
97
- this._applyFade();
98
- } else {
99
- this._applySlide(animate);
100
- }
101
- }
102
- _applySlide(animate) {
103
- if (!this._trackEl) return;
104
- if (!animate) {
105
- this._trackEl.style.transition = "none";
106
- void this._trackEl.offsetHeight;
107
- } else {
108
- this._trackEl.style.transition = "";
109
- }
110
- if (this.peek === 1) {
111
- this._trackEl.style.transform = `translateX(-${this._current * 100}%)`;
112
- } else {
113
- const slide = this._slides[0];
114
- if (!slide) return;
115
- const slideW = slide.offsetWidth;
116
- const gap = parseFloat(getComputedStyle(this._trackEl).gap) || 16;
117
- this._trackEl.style.transform = `translateX(-${this._current * (slideW + gap)}px)`;
118
- }
119
- }
120
- _applyFade() {
121
- this._slides.forEach((s, i) => {
122
- s.classList.toggle("is-active", i === this._current);
57
+ (_a = this._observer) == null ? void 0 : _a.disconnect();
58
+ this._observer = null;
59
+ }
60
+ /* ── Props → CSS custom properties en :host ── */
61
+ updated() {
62
+ this.style.setProperty("--_stagger-from", DIRECTION_MAP[this.direction]);
63
+ this.style.setProperty("--_stagger-ease", EASING_MAP[this.easing]);
64
+ this.style.setProperty("--_stagger-duration", `${this.duration}ms`);
65
+ }
66
+ /* ── Asigna --_stagger-delay individual a cada item ── */
67
+ _applyCssVars() {
68
+ this._items.forEach((el, i) => {
69
+ el.style.setProperty("--_stagger-delay", `${i * this.delay}ms`);
123
70
  });
124
71
  }
125
- /* ── Thumbnails ─────────────────────────────────────── */
126
- _syncThumbs() {
127
- this._thumbs.forEach((t, i) => {
128
- t.classList.toggle("is-active", i === this._current);
129
- t.addEventListener("click", () => this._goTo(i), { once: false });
130
- });
131
- }
132
- /* ── Autoplay ───────────────────────────────────────── */
133
- _startAutoplay() {
134
- if (!this.autoplay || this.autoplay <= 0) return;
135
- this._autoplayTimer = setInterval(() => {
136
- if (this._current === this._total - 1) {
137
- if (this.loop) this._goTo(0);
138
- } else {
139
- this._goTo(this._current + 1);
72
+ /* ── IntersectionObserver ── */
73
+ _setupObserver() {
74
+ this._observer = new IntersectionObserver(
75
+ (entries) => {
76
+ entries.forEach((entry) => {
77
+ var _a;
78
+ if (entry.isIntersecting) {
79
+ this.setAttribute("visible", "");
80
+ this.dispatchEvent(new CustomEvent("ui-lib-stagger-visible", {
81
+ bubbles: true,
82
+ composed: true
83
+ }));
84
+ if (this.once) {
85
+ (_a = this._observer) == null ? void 0 : _a.disconnect();
86
+ this._observer = null;
87
+ }
88
+ } else if (!this.once) {
89
+ this.removeAttribute("visible");
90
+ this.dispatchEvent(new CustomEvent("ui-lib-stagger-hidden", {
91
+ bubbles: true,
92
+ composed: true
93
+ }));
94
+ }
95
+ });
96
+ },
97
+ {
98
+ threshold: this.threshold,
99
+ rootMargin: "0px 0px -40px 0px"
100
+ // Dispara un poco antes de llegar al borde
140
101
  }
141
- }, this.autoplay);
142
- }
143
- _clearAutoplay() {
144
- if (this._autoplayTimer !== void 0) {
145
- clearInterval(this._autoplayTimer);
146
- this._autoplayTimer = void 0;
147
- }
148
- }
149
- /* ── Keyboard ───────────────────────────────────────── */
150
- _onKeyDown(e) {
151
- if (e.key === "ArrowLeft") {
152
- e.preventDefault();
153
- this._prev();
154
- }
155
- if (e.key === "ArrowRight") {
156
- e.preventDefault();
157
- this._next();
158
- }
159
- if (e.key === "Home") {
160
- e.preventDefault();
161
- this._goTo(0);
162
- }
163
- if (e.key === "End") {
164
- e.preventDefault();
165
- this._goTo(this._total - 1);
166
- }
167
- }
168
- /* ── Public API ─────────────────────────────────────── */
169
- /** Ir a un slide concreto por índice (0-based). */
170
- goTo(index) {
171
- this._goTo(index);
172
- }
173
- /** Ir al siguiente slide. */
174
- next() {
175
- this._next();
102
+ );
103
+ this._observer.observe(this);
176
104
  }
177
- /** Ir al anterior slide. */
178
- prev() {
179
- this._prev();
105
+ render() {
106
+ return staggerTemplate();
180
107
  }
181
108
  };
182
- LibCarousel.styles = [
109
+ LibStaggerContainer.styles = [
183
110
  css`${unsafeCSS(sharedTokens)}`,
184
- css`${unsafeCSS(carouselCss)}`
111
+ css`${unsafeCSS(staggerCss)}`
185
112
  ];
186
113
  __decorateClass([
187
- property({ type: String, reflect: true })
188
- ], LibCarousel.prototype, "mode", 2);
189
- __decorateClass([
190
- property({ type: Number, reflect: true })
191
- ], LibCarousel.prototype, "peek", 2);
192
- __decorateClass([
193
- property({ type: Boolean, reflect: true })
194
- ], LibCarousel.prototype, "arrows", 2);
114
+ property({ type: Number })
115
+ ], LibStaggerContainer.prototype, "delay", 2);
195
116
  __decorateClass([
196
- property({ type: Boolean, reflect: true })
197
- ], LibCarousel.prototype, "dots", 2);
117
+ property({ type: Number })
118
+ ], LibStaggerContainer.prototype, "duration", 2);
198
119
  __decorateClass([
199
- property({ type: Boolean, reflect: true })
200
- ], LibCarousel.prototype, "counter", 2);
120
+ property({ type: String, reflect: true })
121
+ ], LibStaggerContainer.prototype, "direction", 2);
201
122
  __decorateClass([
202
- property({ type: Boolean, reflect: true })
203
- ], LibCarousel.prototype, "loop", 2);
123
+ property({ type: String })
124
+ ], LibStaggerContainer.prototype, "easing", 2);
204
125
  __decorateClass([
205
126
  property({ type: Number })
206
- ], LibCarousel.prototype, "autoplay", 2);
207
- __decorateClass([
208
- query(".cr-track")
209
- ], LibCarousel.prototype, "_trackEl", 2);
127
+ ], LibStaggerContainer.prototype, "threshold", 2);
210
128
  __decorateClass([
211
- queryAssignedElements()
212
- ], LibCarousel.prototype, "_slides", 2);
129
+ property({ type: Boolean })
130
+ ], LibStaggerContainer.prototype, "once", 2);
213
131
  __decorateClass([
214
- queryAssignedElements({ slot: "thumbnail" })
215
- ], LibCarousel.prototype, "_thumbs", 2);
216
- LibCarousel = __decorateClass([
217
- customElement("lib-carousel")
218
- ], LibCarousel);
132
+ queryAssignedElements({ flatten: true })
133
+ ], LibStaggerContainer.prototype, "_items", 2);
134
+ LibStaggerContainer = __decorateClass([
135
+ customElement("lib-stagger-container")
136
+ ], LibStaggerContainer);
219
137
  export {
220
- LibCarousel
138
+ LibStaggerContainer
221
139
  };
222
140
  //# sourceMappingURL=index80.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index80.js","sources":["../src/components/organisms/carousel/lib-carousel.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js';\nimport { carouselTemplate } from './lib-carousel.html';\nimport type { LibCarouselMode } from './lib-carousel.html';\nimport carouselCss from './lib-carousel.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\nexport type { LibCarouselMode };\n\n/**\n * @element lib-carousel\n *\n * Carousel agnóstico. El consumer pasa los slides directamente como hijos.\n * El componente gestiona la navegación, animación y accesibilidad.\n *\n * Modos:\n * - slide : transform translateX (default)\n * - fade : crossfade por opacidad\n *\n * @slot (default) — slides del carousel\n * @slot thumbnail — tira de miniaturas (opcional, modo fade)\n *\n * @fires ui-lib-slide-change — `{ current: number, total: number }`\n *\n * @example — slide default (1 visible)\n * <lib-carousel dots counter>\n * <div>Slide 1</div>\n * <div>Slide 2</div>\n * </lib-carousel>\n *\n * @example — cards (3 visibles)\n * <lib-carousel peek=\"3\" counter>\n * <div class=\"mi-card\">...</div>\n * ...\n * </lib-carousel>\n *\n * @example — fade con thumbnails\n * <lib-carousel mode=\"fade\" dots arrows=\"false\">\n * <div>Slide 1</div>\n * <img slot=\"thumbnail\" src=\"...\" alt=\"\">\n * </lib-carousel>\n */\n@customElement('lib-carousel')\nexport class LibCarousel extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(carouselCss)}`,\n ];\n\n /**\n * Mecanismo de transición.\n * - slide : desplazamiento horizontal (transform)\n * - fade : crossfade por opacidad\n */\n @property({ type: String, reflect: true })\n mode: LibCarouselMode = 'slide';\n\n /**\n * Número de slides visibles simultáneamente.\n * peek=1 (default): carousel estándar.\n * peek=3: card carousel con tres columnas.\n */\n @property({ type: Number, reflect: true })\n peek = 1;\n\n /** Muestra flechas de navegación prev/next (solo en modo slide). */\n @property({ type: Boolean, reflect: true })\n arrows = true;\n\n /** Muestra dots de navegación. */\n @property({ type: Boolean, reflect: true })\n dots = true;\n\n /** Muestra contador numérico. */\n @property({ type: Boolean, reflect: true })\n counter = false;\n\n /** Navegación circular (el último slide vuelve al primero). */\n @property({ type: Boolean, reflect: true })\n loop = false;\n\n /**\n * Intervalo de autoplay en milisegundos.\n * 0 = desactivado (default).\n */\n @property({ type: Number })\n autoplay = 0;\n\n /* ── Internal state ─────────────────────────────────── */\n private _current = 0;\n private _total = 0;\n private _autoplayTimer: ReturnType<typeof setInterval> | undefined;\n\n @query('.cr-track')\n private _trackEl!: HTMLElement;\n\n @queryAssignedElements()\n private _slides!: Array<HTMLElement>;\n\n @queryAssignedElements({ slot: 'thumbnail' })\n private _thumbs!: Array<HTMLElement>;\n\n /* ── Lifecycle ──────────────────────────────────────── */\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._clearAutoplay();\n }\n\n override render(): TemplateResult {\n return carouselTemplate({\n mode: this.mode,\n current: this._current,\n total: this._total,\n peek: this.peek,\n arrows: this.arrows,\n dots: this.dots,\n counter: this.counter,\n loop: this.loop,\n handlePrev: this._prev.bind(this),\n handleNext: this._next.bind(this),\n handleDot: this._goTo.bind(this),\n handleSlot: this._onSlotChange.bind(this),\n handleThumb: this._onThumbSlotChange.bind(this),\n handleKey: this._onKeyDown.bind(this),\n });\n }\n\n /* ── Slot handlers ──────────────────────────────────── */\n private _onSlotChange(): void {\n this._total = this._slides.length;\n this._applyState(this._current, false); // sin animación en init\n this._syncThumbs();\n this.requestUpdate();\n this._clearAutoplay();\n this._startAutoplay();\n }\n\n private _onThumbSlotChange(): void {\n this._syncThumbs();\n }\n\n /* ── Navigation ─────────────────────────────────────── */\n private _prev(): void {\n if (this._current === 0) {\n if (this.loop) this._goTo(this._total - 1);\n } else {\n this._goTo(this._current - 1);\n }\n }\n\n private _next(): void {\n if (this._current === this._total - 1) {\n if (this.loop) this._goTo(0);\n } else {\n this._goTo(this._current + 1);\n }\n }\n\n private _goTo(index: number): void {\n if (!this._total) return;\n const clamped = Math.max(0, Math.min(index, this._total - 1));\n this._applyState(clamped, true);\n this._syncThumbs();\n this.requestUpdate();\n\n this.dispatchEvent(\n new CustomEvent<{ current: number; total: number }>('ui-lib-slide-change', {\n detail: { current: this._current, total: this._total },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /* ── Apply visual state ─────────────────────────────── */\n private _applyState(index: number, animate: boolean): void {\n this._current = index;\n\n if (this.mode === 'fade') {\n this._applyFade();\n } else {\n this._applySlide(animate);\n }\n }\n\n private _applySlide(animate: boolean): void {\n if (!this._trackEl) return;\n\n if (!animate) {\n this._trackEl.style.transition = 'none';\n // Forzar reflow para que se aplique sin transición\n void this._trackEl.offsetHeight;\n } else {\n this._trackEl.style.transition = '';\n }\n\n if (this.peek === 1) {\n this._trackEl.style.transform = `translateX(-${this._current * 100}%)`;\n } else {\n const slide = this._slides[0];\n if (!slide) return;\n const slideW = slide.offsetWidth;\n const gap = parseFloat(getComputedStyle(this._trackEl).gap) || 16;\n this._trackEl.style.transform =\n `translateX(-${this._current * (slideW + gap)}px)`;\n }\n }\n\n private _applyFade(): void {\n this._slides.forEach((s, i) => {\n s.classList.toggle('is-active', i === this._current);\n });\n }\n\n /* ── Thumbnails ─────────────────────────────────────── */\n private _syncThumbs(): void {\n this._thumbs.forEach((t, i) => {\n t.classList.toggle('is-active', i === this._current);\n t.addEventListener('click', () => this._goTo(i), { once: false });\n });\n }\n\n /* ── Autoplay ───────────────────────────────────────── */\n private _startAutoplay(): void {\n if (!this.autoplay || this.autoplay <= 0) return;\n this._autoplayTimer = setInterval(() => {\n if (this._current === this._total - 1) {\n if (this.loop) this._goTo(0);\n } else {\n this._goTo(this._current + 1);\n }\n }, this.autoplay);\n }\n\n private _clearAutoplay(): void {\n if (this._autoplayTimer !== undefined) {\n clearInterval(this._autoplayTimer);\n this._autoplayTimer = undefined;\n }\n }\n\n /* ── Keyboard ───────────────────────────────────────── */\n private _onKeyDown(e: KeyboardEvent): void {\n if (e.key === 'ArrowLeft') { e.preventDefault(); this._prev(); }\n if (e.key === 'ArrowRight') { e.preventDefault(); this._next(); }\n if (e.key === 'Home') { e.preventDefault(); this._goTo(0); }\n if (e.key === 'End') { e.preventDefault(); this._goTo(this._total - 1); }\n }\n\n /* ── Public API ─────────────────────────────────────── */\n /** Ir a un slide concreto por índice (0-based). */\n public goTo(index: number): void {\n this._goTo(index);\n }\n\n /** Ir al siguiente slide. */\n public next(): void {\n this._next();\n }\n\n /** Ir al anterior slide. */\n public prev(): void {\n this._prev();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-carousel': LibCarousel;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AA2CO,IAAM,cAAN,cAA0B,WAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAYL,SAAA,OAAwB;AAQxB,SAAA,OAAO;AAIP,SAAA,SAAS;AAIT,SAAA,OAAO;AAIP,SAAA,UAAU;AAIV,SAAA,OAAO;AAOP,SAAA,WAAW;AAGX,SAAQ,WAAW;AACnB,SAAQ,SAAW;AAAA,EAAA;AAAA;AAAA,EAaV,uBAA6B;AACpC,UAAM,qBAAA;AACN,SAAK,eAAA;AAAA,EACP;AAAA,EAES,SAAyB;AAChC,WAAO,iBAAiB;AAAA,MACtB,MAAa,KAAK;AAAA,MAClB,SAAa,KAAK;AAAA,MAClB,OAAa,KAAK;AAAA,MAClB,MAAa,KAAK;AAAA,MAClB,QAAa,KAAK;AAAA,MAClB,MAAa,KAAK;AAAA,MAClB,SAAa,KAAK;AAAA,MAClB,MAAa,KAAK;AAAA,MAClB,YAAa,KAAK,MAAM,KAAK,IAAI;AAAA,MACjC,YAAa,KAAK,MAAM,KAAK,IAAI;AAAA,MACjC,WAAa,KAAK,MAAM,KAAK,IAAI;AAAA,MACjC,YAAa,KAAK,cAAc,KAAK,IAAI;AAAA,MACzC,aAAa,KAAK,mBAAmB,KAAK,IAAI;AAAA,MAC9C,WAAa,KAAK,WAAW,KAAK,IAAI;AAAA,IAAA,CACvC;AAAA,EACH;AAAA;AAAA,EAGQ,gBAAsB;AAC5B,SAAK,SAAS,KAAK,QAAQ;AAC3B,SAAK,YAAY,KAAK,UAAU,KAAK;AACrC,SAAK,YAAA;AACL,SAAK,cAAA;AACL,SAAK,eAAA;AACL,SAAK,eAAA;AAAA,EACP;AAAA,EAEQ,qBAA2B;AACjC,SAAK,YAAA;AAAA,EACP;AAAA;AAAA,EAGQ,QAAc;AACpB,QAAI,KAAK,aAAa,GAAG;AACvB,UAAI,KAAK,KAAM,MAAK,MAAM,KAAK,SAAS,CAAC;AAAA,IAC3C,OAAO;AACL,WAAK,MAAM,KAAK,WAAW,CAAC;AAAA,IAC9B;AAAA,EACF;AAAA,EAEQ,QAAc;AACpB,QAAI,KAAK,aAAa,KAAK,SAAS,GAAG;AACrC,UAAI,KAAK,KAAM,MAAK,MAAM,CAAC;AAAA,IAC7B,OAAO;AACL,WAAK,MAAM,KAAK,WAAW,CAAC;AAAA,IAC9B;AAAA,EACF;AAAA,EAEQ,MAAM,OAAqB;AACjC,QAAI,CAAC,KAAK,OAAQ;AAClB,UAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC;AAC5D,SAAK,YAAY,SAAS,IAAI;AAC9B,SAAK,YAAA;AACL,SAAK,cAAA;AAEL,SAAK;AAAA,MACH,IAAI,YAAgD,uBAAuB;AAAA,QACzE,QAAU,EAAE,SAAS,KAAK,UAAU,OAAO,KAAK,OAAA;AAAA,QAChD,SAAU;AAAA,QACV,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,EAEL;AAAA;AAAA,EAGQ,YAAY,OAAe,SAAwB;AACzD,SAAK,WAAW;AAEhB,QAAI,KAAK,SAAS,QAAQ;AACxB,WAAK,WAAA;AAAA,IACP,OAAO;AACL,WAAK,YAAY,OAAO;AAAA,IAC1B;AAAA,EACF;AAAA,EAEQ,YAAY,SAAwB;AAC1C,QAAI,CAAC,KAAK,SAAU;AAEpB,QAAI,CAAC,SAAS;AACZ,WAAK,SAAS,MAAM,aAAa;AAEjC,WAAK,KAAK,SAAS;AAAA,IACrB,OAAO;AACL,WAAK,SAAS,MAAM,aAAa;AAAA,IACnC;AAEA,QAAI,KAAK,SAAS,GAAG;AACnB,WAAK,SAAS,MAAM,YAAY,eAAe,KAAK,WAAW,GAAG;AAAA,IACpE,OAAO;AACL,YAAM,QAAQ,KAAK,QAAQ,CAAC;AAC5B,UAAI,CAAC,MAAO;AACZ,YAAM,SAAS,MAAM;AACrB,YAAM,MAAS,WAAW,iBAAiB,KAAK,QAAQ,EAAE,GAAG,KAAK;AAClE,WAAK,SAAS,MAAM,YAClB,eAAe,KAAK,YAAY,SAAS,IAAI;AAAA,IACjD;AAAA,EACF;AAAA,EAEQ,aAAmB;AACzB,SAAK,QAAQ,QAAQ,CAAC,GAAG,MAAM;AAC7B,QAAE,UAAU,OAAO,aAAa,MAAM,KAAK,QAAQ;AAAA,IACrD,CAAC;AAAA,EACH;AAAA;AAAA,EAGQ,cAAoB;AAC1B,SAAK,QAAQ,QAAQ,CAAC,GAAG,MAAM;AAC7B,QAAE,UAAU,OAAO,aAAa,MAAM,KAAK,QAAQ;AACnD,QAAE,iBAAiB,SAAS,MAAM,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,OAAO;AAAA,IAClE,CAAC;AAAA,EACH;AAAA;AAAA,EAGQ,iBAAuB;AAC7B,QAAI,CAAC,KAAK,YAAY,KAAK,YAAY,EAAG;AAC1C,SAAK,iBAAiB,YAAY,MAAM;AACtC,UAAI,KAAK,aAAa,KAAK,SAAS,GAAG;AACrC,YAAI,KAAK,KAAM,MAAK,MAAM,CAAC;AAAA,MAC7B,OAAO;AACL,aAAK,MAAM,KAAK,WAAW,CAAC;AAAA,MAC9B;AAAA,IACF,GAAG,KAAK,QAAQ;AAAA,EAClB;AAAA,EAEQ,iBAAuB;AAC7B,QAAI,KAAK,mBAAmB,QAAW;AACrC,oBAAc,KAAK,cAAc;AACjC,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAAA;AAAA,EAGQ,WAAW,GAAwB;AACzC,QAAI,EAAE,QAAQ,aAAc;AAAE,QAAE,eAAA;AAAkB,WAAK,MAAA;AAAA,IAAS;AAChE,QAAI,EAAE,QAAQ,cAAc;AAAE,QAAE,eAAA;AAAkB,WAAK,MAAA;AAAA,IAAS;AAChE,QAAI,EAAE,QAAQ,QAAc;AAAE,QAAE,eAAA;AAAkB,WAAK,MAAM,CAAC;AAAA,IAAG;AACjE,QAAI,EAAE,QAAQ,OAAc;AAAE,QAAE,eAAA;AAAkB,WAAK,MAAM,KAAK,SAAS,CAAC;AAAA,IAAG;AAAA,EACjF;AAAA;AAAA;AAAA,EAIO,KAAK,OAAqB;AAC/B,SAAK,MAAM,KAAK;AAAA,EAClB;AAAA;AAAA,EAGO,OAAa;AAClB,SAAK,MAAA;AAAA,EACP;AAAA;AAAA,EAGO,OAAa;AAClB,SAAK,MAAA;AAAA,EACP;AACF;AA7Na,YACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,WAAW,CAAC;AAC9B;AAQA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAX9B,YAYX,WAAA,QAAA,CAAA;AAQA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAnB9B,YAoBX,WAAA,QAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAvB/B,YAwBX,WAAA,UAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GA3B/B,YA4BX,WAAA,QAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GA/B/B,YAgCX,WAAA,WAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAnC/B,YAoCX,WAAA,QAAA,CAAA;AAOA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA1Cf,YA2CX,WAAA,YAAA,CAAA;AAQQ,gBAAA;AAAA,EADP,MAAM,WAAW;AAAA,GAlDP,YAmDH,WAAA,YAAA,CAAA;AAGA,gBAAA;AAAA,EADP,sBAAA;AAAsB,GArDZ,YAsDH,WAAA,WAAA,CAAA;AAGA,gBAAA;AAAA,EADP,sBAAsB,EAAE,MAAM,YAAA,CAAa;AAAA,GAxDjC,YAyDH,WAAA,WAAA,CAAA;AAzDG,cAAN,gBAAA;AAAA,EADN,cAAc,cAAc;AAAA,GAChB,WAAA;"}
1
+ {"version":3,"file":"index80.js","sources":["../src/components/organisms/stagger/lib-stagger-container.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js';\nimport { staggerTemplate } from './lib-stagger-container.html';\nimport staggerCss from './lib-stagger.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { StaggerDirection, StaggerEasing } from './lib-stagger-container.types';\n\n/** Mapeo dirección → valor CSS de transform inicial */\nconst DIRECTION_MAP: Record<StaggerDirection, string> = {\n up: 'translateY(var(--lib-space-lg))',\n down: 'translateY(calc(-1 * var(--lib-space-lg)))',\n left: 'translateX(var(--lib-space-lg))',\n right: 'translateX(calc(-1 * var(--lib-space-lg)))',\n fade: 'none',\n};\n\n/** Mapeo easing → token CSS */\nconst EASING_MAP: Record<StaggerEasing, string> = {\n default: 'var(--ease-default)',\n out: 'var(--ease-out)',\n bounce: 'var(--ease-bounce)',\n};\n\n/**\n * lib-stagger-container\n *\n * Anima los hijos directos en cascada al entrar en el viewport.\n * Usa IntersectionObserver para activar y CSS custom properties\n * individuales para los delays de cada item.\n *\n * @prop delay — ms entre cada item (default 100)\n * @prop duration — duración de la animación en ms (default 600)\n * @prop direction — 'up' | 'down' | 'left' | 'right' | 'fade'\n * @prop easing — 'default' | 'out' | 'bounce'\n * @prop threshold — fracción del elemento visible para disparar (default 0.15)\n * @prop once — animar solo la primera vez (default true)\n *\n * @fires ui-lib-stagger-visible — cuando el contenedor entra en viewport\n * @fires ui-lib-stagger-hidden — cuando vuelve a salir (si once=false)\n *\n * @slot — Items a animar (cada hijo directo recibe su propio delay)\n */\n@customElement('lib-stagger-container')\nexport class LibStaggerContainer extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(staggerCss)}`,\n ];\n\n @property({ type: Number })\n delay = 100;\n\n @property({ type: Number })\n duration = 600;\n\n @property({ type: String, reflect: true })\n direction: StaggerDirection = 'up';\n\n @property({ type: String })\n easing: StaggerEasing = 'out';\n\n @property({ type: Number })\n threshold = 0.15;\n\n @property({ type: Boolean })\n once = true;\n\n @queryAssignedElements({ flatten: true })\n declare private _items: HTMLElement[];\n\n private _observer: IntersectionObserver | null = null;\n\n /* ── Lifecycle ── */\n\n /**\n * firstUpdated: el DOM ya está renderizado y el slot poblado.\n * Es el momento correcto para iniciar el observer,\n * a diferencia de connectedCallback que dispara antes del render.\n */\n override firstUpdated(): void {\n this._applyCssVars();\n this._setupObserver();\n\n // Escuchar cambios en el slot (items añadidos dinámicamente)\n const slot = this.shadowRoot?.querySelector('slot');\n slot?.addEventListener('slotchange', (): void => {\n this._applyCssVars();\n });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._observer?.disconnect();\n this._observer = null;\n }\n\n /* ── Props → CSS custom properties en :host ── */\n override updated(): void {\n this.style.setProperty('--_stagger-from', DIRECTION_MAP[this.direction]);\n this.style.setProperty('--_stagger-ease', EASING_MAP[this.easing]);\n this.style.setProperty('--_stagger-duration', `${this.duration}ms`);\n }\n\n /* ── Asigna --_stagger-delay individual a cada item ── */\n private _applyCssVars(): void {\n this._items.forEach((el, i): void => {\n el.style.setProperty('--_stagger-delay', `${i * this.delay}ms`);\n });\n }\n\n /* ── IntersectionObserver ── */\n private _setupObserver(): void {\n this._observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]): void => {\n entries.forEach((entry): void => {\n if (entry.isIntersecting) {\n this.setAttribute('visible', '');\n this.dispatchEvent(new CustomEvent('ui-lib-stagger-visible', {\n bubbles: true, composed: true,\n }));\n if (this.once) {\n this._observer?.disconnect();\n this._observer = null;\n }\n } else if (!this.once) {\n this.removeAttribute('visible');\n this.dispatchEvent(new CustomEvent('ui-lib-stagger-hidden', {\n bubbles: true, composed: true,\n }));\n }\n });\n },\n {\n threshold: this.threshold,\n rootMargin: '0px 0px -40px 0px', // Dispara un poco antes de llegar al borde\n },\n );\n this._observer.observe(this);\n }\n\n protected override render(): TemplateResult {\n return staggerTemplate();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-stagger-container': LibStaggerContainer;\n }\n}"],"names":[],"mappings":"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"}
package/dist/index81.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
- import { property, customElement } from "lit/decorators.js";
3
- import { bentoGridTemplate } from "./index344.js";
4
- import gridCss from "./index345.js";
2
+ import { property, queryAssignedElements, customElement } from "lit/decorators.js";
3
+ import { stepperTemplate } from "./index259.js";
4
+ import stepperCss from "./index260.js";
5
5
  import sharedTokens from "./index196.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -13,34 +13,73 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibBentoGrid = class extends LitElement {
16
+ let LibStepper = class extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
- this.columns = 4;
20
- this.gap = "md";
21
- this.rowHeight = "150px";
19
+ this.current = 1;
20
+ this.orientation = "horizontal";
21
+ this.variant = "default";
22
+ this.size = "md";
23
+ }
24
+ updated(changed) {
25
+ if (changed.has("current") || changed.has("orientation") || changed.has("variant") || changed.has("size")) {
26
+ this._syncSteps();
27
+ }
28
+ }
29
+ /**
30
+ * Propaga index, status, last, orientation, variant y size a cada lib-step hijo.
31
+ * Llamado en slotchange y cada vez que cambian las props relevantes.
32
+ */
33
+ _syncSteps() {
34
+ const steps = this._steps;
35
+ if (!(steps == null ? void 0 : steps.length)) return;
36
+ steps.forEach((step, i) => {
37
+ const pos = i + 1;
38
+ step.index = pos;
39
+ step.orientation = this.orientation;
40
+ step.variant = this.variant;
41
+ step.size = this.size;
42
+ step.last = pos === steps.length;
43
+ if (step.status !== "error") {
44
+ if (pos < this.current) step.status = "completed";
45
+ else if (pos === this.current) step.status = "active";
46
+ else step.status = "pending";
47
+ }
48
+ });
49
+ }
50
+ _handleSlotChange() {
51
+ this._syncSteps();
22
52
  }
23
53
  render() {
24
- return bentoGridTemplate(this);
54
+ return stepperTemplate({
55
+ orientation: this.orientation,
56
+ handleSlotChange: this._handleSlotChange.bind(this)
57
+ });
25
58
  }
26
59
  };
27
- LibBentoGrid.styles = [
60
+ LibStepper.styles = [
28
61
  css`${unsafeCSS(sharedTokens)}`,
29
- css`${unsafeCSS(gridCss)}`
62
+ css`${unsafeCSS(stepperCss)}`
30
63
  ];
31
64
  __decorateClass([
32
- property({ type: Number })
33
- ], LibBentoGrid.prototype, "columns", 2);
65
+ property({ type: Number, reflect: true })
66
+ ], LibStepper.prototype, "current", 2);
67
+ __decorateClass([
68
+ property({ type: String, reflect: true })
69
+ ], LibStepper.prototype, "orientation", 2);
70
+ __decorateClass([
71
+ property({ type: String, reflect: true })
72
+ ], LibStepper.prototype, "variant", 2);
34
73
  __decorateClass([
35
- property({ type: String })
36
- ], LibBentoGrid.prototype, "gap", 2);
74
+ property({ type: String, reflect: true })
75
+ ], LibStepper.prototype, "size", 2);
37
76
  __decorateClass([
38
- property({ type: String, attribute: "row-height" })
39
- ], LibBentoGrid.prototype, "rowHeight", 2);
40
- LibBentoGrid = __decorateClass([
41
- customElement("lib-bento-grid")
42
- ], LibBentoGrid);
77
+ queryAssignedElements({ selector: "lib-step" })
78
+ ], LibStepper.prototype, "_steps", 2);
79
+ LibStepper = __decorateClass([
80
+ customElement("lib-stepper")
81
+ ], LibStepper);
43
82
  export {
44
- LibBentoGrid
83
+ LibStepper
45
84
  };
46
85
  //# sourceMappingURL=index81.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index81.js","sources":["../src/components/organisms/bento-grid/lib-bento-grid.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { bentoGridTemplate } from './lib-bento-grid.html';\nimport gridCss from './lib-bento-grid.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { BentoGapSize } from './lib-bento-grid.types';\n\n/**\n * lib-bento-grid Contenedor de rejilla tipo bento\n *\n * @prop columns — Número de columnas (default 4)\n * @prop gapEspacio entre celdas: 'xs'|'sm'|'md'(default)|'lg'|'xl'\n * @prop row-heightAltura base de cada fila (default '150px')\n *\n * @slot — lib-bento-item elements\n */\n@customElement('lib-bento-grid')\nexport class LibBentoGrid extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(gridCss)}`,\n ];\n\n @property({ type: Number })\n columns = 4;\n\n @property({ type: String })\n gap: BentoGapSize = 'md';\n\n @property({ type: String, attribute: 'row-height' })\n rowHeight = '150px';\n\n protected override render(): TemplateResult {\n return bentoGridTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-bento-grid': LibBentoGrid;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAiBO,IAAM,eAAN,cAA2B,WAAW;AAAA,EAAtC,cAAA;AAAA,UAAA,GAAA,SAAA;AAOL,SAAA,UAAU;AAGV,SAAA,MAAoB;AAGpB,SAAA,YAAY;AAAA,EAAA;AAAA,EAEO,SAAyB;AAC1C,WAAO,kBAAkB,IAAI;AAAA,EAC/B;AACF;AAlBa,aACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,OAAO,CAAC;AAC1B;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GANf,aAOX,WAAA,WAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GATf,aAUX,WAAA,OAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,cAAc;AAAA,GAZxC,aAaX,WAAA,aAAA,CAAA;AAbW,eAAN,gBAAA;AAAA,EADN,cAAc,gBAAgB;AAAA,GAClB,YAAA;"}
1
+ {"version":3,"file":"index81.js","sources":["../src/components/organisms/stepper/lib-stepper.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult, PropertyValues } from 'lit';\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js';\nimport type { LibStepperOrientation, LibStepperVariant, LibStepperSize } from './lib-stepper.html';\nimport { stepperTemplate } from './lib-stepper.html';\nimport stepperCss from './lib-stepper.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { LibStep } from '../../atoms/step/lib-step.component';\n\n/**\n * @element lib-stepper\n *\n * Contenedor que coordina un flujo de pasos `<lib-step>`.\n * Calcula y propaga automáticamente a cada hijo:\n * - index : posición ordinal (1-based)\n * - status : pending | active | completed (derivado de `current`)\n * - last : true en el último paso\n * - orientation : refleja la prop del stepper\n * - variant : refleja la prop del stepper\n * - size : refleja la prop del stepper\n *\n * El estado `error` no se gestiona automáticamente se asigna desde fuera\n * con `stepEl.status = 'error'` cuando el formulario valida.\n *\n * @fires ui-lib-step-changeEmitido al cambiar `current` con `{ current: number, total: number }`\n *\n * @example — horizontal default\n * <lib-stepper current=\"2\">\n * <lib-step label=\"Información\" sub=\"Datos personales\"></lib-step>\n * <lib-step label=\"Pago\" sub=\"Método de pago\"></lib-step>\n * <lib-step label=\"Confirmación\"></lib-step>\n * </lib-stepper>\n *\n * @examplevertical\n * <lib-stepper orientation=\"vertical\" current=\"1\">\n * <lib-step label=\"Crea tu cuenta\">\n * Registro completado. Tu correo ha sido verificado.\n * </lib-step>\n * <lib-step label=\"Elige un plan\">\n * Selecciona el plan que mejor se adapte a tus necesidades.\n * </lib-step>\n * </lib-stepper>\n *\n * @example — minimal kaki\n * <lib-stepper variant=\"minimal\" current=\"3\">...</lib-stepper>\n *\n * @example — kintsugi oscuro\n * <lib-stepper variant=\"kintsugi\" current=\"2\">...</lib-stepper>\n */\n@customElement('lib-stepper')\nexport class LibStepper extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(stepperCss)}`,\n ];\n\n /**\n * Paso activo actual (1-based).\n * Los pasos anteriores quedan como `completed`, los posteriores como `pending`.\n */\n @property({ type: Number, reflect: true })\n current = 1;\n\n /**\n * Dirección del flujo.\n * - horizontal : barra horizontal con conectores (default)\n * - vertical : lista vertical con contenido expandido por paso\n */\n @property({ type: String, reflect: true })\n orientation: LibStepperOrientation = 'horizontal';\n\n /**\n * Variante visual. Se propaga a todos los lib-step hijos.\n * - default : nodo circular washi\n * - minimal : nodo cuadrado, acento kaki\n * - kintsugi : venas doradas, pensado para superficies oscuras\n */\n @property({ type: String, reflect: true })\n variant: LibStepperVariant = 'default';\n\n /**\n * Tamaño de los nodos. Se propaga a todos los lib-step hijos.\n * - sm : 24px · md : 32px (default) · lg : 40px\n */\n @property({ type: String, reflect: true })\n size: LibStepperSize = 'md';\n\n @queryAssignedElements({ selector: 'lib-step' })\n private _steps!: Array<LibStep>;\n\n override updated(changed: PropertyValues<this>): void {\n if (\n changed.has('current') ||\n changed.has('orientation') ||\n changed.has('variant') ||\n changed.has('size')\n ) {\n this._syncSteps();\n }\n }\n\n /**\n * Propaga index, status, last, orientation, variant y size a cada lib-step hijo.\n * Llamado en slotchange y cada vez que cambian las props relevantes.\n */\n private _syncSteps(): void {\n const steps = this._steps;\n if (!steps?.length) return;\n\n steps.forEach((step, i) => {\n const pos = i + 1;\n step.index = pos;\n step.orientation = this.orientation;\n step.variant = this.variant;\n step.size = this.size;\n step.last = pos === steps.length;\n\n // No sobreescribir 'error' si ya fue asignado externamente\n if (step.status !== 'error') {\n if (pos < this.current) step.status = 'completed';\n else if (pos === this.current) step.status = 'active';\n else step.status = 'pending';\n }\n });\n }\n\n private _handleSlotChange(): void {\n this._syncSteps();\n }\n\n override render(): TemplateResult {\n return stepperTemplate({\n orientation: this.orientation,\n handleSlotChange: this._handleSlotChange.bind(this),\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-stepper': LibStepper;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAiDO,IAAM,aAAN,cAAyB,WAAW;AAAA,EAApC,cAAA;AAAA,UAAA,GAAA,SAAA;AAWL,SAAA,UAAU;AAQV,SAAA,cAAqC;AASrC,SAAA,UAA6B;AAO7B,SAAA,OAAuB;AAAA,EAAA;AAAA,EAKd,QAAQ,SAAqC;AACpD,QACE,QAAQ,IAAI,SAAS,KACrB,QAAQ,IAAI,aAAa,KACzB,QAAQ,IAAI,SAAS,KACrB,QAAQ,IAAI,MAAM,GAClB;AACA,WAAK,WAAA;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,aAAmB;AACzB,UAAM,QAAQ,KAAK;AACnB,QAAI,EAAC,+BAAO,QAAQ;AAEpB,UAAM,QAAQ,CAAC,MAAM,MAAM;AACzB,YAAM,MAAM,IAAI;AAChB,WAAK,QAAc;AACnB,WAAK,cAAc,KAAK;AACxB,WAAK,UAAc,KAAK;AACxB,WAAK,OAAc,KAAK;AACxB,WAAK,OAAc,QAAQ,MAAM;AAGjC,UAAI,KAAK,WAAW,SAAS;AAC3B,YAAI,MAAM,KAAK,QAAc,MAAK,SAAS;AAAA,iBAClC,QAAQ,KAAK,QAAS,MAAK,SAAS;AAAA,kBACV,SAAS;AAAA,MAC9C;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,oBAA0B;AAChC,SAAK,WAAA;AAAA,EACP;AAAA,EAES,SAAyB;AAChC,WAAO,gBAAgB;AAAA,MACrB,aAAiB,KAAK;AAAA,MACtB,kBAAkB,KAAK,kBAAkB,KAAK,IAAI;AAAA,IAAA,CACnD;AAAA,EACH;AACF;AAtFa,WACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,UAAU,CAAC;AAC7B;AAOA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAV9B,WAWX,WAAA,WAAA,CAAA;AAQA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAlB9B,WAmBX,WAAA,eAAA,CAAA;AASA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GA3B9B,WA4BX,WAAA,WAAA,CAAA;AAOA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAlC9B,WAmCX,WAAA,QAAA,CAAA;AAGQ,gBAAA;AAAA,EADP,sBAAsB,EAAE,UAAU,WAAA,CAAY;AAAA,GArCpC,WAsCH,WAAA,UAAA,CAAA;AAtCG,aAAN,gBAAA;AAAA,EADN,cAAc,aAAa;AAAA,GACf,UAAA;"}