@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/index45.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
2
  import { property, customElement } from "lit/decorators.js";
3
- import { rendercontentPillar } from "./index275.js";
4
- import componentCss from "./index276.js";
5
3
  import sharedTokens from "./index196.js";
4
+ import glitchCss from "./index344.js";
5
+ import { textGlitchTemplate } from "./index345.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
8
  var __decorateClass = (decorators, target, key, kind) => {
@@ -13,38 +13,155 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibContentPillar = class extends LitElement {
16
+ const KANA = "ア エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ヲ ン ガ ギ グ ゲ ゴ " + "ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド バ ビ ブ ベ ボ 渋 液 美 乱 進 間 静 陰 影 黒 白 墨 和 侘".split(" ");
17
+ let LibTextGlitch = class extends LitElement {
17
18
  constructor() {
18
19
  super(...arguments);
19
- this.kanji = "";
20
- this.label = "";
21
- this.description = "";
22
- this.surface = "dark";
20
+ this.text = "";
21
+ this.variant = "slice";
22
+ this.trigger = "hover";
23
+ this.active = false;
24
+ this._running = false;
25
+ this._boundMouseEnter = () => {
26
+ this._decodePlay();
27
+ };
28
+ }
29
+ /* ── Lifecycle ──────────────────────────────────────────── */
30
+ connectedCallback() {
31
+ super.connectedCallback();
32
+ this._setupDecode();
33
+ }
34
+ disconnectedCallback() {
35
+ super.disconnectedCallback();
36
+ this.removeEventListener("mouseenter", this._boundMouseEnter);
37
+ clearTimeout(this._alwaysTimer);
38
+ }
39
+ updated(changed) {
40
+ const reInit = changed.has("variant") || changed.has("trigger") || changed.has("text");
41
+ if (reInit) {
42
+ this.removeEventListener("mouseenter", this._boundMouseEnter);
43
+ clearTimeout(this._alwaysTimer);
44
+ this._running = false;
45
+ this._setupDecode();
46
+ }
23
47
  }
24
48
  render() {
25
- return rendercontentPillar(this);
49
+ return textGlitchTemplate({ text: this.text, variant: this.variant });
50
+ }
51
+ /* ── API pública ────────────────────────────────────────── */
52
+ /**
53
+ * Reproduce el efecto manualmente una vez.
54
+ * - Para `decode`: lanza el scramble de kanji.
55
+ * - Para `scan` / `redact`: activa [active] y lo retira al terminar.
56
+ * - Para `slice` / `shift` / `noise`: activa [active] (CSS bucle).
57
+ */
58
+ play() {
59
+ if (this.variant === "decode") {
60
+ this._decodePlay();
61
+ return;
62
+ }
63
+ this.active = true;
64
+ if (this.variant === "scan" || this.variant === "redact") {
65
+ const dur = this.variant === "scan" ? 620 : 720;
66
+ setTimeout(() => {
67
+ this.active = false;
68
+ }, dur);
69
+ }
70
+ }
71
+ /** Detiene el bucle `trigger="always"` y desactiva [active]. */
72
+ stop() {
73
+ clearTimeout(this._alwaysTimer);
74
+ this._running = false;
75
+ this.active = false;
76
+ }
77
+ /* ── Decode engine ──────────────────────────────────────── */
78
+ _setupDecode() {
79
+ if (this.variant !== "decode") return;
80
+ if (this.trigger === "hover") {
81
+ this.addEventListener("mouseenter", this._boundMouseEnter);
82
+ } else {
83
+ this.updateComplete.then(() => {
84
+ this._scheduleAlwaysDecode();
85
+ });
86
+ }
87
+ }
88
+ _scheduleAlwaysDecode() {
89
+ this._decodePlay();
90
+ const pause = Math.max([...this.text].length * 55 * 1.5, 400) + 2e3;
91
+ this._alwaysTimer = setTimeout(() => {
92
+ this._scheduleAlwaysDecode();
93
+ }, pause);
94
+ }
95
+ /**
96
+ * Motor de decodificación kanji.
97
+ *
98
+ * Cada char span se sustituye por un katakana/kanji aleatorio
99
+ * durante un número variable de frames, y luego se resuelve al
100
+ * carácter original. El orden de resolución es estocástico.
101
+ */
102
+ _decodePlay() {
103
+ if (this._running) return;
104
+ this._running = true;
105
+ const chars = Array.from(
106
+ this.renderRoot.querySelectorAll(".char")
107
+ );
108
+ if (chars.length === 0) {
109
+ this._running = false;
110
+ return;
111
+ }
112
+ const SCRAMBLE_CYCLES = 6;
113
+ const FRAME_MS = 55;
114
+ const delays = chars.map(
115
+ () => Math.floor(Math.random() * chars.length * SCRAMBLE_CYCLES * 0.6) + SCRAMBLE_CYCLES
116
+ );
117
+ let frame = 0;
118
+ const total = Math.max(...delays) + 2;
119
+ const tick = () => {
120
+ chars.forEach((span, i) => {
121
+ const orig = span.dataset["original"] ?? "";
122
+ if (frame < (delays[i] ?? 0)) {
123
+ if (orig.trim() === "" || orig === "·" || orig === "-") return;
124
+ span.textContent = KANA[Math.floor(Math.random() * KANA.length)] ?? orig;
125
+ span.classList.add("is-scrambling");
126
+ } else {
127
+ span.textContent = orig;
128
+ span.classList.remove("is-scrambling");
129
+ }
130
+ });
131
+ frame++;
132
+ if (frame < total) {
133
+ setTimeout(tick, FRAME_MS);
134
+ } else {
135
+ chars.forEach((span) => {
136
+ span.textContent = span.dataset["original"] ?? "";
137
+ span.classList.remove("is-scrambling");
138
+ });
139
+ this._running = false;
140
+ }
141
+ };
142
+ tick();
26
143
  }
27
144
  };
28
- LibContentPillar.styles = [
145
+ LibTextGlitch.styles = [
29
146
  css`${unsafeCSS(sharedTokens)}`,
30
- css`${unsafeCSS(componentCss)}`
147
+ css`${unsafeCSS(glitchCss)}`
31
148
  ];
32
149
  __decorateClass([
33
150
  property({ type: String })
34
- ], LibContentPillar.prototype, "kanji", 2);
35
- __decorateClass([
36
- property({ type: String })
37
- ], LibContentPillar.prototype, "label", 2);
151
+ ], LibTextGlitch.prototype, "text", 2);
38
152
  __decorateClass([
39
- property({ type: String })
40
- ], LibContentPillar.prototype, "description", 2);
153
+ property({ type: String, reflect: true })
154
+ ], LibTextGlitch.prototype, "variant", 2);
41
155
  __decorateClass([
42
156
  property({ type: String, reflect: true })
43
- ], LibContentPillar.prototype, "surface", 2);
44
- LibContentPillar = __decorateClass([
45
- customElement("lib-content-pillar")
46
- ], LibContentPillar);
157
+ ], LibTextGlitch.prototype, "trigger", 2);
158
+ __decorateClass([
159
+ property({ type: Boolean, reflect: true })
160
+ ], LibTextGlitch.prototype, "active", 2);
161
+ LibTextGlitch = __decorateClass([
162
+ customElement("lib-text-glitch")
163
+ ], LibTextGlitch);
47
164
  export {
48
- LibContentPillar
165
+ LibTextGlitch
49
166
  };
