@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/index242.js CHANGED
@@ -1,17 +1,240 @@
1
- import { html } from "lit";
2
- const rippleTemplate = (ripples) => {
1
+ import { nothing, html } from "lit";
2
+ function renderBadge(value, tone) {
3
+ const label = String(value ?? "");
4
+ return html`<span class="cell-badge tone-${tone}">${label}</span>`;
5
+ }
6
+ function renderProgress(value, tone) {
7
+ const pct = Math.min(100, Math.max(0, Number(value) || 0));
8
+ const toneClass = tone ? `tone-${tone}` : "";
3
9
  return html`
4
- ${ripples.map((r) => html`
5
- <span class="ripple" style="
6
- width: ${r.size}px;
7
- height: ${r.size}px;
8
- left: ${r.x}px;
9
- top: ${r.y}px;
10
- "></span>
11
- `)}
10
+ <div class="cell-progress">
11
+ <div class="progress-bar">
12
+ <div class="progress-fill ${toneClass}" style="width:${pct}%"></div>
13
+ </div>
14
+ <span class="progress-val">${pct}%</span>
15
+ </div>
12
16
  `;
13
- };
17
+ }
18
+ function renderAvatar(row, col) {
19
+ const name = String(row[col.key] ?? "");
20
+ const initials = col.initialsKey ? String(row[col.initialsKey] ?? "").slice(0, 2).toUpperCase() : name.split(" ").map((w) => w[0]).join("").slice(0, 2).toUpperCase();
21
+ const hint = col.hintKey ? String(row[col.hintKey] ?? "") : "";
22
+ return html`
23
+ <div class="cell-avatar">
24
+ <div class="avatar-circle">${initials}</div>
25
+ <div class="avatar-text">
26
+ <span class="avatar-name">${name}</span>
27
+ ${hint ? html`<span class="avatar-hint">${hint}</span>` : nothing}
28
+ </div>
29
+ </div>
30
+ `;
31
+ }
32
+ function renderActionsBtn(row, idx, onRowAction) {
33
+ return html`
34
+ <button class="actions-btn"
35
+ aria-label="Acciones"
36
+ @click="${(e) => {
37
+ e.stopPropagation();
38
+ onRowAction(row, idx);
39
+ }}"
40
+ >⋯</button>
41
+ `;
42
+ }
43
+ function renderCell(col, row, idx, onRowAction) {
44
+ const value = row[col.key];
45
+ switch (col.type) {
46
+ case "badge": {
47
+ const tone = col.toneKey ? String(row[col.toneKey] ?? "inactive") : col.badgeTone ?? "inactive";
48
+ return renderBadge(value, tone);
49
+ }
50
+ case "progress":
51
+ return renderProgress(value, col.progressTone ?? "");
52
+ case "avatar":
53
+ return renderAvatar(row, col);
54
+ case "actions":
55
+ return renderActionsBtn(row, idx, onRowAction);
56
+ case "mono":
57
+ return html`<span class="cell-mono">${value ?? "—"}</span>`;
58
+ default:
59
+ return html`${value ?? "—"}`;
60
+ }
61
+ }
62
+ function thClasses(col, sortKey, sortDir) {
63
+ const parts = [];
64
+ if (col.type === "num") parts.push("cell-num", "is-num");
65
+ if (col.sticky) parts.push("col-sticky");
66
+ if (col.sortable) {
67
+ parts.push("is-sortable");
68
+ if (sortKey === col.key) parts.push(sortDir === "asc" ? "sort-asc" : "sort-desc");
69
+ }
70
+ return parts.join(" ");
71
+ }
72
+ function tdClasses(col) {
73
+ const parts = [];
74
+ if (col.type === "num") parts.push("cell-num");
75
+ if (col.type === "actions") parts.push("cell-actions");
76
+ if (col.sticky) parts.push("col-sticky");
77
+ if (col.truncate) parts.push("cell-truncate");
78
+ return parts.join(" ");
79
+ }
80
+ function rowClass(row, idx, selected) {
81
+ const state = row._state;
82
+ const isSelected = selected.has(idx) || state === "selected";
83
+ const parts = [];
84
+ if (isSelected) parts.push("is-selected");
85
+ else if (state) parts.push(`is-${state}`);
86
+ return parts.join(" ");
87
+ }
88
+ const WIDTHS = ["w-80", "w-60", "w-40", "w-60", "w-80"];
89
+ function renderSkeletonCell(col, idx) {
90
+ const w = WIDTHS[idx % WIDTHS.length] ?? "w-60";
91
+ if (col.type === "avatar") return html`
92
+ <div class="skel-cell">
93
+ <div class="skel-avatar"></div>
94
+ <div style="flex:1;display:flex;flex-direction:column;gap:4px;">
95
+ <div class="skel-line ${w}"></div>
96
+ <div class="skel-line w-40" style="height:7px;"></div>
97
+ </div>
98
+ </div>`;
99
+ if (col.type === "badge") return html`<div class="skel-badge"></div>`;
100
+ if (col.type === "num") return html`<div class="skel-line ${w}" style="margin-left:auto;"></div>`;
101
+ return html`<div class="skel-line ${w}"></div>`;
102
+ }
103
+ function renderSkeleton(count, cols, selectable) {
104
+ return html`${Array.from({ length: count }, (_, r) => html`
105
+ <tr class="tbl-tr">
106
+ ${selectable ? html`<td class="cell-check"></td>` : nothing}
107
+ ${cols.map((col, c) => html`
108
+ <td class="${tdClasses(col)}" style="${col.type === "actions" ? "" : ""}">
109
+ ${renderSkeletonCell(col, r + c)}
110
+ </td>
111
+ `)}
112
+ </tr>
113
+ `)}`;
114
+ }
115
+ function renderEmpty(title, desc, colSpan) {
116
+ return html`
117
+ <tr class="empty-row">
118
+ <td colspan="${colSpan}">
119
+ <span class="empty-icon">◯</span>
120
+ <span class="empty-title">${title}</span>
121
+ <span class="empty-desc">${desc}</span>
122
+ </td>
123
+ </tr>
124
+ `;
125
+ }
126
+ function renderToolbar(p) {
127
+ const countLabel = p.query ? `${p.filteredTotal} de ${p.totalRows}` : `${p.totalRows} registros`;
128
+ return html`
129
+ <div class="tbl-toolbar">
130
+ ${p.toolbarTitle ? html`<span class="tbl-toolbar-title">${p.toolbarTitle}</span>` : nothing}
131
+ <span class="tbl-toolbar-count">${countLabel}</span>
132
+ <input
133
+ class="tbl-toolbar-search"
134
+ type="search"
135
+ placeholder="Buscar…"
136
+ .value="${p.query}"
137
+ @input="${(e) => p.onSearch(e.target.value)}"
138
+ >
139
+ <slot name="toolbar-actions"></slot>
140
+ </div>
141
+ `;
142
+ }
143
+ function buildPageNumbers(current, total) {
144
+ if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);
145
+ const pages = [1];
146
+ if (current > 3) pages.push("…");
147
+ const lo = Math.max(2, current - 1);
148
+ const hi = Math.min(total - 1, current + 1);
149
+ for (let i = lo; i <= hi; i++) pages.push(i);
150
+ if (current < total - 2) pages.push("…");
151
+ pages.push(total);
152
+ return pages;
153
+ }
154
+ function renderPagination(p) {
155
+ if (p.pageSize <= 0 || p.totalPages <= 1) return html``;
156
+ const start = (p.page - 1) * p.pageSize + 1;
157
+ const end = Math.min(p.page * p.pageSize, p.filteredTotal);
158
+ const pages = buildPageNumbers(p.page, p.totalPages);
159
+ return html`
160
+ <div class="tbl-pagination">
161
+ <span class="pag-info">${start}–${end} de ${p.filteredTotal}</span>
162
+
163
+ <button class="pag-btn" ?disabled="${p.page <= 1}"
164
+ @click="${() => p.onPageChange(p.page - 1)}">‹</button>
165
+
166
+ ${pages.map((pg) => pg === "…" ? html`<span class="pag-sep">…</span>` : html`
167
+ <button class="pag-btn ${p.page === pg ? "is-active" : ""}"
168
+ @click="${() => p.onPageChange(pg)}">${pg}</button>
169
+ `)}
170
+
171
+ <button class="pag-btn" ?disabled="${p.page >= p.totalPages}"
172
+ @click="${() => p.onPageChange(p.page + 1)}">›</button>
173
+ </div>
174
+ `;
175
+ }
176
+ function dataTableTemplate(p) {
177
+ const colSpan = p.columns.length + (p.selectable ? 1 : 0);
178
+ const wrapCls = `tbl-wrap${p.stickyHead ? " tbl-sticky-head" : ""}`;
179
+ return html`
180
+ ${p.toolbar ? renderToolbar(p) : nothing}
181
+
182
+ <div class="${wrapCls}">
183
+ <table>
184
+ ${p.caption ? html`<caption>${p.caption}</caption>` : nothing}
185
+
186
+ <!-- THEAD -->
187
+ <thead>
188
+ <tr>
189
+ ${p.selectable ? html`
190
+ <th class="cell-check">
191
+ <input type="checkbox"
192
+ .indeterminate="${p.someSelected}"
193
+ .checked="${p.allSelected}"
194
+ @change="${(e) => p.onSelectAll(e.target.checked, p.data.length)}">
195
+ </th>
196
+ ` : nothing}
197
+
198
+ ${p.columns.map((col) => html`
199
+ <th class="${thClasses(col, p.sortKey, p.sortDir)}"
200
+ @click="${col.sortable ? () => p.onSort(col.key) : nothing}">
201
+ ${col.header}
202
+ </th>
203
+ `)}
204
+ </tr>
205
+ </thead>
206
+
207
+ <!-- TBODY -->
208
+ <tbody>
209
+ ${p.loading ? renderSkeleton(p.skeletonRows, p.columns, p.selectable) : p.data.length === 0 ? renderEmpty(p.emptyTitle, p.emptyDesc, colSpan) : p.data.map((row, idx) => {
210
+ const globalIdx = (p.page - 1) * (p.pageSize || 0) + idx;
211
+ return html`
212
+ <tr class="${rowClass(row, globalIdx, p.selected)}">
213
+ ${p.selectable ? html`
214
+ <td class="cell-check">
215
+ <input type="checkbox"
216
+ .checked="${p.selected.has(globalIdx)}"
217
+ @change="${(e) => p.onSelectRow(globalIdx, e.target.checked)}">
218
+ </td>
219
+ ` : nothing}
220
+
221
+ ${p.columns.map((col) => html`
222
+ <td class="${tdClasses(col)}">
223
+ ${renderCell(col, row, globalIdx, p.onRowAction)}
224
+ </td>
225
+ `)}
226
+ </tr>
227
+ `;
228
+ })}
229
+ </tbody>
230
+ </table>
231
+ </div>
232
+
233
+ ${renderPagination(p)}
234
+ <slot name="pagination"></slot>
235
+ `;
236
+ }
14
237
  export {
15
- rippleTemplate
238
+ dataTableTemplate
16
239
  };
