@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/index259.js CHANGED
@@ -1,5 +1,12 @@
1
- const componentCss = '@layer tokens,reset,components;@layer reset{*,*:before,*:after{box-sizing:border-box}}@layer components{:host([variant="bar"]),:host(:not([variant])){display:block;position:absolute;bottom:-1px;left:0;width:0%;height:2px;pointer-events:none;z-index:var(--z-raised);transition:width 80ms linear;background:var(--rp-color)}:host([variant="bar"]):after,:host(:not([variant])):after{content:"";position:absolute;right:-8px;top:50%;transform:translateY(-50%);width:16px;height:5px;border-radius:var(--radius-full);background:var(--rp-glow);filter:blur(3px);opacity:0;transition:opacity var(--duration-slow)}:host([variant="bar"][active]):after,:host(:not([variant])[active]):after{opacity:1}:host([variant="line"]){display:block;position:absolute;bottom:0;left:0;width:0%;height:1px;pointer-events:none;z-index:var(--z-raised);transition:width 80ms linear;background:var(--rp-color);opacity:.6}:host([variant="dots"]){display:inline-flex;align-items:center;gap:5px}.rp-dot{width:5px;height:5px;border-radius:var(--radius-full);background:var(--border-default);transition:background var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out),opacity var(--duration-slow);flex-shrink:0}.rp-dot.is-done{background:var(--rp-color);transform:scale(1.2)}.rp-dot.is-current{background:var(--rp-color-light);transform:scale(1.4);box-shadow:0 0 0 2px var(--rp-glow)}:host([variant="ring"]){display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.rp-ring-svg{display:block;transform:rotate(-90deg);overflow:visible}.rp-ring-track{fill:none;stroke:var(--border-subtle);stroke-width:2}.rp-ring-fill{fill:none;stroke:var(--rp-color);stroke-width:2;stroke-linecap:round;transition:stroke-dashoffset 80ms linear}:host([variant="vertical"]){display:block;position:fixed;left:0;top:0;width:2px;height:0%;background:linear-gradient(to bottom,var(--rp-color),var(--rp-color-light));z-index:var(--z-modal);pointer-events:none;transition:height 80ms linear}:host([variant="vertical"]):after{content:"";position:absolute;bottom:-6px;left:-3px;width:8px;height:8px;border-radius:var(--radius-full);background:var(--rp-color-light);box-shadow:0 0 6px var(--rp-glow)}:host,:host([tone="kaki"]){--rp-color: var(--color-kaki-500);--rp-color-light: var(--color-kaki-400);--rp-glow: rgb(217, 114, 52, .25)}:host([tone="celadon"]){--rp-color: var(--color-celadon-500);--rp-color-light: var(--color-celadon-400);--rp-glow: rgb(53, 113, 100, .25)}:host([tone="ink"]){--rp-color: var(--color-washi-800);--rp-color-light: var(--color-washi-700);--rp-glow: rgb(61, 51, 42, .2)}:host([tone="kintsugi"]){--rp-color: var(--color-kaki-500);--rp-color-light: var(--color-kaki-300);--rp-glow: oklch(65% .1 50deg / .55)}:host([tone="kintsugi"][variant="bar"]),:host([tone="kintsugi"]:not([variant])){background:linear-gradient(90deg,var(--color-kaki-600) 0%,var(--color-kaki-500) 30%,var(--color-kaki-300) 65%,var(--color-kaki-400) 100%);height:3px}:host([tone="kintsugi"][variant="bar"]):before,:host([tone="kintsugi"]:not([variant])):before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,oklch(92% .04 60deg / .75) 45%,oklch(98% .01 60deg / .9) 50%,oklch(92% .04 60deg / .75) 55%,transparent 100%);animation:rp-kintsugi-shimmer 3s cubic-bezier(.4,0,.6,1) infinite;pointer-events:none}:host([tone="kintsugi"][variant="bar"][active]):after,:host([tone="kintsugi"]:not([variant])[active]):after{width:24px;height:8px;background:#c07c56a6;filter:blur(5px)}:host([tone="kintsugi"][variant="line"]){background:linear-gradient(90deg,var(--color-kaki-600) 0%,var(--color-kaki-300) 60%,var(--color-kaki-500) 100%);opacity:.85;height:1.5px}:host([tone="kintsugi"][variant="vertical"]){background:linear-gradient(to bottom,var(--color-kaki-600) 0%,var(--color-kaki-400) 45%,var(--color-kaki-300) 75%,var(--color-kaki-500) 100%);width:3px}:host([tone="kintsugi"][variant="vertical"]):after{width:10px;height:10px;background:var(--color-kaki-300);box-shadow:0 0 8px #c07c56b3,0 0 16px #c07c5659}@keyframes rp-kintsugi-shimmer{0%{transform:translate(-120%);opacity:0}15%{opacity:1}85%{opacity:1}to{transform:translate(120%);opacity:0}}}';
1
+ import { html } from "lit";
2
+ function stepperTemplate(props) {
3
+ return html`
4
+ <div class="stepper-track" role="list" aria-label="Pasos del proceso">
5
+ <slot @slotchange=${props.handleSlotChange}></slot>
6
+ </div>
7
+ `;
8
+ }
2
9
  export {
3
- componentCss as default
10
+ stepperTemplate
4
11
  };
5
12
  //# sourceMappingURL=index259.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index259.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index259.js","sources":["../src/components/organisms/stepper/lib-stepper.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\n\nexport type LibStepperOrientation = 'horizontal' | 'vertical';\nexport type LibStepperVariant = 'default' | 'minimal' | 'kintsugi';\nexport type LibStepperSize = 'sm' | 'md' | 'lg';\n\nexport interface StepperTemplateProps {\n orientation: LibStepperOrientation;\n handleSlotChange: (e: Event) => void;\n}\n\n/**\n * El stepper es únicamente el contenedor flex + slot.\n * Toda la lógica de estados y el dibujado visual vive en lib-step.\n * @layer components gestiona flex-direction vía :host([orientation=\"vertical\"]).\n */\nexport function stepperTemplate(props: StepperTemplateProps): TemplateResult {\n return html`\n <div class=\"stepper-track\" role=\"list\" aria-label=\"Pasos del proceso\">\n <slot @slotchange=${props.handleSlotChange}></slot>\n </div>\n `;\n}"],"names":[],"mappings":";AAgBO,SAAS,gBAAgB,OAA6C;AAC3E,SAAO;AAAA;AAAA,0BAEiB,MAAM,gBAAgB;AAAA;AAAA;AAGhD;"}
package/dist/index26.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
- import { property, query, customElement } from "lit/decorators.js";
3
- import { counterTemplate } from "./index237.js";
4
- import counterCss from "./index238.js";
2
+ import { property, state, customElement } from "lit/decorators.js";
3
+ import { kbdTemplate } from "./index309.js";
4
+ import kbdCss from "./index310.js";
5
5
  import sharedTokens from "./index196.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -13,259 +13,54 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibCounter = class extends LitElement {
16
+ let LibKbd = class extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
- this.value = 0;
20
- this.prefix = "";
21
- this.suffix = "";
22
- this.thousands = ".";
23
- this.decimals = null;
24
19
  this.size = "md";
25
- this.tone = "default";
26
- this.label = "";
27
- this.delta = "";
28
- this.deltaDir = "up";
29
- this.playOnVisible = false;
30
- this._builtDigitCount = -1;
31
- this._builtThousands = "";
32
- this._hasAnimated = false;
33
- this._firstUpdate = true;
34
- }
35
- /* ── Lifecycle ──────────────────────────────────────────── */
36
- connectedCallback() {
37
- super.connectedCallback();
38
- if (this.playOnVisible) {
39
- this._observer = new IntersectionObserver(
40
- (entries) => {
41
- var _a, _b;
42
- if (((_a = entries[0]) == null ? void 0 : _a.isIntersecting) && !this._hasAnimated) {
43
- this._hasAnimated = true;
44
- this._animateTo(
45
- this.value,
46
- /* fromZero */
47
- true
48
- );
49
- (_b = this._observer) == null ? void 0 : _b.disconnect();
50
- }
51
- },
52
- { threshold: 0.2 }
53
- );
54
- }
55
- }
56
- disconnectedCallback() {
57
- var _a;
58
- super.disconnectedCallback();
59
- (_a = this._observer) == null ? void 0 : _a.disconnect();
20
+ this.variant = "default";
21
+ this.pressed = false;
22
+ this._pointerPressed = false;
60
23
  }