50
167
  //# sourceMappingURL=index45.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index45.js","sources":["../src/components/atoms/content-pillar/content-pillar.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, type TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { rendercontentPillar } from './content-pillar.html';\nimport componentCss from './content-pillar.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\n/**\n * `<lib-content-pillar>` — Pilar filosófico con kanji, label y descripción.\n *\n * Patrón recurrente del sistema Shibui: kanji decorativo a la izquierda +\n * etiqueta en DM Mono + cuerpo de texto en Shippori Mincho.\n *\n * @tag lib-content-pillar\n *\n * @attr {string} kanji - Carácter kanji decorativo (ej: \"侘\", \"金\", \"間\").\n * @attr {string} label - Etiqueta en mono uppercase (ej: \"Wabi · Imperfección\").\n * @attr {string} description - Texto de descripción inline.\n * @attr {'dark'|'light'} surface - Superficie sobre la que se muestra. Default: `dark`.\n *\n * @slot - Descripción como rich content (alternativa al atributo `description`).\n *\n * @csspart pillar - Wrapper flex externo.\n * @csspart kanji - El carácter kanji.\n * @csspart body - Columna derecha (label + descripción).\n * @csspart label - La etiqueta mono.\n * @csspart description - El párrafo de descripción.\n *\n * @example\n * <lib-content-pillar\n * kanji=\"金\"\n * label=\"Kintsugi · Cicatrices de oro\"\n * description=\"Reparar con oro en lugar de ocultar.\"\n * ></lib-content-pillar>\n *\n * <!-- Con rich content -->\n * <lib-content-pillar kanji=\"間\" label=\"Ma · El espacio\">\n * El silencio entre notas. El espacio vacío <em>es</em> presencia.\n * </lib-content-pillar>\n */\n@customElement('lib-content-pillar')\nexport class LibContentPillar extends LitElement {\n\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(componentCss)}`,\n ];\n\n /** Carácter kanji decorativo */\n @property({ type: String })\n kanji = '';\n\n /** Etiqueta en DM Mono uppercase */\n @property({ type: String })\n label = '';\n\n /** Descripción inline (alternativa al slot) */\n @property({ type: String })\n description = '';\n\n /** Superficie de fondo */\n @property({ type: String, reflect: true })\n surface: 'dark' | 'light' = 'dark';\n\n protected override render(): TemplateResult {\n return rendercontentPillar(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-content-pillar': LibContentPillar;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAwCO,IAAM,mBAAN,cAA+B,WAAW;AAAA,EAA1C,cAAA;AAAA,UAAA,GAAA,SAAA;AASL,SAAA,QAAQ;AAIR,SAAA,QAAQ;AAIR,SAAA,cAAc;AAId,SAAA,UAA4B;AAAA,EAAA;AAAA,EAET,SAAyB;AAC1C,WAAO,oBAAoB,IAAI;AAAA,EACjC;AACF;AA1Ba,iBAEK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,YAAY,CAAC;AAC/B;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GARf,iBASX,WAAA,SAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAZf,iBAaX,WAAA,SAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAhBf,iBAiBX,WAAA,eAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GApB9B,iBAqBX,WAAA,WAAA,CAAA;AArBW,mBAAN,gBAAA;AAAA,EADN,cAAc,oBAAoB;AAAA,GACtB,gBAAA;"}
