@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/index283.js CHANGED
@@ -1,100 +1,5 @@
1
- import { nothing, html } from "lit";
2
- function selectTemplate(props) {
3
- const {
4
- label,
5
- placeholder,
6
- hint,
7
- errorMessage,
8
- required,
9
- optional,
10
- open,
11
- error,
12
- selectedLabel,
13
- hasSelection,
14
- multi,
15
- selectedCount,
16
- searchable,
17
- searchQuery,
18
- visibleCount,
19
- onTriggerClick,
20
- onSearchInput,
21
- onConfirm
22
- } = props;
23
- const labelTpl = label ? html`
24
- <label class="sel-label">
25
- ${label}
26
- ${required ? html`<span class="sel-label-req" aria-hidden="true">*</span>` : nothing}
27
- ${optional ? html`<span class="sel-label-opt">(opcional)</span>` : nothing}
28
- </label>` : nothing;
29
- const hintTpl = error && errorMessage ? html`<span class="sel-hint is-error">${errorMessage}</span>` : hint ? html`<span class="sel-hint">${hint}</span>` : nothing;
30
- const triggerValueTpl = multi ? selectedCount > 0 ? html`
31
- <span class="sel-trigger-value">
32
- ${selectedCount} seleccionada${selectedCount !== 1 ? "s" : ""}
33
- <span class="sel-trigger-count">${selectedCount}</span>
34
- </span>` : html`<span class="sel-trigger-value is-placeholder">${placeholder}</span>` : hasSelection ? html`<span class="sel-trigger-value">${selectedLabel}</span>` : html`<span class="sel-trigger-value is-placeholder">${placeholder}</span>`;
35
- const searchTpl = searchable ? html`
36
- <div class="sel-panel-search">
37
- <span class="sel-panel-search-icon" aria-hidden="true"></span>
38
- <input
39
- type="text"
40
- placeholder="Buscar…"
41
- .value="${searchQuery}"
42
- @input="${onSearchInput}"
43
- autocomplete="off"
44
- aria-label="Buscar opciones"
45
- >
46
- </div>` : nothing;
47
- const footerTpl = multi ? html`
48
- <div class="sel-panel-footer">
49
- <span class="sel-panel-footer-text">
50
- ${selectedCount} seleccionada${selectedCount !== 1 ? "s" : ""}
51
- </span>
52
- <button
53
- class="sel-panel-footer-btn"
54
- type="button"
55
- @click="${onConfirm}"
56
- >Confirmar</button>
57
- </div>` : nothing;
58
- const emptyTpl = searchable && searchQuery && visibleCount === 0 ? html`<div class="sel-panel-empty">Sin resultados</div>` : nothing;
59
- return html`
60
- <div class="sel-field">
61
-
62
- ${labelTpl}
63
-
64
- <div class="sel-custom">
65
- <button
66
- class="sel-trigger"
67
- type="button"
68
- aria-haspopup="listbox"
69
- aria-expanded="${open}"
70
- @click="${onTriggerClick}"
71
- >
72
- ${triggerValueTpl}
73
- <span class="sel-trigger-chevron" aria-hidden="true"></span>
74
- </button>
75
-
76
- <div
77
- class="sel-panel"
78
- role="listbox"
79
- aria-multiselectable="${multi}"
80
- >
81
- ${searchTpl}
82
-
83
- <div class="sel-panel-list">
84
- <slot></slot>
85
- ${emptyTpl}
86
- </div>
87
-
88
- ${footerTpl}
89
- </div>
90
- </div>
91
-
92
- ${hintTpl}
93
-
94
- </div>
95
- `;
96
- }
1
+ const cardStyles = '@layer tokens,reset,components;@layer reset{:host{display:block;container-type:inline-size}*,*:before,*:after{box-sizing:border-box}}@layer components{.card{display:flex;flex-direction:column;background:var(--bg-elevated);border:1px solid var(--border-subtle);padding:var(--lib-space-lg);height:100%;position:relative;overflow:hidden;transition:box-shadow var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out),border-color var(--duration-slow) var(--ease-out)}@media(hover:hover){.card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--border-default)}}.card-kanji{position:absolute;top:.75rem;right:.75rem;font-family:var(--lib-font-display, "Cormorant Garamond", serif);font-size:5rem;font-weight:300;line-height:1;color:#0000000a;-webkit-user-select:none;user-select:none;pointer-events:none;z-index:0}:host([variant="inverse"]) .card-kanji,:host([variant="featured"]) .card-kanji,:host([variant="kintsugi"]) .card-kanji,:host([variant="glitch"]) .card-kanji,:host([variant="celadon"]) .card-kanji{color:#ffffff0a}:host([variant="kintsugi"]) .card-kanji{color:#b85a1e14}.card-header,.card-content,.card-footer{position:relative;z-index:1}.card-header{margin-bottom:var(--lib-space-md);display:flex;align-items:center;gap:var(--lib-space-sm);min-height:var(--lib-space-md)}::slotted([slot="tag"]){font-family:var(--lib-font-mono);font-size:10px;text-transform:uppercase;letter-spacing:var(--tracking-widest);color:var(--text-muted)}.card-content{flex-grow:1;display:flex;flex-direction:column;gap:var(--lib-space-sm)}::slotted([slot="title"]){margin:0;font-family:var(--lib-font-display);font-size:var(--text-2xl);font-weight:var(--weight-light);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);color:var(--text-secondary)}.card-body{font-family:var(--lib-font-body);font-size:var(--text-sm);line-height:var(--leading-relaxed);color:var(--color-washi-500)}.card-footer{margin-top:var(--lib-space-lg);padding-top:var(--lib-space-md);border-top:1px solid var(--border-subtle);display:flex;justify-content:space-between;align-items:center;font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wider);color:var(--text-muted);min-height:var(--lib-space-lg)}::slotted([slot="footer"]){display:contents}:host([variant="inverse"]) .card{background:var(--color-washi-900);border-color:var(--color-washi-800)}:host([variant="inverse"]) ::slotted([slot="title"]){color:var(--color-washi-50)}:host([variant="inverse"]) .card-body{color:var(--color-washi-400)}:host([variant="inverse"]) .card-footer{border-top-color:var(--color-washi-800);color:var(--color-washi-600)}:host([variant="inverse"]) ::slotted([slot="tag"]){color:var(--color-washi-500)}:host([variant="accent"]) .card{border-left:3px solid var(--card-accent-color, var(--color-kaki-400));padding-left:calc(var(--lib-space-lg) - 3px)}:host([variant="featured"]) .card{background:linear-gradient(135deg,#b85a1e14,#b85a1e05);border-color:transparent;border-left:2px solid var(--color-kaki-500, #B85A1E)}:host([variant="featured"]) .card:before{display:none}:host([variant="featured"]) ::slotted([slot="tag"]){color:#b85a1e4d}:host([variant="featured"]) ::slotted([slot="title"]){font-size:var(--text-3xl);color:var(--color-kaki-400, #D97234);line-height:1.1}:host([variant="featured"]) .card-body{color:#faf7f44d;font-size:var(--text-base)}:host([variant="featured"]) .card-footer{border-top-color:#ffffff0f;color:#faf7f433;margin-top:var(--lib-space-xl)}@keyframes kintsugi-seam{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes kintsugi-gold{0%{background-position:-200% 0}to{background-position:200% 0}}:host([variant="kintsugi"]) .card{background:var(--color-washi-950, #120E0A);border-color:transparent}:host([variant="kintsugi"]) .card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;padding:1px;background:var(--lib-kintsugi-border);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:0}:host([variant="kintsugi"]) .card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgb(184,90,30,.4) 15%,var(--color-kaki-400, #D97234) 35%,#F5D08A 50%,var(--color-kaki-400, #D97234) 65%,rgb(184,90,30,.4) 85%,transparent);background-size:200% 100%;animation:kintsugi-seam 5s linear infinite;pointer-events:none}:host([variant="kintsugi"]) ::slotted([slot="title"]){background:linear-gradient(90deg,var(--color-kaki-600, #8C4115),#F5D08A,var(--color-kaki-400, #D97234),#F5D08A,var(--color-kaki-600, #8C4115));background-size:200% 100%;animation:kintsugi-gold 4s linear infinite;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;color:transparent}:host([variant="kintsugi"]) ::slotted([slot="tag"]){color:#b85a1e59}:host([variant="kintsugi"]) .card-body{color:#faf7f440}:host([variant="kintsugi"]) .card-footer{border-top-color:#ffffff0f;color:#faf7f42e}@media(hover:hover){:host([variant="kintsugi"]) .card:hover{transform:none;box-shadow:0 0 32px #b85a1e1f;border-color:#b85a1e40}}@keyframes glitch-drift{0%,88%,to{transform:none;opacity:1}89%{transform:translate(-2px);opacity:.8}90%{transform:translate(2px);opacity:.9}91%{transform:none;opacity:1}}:host([variant="glitch"]) .card{background:var(--color-washi-950, #120E0A);border-color:#ffffff0f;animation:glitch-drift 7s steps(1) infinite}:host([variant="glitch"]) .card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--color-celadon-400, #4E9482);pointer-events:none}:host([variant="glitch"]) .card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgb(250,247,244,.012) 3px,rgb(250,247,244,.012) 4px);pointer-events:none;z-index:0}:host([variant="glitch"]) ::slotted([slot="tag"]){font-family:var(--lib-font-mono);color:var(--color-celadon-400, #4E9482);letter-spacing:.18em}:host([variant="glitch"]) ::slotted([slot="title"]){font-family:var(--lib-font-mono);font-size:var(--text-base);letter-spacing:.15em;text-transform:uppercase;color:var(--color-kaki-400, #D97234)}:host([variant="glitch"]) .card-body{font-family:var(--lib-font-mono);font-size:.65rem;letter-spacing:.08em;color:#faf7f433;line-height:1.9}:host([variant="glitch"]) .card-footer{border-top-color:#ffffff0f;color:#faf7f426}:host([variant="glitch"]) .card-kanji{color:#4e94820f}@media(hover:hover){:host([variant="glitch"]) .card:hover{transform:none;box-shadow:-2px 0 #d9723433,2px 0 #4e948226}}:host([variant="celadon"]) .card{background:var(--color-washi-950, #120E0A);border-color:#4e948226}:host([variant="celadon"]) .card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--color-celadon-400, #4E9482);pointer-events:none}:host([variant="celadon"]) ::slotted([slot="tag"]){color:#4e948280}:host([variant="celadon"]) ::slotted([slot="title"]){color:var(--color-celadon-400, #4E9482)}:host([variant="celadon"]) .card-body{color:#faf7f440}:host([variant="celadon"]) .card-footer{border-top-color:#ffffff0f;color:#faf7f42e}:host([variant="celadon"]) .card-kanji{color:#4e94820f}@media(hover:hover){:host([variant="celadon"]) .card:hover{transform:none;box-shadow:0 0 28px #4e94821a;border-color:#4e94824d}}:host([variant="washi"]) .card{background:var(--color-washi-50, #FAF7F4);border-color:var(--color-washi-200, #E5DDD3)}:host([variant="washi"]) .card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--color-washi-400, #B8A99A);pointer-events:none}:host([variant="washi"]) ::slotted([slot="tag"]){color:var(--color-washi-500, #9A8878)}:host([variant="washi"]) ::slotted([slot="title"]){color:var(--color-washi-800, #3D332A)}:host([variant="washi"]) .card-body{color:var(--color-washi-600, #7A6A5C)}:host([variant="washi"]) .card-footer{border-top-color:var(--color-washi-200, #E5DDD3);color:var(--color-washi-400, #B8A99A)}:host([variant="washi"]) .card-kanji{color:#0000000d}@media(hover:hover){:host([variant="washi"]) .card:hover{border-color:var(--color-washi-300, #D3C8BC);box-shadow:var(--shadow-md)}}:host([variant="brutal"]) .card{background:var(--color-washi-50);border:2px solid var(--color-ink-100);box-shadow:var(--lib-shadow-brutal);transition:transform var(--duration-fast) var(--ease-default),box-shadow var(--duration-fast) var(--ease-default)}:host([variant="brutal"]) .card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--color-celadon-400);pointer-events:none}:host([variant="brutal"]) ::slotted([slot="tag"]){font-family:var(--lib-font-mono);color:var(--color-washi-500);letter-spacing:var(--tracking-widest)}:host([variant="brutal"]) ::slotted([slot="title"]){font-family:var(--lib-font-mono);font-size:var(--text-xl);font-weight:var(--weight-medium);letter-spacing:var(--tracking-tight);color:var(--color-ink-100);text-transform:uppercase}:host([variant="brutal"]) .card-body{font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:.04em;line-height:var(--leading-relaxed);color:var(--color-washi-600)}:host([variant="brutal"]) .card-footer{border-top-color:var(--color-washi-300);color:var(--color-washi-500)}@media(hover:hover){:host([variant="brutal"]) .card:hover{transform:translate(4px,4px);box-shadow:none}}}';
97
2
  export {
98
- selectTemplate
3
+ cardStyles as default
99
4
  };