61
24
  render() {
62
- return counterTemplate({
25
+ return kbdTemplate({
63
26
  size: this.size,
64
- tone: this.tone,
65
- label: this.label,
66
- delta: this.delta,
67
- deltaDir: this.deltaDir
68
- });
69
- }
70
- updated(changed) {
71
- var _a;
72
- super.updated(changed);
73
- const structureChanged = changed.has("value") || changed.has("prefix") || changed.has("suffix") || changed.has("thousands") || changed.has("decimals");
74
- if (!structureChanged && !this._firstUpdate) return;
75
- const needRebuild = this._needsRebuild();
76
- if (needRebuild) {
77
- this._buildRow();
78
- }
79
- if (this._firstUpdate) {
80
- this._firstUpdate = false;
81
- if (this.playOnVisible) {
82
- this._setRowInstant(0);
83
- (_a = this._observer) == null ? void 0 : _a.observe(this);
84
- } else {
85
- this._setRowInstant(this.value);
86
- }
87
- return;
88
- }
89
- if (changed.has("value")) {
90
- this._animateTo(
91
- this.value,
92
- /* fromZero */
93
- false
94
- );
95
- }
96
- }
97
- /* ── Motor de digit-flip ────────────────────────────────── */
98
- _needsRebuild() {
99
- const digitCount = Math.abs(Math.floor(this.value)).toString().length;
100
- if (digitCount !== this._builtDigitCount) return true;
101
- if (this.thousands !== this._builtThousands) return true;
102
- return false;
103
- }
104
- _buildRow() {
105
- const row = this._rowEl;
106
- if (!row) return;
107
- row.innerHTML = "";
108
- const absVal = Math.abs(Math.floor(this.value));
109
- const str = absVal.toString();
110
- this._builtDigitCount = str.length;
111
- this._builtThousands = this.thousands;
112
- if (this.prefix) {
113
- const p = document.createElement("span");
114
- p.className = "cnt-prefix";
115
- p.textContent = this.prefix;
116
- row.appendChild(p);
117
- }
118
- const chars = this._buildCharArray(str, this.thousands);
119
- chars.forEach((c) => {
120
- if (c.type === "sep") {
121
- const sep = document.createElement("span");
122
- sep.className = "cnt-sep";
123
- sep.textContent = c.char;
124
- row.appendChild(sep);
125
- } else {
126
- row.appendChild(this._makeDigitSlot(parseInt(c.char, 10)));
127
- }
128
- });
129
- if (this.decimals !== null) {
130
- const dot = document.createElement("span");
131
- dot.className = "cnt-sep";
132
- dot.textContent = ",";
133
- row.appendChild(dot);
134
- const decStr = this.decimals.toString().padStart(2, "0");
135
- for (const ch of decStr) {
136
- row.appendChild(this._makeDigitSlot(parseInt(ch, 10)));
137
- }
138
- }
139
- if (this.suffix) {
140
- const s = document.createElement("span");
141
- s.className = "cnt-suffix";
142
- s.textContent = this.suffix;
143
- row.appendChild(s);
144
- }
145
- }
146
- _buildCharArray(str, thousands) {
147
- const result = [];
148
- for (let i = 0; i < str.length; i++) {
149
- const posFromRight = str.length - 1 - i;
150
- if (i > 0 && posFromRight % 3 === 2 && thousands) {
151
- result.push({ type: "sep", char: thousands });
152
- }
153
- result.push({ type: "digit", char: str[i] ?? "0" });
154
- }
155
- return result;
156
- }
157
- _makeDigitSlot(digit) {
158
- const slot = document.createElement("span");
159
- slot.className = "cnt-digit";
160
- const inner = document.createElement("span");
161
- inner.className = "cnt-digit-inner";
162
- for (let i = 0; i <= 9; i++) {
163
- const span = document.createElement("span");
164
- span.textContent = String(i);
165
- inner.appendChild(span);
166
- }
167
- inner.style.transition = "none";
168
- inner.style.transform = `translateY(-${digit}em)`;
169
- slot.appendChild(inner);
170
- return slot;
171
- }
172
- _setRowInstant(value) {
173
- var _a;
174
- const slots = (_a = this._rowEl) == null ? void 0 : _a.querySelectorAll(".cnt-digit");
175
- if (!slots) return;
176
- const digits = this._extractTargetDigits(value);
177
- slots.forEach((slot, i) => {
178
- const inner = slot.querySelector(".cnt-digit-inner");
179
- if (!inner) return;
180
- inner.style.transition = "none";
181
- inner.style.transform = `translateY(-${digits[i] ?? 0}em)`;
27
+ variant: this.variant,
28
+ pressed: this.pressed || this._pointerPressed,
29
+ onDown: this._onPointerDown.bind(this),
30
+ onUp: this._onPointerUp.bind(this),
31
+ onLeave: this._onPointerLeave.bind(this)
182
32
  });
183
33
  }
184
- _animateTo(value, fromZero) {
185
- var _a;
186
- const slots = (_a = this._rowEl) == null ? void 0 : _a.querySelectorAll(".cnt-digit");
187
- if (!slots || !slots.length) return;
188
- const targetDigits = this._extractTargetDigits(value);
189
- const total = slots.length;
190
- slots.forEach((slot, i) => {
191
- const inner = slot.querySelector(".cnt-digit-inner");
192
- if (!inner) return;
193
- const target = targetDigits[i] ?? 0;
194
- const fromRight = total - 1 - i;
195
- const delay = fromRight * 40;
196
- if (fromZero) {
197
- inner.style.transition = "none";
198
- inner.style.transform = "translateY(0)";
199
- }
200
- void inner.offsetHeight;
201
- inner.style.transition = `transform 0.8s cubic-bezier(0.16, 1, 0.3, 1) ${delay}ms`;
202
- inner.style.transform = `translateY(-${target}em)`;
203
- });
204
- }
205
- _extractTargetDigits(value) {
206
- const absVal = Math.abs(Math.floor(value));
207
- let str = absVal.toString();
208
- if (this.decimals !== null) {
209
- const decStr = this.decimals.toString().padStart(2, "0");
210
- str = str + decStr;
211
- }
212
- return str.split("").map((c) => parseInt(c, 10));
34
+ _onPointerDown() {
35
+ this._pointerPressed = true;
213
36
  }
214
- /* ── Public API ─────────────────────────────────────────── */
215
- /** Anima el contador a un nuevo valor manualmente. */
216
- animateTo(value) {
217
- this.value = value;
37
+ _onPointerUp() {
38
+ this._pointerPressed = false;
218
39
  }
219
- /** Reinicia la animación desde cero al valor actual. */
220
- replay() {
221
- this._hasAnimated = false;
222
- this._animateTo(this.value, true);
40
+ _onPointerLeave() {
41
+ this._pointerPressed = false;
223
42
  }
224
43
  };
225
- LibCounter.styles = [
44
+ LibKbd.styles = [
226
45
  css`${unsafeCSS(sharedTokens)}`,
227
- css`${unsafeCSS(counterCss)}`
46
+ css`${unsafeCSS(kbdCss)}`
228
47
  ];
229
- __decorateClass([
230
- property({ type: Number, reflect: true })
231
- ], LibCounter.prototype, "value", 2);
232
- __decorateClass([
233
- property({ type: String, attribute: "prefix", reflect: true })
234
- ], LibCounter.prototype, "prefix", 2);
235
- __decorateClass([
236
- property({ type: String, attribute: "suffix", reflect: true })
237
- ], LibCounter.prototype, "suffix", 2);
238
- __decorateClass([
239
- property({ type: String, attribute: "thousands", reflect: true })
240
- ], LibCounter.prototype, "thousands", 2);
241
- __decorateClass([
242
- property({ type: Number, attribute: "decimals", reflect: true })
243
- ], LibCounter.prototype, "decimals", 2);
244
48
  __decorateClass([
245
49
  property({ type: String, reflect: true })
246
- ], LibCounter.prototype, "size", 2);
50
+ ], LibKbd.prototype, "size", 2);
247
51
  __decorateClass([
248
52
  property({ type: String, reflect: true })
249
- ], LibCounter.prototype, "tone", 2);
250
- __decorateClass([
251
- property({ type: String })
252
- ], LibCounter.prototype, "label", 2);
253
- __decorateClass([
254
- property({ type: String })
255
- ], LibCounter.prototype, "delta", 2);
256
- __decorateClass([
257
- property({ type: String, attribute: "delta-dir", reflect: true })
258
- ], LibCounter.prototype, "deltaDir", 2);
53
+ ], LibKbd.prototype, "variant", 2);
259
54
  __decorateClass([
260
- property({ type: Boolean, attribute: "play-on-visible", reflect: true })
261
- ], LibCounter.prototype, "playOnVisible", 2);
55
+ property({ type: Boolean, reflect: true })
56
+ ], LibKbd.prototype, "pressed", 2);
262
57
  __decorateClass([
263
- query(".cnt-row")
264
- ], LibCounter.prototype, "_rowEl", 2);
265
- LibCounter = __decorateClass([
266
- customElement("lib-counter")
267
- ], LibCounter);
58
+ state()
59
+ ], LibKbd.prototype, "_pointerPressed", 2);
60
+ LibKbd = __decorateClass([
61
+ customElement("lib-kbd")
62
+ ], LibKbd);
268
63
  export {
269
- LibCounter
64
+ LibKbd
270
65
  };