1
+ {"version":3,"file":"index45.js","sources":["../src/components/atoms/text-glitch/lib-text-glitch.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult, PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport glitchCss from './lib-text-glitch.css?inline';\nimport { textGlitchTemplate } from './lib-text-glitch.html';\n\n/* ── Tipos públicos ─────────────────────────────────────────── */\n\n/** Variante visual del efecto de glitch. */\nexport type TextGlitchVariant = 'slice' | 'scan' | 'shift' | 'decode' | 'redact' | 'noise';\n\n/**\n * Modo de activación del efecto.\n * - `hover` → se activa al pasar el cursor (default).\n * - `always` → se activa de forma continua al montar el componente.\n */\nexport type TextGlitchTrigger = 'hover' | 'always';\n\n/* ── Pool de caracteres para el decode ──────────────────────── */\n\nconst KANA =\n 'ア イ ウ エ オ カ キ ク ケ コ サ シ ス セ ソ タ チ ツ テ ト ナ ニ ヌ ネ ノ ' +\n 'ハ ヒ フ ヘ ホ マ ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ヲ ン ガ ギ グ ゲ ゴ ' +\n 'ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド バ ビ ブ ベ ボ 渋 液 美 乱 進 間 静 陰 影 黒 白 墨 和 侘'.split(' ');\n\n/**\n * @element lib-text-glitch\n *\n * @prop {string} text - Texto a renderizar y distorsionar.\n * @prop {TextGlitchVariant} variant - Efecto visual: slice | scan | shift | decode | redact | noise.\n * @prop {TextGlitchTrigger} trigger - Modo de activación: hover | always.\n * @prop {boolean} active - Activa el efecto programáticamente (reflectado en atributo).\n *\n * @method play() - Reproduce el efecto una vez (scan / redact / decode).\n * @method stop() - Detiene el bucle `trigger=\"always\"`.\n */\n@customElement('lib-text-glitch')\nexport class LibTextGlitch extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(glitchCss)}`,\n ];\n\n /* ── Props ──────────────────────────────────────────────── */\n\n @property({ type: String })\n text: string = '';\n\n @property({ type: String, reflect: true })\n variant: TextGlitchVariant = 'slice';\n\n @property({ type: String, reflect: true })\n trigger: TextGlitchTrigger = 'hover';\n\n /** Activa el efecto desde el exterior (CSS reacciona a [active]). */\n @property({ type: Boolean, reflect: true })\n active: boolean = false;\n\n /* ── Estado interno ─────────────────────────────────────── */\n\n private _running = false;\n private _alwaysTimer?: ReturnType<typeof setTimeout>;\n\n /* Bound handler reutilizable para poder hacer removeEventListener */\n private readonly _boundMouseEnter = (): void => { this._decodePlay(); };\n\n /* ── Lifecycle ──────────────────────────────────────────── */\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._setupDecode();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('mouseenter', this._boundMouseEnter);\n clearTimeout(this._alwaysTimer);\n }\n\n override updated(changed: PropertyValues): void {\n const reInit =\n changed.has('variant') ||\n changed.has('trigger') ||\n changed.has('text');\n\n if (reInit) {\n /* Limpieza del ciclo anterior */\n this.removeEventListener('mouseenter', this._boundMouseEnter);\n clearTimeout(this._alwaysTimer);\n this._running = false;\n this._setupDecode();\n }\n }\n\n override render(): TemplateResult {\n return textGlitchTemplate({ text: this.text, variant: this.variant });\n }\n\n /* ── API pública ────────────────────────────────────────── */\n\n /**\n * Reproduce el efecto manualmente una vez.\n * - Para `decode`: lanza el scramble de kanji.\n * - Para `scan` / `redact`: activa [active] y lo retira al terminar.\n * - Para `slice` / `shift` / `noise`: activa [active] (CSS bucle).\n */\n play(): void {\n if (this.variant === 'decode') {\n this._decodePlay();\n return;\n }\n this.active = true;\n if (this.variant === 'scan' || this.variant === 'redact') {\n const dur = this.variant === 'scan' ? 620 : 720;\n setTimeout(() => { this.active = false; }, dur);\n }\n }\n\n /** Detiene el bucle `trigger=\"always\"` y desactiva [active]. */\n stop(): void {\n clearTimeout(this._alwaysTimer);\n this._running = false;\n this.active = false;\n }\n\n /* ── Decode engine ──────────────────────────────────────── */\n\n private _setupDecode(): void {\n if (this.variant !== 'decode') return;\n\n if (this.trigger === 'hover') {\n this.addEventListener('mouseenter', this._boundMouseEnter);\n } else {\n /* always: esperamos el primer render completo para tener los .char */\n this.updateComplete.then(() => { this._scheduleAlwaysDecode(); });\n }\n }\n\n private _scheduleAlwaysDecode(): void {\n this._decodePlay();\n /* Pausa entre repeticiones: proporcional a la longitud del texto */\n const pause = Math.max([...this.text].length * 55 * 1.5, 400) + 2000;\n this._alwaysTimer = setTimeout(() => { this._scheduleAlwaysDecode(); }, pause);\n }\n\n /**\n * Motor de decodificación kanji.\n *\n * Cada char span se sustituye por un katakana/kanji aleatorio\n * durante un número variable de frames, y luego se resuelve al\n * carácter original. El orden de resolución es estocástico.\n */\n private _decodePlay(): void {\n if (this._running) return;\n this._running = true;\n\n const chars = Array.from(\n this.renderRoot.querySelectorAll<HTMLElement>('.char')\n );\n\n if (chars.length === 0) {\n this._running = false;\n return;\n }\n\n const SCRAMBLE_CYCLES = 6;\n const FRAME_MS = 55;\n\n /* Delay estocástico por carácter — no resuelven de izquierda a derecha */\n const delays = chars.map(() =>\n Math.floor(Math.random() * chars.length * SCRAMBLE_CYCLES * 0.6) + SCRAMBLE_CYCLES\n );\n\n let frame = 0;\n const total = Math.max(...delays) + 2;\n\n const tick = (): void => {\n chars.forEach((span, i) => {\n const orig = span.dataset['original'] ?? '';\n\n if (frame < (delays[i] ?? 0)) {\n /* Espacios y puntuación — no se scramblea */\n if (orig.trim() === '' || orig === '·' || orig === '-') return;\n span.textContent = KANA[Math.floor(Math.random() * KANA.length)] ?? orig;\n span.classList.add('is-scrambling');\n } else {\n span.textContent = orig;\n span.classList.remove('is-scrambling');\n }\n });\n\n frame++;\n\n if (frame < total) {\n setTimeout(tick, FRAME_MS);\n } else {\n /* Garantía final — todos al original */\n chars.forEach(span => {\n span.textContent = span.dataset['original'] ?? '';\n span.classList.remove('is-scrambling');\n });\n this._running = false;\n }\n };\n\n tick();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-text-glitch': LibTextGlitch;\n }\n}"],"names":[],"mappings":"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"}
package/dist/index46.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
2
  import { property, customElement } from "lit/decorators.js";