17
240
  //# sourceMappingURL=index242.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index242.js","sources":["../src/components/atoms/ripple/lib-ripple.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\nimport { RippleEffect } from './lib-ripple.component';\n\nexport const rippleTemplate = (ripples: RippleEffect[]): TemplateResult => {\n return html`\n ${ripples.map(r => html`\n <span class=\"ripple\" style=\"\n width: ${r.size}px;\n height: ${r.size}px;\n left: ${r.x}px;\n top: ${r.y}px;\n \"></span>\n `)}\n `;\n};"],"names":[],"mappings":";AAGO,MAAM,iBAAiB,CAAC,YAA4C;AACzE,SAAO;AAAA,MACH,QAAQ,IAAI,CAAA,MAAK;AAAA;AAAA,iBAEN,EAAE,IAAI;AAAA,kBACL,EAAE,IAAI;AAAA,gBACR,EAAE,CAAC;AAAA,eACJ,EAAE,CAAC;AAAA;AAAA,KAEb,CAAC;AAAA;AAEN;"}
1
+ {"version":3,"file":"index242.js","sources":["../src/components/organisms/data-table/lib-data-table.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport type {\n TableColumn,\n TableRowData,\n TableVariant,\n TableSize,\n TableBadgeTone,\n} from './lib-data-table.types';\n\n/* ── Template Props ─────────────────────────────────────── */\nexport interface DataTableTemplateProps {\n columns: TableColumn[];\n data: TableRowData[];\n filteredTotal: number;\n totalRows: number;\n variant: TableVariant;\n size: TableSize;\n dark: boolean;\n loading: boolean;\n selectable: boolean;\n stickyHead: boolean;\n caption: string;\n emptyTitle: string;\n emptyDesc: string;\n toolbar: boolean;\n toolbarTitle: string;\n skeletonRows: number;\n sortKey: string;\n sortDir: 'asc' | 'desc';\n query: string;\n selected: Set<number>;\n allSelected: boolean;\n someSelected: boolean;\n page: number;\n pageSize: number;\n totalPages: number;\n onSort: (key: string) => void;\n onSearch: (q: string) => void;\n onSelectAll: (checked: boolean, total: number) => void;\n onSelectRow: (idx: number, checked: boolean) => void;\n onRowAction: (row: TableRowData, idx: number) => void;\n onPageChange: (p: number) => void;\n}\n\n/* ── Helpers: Cell renderers ───────────────────────────── */\n\nfunction renderBadge(value: unknown, tone: string): TemplateResult {\n const label = String(value ?? '');\n return html`<span class=\"cell-badge tone-${tone}\">${label}</span>`;\n}\n\nfunction renderProgress(value: unknown, tone: 'kaki' | 'celadon' | ''): TemplateResult {\n const pct = Math.min(100, Math.max(0, Number(value) || 0));\n const toneClass = tone ? `tone-${tone}` : '';\n return html`\n <div class=\"cell-progress\">\n <div class=\"progress-bar\">\n <div class=\"progress-fill ${toneClass}\" style=\"width:${pct}%\"></div>\n </div>\n <span class=\"progress-val\">${pct}%</span>\n </div>\n `;\n}\n\nfunction renderAvatar(row: TableRowData, col: TableColumn): TemplateResult {\n const name = String(row[col.key] ?? '');\n const initials = col.initialsKey\n ? String(row[col.initialsKey] ?? '').slice(0, 2).toUpperCase()\n : name.split(' ').map(w => w[0]).join('').slice(0, 2).toUpperCase();\n const hint = col.hintKey ? String(row[col.hintKey] ?? '') : '';\n\n return html`\n <div class=\"cell-avatar\">\n <div class=\"avatar-circle\">${initials}</div>\n <div class=\"avatar-text\">\n <span class=\"avatar-name\">${name}</span>\n ${hint ? html`<span class=\"avatar-hint\">${hint}</span>` : nothing}\n </div>\n </div>\n `;\n}\n\nfunction renderActionsBtn(row: TableRowData, idx: number, onRowAction: (r: TableRowData, i: number) => void): TemplateResult {\n return html`\n <button class=\"actions-btn\"\n aria-label=\"Acciones\"\n @click=\"${(e: Event):void => { e.stopPropagation(); onRowAction(row, idx); }}\"\n >⋯</button>\n `;\n}\n\nfunction renderCell(col: TableColumn, row: TableRowData, idx: number, onRowAction: (r: TableRowData, i: number) => void): TemplateResult {\n const value = row[col.key];\n\n switch (col.type) {\n case 'badge': {\n const tone = col.toneKey\n ? String(row[col.toneKey] ?? 'inactive')\n : (col.badgeTone ?? 'inactive');\n return renderBadge(value, tone as TableBadgeTone);\n }\n case 'progress':\n return renderProgress(value, col.progressTone ?? '');\n case 'avatar':\n return renderAvatar(row, col);\n case 'actions':\n return renderActionsBtn(row, idx, onRowAction);\n case 'mono':\n return html`<span class=\"cell-mono\">${value ?? '—'}</span>`;\n default:\n return html`${value ?? '—'}`;\n }\n}\n\n/* ── Helpers: Structural ───────────────────────────────── */\n\nfunction thClasses(col: TableColumn, sortKey: string, sortDir: 'asc' | 'desc'): string {\n const parts: string[] = [];\n if (col.type === 'num') parts.push('cell-num', 'is-num');\n if (col.sticky) parts.push('col-sticky');\n if (col.sortable) {\n parts.push('is-sortable');\n if (sortKey === col.key) parts.push(sortDir === 'asc' ? 'sort-asc' : 'sort-desc');\n }\n return parts.join(' ');\n}\n\nfunction tdClasses(col: TableColumn): string {\n const parts: string[] = [];\n if (col.type === 'num') parts.push('cell-num');\n if (col.type === 'actions') parts.push('cell-actions');\n if (col.sticky) parts.push('col-sticky');\n if (col.truncate) parts.push('cell-truncate');\n return parts.join(' ');\n}\n\nfunction rowClass(row: TableRowData, idx: number, selected: Set<number>): string {\n const state = row._state;\n const isSelected = selected.has(idx) || state === 'selected';\n const parts: string[] = [];\n if (isSelected) parts.push('is-selected');\n else if (state) parts.push(`is-${state}`);\n return parts.join(' ');\n}\n\n/* ── Skeleton rows ───────────────────────────────────────── */\nconst WIDTHS = ['w-80', 'w-60', 'w-40', 'w-60', 'w-80'] as const;\n\nfunction renderSkeletonCell(col: TableColumn, idx: number): TemplateResult {\n const w = WIDTHS[idx % WIDTHS.length] ?? 'w-60';\n if (col.type === 'avatar') return html`\n <div class=\"skel-cell\">\n <div class=\"skel-avatar\"></div>\n <div style=\"flex:1;display:flex;flex-direction:column;gap:4px;\">\n <div class=\"skel-line ${w}\"></div>\n <div class=\"skel-line w-40\" style=\"height:7px;\"></div>\n </div>\n </div>`;\n if (col.type === 'badge') return html`<div class=\"skel-badge\"></div>`;\n if (col.type === 'num') return html`<div class=\"skel-line ${w}\" style=\"margin-left:auto;\"></div>`;\n return html`<div class=\"skel-line ${w}\"></div>`;\n}\n\nfunction renderSkeleton(count: number, cols: TableColumn[], selectable: boolean): TemplateResult {\n return html`${Array.from({ length: count }, (_, r) => html`\n <tr class=\"tbl-tr\">\n ${selectable ? html`<td class=\"cell-check\"></td>` : nothing}\n ${cols.map((col, c) => html`\n <td class=\"${tdClasses(col)}\" style=\"${col.type === 'actions' ? '' : ''}\">\n ${renderSkeletonCell(col, r + c)}\n </td>\n `)}\n </tr>\n `)}`;\n}\n\n/* ── Empty state ─────────────────────────────────────────── */\nfunction renderEmpty(title: string, desc: string, colSpan: number): TemplateResult {\n return html`\n <tr class=\"empty-row\">\n <td colspan=\"${colSpan}\">\n <span class=\"empty-icon\">◯</span>\n <span class=\"empty-title\">${title}</span>\n <span class=\"empty-desc\">${desc}</span>\n </td>\n </tr>\n `;\n}\n\n/* ── Toolbar ─────────────────────────────────────────────── */\nfunction renderToolbar(p: DataTableTemplateProps): TemplateResult {\n const countLabel = p.query\n ? `${p.filteredTotal} de ${p.totalRows}`\n : `${p.totalRows} registros`;\n\n return html`\n <div class=\"tbl-toolbar\">\n ${p.toolbarTitle ? html`<span class=\"tbl-toolbar-title\">${p.toolbarTitle}</span>` : nothing}\n <span class=\"tbl-toolbar-count\">${countLabel}</span>\n <input\n class=\"tbl-toolbar-search\"\n type=\"search\"\n placeholder=\"Buscar…\"\n .value=\"${p.query}\"\n @input=\"${(e: Event):void => p.onSearch((e.target as HTMLInputElement).value)}\"\n >\n <slot name=\"toolbar-actions\"></slot>\n </div>\n `;\n}\n\n/* ── Built-in pagination bar ─────────────────────────────── */\nfunction buildPageNumbers(current: number, total: number): (number | '…')[] {\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\n const pages: (number | '…')[] = [1];\n if (current > 3) pages.push('…');\n const lo = Math.max(2, current - 1);\n const hi = Math.min(total - 1, current + 1);\n for (let i = lo; i <= hi; i++) pages.push(i);\n if (current < total - 2) pages.push('…');\n pages.push(total);\n return pages;\n}\n\nfunction renderPagination(p: DataTableTemplateProps): TemplateResult {\n if (p.pageSize <= 0 || p.totalPages <= 1) return html``;\n const start = (p.page - 1) * p.pageSize + 1;\n const end = Math.min(p.page * p.pageSize, p.filteredTotal);\n const pages = buildPageNumbers(p.page, p.totalPages);\n\n return html`\n <div class=\"tbl-pagination\">\n <span class=\"pag-info\">${start}–${end} de ${p.filteredTotal}</span>\n\n <button class=\"pag-btn\" ?disabled=\"${p.page <= 1}\"\n @click=\"${():void => p.onPageChange(p.page - 1)}\">‹</button>\n\n ${pages.map(pg => pg === '…'\n ? html`<span class=\"pag-sep\">…</span>`\n : html`\n <button class=\"pag-btn ${p.page === pg ? 'is-active' : ''}\"\n @click=\"${():void => p.onPageChange(pg as number)}\">${pg}</button>\n `)}\n\n <button class=\"pag-btn\" ?disabled=\"${p.page >= p.totalPages}\"\n @click=\"${():void => p.onPageChange(p.page + 1)}\">›</button>\n </div>\n `;\n}\n\n/* ── Main template ────────────────────────────────────────── */\nexport function dataTableTemplate(p: DataTableTemplateProps): TemplateResult {\n const colSpan = p.columns.length + (p.selectable ? 1 : 0);\n const wrapCls = `tbl-wrap${p.stickyHead ? ' tbl-sticky-head' : ''}`;\n\n return html`\n ${p.toolbar ? renderToolbar(p) : nothing}\n\n <div class=\"${wrapCls}\">\n <table>\n ${p.caption ? html`<caption>${p.caption}</caption>` : nothing}\n\n <!-- THEAD -->\n <thead>\n <tr>\n ${p.selectable ? html`\n <th class=\"cell-check\">\n <input type=\"checkbox\"\n .indeterminate=\"${p.someSelected}\"\n .checked=\"${p.allSelected}\"\n @change=\"${(e: Event):void =>\n p.onSelectAll((e.target as HTMLInputElement).checked, p.data.length)}\">\n </th>\n ` : nothing}\n\n ${p.columns.map(col => html`\n <th class=\"${thClasses(col, p.sortKey, p.sortDir)}\"\n @click=\"${col.sortable ? ():void => p.onSort(col.key) : nothing}\">\n ${col.header}\n </th>\n `)}\n </tr>\n </thead>\n\n <!-- TBODY -->\n <tbody>\n ${p.loading\n ? renderSkeleton(p.skeletonRows, p.columns, p.selectable)\n : p.data.length === 0\n ? renderEmpty(p.emptyTitle, p.emptyDesc, colSpan)\n : p.data.map((row, idx) => {\n const globalIdx = (p.page - 1) * (p.pageSize || 0) + idx;\n return html`\n <tr class=\"${rowClass(row, globalIdx, p.selected)}\">\n ${p.selectable ? html`\n <td class=\"cell-check\">\n <input type=\"checkbox\"\n .checked=\"${p.selected.has(globalIdx)}\"\n @change=\"${(e: Event):void =>\n p.onSelectRow(globalIdx, (e.target as HTMLInputElement).checked)}\">\n </td>\n ` : nothing}\n\n ${p.columns.map(col => html`\n <td class=\"${tdClasses(col)}\">\n ${renderCell(col, row, globalIdx, p.onRowAction)}\n </td>\n `)}\n </tr>\n `;\n })\n }\n </tbody>\n </table>\n </div>\n\n ${renderPagination(p)}\n <slot name=\"pagination\"></slot>\n `;\n}"],"names":[],"mappings":"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"}
package/dist/index243.js CHANGED
@@ -1,5 +1,85 @@
1
- const styles = "@layer components{:host{display:block;position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;border-radius:inherit;z-index:10}.ripple{position:absolute;border-radius:50%;background-color:var(--lib-ripple-color, orange);opacity:.2;transform:scale(0);animation:ripple-animation var(--duration-slower, .6s) var(--ease-out) forwards;pointer-events:none}@keyframes ripple-animation{to{transform:scale(1);opacity:0}}}";
1
+ import { html } from "lit";
2
+ const closeSvg = html`
3
+ <svg width="12" height="12" viewBox="0 0 12 12" fill="none"
4
+ stroke="currentColor" stroke-width="1.5" stroke-linecap="round">
5
+ <path d="M1 1l10 10M11 1L1 11"/>
6
+ </svg>
7
+ `;
8
+ const dangerSvg = html`
9
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none"
10
+ stroke="var(--color-error)" stroke-width="1.5"
11
+ stroke-linecap="round" stroke-linejoin="round">
12
+ <path d="M8 2L14.5 13H1.5L8 2z"/>
13
+ <path d="M8 6v3M8 11v.5"/>
14
+ </svg>
15
+ `;
16
+ const warningSvg = html`
17
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none"
18
+ stroke="var(--color-warning)" stroke-width="1.5"
19
+ stroke-linecap="round" stroke-linejoin="round">
20
+ <circle cx="8" cy="8" r="6"/>
21
+ <path d="M8 5v3M8 10v.5"/>
22
+ </svg>
23
+ `;
24
+ function dialogTemplate(props) {
25
+ const {
26
+ eyebrow,
27
+ dlgTitle,
28
+ variant,
29
+ size,
30
+ layout,
31
+ footerMeta,
32
+ onClose
33
+ } = props;
34
+ const layoutCls = layout === "drawer-right" ? "dlg-drawer-right" : layout === "drawer-bottom" ? "dlg-drawer-bottom" : "";
35
+ const alertCls = layout === "alert" ? "dlg-alert" : "";
36
+ const sizeCls = `dlg-${size}`;
37
+ const dlgCls = `dlg ${sizeCls} ${layoutCls} ${alertCls}`.trim();
38
+ const hasIcon = variant === "danger" || variant === "warning";
39
+ const headerIcon = hasIcon ? html`<div class="dlg-header-icon">
40
+ ${variant === "danger" ? dangerSvg : warningSvg}
41
+ </div>` : null;
42
+ return html`
43
+ <dialog
44
+ class="${dlgCls}"
45
+ @cancel="${(e) => {
46
+ e.preventDefault();
47
+ onClose();
48
+ }}"
49
+ @click="${(e) => {
50
+ if (e.target.tagName === "DIALOG") onClose();
51
+ }}"
52
+ >
53
+ <!-- HEADER -->
54
+ <div class="dlg-header">
55
+ ${headerIcon}
56
+ <div class="dlg-header-text" style="${hasIcon ? "margin-left: var(--lib-space-md)" : ""}">
57
+ ${eyebrow ? html`<p class="dlg-eyebrow">${eyebrow}</p>` : null}
58
+ <slot name="header">
59
+ <h2 class="dlg-title">${dlgTitle}</h2>
60
+ </slot>
61
+ </div>
62
+ <button
63
+ class="dlg-close"
64
+ aria-label="Cerrar"
65
+ @click="${() => onClose()}"
66
+ >${closeSvg}</button>
67
+ </div>
68
+
69
+ <!-- BODY -->
70
+ <div class="dlg-body">
71
+ <slot></slot>
72
+ </div>
73
+
74
+ <!-- FOOTER -->
75
+ <div class="dlg-footer">
76
+ ${footerMeta ? html`<span class="dlg-footer-meta">${footerMeta}</span>` : null}
77
+ <slot name="footer"></slot>
78
+ </div>
79
+ </dialog>
80
+ `;
81
+ }
2
82
  export {
3
- styles as default
83
+ dialogTemplate
4
84
  };