100
5
  //# sourceMappingURL=index283.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index283.js","sources":["../src/components/molecules/select/lib-select.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport type { SelectSize, SelectVariant } from './lib-select.types';\n\nexport interface SelectTemplateProps {\n /* Field meta */\n label: string;\n placeholder: string;\n hint: string;\n errorMessage: string;\n required: boolean;\n optional: boolean;\n\n /* State */\n open: boolean;\n disabled: boolean;\n error: boolean;\n dark: boolean;\n\n /* Appearance */\n size: SelectSize;\n variant: SelectVariant;\n\n /* Single selection */\n selectedLabel: string;\n hasSelection: boolean;\n\n /* Multi selection */\n multi: boolean;\n selectedCount: number;\n\n /* Searchable */\n searchable: boolean;\n searchQuery: string;\n visibleCount: number;\n\n /* Handlers */\n onTriggerClick: (e: Event) => void;\n onSearchInput: (e: Event) => void;\n onConfirm: () => void;\n}\n\n/**\n * Template para lib-select.\n * Las opciones son elementos slotted — lib-select-option hijos en el light DOM.\n */\nexport function selectTemplate(props: SelectTemplateProps): TemplateResult {\n const {\n label, placeholder, hint, errorMessage,\n required, optional,\n open, error,\n selectedLabel, hasSelection,\n multi, selectedCount,\n searchable, searchQuery, visibleCount,\n onTriggerClick, onSearchInput, onConfirm,\n } = props;\n\n /* ── Label section ── */\n const labelTpl = label\n ? html`\n <label class=\"sel-label\">\n ${label}\n ${required ? html`<span class=\"sel-label-req\" aria-hidden=\"true\">*</span>` : nothing}\n ${optional ? html`<span class=\"sel-label-opt\">(opcional)</span>` : nothing}\n </label>`\n : nothing;\n\n /* ── Hint / error message ── */\n const hintTpl = error && errorMessage\n ? html`<span class=\"sel-hint is-error\">${errorMessage}</span>`\n : hint\n ? html`<span class=\"sel-hint\">${hint}</span>`\n : nothing;\n\n /* ── Trigger value display ── */\n const triggerValueTpl = multi\n ? selectedCount > 0\n ? html`\n <span class=\"sel-trigger-value\">\n ${selectedCount} seleccionada${selectedCount !== 1 ? 's' : ''}\n <span class=\"sel-trigger-count\">${selectedCount}</span>\n </span>`\n : html`<span class=\"sel-trigger-value is-placeholder\">${placeholder}</span>`\n : hasSelection\n ? html`<span class=\"sel-trigger-value\">${selectedLabel}</span>`\n : html`<span class=\"sel-trigger-value is-placeholder\">${placeholder}</span>`;\n\n /* ── Search row ── */\n const searchTpl = searchable\n ? html`\n <div class=\"sel-panel-search\">\n <span class=\"sel-panel-search-icon\" aria-hidden=\"true\"></span>\n <input\n type=\"text\"\n placeholder=\"Buscar…\"\n .value=\"${searchQuery}\"\n @input=\"${onSearchInput}\"\n autocomplete=\"off\"\n aria-label=\"Buscar opciones\"\n >\n </div>`\n : nothing;\n\n /* ── Panel footer for multi ── */\n const footerTpl = multi\n ? html`\n <div class=\"sel-panel-footer\">\n <span class=\"sel-panel-footer-text\">\n ${selectedCount} seleccionada${selectedCount !== 1 ? 's' : ''}\n </span>\n <button\n class=\"sel-panel-footer-btn\"\n type=\"button\"\n @click=\"${onConfirm}\"\n >Confirmar</button>\n </div>`\n : nothing;\n\n /* ── Empty state when search yields 0 results ── */\n const emptyTpl = searchable && searchQuery && visibleCount === 0\n ? html`<div class=\"sel-panel-empty\">Sin resultados</div>`\n : nothing;\n\n return html`\n <div class=\"sel-field\">\n\n ${labelTpl}\n\n <div class=\"sel-custom\">\n <button\n class=\"sel-trigger\"\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded=\"${open}\"\n @click=\"${onTriggerClick}\"\n >\n ${triggerValueTpl}\n <span class=\"sel-trigger-chevron\" aria-hidden=\"true\"></span>\n </button>\n\n <div\n class=\"sel-panel\"\n role=\"listbox\"\n aria-multiselectable=\"${multi}\"\n >\n ${searchTpl}\n\n <div class=\"sel-panel-list\">\n <slot></slot>\n ${emptyTpl}\n </div>\n\n ${footerTpl}\n </div>\n </div>\n\n ${hintTpl}\n\n </div>\n `;\n}"],"names":[],"mappings":";AA6CO,SAAS,eAAe,OAA4C;AACzE,QAAM;AAAA,IACJ;AAAA,IAAO;AAAA,IAAa;AAAA,IAAM;AAAA,IAC1B;AAAA,IAAU;AAAA,IACV;AAAA,IAAM;AAAA,IACN;AAAA,IAAe;AAAA,IACf;AAAA,IAAO;AAAA,IACP;AAAA,IAAY;AAAA,IAAa;AAAA,IACzB;AAAA,IAAgB;AAAA,IAAe;AAAA,EAAA,IAC7B;AAGJ,QAAM,WAAW,QACb;AAAA;AAAA,YAEM,KAAK;AAAA,YACL,WAAW,gEAAgE,OAAO;AAAA,YAClF,WAAW,sDAAsD,OAAO;AAAA,oBAE9E;AAGJ,QAAM,UAAU,SAAS,eACrB,uCAAuC,YAAY,YACnD,OACE,8BAA8B,IAAI,YAClC;AAGN,QAAM,kBAAkB,QACpB,gBAAgB,IACd;AAAA;AAAA,cAEM,aAAa,gBAAgB,kBAAkB,IAAI,MAAM,EAAE;AAAA,8CAC3B,aAAa;AAAA,qBAEnD,sDAAsD,WAAW,YACnE,eACE,uCAAuC,aAAa,YACpD,sDAAsD,WAAW;AAGvE,QAAM,YAAY,aACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMgB,WAAW;AAAA,sBACX,aAAa;AAAA;AAAA;AAAA;AAAA,kBAK7B;AAGJ,QAAM,YAAY,QACd;AAAA;AAAA;AAAA,cAGQ,aAAa,gBAAgB,kBAAkB,IAAI,MAAM,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKnD,SAAS;AAAA;AAAA,kBAGzB;AAGJ,QAAM,WAAW,cAAc,eAAe,iBAAiB,IAC3D,0DACA;AAEJ,SAAO;AAAA;AAAA;AAAA,QAGD,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAOW,IAAI;AAAA,oBACX,cAAc;AAAA;AAAA,YAEtB,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAOO,KAAK;AAAA;AAAA,YAE3B,SAAS;AAAA;AAAA;AAAA;AAAA,cAIP,QAAQ;AAAA;AAAA;AAAA,YAGV,SAAS;AAAA;AAAA;AAAA;AAAA,QAIb,OAAO;AAAA;AAAA;AAAA;AAIf;"}