3
- import { renderQuote } from "./index277.js";
4
- import componentCss from "./index278.js";
3
+ import textListCss from "./index346.js";
5
4
  import sharedTokens from "./index196.js";
5
+ import { textListTemplate } from "./index347.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
8
  var __decorateClass = (decorators, target, key, kind) => {
@@ -13,42 +13,149 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibQuote = class extends LitElement {
16
+ let LibTextList = class extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
- this.text = "";
20
- this.accent = "";
21
- this.cite = "";
22
- this.surface = "dark";
19
+ this.family = "ul";
20
+ this.items = [];
21
+ this.marker = "default";
22
+ this.counter = "decimal";
23
23
  this.size = "md";
24
+ this.uiItems = [];
25
+ this.divided = false;
26
+ this.bordered = false;
27
+ this.inset = false;
28
+ this.interactive = false;
29
+ this.dlItems = [];
30
+ this.dlLayout = "inline";
31
+ this.dlDivided = false;
32
+ this.dark = false;
33
+ this.loading = false;
34
+ this.skeletonCount = 4;
24
35
  }
36
+ /* ── Handlers ── */
37
+ _handleRowClick(item) {
38
+ this.dispatchEvent(
39
+ new CustomEvent("ui-lib-row-click", {
40
+ detail: { key: item.key, item },
41
+ bubbles: true,
42
+ composed: true
43
+ })
44
+ );
45
+ }
46
+ _handleToggle(item, value) {
47
+ this.dispatchEvent(
48
+ new CustomEvent("ui-lib-toggle", {
49
+ detail: { key: item.key, value },
50
+ bubbles: true,
51
+ composed: true
52
+ })
53
+ );
54
+ }
55
+ /* ── Render ── */
25
56
  render() {
26
- return renderQuote(this);
57
+ if (this.loading && (this.family === "ul" || this.family === "ol")) {
58
+ const skeletons = Array.from(
59
+ { length: this.skeletonCount },
60
+ (_, i) => ({ label: `skeleton-${i}` })
61
+ );
62
+ return textListTemplate({
63
+ family: this.family,
64
+ contentItems: skeletons,
65
+ marker: "default",
66
+ counter: this.counter,
67
+ size: this.size,
68
+ uiItems: [],
69
+ divided: this.divided,
70
+ bordered: this.bordered,
71
+ inset: this.inset,
72
+ interactive: this.interactive,
73
+ dark: this.dark,
74
+ dlItems: [],
75
+ dlLayout: this.dlLayout,
76
+ dlDivided: this.dlDivided,
77
+ onRowClick: () => {
78
+ },
79
+ onToggle: () => {
80
+ }
81
+ });
82
+ }
83
+ return textListTemplate({
84
+ family: this.family,
85
+ contentItems: this.items,
86
+ marker: this.marker,
87
+ counter: this.counter,
88
+ size: this.size,
89
+ uiItems: this.uiItems,
90
+ divided: this.divided,
91
+ bordered: this.bordered,
92
+ inset: this.inset,
93
+ interactive: this.interactive,
94
+ dark: this.dark,
95
+ dlItems: this.dlItems,
96
+ dlLayout: this.dlLayout,
97
+ dlDivided: this.dlDivided,
98
+ onRowClick: (item) => this._handleRowClick(item),
99
+ onToggle: (item, v) => this._handleToggle(item, v)
100
+ });
27
101
  }
28
102
  };