5
85
  //# sourceMappingURL=index243.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index243.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index243.js","sources":["../src/components/organisms/dialog/lib-dialog.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\nimport type { DialogTemplateProps } from './lib-dialog.types';\n\n/* SVG del botón de cierre — reutilizable */\nconst closeSvg = html`\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\n stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\">\n <path d=\"M1 1l10 10M11 1L1 11\"/>\n </svg>\n`;\n\n/* Icono para variante danger */\nconst dangerSvg = html`\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n stroke=\"var(--color-error)\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M8 2L14.5 13H1.5L8 2z\"/>\n <path d=\"M8 6v3M8 11v.5\"/>\n </svg>\n`;\n\n/* Icono para variante warning */\nconst warningSvg = html`\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\n stroke=\"var(--color-warning)\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"8\" cy=\"8\" r=\"6\"/>\n <path d=\"M8 5v3M8 10v.5\"/>\n </svg>\n`;\n\nexport function dialogTemplate(props: DialogTemplateProps): TemplateResult {\n const {\n eyebrow, dlgTitle, variant, size,\n layout, footerMeta, onClose,\n } = props;\n\n /* ── Clases del <dialog> ── */\n const layoutCls =\n layout === 'drawer-right' ? 'dlg-drawer-right' :\n layout === 'drawer-bottom' ? 'dlg-drawer-bottom' :\n '';\n const alertCls = layout === 'alert' ? 'dlg-alert' : '';\n const sizeCls = `dlg-${size}`;\n const dlgCls = `dlg ${sizeCls} ${layoutCls} ${alertCls}`.trim();\n\n /* ── Icono de header (solo danger / warning) ── */\n const hasIcon = variant === 'danger' || variant === 'warning';\n const headerIcon = hasIcon\n ? html`<div class=\"dlg-header-icon\">\n ${ variant === 'danger' ? dangerSvg : warningSvg }\n </div>`\n : null;\n\n return html`\n <dialog\n class=\"${dlgCls}\"\n @cancel=\"${(e: Event): void => { e.preventDefault(); onClose(); }}\"\n @click=\"${(e: MouseEvent): void => {\n /* Cierre al click sobre el backdrop (target === dialog) */\n if ((e.target as HTMLElement).tagName === 'DIALOG') onClose();\n }}\"\n >\n <!-- HEADER -->\n <div class=\"dlg-header\">\n ${headerIcon}\n <div class=\"dlg-header-text\" style=\"${hasIcon ? 'margin-left: var(--lib-space-md)' : ''}\">\n ${eyebrow ? html`<p class=\"dlg-eyebrow\">${eyebrow}</p>` : null}\n <slot name=\"header\">\n <h2 class=\"dlg-title\">${dlgTitle}</h2>\n </slot>\n </div>\n <button\n class=\"dlg-close\"\n aria-label=\"Cerrar\"\n @click=\"${(): void => onClose()}\"\n >${closeSvg}</button>\n </div>\n\n <!-- BODY -->\n <div class=\"dlg-body\">\n <slot></slot>\n </div>\n\n <!-- FOOTER -->\n <div class=\"dlg-footer\">\n ${footerMeta ? html`<span class=\"dlg-footer-meta\">${footerMeta}</span>` : null}\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n `;\n}"],"names":[],"mappings":";AAIA,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAQjB,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUlB,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASZ,SAAS,eAAe,OAA4C;AACzE,QAAM;AAAA,IACJ;AAAA,IAAS;AAAA,IAAU;AAAA,IAAS;AAAA,IAC5B;AAAA,IAAQ;AAAA,IAAY;AAAA,EAAA,IAClB;AAGJ,QAAM,YACJ,WAAW,iBAAkB,qBAC7B,WAAW,kBAAkB,sBAC7B;AACF,QAAM,WAAW,WAAW,UAAU,cAAc;AACpD,QAAM,UAAW,OAAO,IAAI;AAC5B,QAAM,SAAW,OAAO,OAAO,IAAI,SAAS,IAAI,QAAQ,GAAG,KAAA;AAG3D,QAAM,UAAU,YAAY,YAAY,YAAY;AACpD,QAAM,aAAa,UACf;AAAA,UACK,YAAY,WAAW,YAAY,UAAW;AAAA,gBAEnD;AAEJ,SAAO;AAAA;AAAA,eAEM,MAAM;AAAA,iBACJ,CAAC,MAAmB;AAAE,MAAE,eAAA;AAAkB,YAAA;AAAA,EAAW,CAAC;AAAA,gBACvD,CAAC,MAAwB;AAEjC,QAAK,EAAE,OAAuB,YAAY,SAAU,SAAA;AAAA,EACtD,CAAC;AAAA;AAAA;AAAA;AAAA,UAIG,UAAU;AAAA,8CAC0B,UAAU,qCAAqC,EAAE;AAAA,YACnF,UAAU,8BAA8B,OAAO,SAAS,IAAI;AAAA;AAAA,oCAEpC,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMxB,MAAY,SAAS;AAAA,WAC9B,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUT,aAAa,qCAAqC,UAAU,YAAY,IAAI;AAAA;AAAA;AAAA;AAAA;AAKtF;"}