1
+ {"version":3,"file":"index283.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index284.js CHANGED
@@ -1,5 +1,36 @@
1
- const selectCss = `@layer tokens,reset,components;@layer reset{:host{display:block;position:relative;width:100%}*,*:before,*:after{box-sizing:border-box}}@layer components{.sel-field{display:flex;flex-direction:column;gap:var(--lib-space-xs);width:100%}.sel-label{font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-secondary);display:flex;align-items:center;gap:var(--lib-space-xs);-webkit-user-select:none;user-select:none}.sel-label-req{color:var(--color-error);font-size:14px;line-height:1}.sel-label-opt{font-size:9px;letter-spacing:var(--tracking-wide);color:var(--text-muted);text-transform:uppercase}.sel-hint{font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wide);color:var(--text-muted)}.sel-hint.is-error{color:var(--color-error);display:flex;align-items:center;gap:var(--lib-space-xs)}.sel-hint.is-ok{color:var(--color-celadon-500);display:flex;align-items:center;gap:var(--lib-space-xs)}.sel-custom{position:relative;width:100%}.sel-trigger{display:flex;align-items:center;gap:var(--lib-space-sm);width:100%;padding:var(--lib-space-sm) var(--lib-space-md);font-family:var(--lib-font-body);font-size:var(--text-sm);color:var(--text-secondary);background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-none);cursor:pointer;text-align:left;outline:none;transition:border-color var(--duration-base) var(--ease-default),background var(--duration-base) var(--ease-default),box-shadow var(--duration-base) var(--ease-default);-webkit-user-select:none;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.sel-trigger:hover:not([disabled]){background:var(--bg-surface);border-color:var(--border-strong)}.sel-trigger:focus-visible{border-color:var(--color-washi-800);box-shadow:0 0 0 3px #1a140e14;outline:none}:host([open]) .sel-trigger{border-color:var(--color-washi-800);box-shadow:0 0 0 3px #1a140e14}:host([disabled]) .sel-trigger{opacity:.38;cursor:not-allowed;pointer-events:none;background:var(--bg-surface)}:host([error]) .sel-trigger{border-color:var(--color-error-border, #C44030);background:var(--color-error-light, #F5DDD9);color:var(--color-error)}:host([error][open]) .sel-trigger{box-shadow:0 0 0 3px #8c2a1a1f}.sel-trigger-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:var(--lib-space-sm);line-height:var(--leading-snug)}.sel-trigger-value.is-placeholder{color:var(--text-muted)}.sel-trigger-count{font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wide);background:var(--color-washi-900);color:var(--color-washi-50);padding:1px 6px;border-radius:var(--radius-full);flex-shrink:0}.sel-trigger-chevron{flex-shrink:0;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--text-muted);transition:transform var(--duration-slow) var(--ease-default);pointer-events:none}:host([open]) .sel-trigger-chevron{transform:rotate(180deg);border-top-color:var(--text-primary)}:host([variant="filled"]) .sel-trigger{background:var(--bg-surface);border-color:transparent}:host([variant="filled"]) .sel-trigger:hover:not([disabled]){background:var(--color-washi-200);border-color:transparent}:host([variant="filled"][open]) .sel-trigger{background:var(--bg-elevated);border-color:var(--color-washi-800)}:host([variant="ghost"]) .sel-trigger{background:transparent;border:none;border-bottom:1px solid var(--border-default);border-radius:0;padding-left:0}:host([variant="ghost"]) .sel-trigger:hover:not([disabled]){background:transparent;border-bottom-color:var(--border-strong)}:host([variant="ghost"][open]) .sel-trigger{box-shadow:0 1px 0 0 var(--color-washi-800);border-bottom-color:var(--color-washi-800)}:host([size="sm"]) .sel-trigger{padding:var(--lib-space-xs) var(--lib-space-sm);font-size:var(--text-xs)}:host([size="sm"]) .sel-label{font-size:10px}:host([size="lg"]) .sel-trigger{padding:var(--lib-space-md) var(--lib-space-lg);font-size:var(--text-base)}.sel-panel{position:absolute;top:calc(100% + 4px);left:0;right:0;min-width:100%;z-index:var(--z-toast, 300);background:var(--bg-elevated);border:1px solid var(--border-default);box-shadow:0 8px 24px #1a140e1f,0 2px 6px #1a140e12;opacity:0;transform:translateY(-6px) scaleY(.97);transform-origin:top center;pointer-events:none;transition:opacity .16s var(--ease-default),transform .2s var(--ease-default)}:host([open]) .sel-panel{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.sel-panel-search{display:flex;align-items:center;gap:var(--lib-space-sm);padding:var(--lib-space-sm) var(--lib-space-md);border-bottom:1px solid var(--border-subtle);color:var(--text-muted)}.sel-panel-search-icon{font-size:14px;flex-shrink:0;display:flex;align-items:center;color:var(--text-muted)}.sel-panel-search-icon:before{content:"";display:block;width:14px;height:14px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 256 256'%3E%3Cpath fill='%239A8878' d='M229.66 218.34l-50.07-50.07a88.19 88.19 0 1 0-11.31 11.31l50.06 50.07a8 8 0 0 0 11.32-11.31ZM40 112a72 72 0 1 1 72 72 72.08 72.08 0 0 1-72-72Z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain}.sel-panel-search input{flex:1;font-family:var(--lib-font-body);font-size:var(--text-sm);color:var(--text-primary);background:transparent;border:none;outline:none}.sel-panel-search input::placeholder{color:var(--text-muted)}.sel-panel-list{max-height:240px;overflow-y:auto;overscroll-behavior:contain}.sel-panel-list::-webkit-scrollbar{width:4px}.sel-panel-list::-webkit-scrollbar-track{background:transparent}.sel-panel-list::-webkit-scrollbar-thumb{background:var(--color-washi-300);border-radius:2px}.sel-group-label{font-family:var(--lib-font-mono);font-size:9px;letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--text-muted);padding:var(--lib-space-sm) var(--lib-space-md) var(--lib-space-xs)}.sel-sep{height:1px;background:var(--border-subtle);margin:var(--lib-space-xs) 0}.sel-option{display:flex;align-items:center;gap:var(--lib-space-sm);padding:var(--lib-space-sm) var(--lib-space-md);cursor:pointer;transition:background var(--duration-fast) var(--ease-default),color var(--duration-fast) var(--ease-default);position:relative}.sel-option:hover{background:var(--bg-surface)}.sel-option.is-selected{background:var(--color-washi-100)}.sel-option.is-focused{background:var(--bg-surface)}.sel-option.is-disabled{opacity:.38;cursor:not-allowed;pointer-events:none}.sel-option.is-hidden{display:none}.sel-option-icon{font-size:16px;color:var(--text-muted);flex-shrink:0;display:flex}.sel-option:hover .sel-option-icon,.sel-option.is-selected .sel-option-icon{color:var(--text-secondary)}.sel-option-body{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.sel-option-label{font-family:var(--lib-font-body);font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-snug)}.sel-option-desc{font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wide);color:var(--text-muted)}.sel-option:hover .sel-option-label,.sel-option.is-selected .sel-option-label{color:var(--text-primary)}.sel-dot{width:8px;height:8px;border-radius:var(--radius-full);flex-shrink:0}.sel-option-check{margin-left:auto;flex-shrink:0;width:14px;height:14px;opacity:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 256 256'%3E%3Cpath fill='%23221C16' d='M229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69 218.34 66.34a8 8 0 0 1 11.32 11.32Z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain}.sel-option.is-selected .sel-option-check{opacity:1}.sel-panel-footer{padding:var(--lib-space-sm) var(--lib-space-md);border-top:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;gap:var(--lib-space-sm)}.sel-panel-footer-text{font-family:var(--lib-font-mono);font-size:10px;color:var(--text-muted);letter-spacing:var(--tracking-wide)}.sel-panel-footer-btn{font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wider);text-transform:uppercase;background:var(--color-washi-900);color:var(--color-washi-50);border:none;padding:var(--lib-space-xs) var(--lib-space-md);cursor:pointer;transition:background var(--duration-base) var(--ease-default)}.sel-panel-footer-btn:hover{background:var(--color-washi-800)}.sel-panel-empty{padding:var(--lib-space-lg) var(--lib-space-md);text-align:center;font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wider);color:var(--text-muted);text-transform:uppercase}:host([dark]) .sel-label{color:#574a43}:host([dark]) .sel-hint{color:#3c302a}:host([dark]) .sel-trigger{background:#100704;border-color:#231813;color:#998c84}:host([dark]) .sel-trigger:hover:not([disabled]){background:#150a06;border-color:#372b26}:host([dark][open]) .sel-trigger{border-color:#6d6059;box-shadow:0 0 0 3px #ffffff0d}:host([dark]) .sel-trigger-chevron{border-top-color:#433831}:host([dark][open]) .sel-trigger-chevron{border-top-color:#998c84}:host([dark]) .sel-trigger-value.is-placeholder{color:#3c302a}:host([dark]) .sel-panel{background:#0c0402;border-color:#1e130e}:host([dark]) .sel-panel-search{border-color:#190f0a}:host([dark]) .sel-panel-search input{color:#a99b93}:host([dark]) .sel-group-label{color:#312620}:host([dark]) .sel-sep{background:#190f0a}:host([dark]) .sel-option:hover{background:#150a06}:host([dark]) .sel-option.is-selected{background:#190f0a}:host([dark]) .sel-option-label{color:#7b6f67}:host([dark]) .sel-option:hover .sel-option-label{color:#b9aba2}:host([dark]) .sel-option.is-selected .sel-option-label{color:#c8bbb2}:host([dark]) .sel-option-desc{color:#362b25}:host([dark]) .sel-option-check{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 256 256'%3E%3Cpath fill='%23FAF7F4' d='M229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69 218.34 66.34a8 8 0 0 1 11.32 11.32Z'/%3E%3C/svg%3E")}:host([dark]) .sel-panel-footer{border-color:#190f0a}:host([dark]) .sel-panel-footer-text{color:#362b25}}`;
1
+ import { nothing, html } from "lit";
2
+ function cardTemplate(props) {
3
+ return html`
4
+ <article
5
+ class="card"
6
+ role="${props.clickable ? "button" : nothing}"
7
+ tabindex="${props.clickable ? "0" : nothing}"
8
+ @click="${props.clickable ? props.onClick : nothing}"
9
+ style="${props.variant === "accent" && props.accentColor ? `--card-accent-color: ${props.accentColor}` : nothing}"
10
+ >
11
+ <!-- Kanji watermark — aria-hidden, decorativo -->
12
+ ${props.kanji ? html`<span class="card-kanji" aria-hidden="true"
13
+ >${props.kanji}</span
14
+ >` : nothing}
15
+
16
+ <header class="card-header">
17
+ <slot name="tag"></slot>
18
+ </header>
19
+
20
+ <div class="card-content">
21
+ <slot name="title"></slot>
22
+ <div class="card-body">
23
+ <slot></slot>
24
+ </div>
25
+ </div>
26
+
27
+ <footer class="card-footer">
28
+ <slot name="footer"></slot>
29
+ </footer>
30
+ </article>
31
+ `;
32
+ }
2
33
  export {
3
- selectCss as default
34
+ cardTemplate
4
35
  };
5
36
  //# sourceMappingURL=index284.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index284.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index284.js","sources":["../src/components/atoms/card/lib-card.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from \"lit\";\nimport type { LibCardVariant } from \"./lib-card.component\";\n\nexport interface CardTemplateProps {\n variant: LibCardVariant;\n accentColor: string | undefined;\n kanji: string;\n clickable: boolean;\n onClick: (e: MouseEvent) => void;\n}\n\n/**\n * Plantilla base para el componente lib-card.\n * Contenedor editorial con slots: tag, title, default (body), footer.\n * Soporta marca de agua kanji opcional en la esquina superior derecha.\n */\nexport function cardTemplate(props: CardTemplateProps): TemplateResult {\n return html`\n <article\n class=\"card\"\n role=\"${props.clickable ? \"button\" : nothing}\"\n tabindex=\"${props.clickable ? \"0\" : nothing}\"\n @click=\"${props.clickable ? props.onClick : nothing}\"\n style=\"${props.variant === \"accent\" && props.accentColor\n ? `--card-accent-color: ${props.accentColor}`\n : nothing}\"\n >\n <!-- Kanji watermark — aria-hidden, decorativo -->\n ${props.kanji\n ? html`<span class=\"card-kanji\" aria-hidden=\"true\"\n >${props.kanji}</span\n >`\n : nothing}\n\n <header class=\"card-header\">\n <slot name=\"tag\"></slot>\n </header>\n\n <div class=\"card-content\">\n <slot name=\"title\"></slot>\n <div class=\"card-body\">\n <slot></slot>\n </div>\n </div>\n\n <footer class=\"card-footer\">\n <slot name=\"footer\"></slot>\n </footer>\n </article>\n `;\n}\n"],"names":[],"mappings":";AAgBO,SAAS,aAAa,OAA0C;AACrE,SAAO;AAAA;AAAA;AAAA,cAGK,MAAM,YAAY,WAAW,OAAO;AAAA,kBAChC,MAAM,YAAY,MAAM,OAAO;AAAA,gBACjC,MAAM,YAAY,MAAM,UAAU,OAAO;AAAA,eAC1C,MAAM,YAAY,YAAY,MAAM,cACzC,wBAAwB,MAAM,WAAW,KACzC,OAAO;AAAA;AAAA;AAAA,QAGT,MAAM,QACJ;AAAA,eACK,MAAM,KAAK;AAAA,eAEhB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkBjB;"}
package/dist/index285.js CHANGED
@@ -1,35 +1,14 @@
1
- import { nothing, html } from "lit";
2
- const DEFAULT_HEADING = {
3
- default: "Default",
4
- info: "Info",
5
- warning: "Warning",
6
- error: "Error",
7
- success: "Success"
8
- };
9
- function alertTemplate(props) {
10
- const displayHeading = props.heading || DEFAULT_HEADING[props.type];
1
+ import { html } from "lit";
2
+ function glassCardTemplate(_props) {
11
3
  return html`
12
- <div class="alert" role="alert" aria-live="polite">
13
-
14
- <div class="alert-content">
15
- <p class="alert-title">${displayHeading}</p>
16
- <div class="alert-body">
17
- <slot></slot>
18
- </div>
4
+ <div class="glass-card">
5
+ <div class="glass-card__slot">
6
+ <slot></slot>
19
7
  </div>
20
-
21
- ${props.closable ? html`
22
- <button
23
- class="alert-close"
24
- type="button"
25
- aria-label="Cerrar alerta"
26
- @click="${props.handleClose}"
27
- >×</button>` : nothing}
28
-
29
8
  </div>
30
9
  `;
31
10
  }
32
11
  export {
33
- alertTemplate
12
+ glassCardTemplate
34
13
  };
35
14
  //# sourceMappingURL=index285.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index285.js","sources":["../src/components/molecules/lib-alert/lib-alert.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport type { AlertTemplateProps, AlertType } from './lib-alert.types';\n\n/** Auto-generated heading per type if none is provided. */\nconst DEFAULT_HEADING: Record<AlertType, string> = {\n default: 'Default',\n info: 'Info',\n warning: 'Warning',\n error: 'Error',\n success: 'Success',\n};\n\n/**\n * Template para lib-alert.\n * Estructura: borde izquierdo · [heading DM Mono] · slot (cuerpo) · [botón cerrar]\n */\nexport function alertTemplate(props: AlertTemplateProps): TemplateResult {\n const displayHeading = props.heading || DEFAULT_HEADING[props.type];\n\n return html`\n <div class=\"alert\" role=\"alert\" aria-live=\"polite\">\n\n <div class=\"alert-content\">\n <p class=\"alert-title\">${displayHeading}</p>\n <div class=\"alert-body\">\n <slot></slot>\n </div>\n </div>\n\n ${props.closable\n ? html`\n <button\n class=\"alert-close\"\n type=\"button\"\n aria-label=\"Cerrar alerta\"\n @click=\"${props.handleClose}\"\n >×</button>`\n : nothing}\n\n </div>\n `;\n}"],"names":[],"mappings":";AAIA,MAAM,kBAA6C;AAAA,EACjD,SAAS;AAAA,EACT,MAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAS;AAAA,EACT,SAAS;AACX;AAMO,SAAS,cAAc,OAA2C;AACvE,QAAM,iBAAiB,MAAM,WAAW,gBAAgB,MAAM,IAAI;AAElE,SAAO;AAAA;AAAA;AAAA;AAAA,iCAIwB,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMvC,MAAM,WACJ;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKc,MAAM,WAAW;AAAA,2BAE/B,OAAO;AAAA;AAAA;AAAA;AAIjB;"}
1
+ {"version":3,"file":"index285.js","sources":["../src/components/atoms/card/glass-card/lib-glass-card.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\nimport type { GlassCardTemplateProps } from './lib-glass-card.types';\n\n/**\n * Template del glass card.\n *\n * Estructura de capas (de abajo a arriba):\n * 1. .glass-card — backdrop-filter + background tintado\n * 2. ::before (CSS) — reflexión de luz (--lib-glass-shine)\n * 3. .glass-card__slot slot del contenido, z-index: 1\n */\nexport function glassCardTemplate(_props: GlassCardTemplateProps): TemplateResult {\n return html`\n <div class=\"glass-card\">\n <div class=\"glass-card__slot\">\n <slot></slot>\n </div>\n </div>\n `;\n}"],"names":[],"mappings":";AAWO,SAAS,kBAAkB,QAAgD;AAChF,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOT;"}
package/dist/index286.js CHANGED
@@ -1,5 +1,5 @@
1
- const alertCss = '@layer tokens,reset,components;@layer reset{:host{display:block;width:100%}*,*:before,*:after{box-sizing:border-box}}@layer components{.alert{padding:var(--lib-space-md) var(--lib-space-lg);border-left:2px solid;display:flex;gap:var(--lib-space-md);align-items:flex-start;width:100%;transition:opacity var(--duration-base) var(--ease-default),transform var(--duration-base) var(--ease-default)}.alert-content{flex:1;min-width:0}.alert-title{font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;margin-bottom:var(--lib-space-xs);line-height:var(--leading-snug)}.alert-body{font-family:var(--lib-font-body);font-size:var(--text-sm);line-height:var(--leading-relaxed)}.alert-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:transparent;border:none;cursor:pointer;padding:0;opacity:.5;color:inherit;transition:opacity var(--duration-fast) var(--ease-default);font-size:16px;line-height:1;font-family:var(--lib-font-mono)}.alert-close:hover{opacity:1}:host([type="default"]) .alert,.alert{background:var(--bg-surface);border-color:var(--border-strong)}:host([type="default"]) .alert-title{color:var(--text-secondary)}:host([type="default"]) .alert-body{color:var(--text-secondary)}:host([type="info"]) .alert{background:var(--color-celadon-50);border-color:var(--color-celadon-400)}:host([type="info"]) .alert-title{color:var(--color-celadon-600)}:host([type="info"]) .alert-body{color:var(--color-celadon-500)}:host([type="warning"]) .alert{background:#fffbf0;border-color:var(--color-warning)}:host([type="warning"]) .alert-title{color:var(--color-warning)}:host([type="warning"]) .alert-body{color:#6b5010}:host([type="error"]) .alert{background:#fff8f7;border-color:var(--color-error)}:host([type="error"]) .alert-title{color:var(--color-error)}:host([type="error"]) .alert-body{color:#6b2015}:host([type="success"]) .alert{background:#f5faf6;border-color:var(--color-success)}:host([type="success"]) .alert-title{color:var(--color-success)}:host([type="success"]) .alert-body{color:#1e4a2a}:host([glass]) .alert{background:var(--lib-glass-bg);-webkit-backdrop-filter:var(--lib-glass-filter);backdrop-filter:var(--lib-glass-filter);border:var(--lib-glass-border);border-left-width:2px;box-shadow:var(--lib-glass-shadow);position:relative;overflow:hidden}:host([glass]) .alert:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--lib-glass-shine);pointer-events:none}:host([glass]) .alert-title,:host([glass]) .alert-body{color:var(--lib-glass-text);text-shadow:var(--lib-glass-text-shadow);position:relative;z-index:1}:host([glass]) .alert-close{color:var(--lib-glass-text);position:relative;z-index:1}}';
1
+ const glassCss = '@layer tokens,reset,components;@layer reset{:host{display:block}*,*:before,*:after{box-sizing:border-box}}@layer components{.glass-card{position:relative;overflow:hidden;border-radius:var(--radius-lg);background:var(--lib-glass-bg);-webkit-backdrop-filter:var(--lib-glass-filter);backdrop-filter:var(--lib-glass-filter);border:var(--lib-glass-border);box-shadow:var(--lib-glass-shadow);transition:box-shadow var(--duration-slow) var(--ease-default),transform var(--duration-slow) var(--ease-default)}.glass-card:hover{box-shadow:var(--lib-glass-shadow-hover);transform:translateY(-2px)}.glass-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:var(--lib-glass-shine);pointer-events:none;z-index:0}.glass-card__slot{position:relative;z-index:1}:host([variant="water"]) .glass-card{background:var(--lib-glass-bg-water)}:host([variant="kaki"]) .glass-card{background:var(--lib-glass-bg-kaki)}:host([intensity="low"]) .glass-card{background:oklch(98% .01 60deg / var(--lib-glass-opacity-low));-webkit-backdrop-filter:blur(var(--lib-glass-blur-low)) saturate(var(--lib-glass-saturate-amount));backdrop-filter:blur(var(--lib-glass-blur-low)) saturate(var(--lib-glass-saturate-amount))}:host([intensity="high"]) .glass-card{background:oklch(98% .01 60deg / var(--lib-glass-opacity-high));-webkit-backdrop-filter:blur(var(--lib-glass-blur-high)) saturate(var(--lib-glass-saturate-amount));backdrop-filter:blur(var(--lib-glass-blur-high)) saturate(var(--lib-glass-saturate-amount))}:host([variant="water"][intensity="low"]) .glass-card{background:oklch(55% .06 210deg / var(--lib-glass-opacity-low))}:host([variant="water"][intensity="high"]) .glass-card{background:oklch(55% .06 210deg / var(--lib-glass-opacity-high))}:host([variant="kaki"][intensity="low"]) .glass-card{background:oklch(45% .05 45deg / var(--lib-glass-opacity-low))}:host([variant="kaki"][intensity="high"]) .glass-card{background:oklch(45% .05 45deg / var(--lib-glass-opacity-high))}}';
2
2
  export {
3
- alertCss as default
3
+ glassCss as default
4
4
  };
5
5
  //# sourceMappingURL=index286.js.map
package/dist/index287.js CHANGED
@@ -1,54 +1,19 @@
1
1
  import { html } from "lit";
2
- const chevronSvg = html`
3
- <svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true">
4
- <path d="M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80a8,8,0,0,1,11.32-11.32L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z"/>
5
- </svg>`;
6
- function dropdownTemplate(ctx) {
2
+ function spotlightCardTemplate(props) {
7
3
  return html`
8
- <div class="dd" part="root">
9
-
10
- <!-- ── Trigger ── -->
11
- <button
12
- class="dd-trigger"
13
- part="trigger"
14
- aria-haspopup="true"
15
- aria-expanded="${ctx.open}"
16
- aria-label="${ctx.ariaLabel || ctx.label}"
17
- @click="${() => ctx._toggle()}"
18
- @keydown="${(e) => ctx._handleTriggerKey(e)}"
19
- >
20
- <slot name="trigger">${ctx.label}</slot>
21
- <span class="dd-chevron" part="chevron">${chevronSvg}</span>
22
- </button>
23
-
24
- <!-- ── Panel ── -->
25
- <div
26
- class="dd-menu"
27
- part="menu"
28
- role="menu"
29
- style="${ctx.minWidth ? `--dd-min-width:${ctx.minWidth}` : ""}"
30
- @keydown="${(e) => ctx._handleMenuKey(e)}"
31
- >
32
- <!-- Header opcional (búsqueda, título) -->
33
- <div class="dd-header-wrap" part="header-wrap"
34
- style="${ctx._hasSlot("header") ? "" : "display:none"}">
35
- <slot name="header"></slot>
36
- </div>
37
-
38
- <!-- Contenido: items, separadores, grupos -->
4
+ <div
5
+ class="spotlight"
6
+ @mousemove=${props.onMouseMove}
7
+ @mouseleave=${props.onMouseLeave}
8
+ >
9
+ <div class="spotlight__layer"></div>
10
+ <div class="spotlight__slot">
39
11
  <slot></slot>
40
-
41
- <!-- Footer opcional (acciones, confirmación) -->
42
- <div class="dd-footer-wrap" part="footer-wrap"
43
- style="${ctx._hasSlot("footer") ? "" : "display:none"}">
44
- <slot name="footer"></slot>
45
- </div>
46
12
  </div>
47
-
48
13
  </div>
49
14
  `;
50
15
  }
51
16
  export {
52
- dropdownTemplate
17
+ spotlightCardTemplate
53
18
  };
54
19
  //# sourceMappingURL=index287.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index287.js","sources":["../src/components/molecules/dropdown/lib-dropdown.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\nimport type { LibDropdown } from './lib-dropdown.component';\n\n/* Chevron SVG inline no depende de Phosphor ni ninguna lib */\nconst chevronSvg: TemplateResult = html`\n <svg viewBox=\"0 0 256 256\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M213.66,101.66l-80,80a8,8,0,0,1-11.32,0l-80-80a8,8,0,0,1,11.32-11.32L128,164.69l74.34-74.35a8,8,0,0,1,11.32,11.32Z\"/>\n </svg>`;\n\nexport function dropdownTemplate(ctx: LibDropdown): TemplateResult {\n return html`\n <div class=\"dd\" part=\"root\">\n\n <!-- ── Trigger ── -->\n <button\n class=\"dd-trigger\"\n part=\"trigger\"\n aria-haspopup=\"true\"\n aria-expanded=\"${ctx.open}\"\n aria-label=\"${ctx.ariaLabel || ctx.label}\"\n @click=\"${(): void => ctx._toggle()}\"\n @keydown=\"${(e: KeyboardEvent): void => ctx._handleTriggerKey(e)}\"\n >\n <slot name=\"trigger\">${ctx.label}</slot>\n <span class=\"dd-chevron\" part=\"chevron\">${chevronSvg}</span>\n </button>\n\n <!-- ── Panel ── -->\n <div\n class=\"dd-menu\"\n part=\"menu\"\n role=\"menu\"\n style=\"${ctx.minWidth ? `--dd-min-width:${ctx.minWidth}` : ''}\"\n @keydown=\"${(e: KeyboardEvent): void => ctx._handleMenuKey(e)}\"\n >\n <!-- Header opcional (búsqueda, título) -->\n <div class=\"dd-header-wrap\" part=\"header-wrap\"\n style=\"${ctx._hasSlot('header') ? '' : 'display:none'}\">\n <slot name=\"header\"></slot>\n </div>\n\n <!-- Contenido: items, separadores, grupos -->\n <slot></slot>\n\n <!-- Footer opcional (acciones, confirmación) -->\n <div class=\"dd-footer-wrap\" part=\"footer-wrap\"\n style=\"${ctx._hasSlot('footer') ? '' : 'display:none'}\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n\n </div>\n `;\n}"],"names":[],"mappings":";AAIA,MAAM,aAA6B;AAAA;AAAA;AAAA;AAK5B,SAAS,iBAAiB,KAAkC;AACjE,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAQgB,IAAI,IAAI;AAAA,sBACX,IAAI,aAAa,IAAI,KAAK;AAAA,kBAC9B,MAAY,IAAI,SAAS;AAAA,oBACvB,CAAC,MAA2B,IAAI,kBAAkB,CAAC,CAAC;AAAA;AAAA,+BAEzC,IAAI,KAAK;AAAA,kDACU,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAQ3C,IAAI,WAAW,kBAAkB,IAAI,QAAQ,KAAK,EAAE;AAAA,oBACjD,CAAC,MAA2B,IAAI,eAAe,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA,mBAIlD,IAAI,SAAS,QAAQ,IAAI,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAS5C,IAAI,SAAS,QAAQ,IAAI,KAAK,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAO/D;"}
1
+ {"version":3,"file":"index287.js","sources":["../src/components/atoms/card/spotlight-card/lib-spotlight-card.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\nimport type { SpotlightCardTemplateProps } from './lib-spotlight-card.types';\n\n/**\n * Template del spotlight card.\n *\n * Arquitectura de capas (de abajo a arriba):\n * 1. .spotlight__layer gradiente radial reactivo al cursor (z-index 1)\n * 2. ::after (CSS) hilo kintsugi en el borde, solo si [kintsugi] (z-index 2)\n * 3. .spotlight__slot — contenido slotado (z-index 3)\n *\n * El gradiente del spotlight se actualiza vía CSS custom properties\n * --lib-spotlight-x / --lib-spotlight-y actualizadas en el mousemove handler.\n */\nexport function spotlightCardTemplate(props: SpotlightCardTemplateProps): TemplateResult {\n return html`\n <div\n class=\"spotlight\"\n @mousemove=${props.onMouseMove}\n @mouseleave=${props.onMouseLeave}\n >\n <div class=\"spotlight__layer\"></div>\n <div class=\"spotlight__slot\">\n <slot></slot>\n </div>\n </div>\n `;\n}"],"names":[],"mappings":";AAcO,SAAS,sBAAsB,OAAmD;AACvF,SAAO;AAAA;AAAA;AAAA,mBAGU,MAAM,WAAW;AAAA,oBAChB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQtC;"}
package/dist/index288.js CHANGED
@@ -1,5 +1,5 @@
1
- const dropdownCss = '@layer tokens,reset,components;@layer reset{:host{display:inline-block;position:relative}*,*:before,*:after{box-sizing:border-box}button{font:inherit;background:none;border:none;padding:0;margin:0;cursor:pointer}}@layer components{.dd{position:relative;display:inline-block;-webkit-user-select:none;user-select:none}.dd-trigger{display:inline-flex;align-items:center;gap:var(--lib-space-sm);font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;cursor:pointer;background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-default);padding:calc(var(--lib-space-sm) + var(--lib-space-xs)) var(--lib-space-md);white-space:nowrap;transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.dd-trigger:hover{background:var(--bg-surface);border-color:var(--border-strong)}:host([open]) .dd-trigger{background:var(--bg-surface);border-color:var(--color-washi-700)}.dd-trigger:focus-visible{outline:2px solid var(--color-kaki-400);outline-offset:2px}.dd-chevron{display:flex;align-items:center;flex-shrink:0;color:var(--text-muted);transition:transform var(--duration-slow) var(--ease-out);line-height:1}.dd-chevron svg{width:12px;height:12px}:host([open]) .dd-chevron{transform:rotate(180deg)}:host([variant="ghost"]) .dd-trigger{background:transparent;border-color:transparent;color:var(--text-secondary)}:host([variant="ghost"]) .dd-trigger:hover{background:var(--bg-surface);border-color:transparent}:host([variant="ghost"][open]) .dd-trigger{background:var(--bg-surface);border-color:transparent}:host([variant="filled"]) .dd-trigger{background:var(--color-washi-900);border-color:var(--color-washi-900);color:var(--color-washi-50)}:host([variant="filled"]) .dd-trigger:hover{background:var(--color-washi-800);border-color:var(--color-washi-800)}:host([variant="filled"]) .dd-chevron{color:var(--color-washi-400)}:host([variant="kaki"]) .dd-trigger{background:var(--color-kaki-500);border-color:var(--color-kaki-500);color:#fff}:host([variant="kaki"]) .dd-trigger:hover{background:var(--color-kaki-600);border-color:var(--color-kaki-600)}:host([variant="kaki"]) .dd-chevron{color:#fff9}.dd-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:300;min-width:var(--dd-min-width, 200px);background:var(--bg-elevated);border:1px solid var(--border-default);box-shadow:var(--shadow-lg);opacity:0;transform:translateY(-6px) scaleY(.97);transform-origin:top center;pointer-events:none;transition:opacity .16s var(--ease-out),transform .2s var(--ease-out)}:host([open]) .dd-menu{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}:host([align="right"]) .dd-menu{left:auto;right:0}::slotted(.dd-item){display:flex!important;align-items:center;gap:.75rem;width:100%;padding:.75rem var(--lib-space-md);font-family:var(--lib-font-body);font-size:var(--text-sm);color:var(--text-secondary);background:transparent;border:none;cursor:pointer;text-align:left;text-decoration:none;white-space:nowrap;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}::slotted(.dd-item:hover){background:var(--bg-surface);color:var(--text-primary)}::slotted(.dd-item.is-active){color:var(--text-primary);background:var(--color-washi-100)}::slotted(.dd-item.is-disabled){opacity:.38;cursor:not-allowed;pointer-events:none}::slotted(.dd-item.is-danger){color:var(--color-error)}::slotted(.dd-item.is-danger:hover){background:var(--color-error-light);color:var(--color-error)}::slotted(.dd-sep){display:block!important;height:1px;background:var(--border-subtle);margin:var(--lib-space-xs) 0;border:none}::slotted(.dd-group-label){display:block!important;font-family:var(--lib-font-mono);font-size:9px;letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--text-muted);padding:.75rem var(--lib-space-md) var(--lib-space-xs)}.dd-header-wrap{border-bottom:1px solid var(--border-subtle)}.dd-footer-wrap{border-top:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:flex-end;gap:var(--lib-space-sm);padding:var(--lib-space-sm) var(--lib-space-md)}.dd-scroll-wrap{max-height:220px;overflow-y:auto;overscroll-behavior:contain}.dd-scroll-wrap::-webkit-scrollbar{width:4px}.dd-scroll-wrap::-webkit-scrollbar-track{background:transparent}.dd-scroll-wrap::-webkit-scrollbar-thumb{background:var(--color-washi-300);border-radius:2px}:host([dark]) .dd-menu{background:var(--color-washi-900);border-color:var(--color-washi-800)}:host([dark]) .dd-header-wrap{border-color:var(--color-washi-800)}:host([dark]) .dd-footer-wrap{border-color:var(--color-washi-800)}:host([dark]) ::slotted(.dd-item){color:var(--color-washi-400)}:host([dark]) ::slotted(.dd-item:hover){background:var(--color-washi-800);color:var(--color-washi-100)}:host([dark]) ::slotted(.dd-item.is-active){background:var(--color-washi-800);color:var(--color-washi-100)}:host([dark]) ::slotted(.dd-item.is-danger){color:#e87a6a}:host([dark]) ::slotted(.dd-item.is-danger:hover){background:#8c2a1a4d;color:#e87a6a}:host([dark]) ::slotted(.dd-sep){background:var(--color-washi-800)}:host([dark]) ::slotted(.dd-group-label){color:var(--color-washi-600)}}';
1
+ const spotlightCss = '@layer tokens,reset,components;@layer reset{:host{display:block;--lib-spotlight-x: 50%;--lib-spotlight-y: 50%}*,*:before,*:after{box-sizing:border-box}}@layer components{.spotlight{position:relative;overflow:hidden;border-radius:var(--radius-lg);background:#0b181c;border:1px solid oklch(100% 0 0deg / .08);cursor:crosshair;transition:border-color var(--duration-base) var(--ease-default),box-shadow var(--duration-base) var(--ease-default)}.spotlight:hover{border-color:#ffffff26;box-shadow:0 8px 32px #0006}:host([kintsugi]) .spotlight{background:#190f0a}:host([kintsugi]) .spotlight:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;padding:1px;background:var(--lib-kintsugi-border);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:2}.spotlight__layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;border-radius:inherit;background:var(--lib-spotlight-gradient);opacity:0;transition:opacity var(--duration-base) var(--ease-default);z-index:1}.spotlight:hover .spotlight__layer{opacity:1}:host([spotlight="water"]) .spotlight__layer{background:var(--lib-spotlight-gradient-water)}:host([spotlight="white"]) .spotlight__layer{background:var(--lib-spotlight-gradient-white)}.spotlight__slot{position:relative;z-index:3}}';
2
2
  export {
3
- dropdownCss as default
3
+ spotlightCss as default
4
4
  };
5
5
  //# sourceMappingURL=index288.js.map
package/dist/index289.js CHANGED
@@ -1,36 +1,5 @@
1
- import { html, nothing } from "lit";
2
- function emptyStateTemplate(props) {
3
- const illustrationZone = props.kanji ? html`
4
- <div class="es-illustration">
5
- <span class="es-kanji">${props.kanji}</span>
6
- </div>
7
- ` : html`
8
- <div class="es-illustration">
9
- <div class="es-icon-wrap">
10
- <slot name="illustration"></slot>
11
- </div>
12
- </div>
13
- `;
14
- return html`
15
- <div class="es
16
- ${props.layout === "inline" ? "es-inline" : ""}
17
- ${props.size === "sm" ? "es-sm" : ""}
18
- ${props.tone !== "neutral" ? `es-${props.tone}` : ""}
19
- ${props.bordered ? "es-bordered" : ""}
20
- ${props.ghost ? "es-ghost" : ""}
21
- ">
22
- ${illustrationZone}
23
- <div class="es-body">
24
- ${props.heading ? html`<h3 class="es-title">${props.heading}</h3>` : nothing}
25
- ${props.description ? html`<p class="es-desc">${props.description}</p>` : nothing}
26
- <div class="es-actions">
27
- <slot name="actions"></slot>
28
- </div>
29
- </div>
30
- </div>
31
- `;
32
- }
1
+ const gridCss = "@layer tokens,reset,components;@layer tokens{:host{display:block;--cg-cols: repeat(auto-fill, minmax(280px, 1fr));--cg-gap: 1.5px;--cg-bg: rgb(255, 255, 255, .04);--cg-border: rgb(255, 255, 255, .04)}}@layer reset{*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}}@layer components{.grid{display:grid;grid-template-columns:var(--cg-cols);gap:var(--cg-gap);background:var(--cg-bg);border:1px solid var(--cg-border)}::slotted(lib-component-card[featured]){grid-column:span 2}@media(max-width:700px){::slotted(lib-component-card[featured]){grid-column:span 1}}@media(max-width:600px){.grid{grid-template-columns:1fr}}}";
33
2
  export {
34
- emptyStateTemplate
3
+ gridCss as default
35
4
  };
36
5
  //# sourceMappingURL=index289.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index289.js","sources":["../src/components/molecules/empty-state/lib-empty-state.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\n\nexport type LibEmptyStateTone = 'neutral' | 'kaki' | 'celadon' | 'error';\nexport type LibEmptyStateLayout = 'default' | 'inline';\nexport type LibEmptyStateSize = 'sm' | 'md';\n\nexport interface EmptyStateTemplateProps {\n heading: string;\n description: string;\n kanji: string;\n tone: LibEmptyStateTone;\n layout: LibEmptyStateLayout;\n size: LibEmptyStateSize;\n bordered: boolean;\n ghost: boolean;\n}\n\n/**\n * Template para lib-empty-state.\n *\n * Estructura (ambos layouts):\n * div.es\n * div.es-illustration ← kanji | icon-wrap[slot=illustration]\n * div.es-body\n * h3.es-title\n * p.es-desc\n * div.es-actions\n * slot[name=actions]\n *\n * La zona de ilustración se omite si no hay kanji ni slot.\n * El CSS diferencia .es-inline (row) de .es (column).\n */\nexport function emptyStateTemplate(props: EmptyStateTemplateProps): TemplateResult {\n const illustrationZone = props.kanji\n ? html`\n <div class=\"es-illustration\">\n <span class=\"es-kanji\">${props.kanji}</span>\n </div>\n `\n : html`\n <div class=\"es-illustration\">\n <div class=\"es-icon-wrap\">\n <slot name=\"illustration\"></slot>\n </div>\n </div>\n `;\n\n return html`\n <div class=\"es\n ${props.layout === 'inline' ? 'es-inline' : ''}\n ${props.size === 'sm' ? 'es-sm' : ''}\n ${props.tone !== 'neutral' ? `es-${props.tone}` : ''}\n ${props.bordered ? 'es-bordered' : ''}\n ${props.ghost ? 'es-ghost' : ''}\n \">\n ${illustrationZone}\n <div class=\"es-body\">\n ${props.heading\n ? html`<h3 class=\"es-title\">${props.heading}</h3>`\n : nothing}\n ${props.description\n ? html`<p class=\"es-desc\">${props.description}</p>`\n : nothing}\n <div class=\"es-actions\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n </div>\n `;\n}"],"names":[],"mappings":";AAgCO,SAAS,mBAAmB,OAAgD;AACjF,QAAM,mBAAmB,MAAM,QAC3B;AAAA;AAAA,mCAE6B,MAAM,KAAK;AAAA;AAAA,UAGxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQJ,SAAO;AAAA;AAAA,QAED,MAAM,WAAY,WAAY,cAAe,EAAE;AAAA,QAC/C,MAAM,SAAY,OAAY,UAAe,EAAE;AAAA,QAC/C,MAAM,SAAY,YAAY,MAAM,MAAM,IAAI,KAAK,EAAE;AAAA,QACrD,MAAM,WAAwB,gBAAgB,EAAE;AAAA,QAChD,MAAM,QAAwB,aAAe,EAAE;AAAA;AAAA,QAE/C,gBAAgB;AAAA;AAAA,UAEd,MAAM,UACJ,4BAA4B,MAAM,OAAO,UACzC,OAAO;AAAA,UACT,MAAM,cACJ,0BAA0B,MAAM,WAAW,SAC3C,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOnB;"}
1
+ {"version":3,"file":"index289.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}