271
66
  //# sourceMappingURL=index26.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index26.js","sources":["../src/components/atoms/lib-counter/lib-counter.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult, PropertyValues } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { counterTemplate } from './lib-counter.html';\nimport type { LibCounterSize, LibCounterTone, LibCounterDeltaDir } from './lib-counter.html';\nimport counterCss from './lib-counter.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\nexport type { LibCounterSize, LibCounterTone, LibCounterDeltaDir };\n\n/**\n * @element lib-counter\n *\n * Contador animado con digit-flip: cada dígito es una columna\n * de 0 a 9 que se desplaza con translateY. Los dígitos de mayor\n * peso animan antes que los de menor — efecto odómetro.\n *\n * @example — básico\n * <lib-counter value=\"24819\" label=\"Usuarios activos\" play-on-visible></lib-counter>\n *\n * @example — moneda con delta\n * <lib-counter value=\"18540\" prefix=\"€\" size=\"lg\" tone=\"kaki\"\n * label=\"Ingresos\" delta=\"+14,7%\" delta-dir=\"up\" play-on-visible>\n * </lib-counter>\n *\n * @example — porcentaje sin separador de miles\n * <lib-counter value=\"87\" suffix=\"%\" thousands=\"\" size=\"md\" play-on-visible></lib-counter>\n *\n * @example — con decimales\n * <lib-counter value=\"4\" decimals=\"73\" play-on-visible></lib-counter>\n * → renderiza 4,73\n */\n@customElement('lib-counter')\nexport class LibCounter extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(counterCss)}`,\n ];\n\n /* ── Props visuales ─────────────────────────────────────── */\n\n /** Valor numérico a mostrar. */\n @property({ type: Number, reflect: true })\n value = 0;\n\n /** Carácter prefijo (€, $, …). */\n @property({ type: String, attribute: 'prefix', reflect: true })\n override prefix = '';\n\n /** Carácter sufijo (%, k, …). */\n @property({ type: String, attribute: 'suffix', reflect: true })\n suffix = '';\n\n /** Separador de miles. Default: punto. Vacío = sin separador. */\n @property({ type: String, attribute: 'thousands', reflect: true })\n thousands = '.';\n\n /**\n * Dígitos decimales a mostrar después de coma.\n * Ejemplo: decimals=\"73\" → \",73\"\n */\n @property({ type: Number, attribute: 'decimals', reflect: true })\n decimals: number | null = null;\n\n /** Tamaño del contador. */\n @property({ type: String, reflect: true })\n size: LibCounterSize = 'md';\n\n /** Tono de color. */\n @property({ type: String, reflect: true })\n tone: LibCounterTone = 'default';\n\n /** Etiqueta inferior en font-mono uppercase. */\n @property({ type: String })\n label = '';\n\n /** Texto del indicador de variación (e.g. \"+14,7%\"). */\n @property({ type: String })\n delta = '';\n\n /** Dirección del delta — controla color e icono. */\n @property({ type: String, attribute: 'delta-dir', reflect: true })\n deltaDir: LibCounterDeltaDir = 'up';\n\n /**\n * Si está presente, el contador arranca desde 0 y anima\n * hasta `value` cuando entra en el viewport (IntersectionObserver).\n * Nombre: play-on-visible (evita colisión con HTMLElement.animate).\n */\n @property({ type: Boolean, attribute: 'play-on-visible', reflect: true })\n playOnVisible = false;\n\n /* ── Internos ───────────────────────────────────────────── */\n\n // FIX: declare evita el error de overload en decoradores strict\n @query('.cnt-row')\n declare private _rowEl: HTMLElement;\n\n private _builtDigitCount = -1;\n private _builtThousands = '';\n\n private _observer: IntersectionObserver | undefined;\n private _hasAnimated = false;\n private _firstUpdate = true;\n\n /* ── Lifecycle ──────────────────────────────────────────── */\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.playOnVisible) {\n this._observer = new IntersectionObserver(\n (entries) => {\n if (entries[0]?.isIntersecting && !this._hasAnimated) {\n this._hasAnimated = true;\n this._animateTo(this.value, /* fromZero */ true);\n this._observer?.disconnect();\n }\n },\n { threshold: 0.2 }\n );\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this._observer?.disconnect();\n }\n\n override render(): TemplateResult {\n return counterTemplate({\n size: this.size,\n tone: this.tone,\n label: this.label,\n delta: this.delta,\n deltaDir: this.deltaDir,\n });\n }\n\n override updated(changed: PropertyValues): void {\n super.updated(changed);\n\n const structureChanged =\n changed.has('value') ||\n changed.has('prefix') ||\n changed.has('suffix') ||\n changed.has('thousands') ||\n changed.has('decimals');\n\n if (!structureChanged && !this._firstUpdate) return;\n\n const needRebuild = this._needsRebuild();\n if (needRebuild) {\n this._buildRow();\n }\n\n if (this._firstUpdate) {\n this._firstUpdate = false;\n\n if (this.playOnVisible) {\n // Construir en 0 y esperar viewport\n this._setRowInstant(0);\n // FIX: cast a Element para satisfacer IntersectionObserver.observe()\n this._observer?.observe(this as unknown as Element);\n } else {\n this._setRowInstant(this.value);\n }\n return;\n }\n\n if (changed.has('value')) {\n this._animateTo(this.value, /* fromZero */ false);\n }\n }\n\n /* ── Motor de digit-flip ────────────────────────────────── */\n\n private _needsRebuild(): boolean {\n const digitCount = Math.abs(Math.floor(this.value)).toString().length;\n if (digitCount !== this._builtDigitCount) return true;\n if (this.thousands !== this._builtThousands) return true;\n return false;\n }\n\n private _buildRow(): void {\n const row = this._rowEl;\n if (!row) return;\n row.innerHTML = '';\n\n const absVal = Math.abs(Math.floor(this.value));\n const str = absVal.toString();\n this._builtDigitCount = str.length;\n this._builtThousands = this.thousands;\n\n if (this.prefix) {\n const p = document.createElement('span');\n p.className = 'cnt-prefix';\n p.textContent = this.prefix;\n row.appendChild(p);\n }\n\n const chars = this._buildCharArray(str, this.thousands);\n chars.forEach((c) => {\n if (c.type === 'sep') {\n const sep = document.createElement('span');\n sep.className = 'cnt-sep';\n sep.textContent = c.char;\n row.appendChild(sep);\n } else {\n row.appendChild(this._makeDigitSlot(parseInt(c.char, 10)));\n }\n });\n\n if (this.decimals !== null) {\n const dot = document.createElement('span');\n dot.className = 'cnt-sep';\n dot.textContent = ',';\n row.appendChild(dot);\n\n const decStr = this.decimals.toString().padStart(2, '0');\n for (const ch of decStr) {\n row.appendChild(this._makeDigitSlot(parseInt(ch, 10)));\n }\n }\n\n if (this.suffix) {\n const s = document.createElement('span');\n s.className = 'cnt-suffix';\n s.textContent = this.suffix;\n row.appendChild(s);\n }\n }\n\n private _buildCharArray(\n str: string,\n thousands: string\n ): Array<{ type: 'digit' | 'sep'; char: string }> {\n const result: Array<{ type: 'digit' | 'sep'; char: string }> = [];\n for (let i = 0; i < str.length; i++) {\n const posFromRight = str.length - 1 - i;\n if (i > 0 && posFromRight % 3 === 2 && thousands) {\n result.push({ type: 'sep', char: thousands });\n }\n // FIX: str[i] es string | undefined en TS estricto — asegurar con ?? '0'\n result.push({ type: 'digit', char: str[i] ?? '0' });\n }\n return result;\n }\n\n private _makeDigitSlot(digit: number): HTMLElement {\n const slot = document.createElement('span');\n slot.className = 'cnt-digit';\n\n const inner = document.createElement('span');\n inner.className = 'cnt-digit-inner';\n\n for (let i = 0; i <= 9; i++) {\n const span = document.createElement('span');\n span.textContent = String(i);\n inner.appendChild(span);\n }\n\n inner.style.transition = 'none';\n inner.style.transform = `translateY(-${digit}em)`;\n slot.appendChild(inner);\n return slot;\n }\n\n private _setRowInstant(value: number): void {\n const slots = this._rowEl?.querySelectorAll<HTMLElement>('.cnt-digit');\n if (!slots) return;\n const digits = this._extractTargetDigits(value);\n slots.forEach((slot, i) => {\n const inner = slot.querySelector<HTMLElement>('.cnt-digit-inner');\n if (!inner) return;\n inner.style.transition = 'none';\n inner.style.transform = `translateY(-${digits[i] ?? 0}em)`;\n });\n }\n\n private _animateTo(value: number, fromZero: boolean): void {\n const slots = this._rowEl?.querySelectorAll<HTMLElement>('.cnt-digit');\n if (!slots || !slots.length) return;\n\n const targetDigits = this._extractTargetDigits(value);\n const total = slots.length;\n\n slots.forEach((slot, i) => {\n const inner = slot.querySelector<HTMLElement>('.cnt-digit-inner');\n if (!inner) return;\n\n const target = targetDigits[i] ?? 0;\n const fromRight = total - 1 - i;\n const delay = fromRight * 40;\n\n if (fromZero) {\n inner.style.transition = 'none';\n inner.style.transform = 'translateY(0)';\n }\n\n void inner.offsetHeight; // forzar reflow\n\n inner.style.transition = `transform 0.8s cubic-bezier(0.16, 1, 0.3, 1) ${delay}ms`;\n inner.style.transform = `translateY(-${target}em)`;\n });\n }\n\n private _extractTargetDigits(value: number): number[] {\n const absVal = Math.abs(Math.floor(value));\n let str = absVal.toString();\n\n if (this.decimals !== null) {\n const decStr = this.decimals.toString().padStart(2, '0');\n str = str + decStr;\n }\n\n return str.split('').map((c) => parseInt(c, 10));\n }\n\n /* ── Public API ─────────────────────────────────────────── */\n\n /** Anima el contador a un nuevo valor manualmente. */\n public animateTo(value: number): void {\n this.value = value;\n }\n\n /** Reinicia la animación desde cero al valor actual. */\n public replay(): void {\n this._hasAnimated = false;\n this._animateTo(this.value, true);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-counter': LibCounter;\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index26.js","sources":["../src/components/atoms/kbd/lib-kbd.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { kbdTemplate } from './lib-kbd.html';\nimport kbdCss from './lib-kbd.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\nexport type LibKbdSize = 'xs' | 'sm' | 'md' | 'lg';\nexport type LibKbdVariant = 'default' | 'dark' | 'ghost' | 'kaki' | 'celadon';\n\n/**\n * @element lib-kbd\n *\n * Representa una tecla de teclado física.\n * El `border-bottom` de 3px simula la pared lateral de la tecla.\n * El estado `pressed` produce un desplazamiento físico de 1-2px.\n *\n * @slot (default) — el símbolo o texto de la tecla (⌘, K, Ctrl…)\n *\n * @example — tecla individual\n * <lib-kbd>⌘</lib-kbd>\n *\n * @example — combo (el consumer compone las teclas)\n * <lib-kbd size=\"sm\">⌘</lib-kbd>\n * <span>+</span>\n * <lib-kbd size=\"sm\">K</lib-kbd>\n *\n * @example — pressed programático\n * <lib-kbd pressed>Space</lib-kbd>\n */\n@customElement('lib-kbd')\nexport class LibKbd extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(kbdCss)}`,\n ];\n\n /** Tamaño de la tecla. */\n @property({ type: String, reflect: true })\n size: LibKbdSize = 'md';\n\n /** Variante visual de color. */\n @property({ type: String, reflect: true })\n variant: LibKbdVariant = 'default';\n\n /**\n * Estado pressed programático.\n * El componente también gestiona pressed internamente\n * via mousedown/mouseup para la interacción del usuario.\n */\n @property({ type: Boolean, reflect: true })\n pressed = false;\n\n /** Estado interno de pulsación por ratón (no expuesto como atributo). */\n @state()\n private _pointerPressed = false;\n\n override render(): TemplateResult {\n return kbdTemplate({\n size: this.size,\n variant: this.variant,\n pressed: this.pressed || this._pointerPressed,\n onDown: this._onPointerDown.bind(this),\n onUp: this._onPointerUp.bind(this),\n onLeave: this._onPointerLeave.bind(this),\n });\n }\n\n private _onPointerDown(): void {\n this._pointerPressed = true;\n }\n\n private _onPointerUp(): void {\n this._pointerPressed = false;\n }\n\n private _onPointerLeave(): void {\n this._pointerPressed = false;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-kbd': LibKbd;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AA8BO,IAAM,SAAN,cAAqB,WAAW;AAAA,EAAhC,cAAA;AAAA,UAAA,GAAA,SAAA;AAQL,SAAA,OAAmB;AAInB,SAAA,UAAyB;AAQzB,SAAA,UAAU;AAIV,SAAQ,kBAAkB;AAAA,EAAA;AAAA,EAEjB,SAAyB;AAChC,WAAO,YAAY;AAAA,MACjB,MAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,SAAS,KAAK,WAAW,KAAK;AAAA,MAC9B,QAAS,KAAK,eAAe,KAAK,IAAI;AAAA,MACtC,MAAS,KAAK,aAAa,KAAK,IAAI;AAAA,MACpC,SAAS,KAAK,gBAAgB,KAAK,IAAI;AAAA,IAAA,CACxC;AAAA,EACH;AAAA,EAEQ,iBAAuB;AAC7B,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEQ,eAAqB;AAC3B,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEQ,kBAAwB;AAC9B,SAAK,kBAAkB;AAAA,EACzB;AACF;AAhDa,OACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,MAAM,CAAC;AACzB;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAP9B,OAQX,WAAA,QAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAX9B,OAYX,WAAA,WAAA,CAAA;AAQA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAnB/B,OAoBX,WAAA,WAAA,CAAA;AAIQ,gBAAA;AAAA,EADP,MAAA;AAAM,GAvBI,OAwBH,WAAA,mBAAA,CAAA;AAxBG,SAAN,gBAAA;AAAA,EADN,cAAc,SAAS;AAAA,GACX,MAAA;"}