package/dist/index244.js CHANGED
@@ -1,12 +1,5 @@
1
- import { html } from "lit";
2
- const aspectRatioTemplate = () => {
3
- return html`
4
- <div class="aspect-ratio-container">
5
- <slot></slot>
6
- </div>
7
- `;
8
- };
1
+ const dialogCss = '@layer tokens,reset,components;@layer reset{:host{display:contents}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}}@layer components{dialog::backdrop{background:#120e0a00;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);transition:background .3s,backdrop-filter .3s}dialog.is-open::backdrop{background:#120e0a8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}dialog.dlg{position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;padding:0;border:1px solid var(--border-default);background:var(--bg-elevated);box-shadow:var(--shadow-xl);max-height:calc(100vh - var(--lib-space-xl));display:flex;flex-direction:column;overflow:hidden;opacity:0;transform:translateY(12px) scale(.97);transition:opacity var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-bounce)}dialog.dlg[open]{opacity:1;transform:translateY(0) scale(1)}dialog.dlg.is-closing{opacity:0;transform:translateY(6px) scale(.98);transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.dlg-sm{width:min(400px,calc(100vw - var(--lib-space-md)))}.dlg-md{width:min(540px,calc(100vw - var(--lib-space-md)))}.dlg-lg{width:min(720px,calc(100vw - var(--lib-space-md)))}.dlg-xl{width:min(960px,calc(100vw - var(--lib-space-md)))}.dlg-full{width:100vw;height:100vh;max-height:100vh;margin:0}.dlg-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--lib-space-md);padding:var(--lib-space-xl) var(--lib-space-xl) var(--lib-space-lg);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.dlg-header-text{flex:1}.dlg-header-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-subtle);flex-shrink:0;margin-top:2px}.dlg-eyebrow{font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--lib-space-xs)}.dlg-title{font-family:var(--lib-font-display);font-size:var(--text-xl);font-weight:var(--weight-light);letter-spacing:var(--tracking-tight);line-height:1.2;color:var(--text-primary)}.dlg-title em{font-style:italic;color:var(--text-accent)}.dlg-close{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-subtle);background:transparent;cursor:pointer;color:var(--text-muted);flex-shrink:0;transition:border-color var(--duration-fast),color var(--duration-fast),background var(--duration-fast)}.dlg-close:hover{border-color:var(--border-default);color:var(--text-primary);background:var(--bg-surface)}.dlg-close svg{display:block;pointer-events:none}.dlg-body{padding:var(--lib-space-xl);overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:var(--color-washi-300) transparent;font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-relaxed)}.dlg-footer{padding:var(--lib-space-lg) var(--lib-space-xl);border-top:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:flex-end;gap:var(--lib-space-sm);flex-shrink:0;background:var(--bg-surface)}.dlg-footer-meta{margin-right:auto;font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wide);color:var(--text-muted)}.dlg-divider{border:none;border-top:1px solid var(--border-subtle);margin:var(--lib-space-lg) 0}:host([variant="danger"]) .dlg-header{border-bottom-color:var(--color-error-border, #E8B4AE);background:var(--color-error-bg, #FDF0EE)}:host([variant="danger"]) .dlg-title{color:var(--color-error)}:host([variant="danger"]) .dlg-eyebrow{color:var(--color-error);opacity:.6}:host([variant="danger"]) .dlg-header-icon{border-color:var(--color-error-border, #E8B4AE)}:host([variant="danger"]) .dlg-close{border-color:var(--color-error-border, #E8B4AE)}:host([variant="warning"]) .dlg-header{border-bottom-color:var(--color-warning-border, #E8D0AE);background:var(--color-warning-bg, #FDF5EC)}:host([variant="warning"]) .dlg-title{color:var(--color-warning)}:host([variant="warning"]) .dlg-eyebrow{color:var(--color-warning);opacity:.6}:host([variant="warning"]) .dlg-header-icon{border-color:var(--color-warning-border, #E8D0AE)}:host([variant="warning"]) .dlg-close{border-color:var(--color-warning-border, #E8D0AE)}:host([variant="dark"]) dialog.dlg{background:var(--color-washi-950);border-color:#190f0a}:host([variant="dark"]) .dlg-header{border-bottom-color:#150a06}:host([variant="dark"]) .dlg-title{color:#faf7f4d9}:host([variant="dark"]) .dlg-eyebrow{color:#3c302a}:host([variant="dark"]) .dlg-close{border-color:#1e130e;color:#433831}:host([variant="dark"]) .dlg-close:hover{border-color:#372b26;color:#faf7f499;background:#100704}:host([variant="dark"]) .dlg-body{color:#6d6059}:host([variant="dark"]) .dlg-footer{background:#070201;border-top-color:#150a06}:host([variant="dark"]) .dlg-footer-meta{color:#312620}:host([variant="dark"]) .dlg-divider{border-top-color:#150a06}:host([layout="drawer-right"]) dialog.dlg{inset:0 0 0 auto;margin:0;height:100vh;max-height:100vh;border-top:none;border-bottom:none;border-right:none;opacity:0;transform:translate(40px);transition:opacity var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out)}:host([layout="drawer-right"]) dialog.dlg[open]{opacity:1;transform:translate(0)}:host([layout="drawer-right"]) dialog.dlg.is-closing{opacity:0;transform:translate(40px)}:host([layout="drawer-bottom"]) dialog.dlg{inset:auto 0 0;margin:0;width:100%;max-width:100%;border-left:none;border-right:none;border-bottom:none;opacity:0;transform:translateY(40px);transition:opacity var(--duration-slow) var(--ease-out),transform var(--duration-slow) var(--ease-out)}:host([layout="drawer-bottom"]) dialog.dlg[open]{opacity:1;transform:translateY(0)}:host([layout="drawer-bottom"]) dialog.dlg.is-closing{opacity:0;transform:translateY(40px)}:host([layout="alert"]) .dlg-header{padding:var(--lib-space-lg) var(--lib-space-lg) var(--lib-space-md)}:host([layout="alert"]) .dlg-body{padding:0 var(--lib-space-lg) var(--lib-space-lg)}:host([layout="alert"]) .dlg-footer{padding:var(--lib-space-md) var(--lib-space-lg)}:host([layout="alert"]) .dlg-title{font-family:var(--lib-font-body);font-size:var(--text-md)}@media(max-width:768px){.dlg-sm,.dlg-md,.dlg-lg,.dlg-xl{width:calc(100vw - var(--lib-space-md));margin:auto}}}';
9
2
  export {
10
- aspectRatioTemplate
3
+ dialogCss as default
11
4
  };