29
- LibQuote.styles = [
103
+ LibTextList.styles = [
30
104
  css`${unsafeCSS(sharedTokens)}`,
31
- css`${unsafeCSS(componentCss)}`
105
+ css`${unsafeCSS(textListCss)}`
32
106
  ];
33
107
  __decorateClass([
34
- property({ type: String })
35
- ], LibQuote.prototype, "text", 2);
108
+ property({ type: String, reflect: true })
109
+ ], LibTextList.prototype, "family", 2);
36
110
  __decorateClass([
37
- property({ type: String })
38
- ], LibQuote.prototype, "accent", 2);
111
+ property({ type: Array })
112
+ ], LibTextList.prototype, "items", 2);
39
113
  __decorateClass([
40
- property({ type: String })
41
- ], LibQuote.prototype, "cite", 2);
114
+ property({ type: String, reflect: true })
115
+ ], LibTextList.prototype, "marker", 2);
42
116
  __decorateClass([
43
117
  property({ type: String, reflect: true })
44
- ], LibQuote.prototype, "surface", 2);
118
+ ], LibTextList.prototype, "counter", 2);
45
119
  __decorateClass([
46
120
  property({ type: String, reflect: true })
47
- ], LibQuote.prototype, "size", 2);
48
- LibQuote = __decorateClass([
49
- customElement("lib-quote")
50
- ], LibQuote);
121
+ ], LibTextList.prototype, "size", 2);
122
+ __decorateClass([
123
+ property({ type: Array, attribute: "ui-items" })
124
+ ], LibTextList.prototype, "uiItems", 2);
125
+ __decorateClass([
126
+ property({ type: Boolean, reflect: true })
127
+ ], LibTextList.prototype, "divided", 2);
128
+ __decorateClass([
129
+ property({ type: Boolean, reflect: true })
130
+ ], LibTextList.prototype, "bordered", 2);
131
+ __decorateClass([
132
+ property({ type: Boolean, reflect: true })
133
+ ], LibTextList.prototype, "inset", 2);
134
+ __decorateClass([
135
+ property({ type: Boolean, reflect: true })
136
+ ], LibTextList.prototype, "interactive", 2);
137
+ __decorateClass([
138
+ property({ type: Array, attribute: "dl-items" })
139
+ ], LibTextList.prototype, "dlItems", 2);
140
+ __decorateClass([
141
+ property({ type: String, reflect: true, attribute: "dl-layout" })
142
+ ], LibTextList.prototype, "dlLayout", 2);
143
+ __decorateClass([
144
+ property({ type: Boolean, reflect: true, attribute: "dl-divided" })
145
+ ], LibTextList.prototype, "dlDivided", 2);
146
+ __decorateClass([
147
+ property({ type: Boolean, reflect: true })
148
+ ], LibTextList.prototype, "dark", 2);
149
+ __decorateClass([
150
+ property({ type: Boolean, reflect: true })
151
+ ], LibTextList.prototype, "loading", 2);
152
+ __decorateClass([
153
+ property({ type: Number, attribute: "skeleton-count" })
154
+ ], LibTextList.prototype, "skeletonCount", 2);
155
+ LibTextList = __decorateClass([
156
+ customElement("lib-text-list")
157
+ ], LibTextList);
51
158
  export {
52
- LibQuote
159
+ LibTextList
53
160
  };