package/dist/index260.js CHANGED
@@ -1,35 +1,5 @@
1
- import { svg, nothing, html } from "lit";
2
- const spinnerSvg = svg`
3
- <svg class="spinner" viewBox="0 0 16 16" fill="none"
4
- stroke="currentColor" stroke-width="1.5" stroke-linecap="round">
5
- <path d="M8 2a6 6 0 1 0 6 6" opacity="0.3"/>
6
- <path d="M14 8a6 6 0 0 0-6-6"/>
7
- </svg>`;
8
- function buttonLiquidTemplate(ctx) {
9
- const { loading, disabled } = ctx;
10
- return html`
11
- <button
12
- class="btn"
13
- part="button"
14
- ?disabled="${disabled || loading}"
15
- aria-disabled="${disabled || loading}"
16
- aria-busy="${loading ? "true" : nothing}"
17
- @mouseenter="${(e) => ctx._onMouseEnter(e)}"
18
- @mouseleave="${() => ctx._onMouseLeave()}"
19
- @mousedown="${(e) => ctx._onMouseDown(e)}"
20
- >
21
- <!-- Canvas inyectado por el componente en firstUpdated -->
22
-
23
- <span class="btn-inner" part="inner">
24
- ${loading ? spinnerSvg : nothing}
25
- <slot name="prefix"></slot>
26
- <slot></slot>
27
- <slot name="suffix"></slot>
28
- </span>
29
- </button>
30
- `;
31
- }
1
+ const stepperCss = '@layer tokens,reset,components;@layer reset{:host{display:block;width:100%}*,*:before,*:after{box-sizing:border-box}}@layer components{.stepper-track{display:flex;flex-direction:row;align-items:flex-start;width:100%;position:relative}:host([orientation="vertical"]) .stepper-track{flex-direction:column}}';
32
2
  export {
33
- buttonLiquidTemplate
3
+ stepperCss as default
34
4
  };