12
5
  //# sourceMappingURL=index244.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index244.js","sources":["../src/components/atoms/aspect-ratio/lib-aspect-ratio.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\n\nexport const aspectRatioTemplate = (): TemplateResult => {\n return html`\n <div class=\"aspect-ratio-container\">\n <slot></slot>\n </div>\n `;\n};"],"names":[],"mappings":";AAEO,MAAM,sBAAsB,MAAsB;AACvD,SAAO;AAAA;AAAA;AAAA;AAAA;AAKT;"}
1
+ {"version":3,"file":"index244.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index245.js CHANGED
@@ -1,5 +1,97 @@
1
- const styles = "@layer components{:host{display:block;width:100%}.aspect-ratio-container{position:relative;width:100%;aspect-ratio:var(--lib-aspect-ratio, 1 / 1)}::slotted(*){position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}}";
1
+ import { html, nothing } from "lit";
2
+ const iconClose = html`
3
+ <svg viewBox="0 0 14 14" aria-hidden="true">
4
+ <line x1="2" y1="2" x2="12" y2="12"/>
5
+ <line x1="12" y1="2" x2="2" y2="12"/>
6
+ </svg>`;
7
+ function drawerTemplate(ctx) {
8
+ const isHorizontal = ctx.placement === "right" || ctx.placement === "left";
9
+ const isGlitch = ctx.variant === "glitch" || ctx.variant === "glitch-dark";
10
+ const placementClass = `dr-${ctx.placement}`;
11
+ return html`
12
+ <!-- Backdrop — click fuera cierra -->
13
+ <div
14
+ class="dr-backdrop"
15
+ part="backdrop"
16
+ @click="${(e) => {
17
+ if (e.target.classList.contains("dr-backdrop")) ctx._close();
18
+ }}"
19
+ >
20
+ <!-- Panel -->
21
+ <div
22
+ class="dr ${placementClass}"
23
+ part="panel"
24
+ role="dialog"
25
+ aria-modal="true"
26
+ aria-label="${ctx.drawerLabel}"
27
+ tabindex="-1"
28
+ >
29
+ <!-- RGB ghost layers (glitch variants únicamente) -->
30
+ ${isGlitch ? html`
31
+ <div class="dr-rgb-r" aria-hidden="true"></div>
32
+ <div class="dr-rgb-b" aria-hidden="true"></div>
33
+ ` : nothing}
34
+
35
+ <!-- Handle bar — solo top / bottom -->
36
+ ${!isHorizontal ? html`
37
+ <div class="dr-handle" part="handle">
38
+ <div class="dr-handle-bar"></div>
39
+ </div>
40
+ ` : nothing}
41
+
42
+ <!-- Header -->
43
+ <div class="dr-header" part="header">
44
+ <div class="dr-title-block">
45
+
46
+ <!-- Eyebrow — slot o prop -->
47
+ ${ctx.eyebrow ? html`
48
+ <div class="dr-eyebrow" part="eyebrow">
49
+ <slot name="eyebrow">${ctx.eyebrow}</slot>
50
+ </div>
51
+ ` : html`
52
+ <slot name="eyebrow">
53
+ <div class="dr-eyebrow" part="eyebrow" style="display:none"></div>
54
+ </slot>
55
+ `}
56
+
57
+ <!-- Title — slot o prop -->
58
+ <div class="dr-title" part="title" id="dr-title-${ctx._uid}">
59
+ <slot name="title">${ctx.label}</slot>
60
+ </div>
61
+
62
+ <!-- Subtitle — slot o prop -->
63
+ ${ctx.subtitle ? html`
64
+ <div class="dr-subtitle" part="subtitle">
65
+ <slot name="subtitle">${ctx.subtitle}</slot>
66
+ </div>
67
+ ` : html`<slot name="subtitle"></slot>`}
68
+
69
+ </div>
70
+
71
+ <!-- Botón cerrar -->
72
+ <button
73
+ class="dr-close"
74
+ part="close-btn"
75
+ aria-label="Cerrar"
76
+ @click="${() => ctx._close()}"
77
+ >${iconClose}</button>
78
+ </div>
79
+
80
+ <!-- Body — slot default -->
81
+ <div class="dr-body" part="body">
82
+ <slot></slot>
83
+ </div>
84
+
85
+ <!-- Footer — slot footer (oculto si vacío via CSS) -->
86
+ <div class="dr-footer" part="footer">
87
+ <slot name="footer"></slot>
88
+ </div>
89
+
90
+ </div>
91
+ </div>
92
+ `;
93
+ }
2
94
  export {
3
- styles as default
95
+ drawerTemplate
4
96
  };
5
97
  //# sourceMappingURL=index245.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index245.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index245.js","sources":["../src/components/organisms/drawer/lib-drawer.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport type { LibDrawer } from './lib-drawer.component';\n\n/* ── SVG close (X) ── */\nconst iconClose: TemplateResult = html`\n <svg viewBox=\"0 0 14 14\" aria-hidden=\"true\">\n <line x1=\"2\" y1=\"2\" x2=\"12\" y2=\"12\"/>\n <line x1=\"12\" y1=\"2\" x2=\"2\" y2=\"12\"/>\n </svg>`;\n\nexport function drawerTemplate(ctx: LibDrawer): TemplateResult {\n const isHorizontal = ctx.placement === 'right' || ctx.placement === 'left';\n const isGlitch = ctx.variant === 'glitch' || ctx.variant === 'glitch-dark';\n\n /* Clase CSS del panel según placement */\n const placementClass = `dr-${ctx.placement}`;\n\n return html`\n <!-- Backdrop — click fuera cierra -->\n <div\n class=\"dr-backdrop\"\n part=\"backdrop\"\n @click=\"${(e: MouseEvent): void => {\n if ((e.target as HTMLElement).classList.contains('dr-backdrop')) ctx._close();\n }}\"\n >\n <!-- Panel -->\n <div\n class=\"dr ${placementClass}\"\n part=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"${ctx.drawerLabel}\"\n tabindex=\"-1\"\n >\n <!-- RGB ghost layers (glitch variants únicamente) -->\n ${isGlitch ? html`\n <div class=\"dr-rgb-r\" aria-hidden=\"true\"></div>\n <div class=\"dr-rgb-b\" aria-hidden=\"true\"></div>\n ` : nothing}\n\n <!-- Handle bar — solo top / bottom -->\n ${!isHorizontal ? html`\n <div class=\"dr-handle\" part=\"handle\">\n <div class=\"dr-handle-bar\"></div>\n </div>\n ` : nothing}\n\n <!-- Header -->\n <div class=\"dr-header\" part=\"header\">\n <div class=\"dr-title-block\">\n\n <!-- Eyebrow — slot o prop -->\n ${ctx.eyebrow ? html`\n <div class=\"dr-eyebrow\" part=\"eyebrow\">\n <slot name=\"eyebrow\">${ctx.eyebrow}</slot>\n </div>\n ` : html`\n <slot name=\"eyebrow\">\n <div class=\"dr-eyebrow\" part=\"eyebrow\" style=\"display:none\"></div>\n </slot>\n `}\n\n <!-- Title — slot o prop -->\n <div class=\"dr-title\" part=\"title\" id=\"dr-title-${ctx._uid}\">\n <slot name=\"title\">${ctx.label}</slot>\n </div>\n\n <!-- Subtitle — slot o prop -->\n ${ctx.subtitle ? html`\n <div class=\"dr-subtitle\" part=\"subtitle\">\n <slot name=\"subtitle\">${ctx.subtitle}</slot>\n </div>\n ` : html`<slot name=\"subtitle\"></slot>`}\n\n </div>\n\n <!-- Botón cerrar -->\n <button\n class=\"dr-close\"\n part=\"close-btn\"\n aria-label=\"Cerrar\"\n @click=\"${(): void => ctx._close()}\"\n >${iconClose}</button>\n </div>\n\n <!-- Body — slot default -->\n <div class=\"dr-body\" part=\"body\">\n <slot></slot>\n </div>\n\n <!-- Footer — slot footer (oculto si vacío via CSS) -->\n <div class=\"dr-footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n </div>\n\n </div>\n </div>\n `;\n}"],"names":[],"mappings":";AAIA,MAAM,YAA4B;AAAA;AAAA;AAAA;AAAA;AAM3B,SAAS,eAAe,KAAgC;AAC7D,QAAM,eAAe,IAAI,cAAc,WAAW,IAAI,cAAc;AACpE,QAAM,WAAe,IAAI,YAAY,YAAY,IAAI,YAAY;AAGjE,QAAM,iBAAiB,MAAM,IAAI,SAAS;AAE1C,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA,gBAKO,CAAC,MAAwB;AACjC,QAAK,EAAE,OAAuB,UAAU,SAAS,aAAa,OAAO,OAAA;AAAA,EACvE,CAAC;AAAA;AAAA;AAAA;AAAA,oBAIa,cAAc;AAAA;AAAA;AAAA;AAAA,sBAIZ,IAAI,WAAW;AAAA;AAAA;AAAA;AAAA,UAI3B,WAAW;AAAA;AAAA;AAAA,YAGT,OAAO;AAAA;AAAA;AAAA,UAGT,CAAC,eAAe;AAAA;AAAA;AAAA;AAAA,YAId,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOL,IAAI,UAAU;AAAA;AAAA,uCAEW,IAAI,OAAO;AAAA;AAAA,gBAElC;AAAA;AAAA;AAAA;AAAA,aAIH;AAAA;AAAA;AAAA,8DAGiD,IAAI,IAAI;AAAA,mCACnC,IAAI,KAAK;AAAA;AAAA;AAAA;AAAA,cAI9B,IAAI,WAAW;AAAA;AAAA,wCAEW,IAAI,QAAQ;AAAA;AAAA,gBAEpC,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAS7B,MAAY,IAAI,QAAQ;AAAA,aACjC,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBtB;"}
package/dist/index246.js CHANGED
@@ -1,8 +1,5 @@
1
- import { html } from "lit";
2
- const visuallyHiddenTemplate = () => {
3
- return html`<slot></slot>`;
4
- };
1
+ const drawerCss = '@layer tokens,reset,components;@layer reset{:host{display:contents}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}button{font:inherit;background:none;border:none;padding:0;margin:0;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}}@layer components{.dr-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;background:#1a140e00;pointer-events:none;transition:background var(--duration-slow) var(--ease-out)}:host([open]) .dr-backdrop{background:#1a140e73;pointer-events:auto}.dr{position:fixed;z-index:401;background:var(--bg-elevated);display:flex;flex-direction:column;will-change:transform;visibility:hidden;transition:transform var(--duration-slow) var(--ease-out),visibility 0ms var(--duration-slow)}:host([open]) .dr{visibility:visible;transform:translate(0);transition:transform var(--duration-slow) var(--ease-out),visibility 0ms 0ms}.dr-right{top:0;right:0;bottom:0;width:420px;transform:translate(100%);border-left:1px solid var(--border-subtle);box-shadow:-8px 0 48px #1a140e29}.dr-left{top:0;left:0;bottom:0;width:420px;transform:translate(-100%);border-right:1px solid var(--border-subtle);box-shadow:8px 0 48px #1a140e29}.dr-top{top:0;left:0;right:0;height:360px;transform:translateY(-100%);border-bottom:1px solid var(--border-subtle);box-shadow:0 8px 48px #1a140e29}.dr-bottom{bottom:0;left:0;right:0;height:360px;transform:translateY(100%);border-top:1px solid var(--border-subtle);box-shadow:0 -8px 48px #1a140e29}:host([placement="right"][size="sm"]) .dr,:host([placement="left"][size="sm"]) .dr{width:300px}:host([placement="right"][size="lg"]) .dr,:host([placement="left"][size="lg"]) .dr{width:560px}:host([placement="right"][size="xl"]) .dr,:host([placement="left"][size="xl"]) .dr{width:720px}:host([placement="right"][size="full"]) .dr,:host([placement="left"][size="full"]) .dr{width:100%}:host([placement="top"][size="sm"]) .dr,:host([placement="bottom"][size="sm"]) .dr{height:240px}:host([placement="top"][size="lg"]) .dr,:host([placement="bottom"][size="lg"]) .dr{height:480px}:host([placement="top"][size="full"]) .dr,:host([placement="bottom"][size="full"]) .dr{height:100%}.dr-right:before,.dr-left:before{content:"";position:absolute;top:50%;width:3px;height:32px;border-radius:999px;background:var(--color-washi-200);transform:translateY(-50%);pointer-events:none}.dr-right:before{left:var(--lib-space-sm)}.dr-left:before{right:var(--lib-space-sm)}.dr-handle{display:flex;justify-content:center;padding:var(--lib-space-sm) 0 var(--lib-space-xs);flex-shrink:0}.dr-handle-bar{width:36px;height:3px;background:var(--color-washi-300);border-radius:999px}.dr-header{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--lib-space-lg) var(--lib-space-lg) var(--lib-space-md);border-bottom:1px solid var(--border-subtle);flex-shrink:0;gap:var(--lib-space-md)}.dr-eyebrow{font-family:var(--lib-font-mono);font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--lib-space-xs)}.dr-title{font-family:var(--lib-font-display);font-size:1.8rem;font-weight:300;letter-spacing:var(--tracking-tight);line-height:1.1;color:var(--text-primary)}.dr-subtitle{font-family:var(--lib-font-body);font-size:var(--text-xs);letter-spacing:.06em;color:var(--text-secondary);margin-top:var(--lib-space-sm);line-height:1.6}.dr-close{flex-shrink:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--border-subtle);cursor:pointer;color:var(--text-muted);margin-top:var(--lib-space-xs);transition:border-color var(--duration-base),color var(--duration-base),background var(--duration-base)}.dr-close:hover{border-color:var(--border-default);background:var(--bg-surface);color:var(--text-primary)}.dr-close:focus-visible{outline:2px solid var(--color-kaki-400);outline-offset:2px}.dr-close svg{width:12px;height:12px;stroke-width:1.6;stroke:currentcolor;fill:none;stroke-linecap:round}.dr-body{flex:1;overflow:hidden auto;padding:var(--lib-space-lg)}.dr-body::-webkit-scrollbar{width:4px}.dr-body::-webkit-scrollbar-thumb{background:var(--color-washi-300);border-radius:2px}.dr-body::-webkit-scrollbar-thumb:hover{background:var(--color-washi-500)}.dr-body::-webkit-scrollbar-track{background:transparent}:host([open]) .dr-body ::slotted(*:nth-child(1)){animation:dr-body-in var(--duration-slow) var(--ease-out) .12s both}:host([open]) .dr-body ::slotted(*:nth-child(2)){animation:dr-body-in var(--duration-slow) var(--ease-out) .16s both}:host([open]) .dr-body ::slotted(*:nth-child(3)){animation:dr-body-in var(--duration-slow) var(--ease-out) .2s both}:host([open]) .dr-body ::slotted(*:nth-child(4)){animation:dr-body-in var(--duration-slow) var(--ease-out) .24s both}:host([open]) .dr-body ::slotted(*:nth-child(n+5)){animation:dr-body-in var(--duration-slow) var(--ease-out) .28s both}@keyframes dr-body-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.dr-footer{border-top:1px solid var(--border-subtle);padding:var(--lib-space-md) var(--lib-space-lg);display:flex;align-items:center;justify-content:flex-end;gap:var(--lib-space-sm);flex-shrink:0;background:var(--bg-base)}.dr-footer:not(:has(slot[name=footer] *)){display:none}:host([variant="dark"]) .dr{background:var(--color-washi-950);border-color:#ffffff12!important}:host([variant="dark"]) .dr-header{border-bottom-color:#ffffff12}:host([variant="dark"]) .dr-eyebrow{color:#faf7f438}:host([variant="dark"]) .dr-title{color:#faf7f4bf}:host([variant="dark"]) .dr-subtitle{color:#faf7f447}:host([variant="dark"]) .dr-close{border-color:#ffffff1a;color:#faf7f44d}:host([variant="dark"]) .dr-close:hover{border-color:#fff3;background:#ffffff0d;color:#faf7f4b3}:host([variant="dark"]) .dr-right:before,:host([variant="dark"]) .dr-left:before{background:#ffffff14}:host([variant="dark"]) .dr-footer{border-top-color:#ffffff12;background:#ffffff05}:host([variant="dark"]) .dr-handle-bar{background:#ffffff1f}:host([variant="dark"]) .dr-body::-webkit-scrollbar-thumb{background:#faf7f426}:host([variant="dark"]) .dr-body::-webkit-scrollbar-thumb:hover{background:#faf7f44d}:host([variant="kintsugi"]) .dr{border-color:#b85a1e4d!important}:host([variant="kintsugi"]) .dr-header{border-bottom-color:#b85a1e26}:host([variant="kintsugi"]) .dr-eyebrow{color:var(--color-kaki-400)}:host([variant="kintsugi"]) .dr-title{color:var(--color-kaki-600)}:host([variant="kintsugi"]) .dr-close{border-color:#b85a1e40;color:var(--color-kaki-500)}:host([variant="kintsugi"]) .dr-close:hover{background:var(--color-kaki-50);border-color:var(--color-kaki-400)}:host([variant="kintsugi"]) .dr-footer{background:var(--color-kaki-50);border-top-color:#b85a1e1f}:host([variant="kintsugi"]) .dr-body::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--color-kaki-400),#F5D08A,var(--color-kaki-600));background-size:100% 200%;animation:kintsugi-seam 3s ease-in-out infinite alternate}:host([variant="kintsugi"][placement="right"]) .dr:after{content:"";position:absolute;top:0;bottom:0;left:0;width:2px;background:linear-gradient(180deg,transparent 0%,var(--color-kaki-400) 20%,#F5D08A 50%,var(--color-kaki-400) 80%,transparent 100%);background-size:100% 200%;animation:kintsugi-seam 4s ease-in-out infinite alternate;pointer-events:none}:host([variant="kintsugi"][placement="left"]) .dr:after{content:"";position:absolute;top:0;bottom:0;right:0;width:2px;background:linear-gradient(180deg,transparent 0%,var(--color-kaki-400) 20%,#F5D08A 50%,var(--color-kaki-400) 80%,transparent 100%);background-size:100% 200%;animation:kintsugi-seam 4s ease-in-out infinite alternate;pointer-events:none}:host([variant="kintsugi"][placement="top"]) .dr:after,:host([variant="kintsugi"][placement="bottom"]) .dr:after{content:"";position:absolute;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 0%,var(--color-kaki-400) 20%,#F5D08A 50%,var(--color-kaki-400) 80%,transparent 100%);background-size:200% 100%;animation:kintsugi-sweep 4s ease-in-out infinite alternate;pointer-events:none}:host([variant="kintsugi"][placement="top"]) .dr:after{bottom:0}:host([variant="kintsugi"][placement="bottom"]) .dr:after{top:0}@keyframes kintsugi-seam{0%{background-position:0 -20%;opacity:.7}50%{background-position:0 50%;opacity:1}to{background-position:0 120%;opacity:.7}}@keyframes kintsugi-sweep{0%{background-position:-200% 0}to{background-position:200% 0}}:host([variant="kintsugi-dark"]) .dr{background:var(--color-washi-950);border-color:#b85a1e33!important}:host([variant="kintsugi-dark"]) .dr-header{border-bottom-color:#b85a1e26}:host([variant="kintsugi-dark"]) .dr-eyebrow{color:#d9723480}:host([variant="kintsugi-dark"]) .dr-title{color:var(--color-kaki-400)}:host([variant="kintsugi-dark"]) .dr-subtitle{color:#faf7f440}:host([variant="kintsugi-dark"]) .dr-close{border-color:#b85a1e33;color:#d9723480}:host([variant="kintsugi-dark"]) .dr-close:hover{background:#b85a1e14;border-color:var(--color-kaki-500);color:var(--color-kaki-400)}:host([variant="kintsugi-dark"]) .dr-footer{background:#b85a1e0a;border-top-color:#b85a1e1f}:host([variant="kintsugi-dark"]) .dr-right:before,:host([variant="kintsugi-dark"]) .dr-left:before{background:#b85a1e26}:host([variant="kintsugi-dark"]) .dr-body::-webkit-scrollbar-thumb{background:#b85a1e66}:host([variant="kintsugi-dark"][placement="right"]) .dr:after{content:"";position:absolute;top:0;bottom:0;left:0;width:2px;background:linear-gradient(180deg,transparent 0%,rgb(184,90,30,.5) 20%,rgb(245,208,138,.7) 50%,rgb(184,90,30,.5) 80%,transparent 100%);background-size:100% 200%;animation:kintsugi-seam 4s ease-in-out infinite alternate;pointer-events:none}:host([variant="kintsugi-dark"][placement="left"]) .dr:after{content:"";position:absolute;top:0;bottom:0;right:0;width:2px;background:linear-gradient(180deg,transparent 0%,rgb(184,90,30,.5) 20%,rgb(245,208,138,.7) 50%,rgb(184,90,30,.5) 80%,transparent 100%);background-size:100% 200%;animation:kintsugi-seam 4s ease-in-out infinite alternate;pointer-events:none}:host([variant="glitch"]) .dr{animation:dr-glitch-slide 7s steps(1) infinite}:host([variant="glitch"][open]) .dr{animation:dr-flicker 7s steps(1) infinite}:host([variant="glitch"][open][placement="right"]) .dr{animation:dr-glitch-open-r var(--duration-slow) var(--ease-out) forwards,dr-glitch-slide 7s steps(1) infinite .6s}:host([variant="glitch"]) .dr-title{font-family:var(--lib-font-mono);font-size:1rem;letter-spacing:.14em;text-transform:uppercase}:host([variant="glitch"][placement="right"]) .dr:after{content:"";position:absolute;top:0;bottom:0;left:0;width:1px;background:var(--color-washi-900);animation:dr-seam-glitch 7s steps(1) infinite;pointer-events:none}:host([variant="glitch"][placement="left"]) .dr:after{content:"";position:absolute;top:0;bottom:0;right:0;width:1px;background:var(--color-washi-900);animation:dr-seam-glitch 7s steps(1) infinite;pointer-events:none}:host([variant="glitch"]) .dr:before{content:""!important;position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgb(0,0,0,.03) 3px,rgb(0,0,0,.03) 4px)!important;animation:dr-scanline 7s steps(1) infinite!important;pointer-events:none!important;z-index:10!important;width:auto!important;height:auto!important;border-radius:0!important}.dr-rgb-r,.dr-rgb-b{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:9}:host([variant="glitch"]) .dr-rgb-r{background:#d9723414;animation:dr-rgb-r 7s steps(1) infinite;mix-blend-mode:screen}:host([variant="glitch"]) .dr-rgb-b{background:#4e94820f;animation:dr-rgb-b 7s steps(1) infinite 60ms;mix-blend-mode:screen}:host([variant="glitch-dark"]) .dr{background:var(--color-washi-950);border-color:#ffffff0f!important;animation:dr-glitch-slide 6s steps(1) infinite,dr-flicker 6s steps(1) infinite}:host([variant="glitch-dark"][open]) .dr{animation:dr-flicker 6s steps(1) infinite}:host([variant="glitch-dark"][placement="right"]) .dr:after{content:"";position:absolute;top:0;bottom:0;left:0;width:1px;background:#faf7f44d;animation:dr-seam-glitch 6s steps(1) infinite;pointer-events:none}:host([variant="glitch-dark"]) .dr:before{content:""!important;position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgb(255,255,255,.02) 3px,rgb(255,255,255,.02) 4px)!important;animation:dr-scanline 6s steps(1) infinite!important;pointer-events:none!important;z-index:10!important;width:auto!important;height:auto!important}:host([variant="glitch-dark"]) .dr-rgb-r{background:#d972341f;animation:dr-rgb-r 6s steps(1) infinite;mix-blend-mode:screen}:host([variant="glitch-dark"]) .dr-rgb-b{background:#4e94821a;animation:dr-rgb-b 6s steps(1) infinite 80ms;mix-blend-mode:screen}:host([variant="glitch-dark"]) .dr-header{border-bottom-color:#ffffff12}:host([variant="glitch-dark"]) .dr-eyebrow{color:#faf7f433}:host([variant="glitch-dark"]) .dr-title{color:#faf7f4bf;font-family:var(--lib-font-mono);font-size:1rem;letter-spacing:.14em;text-transform:uppercase}:host([variant="glitch-dark"]) .dr-subtitle{color:#faf7f440}:host([variant="glitch-dark"]) .dr-close{border-color:#ffffff1a;color:#faf7f44d}:host([variant="glitch-dark"]) .dr-close:hover{background:#ffffff0d;border-color:#fff3;color:#faf7f4b3}:host([variant="glitch-dark"]) .dr-footer{background:#ffffff05;border-top-color:#ffffff0f}:host([variant="glitch-dark"]) .dr-body::-webkit-scrollbar-thumb{background:#faf7f426}@keyframes dr-glitch-slide{0%,88%,to{transform:translate(0)}89%{transform:translate(-2px)}90%{transform:translate(2px)}91%{transform:translate(-1px)}92%{transform:translate(0)}}@keyframes dr-glitch-open-r{0%{transform:translate(100%)}60%{transform:translate(-3px)}65%{transform:translate(2px)}70%{transform:translate(-1px)}to{transform:translate(0)}}@keyframes dr-seam-glitch{0%,85%,to{opacity:.3;height:100%;top:0}86%{opacity:1;height:60%;top:20%}87%{opacity:.6;height:80%;top:5%}88%{opacity:0}89%{opacity:1;height:40%;top:50%}90%{opacity:.3;height:100%;top:0}}@keyframes dr-scanline{0%{background-position:0 0;opacity:.04}89%{background-position:0 0;opacity:.04}90%{background-position:0 -4px;opacity:.12}91%{background-position:0 3px;opacity:.08}92%{background-position:0 0;opacity:.04}}@keyframes dr-rgb-r{0%,88%,to{opacity:0}89%{opacity:.15;transform:translate(-3px);clip-path:inset(20% 0 40% 0)}90%{opacity:.1;transform:translate(2px);clip-path:inset(60% 0 10% 0)}91%{opacity:0}}@keyframes dr-rgb-b{0%,88%,to{opacity:0}89%{opacity:.12;transform:translate(3px);clip-path:inset(50% 0 20% 0)}90%{opacity:.08;transform:translate(-2px);clip-path:inset(10% 0 60% 0)}91%{opacity:0}}@keyframes dr-flicker{0%,85%,to{opacity:1}89%{opacity:.8}89.5%{opacity:1}90%{opacity:.6}90.5%{opacity:1}}@media(prefers-reduced-motion:reduce){.dr{transition:visibility 0ms}:host([open]) .dr{transition:none}:host([variant="glitch"]) .dr,:host([variant="glitch-dark"]) .dr{animation:none}:host([variant="kintsugi"]) .dr:after,:host([variant="kintsugi-dark"]) .dr:after{animation:none}:host([open]) .dr-body ::slotted(*){animation:none}}}';
5
2
  export {
6
- visuallyHiddenTemplate
3
+ drawerCss as default
7
4
  };
8
5
  //# sourceMappingURL=index246.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index246.js","sources":["../src/components/atoms/visually-hidden/lib-visually-hidden.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\n\nexport const visuallyHiddenTemplate = (): TemplateResult => {\n return html`<slot></slot>`;\n};"],"names":[],"mappings":";AAEO,MAAM,yBAAyB,MAAsB;AAC1D,SAAO;AACT;"}
1
+ {"version":3,"file":"index246.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}