54
161
  //# sourceMappingURL=index46.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index46.js","sources":["../src/components/atoms/quote/lib-quote.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, type TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { renderQuote } from './lib-quote.html';\nimport componentCss from './lib-quote.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\n/**\n * `<lib-quote>` Cita display editorial.\n *\n * Blockquote en Cormorant Garamond con acento itálico en kaki y\n * atribución en DM Mono. Patrón recurrente en hero sections, CTAs\n * y secciones de filosofía del sistema Shibui.\n *\n * @tag lib-quote\n *\n * @attr {string} text - Primera línea de la cita (alternativa al slot).\n * @attr {string} accent - Segunda línea en itálica kaki.\n * @attr {string} cite - Atribución (ej: \"Principio Shibui · 渋い\").\n * @attr {'dark'|'light'|'washi'} surface - Superficie de fondo. Default: `dark`.\n * @attr {'sm'|'md'|'lg'} size - Tamaño tipográfico fluido. Default: `md`.\n *\n * @slot - Primera línea de la cita como rich content (alternativa al atributo `text`).\n *\n * @csspart blockquote - El elemento blockquote raíz.\n * @csspart text - El párrafo de la cita.\n * @csspart accent - El em de la segunda línea.\n * @csspart cite - El elemento cite de atribución.\n *\n * @cssprop --q-text-color - Color del texto principal.\n * @cssprop --q-accent-color - Color del acento itálico.\n * @cssprop --q-cite-color - Color de la atribución.\n * @cssprop --q-size - Tamaño de fuente (sobreescribe el atributo `size`).\n *\n * @example\n * <lib-quote\n * text=\"Lo bello no se anuncia.\"\n * accent=\"Se descubre con pausa.\"\n * cite=\"Principio Shibui · 渋い\"\n * surface=\"dark\"\n * ></lib-quote>\n *\n * <!-- Con slot -->\n * <lib-quote accent=\"Se descubre con pausa.\" cite=\"— Principio Shibui\">\n * Lo bello no se anuncia.\n * </lib-quote>\n */\n@customElement('lib-quote')\nexport class LibQuote extends LitElement {\n\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(componentCss)}`,\n ];\n\n /** Primera línea de la cita */\n @property({ type: String })\n text = '';\n\n /** Segunda línea en itálica kaki */\n @property({ type: String })\n accent = '';\n\n /** Atribución */\n @property({ type: String })\n cite = '';\n\n /** Superficie de fondo */\n @property({ type: String, reflect: true })\n surface: 'dark' | 'light' | 'washi' = 'dark';\n\n /** Tamaño tipográfico fluido */\n @property({ type: String, reflect: true })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n protected override render(): TemplateResult {\n return renderQuote(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-quote': LibQuote;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AA+CO,IAAM,WAAN,cAAuB,WAAW;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AASL,SAAA,OAAO;AAIP,SAAA,SAAS;AAIT,SAAA,OAAO;AAIP,SAAA,UAAsC;AAItC,SAAA,OAA2B;AAAA,EAAA;AAAA,EAER,SAAyB;AAC1C,WAAO,YAAY,IAAI;AAAA,EACzB;AACF;AA9Ba,SAEK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,YAAY,CAAC;AAC/B;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GARf,SASX,WAAA,QAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAZf,SAaX,WAAA,UAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAhBf,SAiBX,WAAA,QAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GApB9B,SAqBX,WAAA,WAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAxB9B,SAyBX,WAAA,QAAA,CAAA;AAzBW,WAAN,gBAAA;AAAA,EADN,cAAc,WAAW;AAAA,GACb,QAAA;"}
1
+ {"version":3,"file":"index46.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} skeletonCountNú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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"}
package/dist/index47.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
2
  import { property, customElement } from "lit/decorators.js";
3
+ import { generateUniqueId } from "./index210.js";
3
4
  import sharedTokens from "./index196.js";
4
- import colorScaleStyles from "./index279.js";
5
- import { colorScaleTemplate } from "./index280.js";
5
+ import tooltipCss from "./index348.js";
6
+ import { tooltipTemplate } from "./index349.js";
6
7
  var __defProp = Object.defineProperty;