35
5
  //# sourceMappingURL=index260.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index260.js","sources":["../src/components/atoms/liquid-button/lib-liquid-button.html.ts"],"sourcesContent":["import { html, svg, nothing, TemplateResult } from 'lit';\nimport type { LibButtonLiquid } from './lib-liquid-button.component';\n\n/* ── Spinner SVG ── */\nconst spinnerSvg: TemplateResult = svg`\n <svg class=\"spinner\" viewBox=\"0 0 16 16\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\">\n <path d=\"M8 2a6 6 0 1 0 6 6\" opacity=\"0.3\"/>\n <path d=\"M14 8a6 6 0 0 0-6-6\"/>\n </svg>`;\n\n/* ── Main template ── */\nexport function buttonLiquidTemplate(ctx: LibButtonLiquid): TemplateResult {\n const { loading, disabled } = ctx;\n\n return html`\n <button\n class=\"btn\"\n part=\"button\"\n ?disabled=\"${disabled || loading}\"\n aria-disabled=\"${disabled || loading}\"\n aria-busy=\"${loading ? 'true' : nothing}\"\n @mouseenter=\"${(e: MouseEvent): void => ctx._onMouseEnter(e)}\"\n @mouseleave=\"${(): void => ctx._onMouseLeave()}\"\n @mousedown=\"${(e: MouseEvent): void => ctx._onMouseDown(e)}\"\n >\n <!-- Canvas inyectado por el componente en firstUpdated -->\n\n <span class=\"btn-inner\" part=\"inner\">\n ${loading ? spinnerSvg : nothing}\n <slot name=\"prefix\"></slot>\n <slot></slot>\n <slot name=\"suffix\"></slot>\n </span>\n </button>\n `;\n}"],"names":[],"mappings":";AAIA,MAAM,aAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ5B,SAAS,qBAAqB,KAAsC;AACzE,QAAM,EAAE,SAAS,SAAA,IAAa;AAE9B,SAAO;AAAA;AAAA;AAAA;AAAA,mBAIU,YAAY,OAAO;AAAA,uBACf,YAAY,OAAO;AAAA,mBACvB,UAAU,SAAS,OAAO;AAAA,qBACxB,CAAC,MAAwB,IAAI,cAAc,CAAC,CAAC;AAAA,qBAC7C,MAAY,IAAI,eAAe;AAAA,oBAChC,CAAC,MAAwB,IAAI,aAAa,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,UAKtD,UAAU,aAAa,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOxC;"}