7
8
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
9
  var __decorateClass = (decorators, target, key, kind) => {
@@ -13,34 +14,55 @@ var __decorateClass = (decorators, target, key, kind) => {
13
14
  if (kind && result) __defProp(target, key, result);
14
15
  return result;
15
16
  };
16
- let LibColorScale = class extends LitElement {
17
+ let LibTooltip = class extends LitElement {
17
18
  constructor() {
18
- super(...arguments);
19
- this.name = "scale";
20
- this.steps = [];
21
- this.showLabels = true;
19
+ super();
20
+ this.position = "top";
21
+ this.variant = "dark";
22
+ this.size = "md";
23
+ this.content = "";
24
+ this.instant = false;
25
+ this.open = false;
26
+ this._tipId = generateUniqueId("tip-");
22
27
  }
23
28
  render() {
24
- return colorScaleTemplate(this);
29
+ return tooltipTemplate({
30
+ position: this.position,
31
+ variant: this.variant,
32
+ size: this.size,
33
+ content: this.content,
34
+ instant: this.instant,
35
+ open: this.open,
36
+ tipId: this._tipId
37
+ });
25
38
  }
26
39
  };
27
- LibColorScale.styles = [
40
+ LibTooltip.styles = [
28
41
  css`${unsafeCSS(sharedTokens)}`,
29
- css`${unsafeCSS(colorScaleStyles)}`
42
+ css`${unsafeCSS(tooltipCss)}`
30
43
  ];
44
+ __decorateClass([
45
+ property({ type: String, reflect: true })
46
+ ], LibTooltip.prototype, "position", 2);
47
+ __decorateClass([
48
+ property({ type: String, reflect: true })
49
+ ], LibTooltip.prototype, "variant", 2);
50
+ __decorateClass([
51
+ property({ type: String, reflect: true })
52
+ ], LibTooltip.prototype, "size", 2);
31
53
  __decorateClass([
32
54
  property({ type: String })
33
- ], LibColorScale.prototype, "name", 2);
55
+ ], LibTooltip.prototype, "content", 2);
34
56
  __decorateClass([
35
- property({ type: Array })
36
- ], LibColorScale.prototype, "steps", 2);
57
+ property({ type: Boolean, reflect: true })
58
+ ], LibTooltip.prototype, "instant", 2);
37
59
  __decorateClass([
38
- property({ type: Boolean, attribute: "show-labels" })
39
- ], LibColorScale.prototype, "showLabels", 2);
40
- LibColorScale = __decorateClass([
41
- customElement("lib-color-scale")
42
- ], LibColorScale);
60
+ property({ type: Boolean, reflect: true })
61
+ ], LibTooltip.prototype, "open", 2);
62
+ LibTooltip = __decorateClass([
63
+ customElement("lib-tooltip")
64
+ ], LibTooltip);
43
65
  export {
44
- LibColorScale
66
+ LibTooltip
45
67
  };
46
68
  //# sourceMappingURL=index47.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index47.js","sources":["../src/components/atoms/color-scale/lib-color-scale.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport colorScaleStyles from './lib-color-scale.css?inline';\nimport { colorScaleTemplate } from './lib-color-scale.html';\nimport type { ColorStep } from './lib-color-scale.types';\n\n/**\n * lib-color-scaleShibui UI\n *\n * Escala de color horizontal con 11 pasos (50 950).\n * Cada swatch expande en hover y revela el número del paso.\n * Los extremos muestran el nombre y el valor hex.\n *\n * @prop {string} name — Nombre de la paleta (ej: \"washi\", \"kaki\").\n * @prop {ColorStep[]} steps — Array de pasos de la escala. Orden de izquierda a derecha.\n * @prop {boolean} show-labels Muestra las etiquetas de los extremos (activo por defecto).\n *\n * @csspart track — El contenedor de los swatches.\n * @cssprop --lib-color-scale-height Altura de la pista (default: 56px).\n */\n@customElement('lib-color-scale')\nexport class LibColorScale extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(colorScaleStyles)}`,\n ];\n\n @property({ type: String })\n name = 'scale';\n\n @property({ type: Array })\n steps: ColorStep[] = [];\n\n @property({ type: Boolean, attribute: 'show-labels' })\n showLabels = true;\n\n protected override render(): TemplateResult {\n return colorScaleTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-color-scale': LibColorScale;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAsBO,IAAM,gBAAN,cAA4B,WAAW;AAAA,EAAvC,cAAA;AAAA,UAAA,GAAA,SAAA;AAOL,SAAA,OAAO;AAGP,SAAA,QAAqB,CAAA;AAGrB,SAAA,aAAa;AAAA,EAAA;AAAA,EAEM,SAAyB;AAC1C,WAAO,mBAAmB,IAAI;AAAA,EAChC;AACF;AAlBa,cACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,gBAAgB,CAAC;AACnC;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GANf,cAOX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,MAAA,CAAO;AAAA,GATd,cAUX,WAAA,SAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,WAAW,eAAe;AAAA,GAZ1C,cAaX,WAAA,cAAA,CAAA;AAbW,gBAAN,gBAAA;AAAA,EADN,cAAc,iBAAiB;AAAA,GACnB,aAAA;"}
1
+ {"version":3,"file":"index47.js","sources":["../src/components/atoms/tooltip/lib-tooltip.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { generateUniqueId } from '../../../core/a11y';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport tooltipCss from './lib-tooltip.css?inline';\nimport { tooltipTemplate } from './lib-tooltip.html';\n\n/* ── Tipos públicos ─────────────────────────────────────────── */\n\n/**\n * Posición de la burbuja respecto al trigger.\n * Las cuatro cardinales centran la burbuja.\n * Las variantes -start/-end alinean al extremo — útiles\n * cuando el trigger está junto al borde de pantalla.\n */\nexport type TooltipPosition =\n | 'top' | 'bottom' | 'left' | 'right'\n | 'top-start' | 'top-end'\n | 'bottom-start' | 'bottom-end';\n\n/**\n * Variante de color.\n * - `dark` washi-900, máximo contraste (default).\n * - `light` — fondo blanco con borde, para superficies oscuras\n * o cuando el contenido necesita estructura visible.\n * - `kaki` — acento naranja terracota.\n * - `celadon` estado positivo / informativo.\n * - `error` — validación fallida o acción destructiva.\n */\nexport type TooltipVariant = 'dark' | 'light' | 'kaki' | 'celadon' | 'error';\n\n/** Tamaño de la burbuja. */\nexport type TooltipSize = 'sm' | 'md' | 'lg';\n\n/**\n * @element lib-tooltip\n *\n * Wrapper que envuelve cualquier trigger y muestra una burbuja\n * flotante en hover / focus. Sin JS para el caso base —\n * todo mediante CSS :hover + :focus-within.\n *\n * ## Uso simple\n * ```html\n * <lib-tooltip content=\"Guardar cambios\">\n * <button>...</button>\n * </lib-tooltip>\n * ```\n *\n * ## Contenido rico (slot=\"content\")\n * ```html\n * <lib-tooltip position=\"top\" variant=\"light\" size=\"lg\">\n * <button>...</button>\n * <span slot=\"content\">\n * <span class=\"tip-title\">Tokens de color</span>\n * <span class=\"tip-body\">Paleta completa en CSS variables.</span>\n * <div class=\"tip-sep\"></div>\n * <div class=\"tip-kbd\"><kbd>⌘</kbd><kbd>K</kbd></div>\n * </span>\n * </lib-tooltip>\n * ```\n *\n * @prop {TooltipPosition} position - Posición de la burbuja (default: top).\n * @prop {TooltipVariant} variant - Variante de color (default: dark).\n * @prop {TooltipSize} size - Tamaño sm | md | lg (default: md).\n * @prop {string} content - Texto simple. Para contenido rico usa slot=\"content\".\n * @prop {boolean} instant - Elimina el delay de entrada de 300ms.\n * @prop {boolean} open - Abre la burbuja programáticamente.\n *\n * @slot - El trigger (cualquier elemento interactivo).\n * @slot content - Contenido rico de la burbuja (tip-title, tip-body, tip-kbd, tip-sep).\n *\n * @csspart wrapper - El div posicionador interno.\n * @csspart bubble - El span de la burbuja flotante.\n */\n@customElement('lib-tooltip')\nexport class LibTooltip extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(tooltipCss)}`,\n ];\n\n private _tipId: string;\n\n constructor() {\n super();\n this._tipId = generateUniqueId('tip-');\n }\n\n @property({ type: String, reflect: true })\n position: TooltipPosition = 'top';\n\n @property({ type: String, reflect: true })\n variant: TooltipVariant = 'dark';\n\n @property({ type: String, reflect: true })\n size: TooltipSize = 'md';\n\n @property({ type: String })\n content: string = '';\n\n @property({ type: Boolean, reflect: true })\n instant: boolean = false;\n\n /** Abre la burbuja programáticamente (equivale a `.is-open`). */\n @property({ type: Boolean, reflect: true })\n open: boolean = false;\n\n override render(): TemplateResult {\n return tooltipTemplate({\n position: this.position,\n variant: this.variant,\n size: this.size,\n content: this.content,\n instant: this.instant,\n open: this.open,\n tipId: this._tipId,\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-tooltip': LibTooltip;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA2EO,IAAM,aAAN,cAAyB,WAAW;AAAA,EAQzC,cAAc;AACZ,UAAA;AAKF,SAAA,WAA4B;AAG5B,SAAA,UAA0B;AAG1B,SAAA,OAAoB;AAGpB,SAAA,UAAkB;AAGlB,SAAA,UAAmB;AAInB,SAAA,OAAgB;AApBd,SAAK,SAAS,iBAAiB,MAAM;AAAA,EACvC;AAAA,EAqBS,SAAyB;AAChC,WAAO,gBAAgB;AAAA,MACrB,UAAU,KAAK;AAAA,MACf,SAAU,KAAK;AAAA,MACf,MAAU,KAAK;AAAA,MACf,SAAU,KAAK;AAAA,MACf,SAAU,KAAK;AAAA,MACf,MAAU,KAAK;AAAA,MACf,OAAU,KAAK;AAAA,IAAA,CAChB;AAAA,EACH;AACF;AA3Ca,WACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,UAAU,CAAC;AAC7B;AAUA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAb9B,WAcX,WAAA,YAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAhB9B,WAiBX,WAAA,WAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAnB9B,WAoBX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAtBf,WAuBX,WAAA,WAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAzB/B,WA0BX,WAAA,WAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GA7B/B,WA8BX,WAAA,QAAA,CAAA;AA9BW,aAAN,gBAAA;AAAA,EADN,cAAc,aAAa;AAAA,GACf,UAAA;"}