1
+ {"version":3,"file":"index260.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index261.js CHANGED
@@ -1,5 +1,5 @@
1
- const liquidCss = '@layer tokens,reset,components;@layer reset{:host{display:inline-flex;vertical-align:middle}*,*:before,*:after{box-sizing:border-box}}@layer components{.btn{display:inline-flex;align-items:center;justify-content:center;font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;cursor:pointer;border:none;padding:var(--lib-space-sm) var(--lib-space-lg);white-space:nowrap;position:relative;overflow:hidden;isolation:isolate;transition:box-shadow .2s ease,transform .1s ease;border-radius:0;outline:none;width:100%}.btn:focus-visible{outline:2px solid var(--color-kaki-400);outline-offset:2px}.btn:active:not(:disabled,.is-loading){transform:translateY(1px)}:host([disabled]) .btn,.btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0}.btn-inner{position:relative;z-index:1;display:inline-flex;align-items:center;gap:var(--lib-space-xs);pointer-events:none}.spinner{display:inline-block;width:11px;height:11px;flex-shrink:0;animation:lbl-spin .9s linear infinite}@keyframes lbl-spin{to{transform:rotate(360deg)}}:host([size="sm"]) .btn{padding:var(--lib-space-xs) var(--lib-space-md);font-size:10px}:host([size="lg"]) .btn{padding:var(--lib-space-md) var(--lib-space-xl);font-size:var(--text-sm);letter-spacing:var(--tracking-widest)}:host([block]){display:flex;width:100%}:host([variant="ink"]) .btn{background:var(--color-washi-900);color:var(--color-washi-100)}:host([variant="washi"]) .btn{background:transparent;color:var(--text-primary);border:1px solid var(--border-strong)}:host([variant="kaki"]) .btn{background:var(--color-kaki-400);color:#fff}:host([variant="celadon"]) .btn{background:var(--color-celadon-500);color:#fff}:host([variant="ghost"]) .btn{background:transparent;color:var(--text-secondary);border:none}:host([variant="danger"]) .btn{background:transparent;color:var(--color-error);border:1px solid var(--color-error)}:host([variant="ghost"][dark]) .btn{color:var(--color-washi-400)}}';
1
+ const timelineCss = '@layer tokens,reset,components;@layer reset{*,*:before,*:after{box-sizing:border-box}:host{display:block}}@layer components{.tl{display:flex;flex-direction:column;gap:0}.tl-item{display:grid;grid-template-columns:40px 1fr;gap:0 var(--lib-space-md);position:relative}.tl-spine{display:flex;flex-direction:column;align-items:center;position:relative}.tl-node{width:28px;height:28px;border-radius:var(--radius-full);flex-shrink:0;display:flex;align-items:center;justify-content:center;position:relative;z-index:1;transition:transform var(--duration-base),box-shadow var(--duration-base)}.tl-node-dot{background:var(--bg-elevated);border:2px solid var(--color-washi-700)}.tl-node-dot:after{content:"";width:8px;height:8px;border-radius:var(--radius-full);background:var(--color-washi-700)}.tl-node-icon{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-sm);font-size:14px;color:var(--text-secondary)}.tl-node-avatar{background:var(--color-washi-200);border:1px solid var(--border-default);font-family:var(--lib-font-mono);font-size:9px;color:var(--text-secondary)}.nd-kaki.tl-node-dot{border-color:var(--color-kaki-500)}.nd-kaki.tl-node-dot:after{background:var(--color-kaki-500)}.nd-kaki.tl-node-icon{background:var(--color-kaki-50);border-color:var(--color-kaki-100);color:var(--color-kaki-500)}.nd-kaki.tl-node-avatar{background:var(--color-kaki-100);border-color:var(--color-kaki-100);color:var(--color-kaki-600)}.nd-celadon.tl-node-dot{border-color:var(--color-celadon-500)}.nd-celadon.tl-node-dot:after{background:var(--color-celadon-500)}.nd-celadon.tl-node-icon{background:var(--color-celadon-50);border-color:var(--color-celadon-100);color:var(--color-celadon-500)}.nd-celadon.tl-node-avatar{background:var(--color-celadon-100);border-color:var(--color-celadon-100);color:var(--color-celadon-600)}.nd-error.tl-node-dot{border-color:var(--color-error)}.nd-error.tl-node-dot:after{background:var(--color-error)}.nd-error.tl-node-icon{background:#fff8f7;border-color:#f5c4bc;color:var(--color-error)}.nd-muted.tl-node-dot{border-color:var(--color-washi-300);border-style:dashed}.nd-muted.tl-node-dot:after{background:var(--color-washi-300)}.nd-muted.tl-node-icon{background:var(--bg-surface);border-color:var(--border-subtle);color:var(--text-muted)}@keyframes tl-pulse{0%{box-shadow:0 0 #b85a1e59}70%{box-shadow:0 0 0 8px #b85a1e00}to{box-shadow:0 0 #b85a1e00}}.tl-item.is-active .tl-node-dot{border-color:var(--color-kaki-500);animation:tl-pulse 2s infinite}.tl-item.is-active .tl-node-dot:after{background:var(--color-kaki-500)}.tl-item.is-active .tl-title{color:var(--text-primary)}.tl-item.is-done .tl-node-dot{background:var(--color-washi-900);border-color:var(--color-washi-900)}.tl-item.is-done .tl-node-dot:after{display:none}.tl-item.is-done .tl-node-dot:before{content:"";width:6px;height:10px;border-right:2px solid var(--color-white);border-bottom:2px solid var(--color-white);transform:rotate(45deg) translate(-1px,-2px)}.tl-item.is-error .tl-node-dot{background:var(--color-error);border-color:var(--color-error)}.tl-item.is-error .tl-node-dot:after{display:none}.tl-item.is-error .tl-node-dot:before{content:"!";font-family:var(--lib-font-mono);font-size:11px;font-weight:700;color:var(--color-white);line-height:1}.tl-item.is-error .tl-title{color:var(--color-error)}.tl-item.is-pending .tl-node-dot{border-color:var(--color-washi-300);border-style:dashed}.tl-item.is-pending .tl-node-dot:after{background:var(--color-washi-300);width:6px;height:6px}.tl-item.is-pending .tl-title{color:var(--text-muted)}.tl-item.is-pending .tl-body{opacity:.5}.tl-line{width:1px;flex:1;background:var(--border-default);margin:var(--lib-space-xs) 0;min-height:var(--lib-space-lg);position:relative;overflow:hidden}.tl-line.dashed{background:repeating-linear-gradient(to bottom,var(--border-default) 0,var(--border-default) 4px,transparent 4px,transparent 8px)}.tl-line.progress{background:var(--border-subtle)}.tl-line.progress:after{content:"";position:absolute;top:0;left:0;right:0;height:var(--tl-progress, 0%);background:var(--color-kaki-500);transition:height var(--duration-slower) var(--ease-out)}.tl-content{padding-bottom:var(--lib-space-lg);padding-top:2px}.tl-item:last-child .tl-content{padding-bottom:0}.tl-timestamp{font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wider);color:var(--text-muted);margin-bottom:var(--lib-space-sm);display:flex;align-items:center;gap:var(--lib-space-sm);line-height:1;padding-top:6px}.tl-timestamp-dot{width:4px;height:4px;border-radius:var(--radius-full);background:var(--color-washi-300);flex-shrink:0}.tl-title{font-family:var(--lib-font-body);font-size:var(--text-base);color:var(--text-secondary);line-height:var(--leading-snug);margin-bottom:var(--lib-space-sm)}.tl-body{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-relaxed);opacity:.85}.tl-body p{margin-bottom:var(--lib-space-sm)}.tl-body p:last-child{margin-bottom:0}.tl-meta{display:flex;align-items:center;flex-wrap:wrap;gap:var(--lib-space-sm);margin-top:var(--lib-space-sm)}.tl-card{background:var(--bg-elevated);border:1px solid var(--border-subtle);padding:var(--lib-space-md) var(--lib-space-md);margin-top:var(--lib-space-xs)}.tl-item.is-active .tl-card{border-color:var(--color-kaki-200);background:var(--color-kaki-50)}.tl-item.is-done .tl-card{background:var(--bg-surface)}.tl-item.is-error .tl-card{border-color:#c44030;background:#fff8f7}.tl-item.is-pending .tl-card{background:var(--bg-surface);opacity:.6}.tl-media{margin-top:var(--lib-space-md);border-top:1px solid var(--border-subtle);padding-top:var(--lib-space-md);display:flex;gap:var(--lib-space-sm);flex-wrap:wrap}.tl-media-thumb{width:64px;height:48px;background:var(--border-subtle);border:1px solid var(--border-default);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--text-muted)}.tl-badge{display:inline-flex;align-items:center;gap:var(--lib-space-xs);font-family:var(--lib-font-mono);font-size:9px;letter-spacing:var(--tracking-wider);text-transform:uppercase;padding:2px var(--lib-space-sm)}.tl-badge:before{content:"";width:4px;height:4px;border-radius:var(--radius-full);background:currentcolor;opacity:.65;flex-shrink:0}.tl-badge-default{color:var(--text-muted);background:var(--bg-surface);border:1px solid var(--border-subtle)}.tl-badge-kaki{color:var(--color-kaki-500);background:var(--color-kaki-50);border:1px solid var(--color-kaki-100)}.tl-badge-celadon{color:var(--color-celadon-500);background:var(--color-celadon-50);border:1px solid var(--color-celadon-100)}.tl-badge-error{color:var(--color-error);background:#fff8f7;border:1px solid #F5C4BC}.tl-avatar{width:20px;height:20px;border-radius:var(--radius-full);background:var(--color-washi-200);display:inline-flex;align-items:center;justify-content:center;font-family:var(--lib-font-mono);font-size:7px;color:var(--text-secondary);border:1px solid var(--border-subtle);flex-shrink:0}.tl-item.is-collapsed .tl-body,.tl-item.is-collapsed .tl-media,.tl-item.is-collapsed .tl-card-body{display:none}.tl-item.is-collapsed .tl-content{padding-bottom:var(--lib-space-md)}.tl-expand-btn{background:none;border:none;cursor:pointer;font-family:var(--lib-font-mono);font-size:9px;letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-muted);padding:0;margin-top:var(--lib-space-sm);display:flex;align-items:center;gap:var(--lib-space-sm);transition:color var(--duration-fast)}.tl-expand-btn:hover{color:var(--text-primary)}:host([size="sm"]) .tl-item{grid-template-columns:28px 1fr}:host([size="sm"]) .tl-node{width:20px;height:20px}:host([size="sm"]) .tl-node-dot:after{width:6px;height:6px}:host([size="sm"]) .tl-node-icon{font-size:11px}:host([size="sm"]) .tl-node-avatar{font-size:7px}:host([size="sm"]) .tl-line{min-height:var(--lib-space-md)}:host([size="sm"]) .tl-content{padding-bottom:var(--lib-space-md)}:host([size="sm"]) .tl-timestamp{font-size:9px;padding-top:2px}:host([size="sm"]) .tl-title{font-size:var(--text-sm)}:host([size="sm"]) .tl-body{font-size:var(--text-xs)}:host([size="sm"]) .tl-card{padding:var(--lib-space-sm) var(--lib-space-md)}:host([size="lg"]) .tl-item{grid-template-columns:48px 1fr;gap:0 var(--lib-space-md)}:host([size="lg"]) .tl-node{width:36px;height:36px}:host([size="lg"]) .tl-node-dot:after{width:10px;height:10px}:host([size="lg"]) .tl-node-icon{font-size:18px}:host([size="lg"]) .tl-line{min-height:var(--lib-space-lg)}:host([size="lg"]) .tl-content{padding-bottom:var(--lib-space-xl);padding-top:4px}:host([size="lg"]) .tl-timestamp{font-size:11px;padding-top:8px}:host([size="lg"]) .tl-title{font-size:var(--text-md)}:host([size="lg"]) .tl-body{font-size:var(--text-sm)}:host([size="lg"]) .tl-card{padding:var(--lib-space-md) var(--lib-space-lg)}}';
2
2
  export {
3
- liquidCss as default
3
+ timelineCss as default
4
4
  };
5
5
  //# sourceMappingURL=index261.js.map
package/dist/index262.js CHANGED
@@ -1,12 +1,95 @@
1
- const LIQUID_PALETTES = {
2
- ink: { water: [184, 90, 30], ripple: [255, 180, 100] },
3
- washi: { water: [34, 28, 22], ripple: [90, 72, 56] },
4
- kaki: { water: [140, 65, 21], ripple: [255, 220, 180] },
5
- celadon: { water: [36, 82, 73], ripple: [160, 220, 200] },
6
- ghost: { water: [184, 165, 146], ripple: [140, 120, 100] },
7
- danger: { water: [140, 42, 26], ripple: [220, 100, 80] }
8
- };
1
+ import { html, nothing } from "lit";
2
+ import { styleMap as o } from "./index267.js";
3
+ function timelineItemTemplate(props) {
4
+ const {
5
+ nodeType,
6
+ nodeColor,
7
+ icon,
8
+ avatar,
9
+ status,
10
+ lineVariant,
11
+ lineProgress,
12
+ hideLine,
13
+ timestamp,
14
+ title,
15
+ body,
16
+ card,
17
+ collapsed,
18
+ collapsible,
19
+ onToggleCollapse
20
+ } = props;
21
+ const itemCls = [
22
+ "tl-item",
23
+ status !== "default" ? `is-${status}` : "",
24
+ collapsed ? "is-collapsed" : ""
25
+ ].filter(Boolean).join(" ");
26
+ const nodeTypeCls = `tl-node-${nodeType}`;
27
+ const nodeColorCls = nodeColor !== "default" ? `nd-${nodeColor}` : "";
28
+ const nodeCls = `tl-node ${nodeTypeCls} ${nodeColorCls}`.trim();
29
+ const nodeInner = nodeType === "icon" ? html`<lib-icon name="${icon}" size="xs"></lib-icon>` : nodeType === "avatar" ? html`${avatar}` : nothing;
30
+ const lineCls = [
31
+ "tl-line",
32
+ lineVariant === "dashed" ? "dashed" : "",
33
+ lineVariant === "progress" ? "progress" : ""
34
+ ].filter(Boolean).join(" ");
35
+ const lineStyles = lineVariant === "progress" ? o({ "--tl-progress": `${lineProgress}%` }) : nothing;
36
+ const contentInner = card ? html`
37
+ <div class="tl-card">
38
+ ${title ? html`<p class="tl-title">${title}</p>` : nothing}
39
+ <div class="tl-card-body">
40
+ ${body ? html`<div class="tl-body">${body}</div>` : nothing}
41
+ <!-- slot por defecto para contenido libre dentro de la card -->
42
+ <slot></slot>
43
+ <!-- slot meta: badges, avatares, etc. -->
44
+ <div class="tl-meta">
45
+ <slot name="meta"></slot>
46
+ </div>
47
+ <!-- slot media: imágenes adjuntas -->
48
+ <slot name="media"></slot>
49
+ </div>
50
+ </div>` : html`
51
+ ${title ? html`<p class="tl-title">${title}</p>` : nothing}
52
+ ${body ? html`<div class="tl-body">${body}</div>` : html`<div class="tl-body"><slot></slot></div>`}
53
+ <div class="tl-meta">
54
+ <slot name="meta"></slot>
55
+ </div>`;
56
+ return html`
57
+ <div class="${itemCls}" role="listitem">
58
+
59
+ <!-- ── Spine: nodo + línea ── -->
60
+ <div class="tl-spine">
61
+ <div class="${nodeCls}">${nodeInner}</div>
62
+ ${hideLine ? nothing : html`<div class="${lineCls}" style="${lineStyles}"></div>`}
63
+ </div>
64
+
65
+ <!-- ── Content ── -->
66
+ <div class="tl-content">
67
+ ${timestamp ? html`
68
+ <div class="tl-timestamp">
69
+ <span class="tl-timestamp-dot"></span>
70
+ ${timestamp}
71
+ </div>` : nothing}
72
+
73
+ ${contentInner}
74
+
75
+ ${collapsible ? html`
76
+ <button
77
+ class="tl-expand-btn"
78
+ aria-expanded="${!collapsed}"
79
+ @click="${onToggleCollapse}"
80
+ >
81
+ <lib-icon
82
+ name="${collapsed ? "caret-down" : "caret-up"}"
83
+ size="xs"
84
+ ></lib-icon>
85
+ ${collapsed ? "Mostrar más" : "Mostrar menos"}
86
+ </button>` : nothing}
87
+ </div>
88
+
89
+ </div>
90
+ `;
91
+ }
9
92
  export {
10
- LIQUID_PALETTES
93
+ timelineItemTemplate
11
94
  };
12
95
  //# sourceMappingURL=index262.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index262.js","sources":["../src/components/atoms/liquid-button/lib-liquid-button.types.ts"],"sourcesContent":["export type LiquidVariant = 'ink' | 'washi' | 'kaki' | 'celadon' | 'ghost' | 'danger';\nexport type LiquidSize = 'sm' | 'md' | 'lg';\n\n/** Parámetros RGB de la física del agua uno por variante */\nexport interface LiquidPalette {\n /** Color del cuerpo de agua (fill) */\n water: [number, number, number];\n /** Color de los anillos de impacto (ripple) */\n ripple: [number, number, number];\n}\n\nexport const LIQUID_PALETTES: Record<LiquidVariant, LiquidPalette> = {\n ink: { water: [184, 90, 30], ripple: [255, 180, 100] },\n washi: { water: [34, 28, 22], ripple: [90, 72, 56] },\n kaki: { water: [140, 65, 21], ripple: [255, 220, 180] },\n celadon: { water: [36, 82, 73], ripple: [160, 220, 200] },\n ghost: { water: [184, 165, 146], ripple: [140, 120, 100] },\n danger: { water: [140, 42, 26], ripple: [220, 100, 80] },\n};"],"names":[],"mappings":"AAWO,MAAM,kBAAwD;AAAA,EACnE,KAAS,EAAE,OAAO,CAAC,KAAK,IAAK,EAAE,GAAI,QAAQ,CAAC,KAAK,KAAK,GAAG,EAAA;AAAA,EACzD,OAAS,EAAE,OAAO,CAAC,IAAK,IAAK,EAAE,GAAI,QAAQ,CAAC,IAAK,IAAK,EAAE,EAAA;AAAA,EACxD,MAAS,EAAE,OAAO,CAAC,KAAK,IAAK,EAAE,GAAI,QAAQ,CAAC,KAAK,KAAK,GAAG,EAAA;AAAA,EACzD,SAAS,EAAE,OAAO,CAAC,IAAK,IAAK,EAAE,GAAI,QAAQ,CAAC,KAAK,KAAK,GAAG,EAAA;AAAA,EACzD,OAAS,EAAE,OAAO,CAAC,KAAK,KAAK,GAAG,GAAG,QAAQ,CAAC,KAAK,KAAK,GAAG,EAAA;AAAA,EACzD,QAAS,EAAE,OAAO,CAAC,KAAK,IAAK,EAAE,GAAI,QAAQ,CAAC,KAAK,KAAK,EAAE,EAAA;AAC1D;"}
1
+ {"version":3,"file":"index262.js","sources":["../src/components/organisms/timeline/lib-timeline-item.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport type { TimelineItemTemplateProps } from './lib-timeline-item.types';\n\nexport function timelineItemTemplate(props: TimelineItemTemplateProps): TemplateResult {\n const {\n nodeType, nodeColor, icon, avatar,\n status, lineVariant, lineProgress, hideLine,\n timestamp, title, body, card, collapsed, collapsible,\n onToggleCollapse,\n } = props;\n\n /* ── Clases del ítem raíz ── */\n const itemCls = [\n 'tl-item',\n status !== 'default' ? `is-${status}` : '',\n collapsed ? 'is-collapsed' : '',\n ].filter(Boolean).join(' ');\n\n /* ── Clases del nodo ── */\n const nodeTypeCls = `tl-node-${nodeType}`;\n const nodeColorCls = nodeColor !== 'default' ? `nd-${nodeColor}` : '';\n const nodeCls = `tl-node ${nodeTypeCls} ${nodeColorCls}`.trim();\n\n /* ── Nodo interior ── */\n const nodeInner = nodeType === 'icon'\n ? html`<lib-icon name=\"${icon}\" size=\"xs\"></lib-icon>`\n : nodeType === 'avatar'\n ? html`${avatar}`\n : nothing; /* dot nodo gestionado por CSS ::before/::after */\n\n /* ── Línea ── */\n const lineCls = [\n 'tl-line',\n lineVariant === 'dashed' ? 'dashed' : '',\n lineVariant === 'progress' ? 'progress' : '',\n ].filter(Boolean).join(' ');\n\n const lineStyles = lineVariant === 'progress'\n ? styleMap({ '--tl-progress': `${lineProgress}%` } as Record<string, string>)\n : nothing;\n\n /* ── Contenido ── */\n const contentInner: TemplateResult = card\n ? html`\n <div class=\"tl-card\">\n ${title ? html`<p class=\"tl-title\">${title}</p>` : nothing}\n <div class=\"tl-card-body\">\n ${body ? html`<div class=\"tl-body\">${body}</div>` : nothing}\n <!-- slot por defecto para contenido libre dentro de la card -->\n <slot></slot>\n <!-- slot meta: badges, avatares, etc. -->\n <div class=\"tl-meta\">\n <slot name=\"meta\"></slot>\n </div>\n <!-- slot media: imágenes adjuntas -->\n <slot name=\"media\"></slot>\n </div>\n </div>`\n : html`\n ${title ? html`<p class=\"tl-title\">${title}</p>` : nothing}\n ${body\n ? html`<div class=\"tl-body\">${body}</div>`\n : html`<div class=\"tl-body\"><slot></slot></div>`}\n <div class=\"tl-meta\">\n <slot name=\"meta\"></slot>\n </div>`;\n\n return html`\n <div class=\"${itemCls}\" role=\"listitem\">\n\n <!-- ── Spine: nodo + línea ── -->\n <div class=\"tl-spine\">\n <div class=\"${nodeCls}\">${nodeInner}</div>\n ${hideLine\n ? nothing\n : html`<div class=\"${lineCls}\" style=\"${lineStyles}\"></div>`}\n </div>\n\n <!-- ── Content ── -->\n <div class=\"tl-content\">\n ${timestamp\n ? html`\n <div class=\"tl-timestamp\">\n <span class=\"tl-timestamp-dot\"></span>\n ${timestamp}\n </div>`\n : nothing}\n\n ${contentInner}\n\n ${collapsible\n ? html`\n <button\n class=\"tl-expand-btn\"\n aria-expanded=\"${!collapsed}\"\n @click=\"${onToggleCollapse}\"\n >\n <lib-icon\n name=\"${collapsed ? 'caret-down' : 'caret-up'}\"\n size=\"xs\"\n ></lib-icon>\n ${collapsed ? 'Mostrar más' : 'Mostrar menos'}\n </button>`\n : nothing}\n </div>\n\n </div>\n `;\n}"],"names":["styleMap"],"mappings":";;AAIO,SAAS,qBAAqB,OAAkD;AACrF,QAAM;AAAA,IACJ;AAAA,IAAU;AAAA,IAAW;AAAA,IAAM;AAAA,IAC3B;AAAA,IAAQ;AAAA,IAAa;AAAA,IAAc;AAAA,IACnC;AAAA,IAAW;AAAA,IAAO;AAAA,IAAM;AAAA,IAAM;AAAA,IAAW;AAAA,IACzC;AAAA,EAAA,IACE;AAGJ,QAAM,UAAU;AAAA,IACd;AAAA,IACA,WAAW,YAAY,MAAM,MAAM,KAAK;AAAA,IACxC,YAAY,iBAAiB;AAAA,EAAA,EAC7B,OAAO,OAAO,EAAE,KAAK,GAAG;AAG1B,QAAM,cAAc,WAAW,QAAQ;AACvC,QAAM,eAAe,cAAc,YAAY,MAAM,SAAS,KAAK;AACnE,QAAM,UAAU,WAAW,WAAW,IAAI,YAAY,GAAG,KAAA;AAGzD,QAAM,YAAY,aAAa,SAC3B,uBAAuB,IAAI,4BAC3B,aAAa,WACX,OAAO,MAAM,KACb;AAGN,QAAM,UAAU;AAAA,IACd;AAAA,IACA,gBAAgB,WAAa,WAAa;AAAA,IAC1C,gBAAgB,aAAa,aAAa;AAAA,EAAA,EAC1C,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,QAAM,aAAa,gBAAgB,aAC/BA,EAAS,EAAE,iBAAiB,GAAG,YAAY,IAAA,CAA+B,IAC1E;AAGJ,QAAM,eAA+B,OACjC;AAAA;AAAA,YAEM,QAAQ,2BAA2B,KAAK,SAAS,OAAO;AAAA;AAAA,cAEtD,OAAO,4BAA4B,IAAI,WAAW,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAWjE;AAAA,UACI,QAAQ,2BAA2B,KAAK,SAAS,OAAO;AAAA,UACxD,OACE,4BAA4B,IAAI,WAChC,8CAA8C;AAAA;AAAA;AAAA;AAKxD,SAAO;AAAA,kBACS,OAAO;AAAA;AAAA;AAAA;AAAA,sBAIH,OAAO,KAAK,SAAS;AAAA,UACjC,WACE,UACA,mBAAmB,OAAO,YAAY,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,UAK5D,YACE;AAAA;AAAA;AAAA,kBAGM,SAAS;AAAA,wBAEf,OAAO;AAAA;AAAA,UAET,YAAY;AAAA;AAAA,UAEZ,cACE;AAAA;AAAA;AAAA,iCAGqB,CAAC,SAAS;AAAA,0BACjB,gBAAgB;AAAA;AAAA;AAAA,0BAGhB,YAAY,eAAe,UAAU;AAAA;AAAA;AAAA,kBAG7C,YAAY,gBAAgB,eAAe;AAAA,2BAEjD,OAAO;AAAA;AAAA;AAAA;AAAA;AAKnB;"}