@shibui-ui/ui 1.25.1 → 1.26.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 (322) hide show
  1. package/dist/index.js +68 -68
  2. package/dist/index107.js +2 -2
  3. package/dist/index107.js.map +1 -1
  4. package/dist/index108.js +2 -2
  5. package/dist/index108.js.map +1 -1
  6. package/dist/index109.js +2 -2
  7. package/dist/index109.js.map +1 -1
  8. package/dist/index11.js +1 -1
  9. package/dist/index110.js +2 -2
  10. package/dist/index110.js.map +1 -1
  11. package/dist/index115.js +2 -2
  12. package/dist/index115.js.map +1 -1
  13. package/dist/index116.js +2 -2
  14. package/dist/index116.js.map +1 -1
  15. package/dist/index117.js +2 -2
  16. package/dist/index117.js.map +1 -1
  17. package/dist/index118.js +2 -2
  18. package/dist/index118.js.map +1 -1
  19. package/dist/index119.js +2 -2
  20. package/dist/index119.js.map +1 -1
  21. package/dist/index120.js +2 -2
  22. package/dist/index120.js.map +1 -1
  23. package/dist/index121.js +2 -2
  24. package/dist/index121.js.map +1 -1
  25. package/dist/index122.js +2 -2
  26. package/dist/index122.js.map +1 -1
  27. package/dist/index123.js +2 -2
  28. package/dist/index123.js.map +1 -1
  29. package/dist/index124.js +2 -2
  30. package/dist/index124.js.map +1 -1
  31. package/dist/index125.js +2 -2
  32. package/dist/index125.js.map +1 -1
  33. package/dist/index126.js +2 -2
  34. package/dist/index126.js.map +1 -1
  35. package/dist/index127.js +2 -2
  36. package/dist/index127.js.map +1 -1
  37. package/dist/index128.js +2 -2
  38. package/dist/index128.js.map +1 -1
  39. package/dist/index129.js +2 -2
  40. package/dist/index129.js.map +1 -1
  41. package/dist/index130.js +2 -2
  42. package/dist/index130.js.map +1 -1
  43. package/dist/index131.js +2 -2
  44. package/dist/index131.js.map +1 -1
  45. package/dist/index132.js +2 -2
  46. package/dist/index132.js.map +1 -1
  47. package/dist/index133.js +2 -2
  48. package/dist/index133.js.map +1 -1
  49. package/dist/index134.js +2 -2
  50. package/dist/index134.js.map +1 -1
  51. package/dist/index135.js +2 -2
  52. package/dist/index135.js.map +1 -1
  53. package/dist/index136.js +2 -2
  54. package/dist/index136.js.map +1 -1
  55. package/dist/index137.js +2 -2
  56. package/dist/index137.js.map +1 -1
  57. package/dist/index138.js +2 -2
  58. package/dist/index138.js.map +1 -1
  59. package/dist/index139.js +2 -2
  60. package/dist/index139.js.map +1 -1
  61. package/dist/index140.js +2 -2
  62. package/dist/index140.js.map +1 -1
  63. package/dist/index141.js +2 -2
  64. package/dist/index141.js.map +1 -1
  65. package/dist/index142.js +2 -2
  66. package/dist/index142.js.map +1 -1
  67. package/dist/index143.js +2 -2
  68. package/dist/index143.js.map +1 -1
  69. package/dist/index144.js +2 -2
  70. package/dist/index144.js.map +1 -1
  71. package/dist/index145.js +2 -2
  72. package/dist/index145.js.map +1 -1
  73. package/dist/index146.js +2 -2
  74. package/dist/index146.js.map +1 -1
  75. package/dist/index147.js +2 -2
  76. package/dist/index147.js.map +1 -1
  77. package/dist/index148.js +2 -2
  78. package/dist/index148.js.map +1 -1
  79. package/dist/index149.js +2 -2
  80. package/dist/index149.js.map +1 -1
  81. package/dist/index150.js +2 -2
  82. package/dist/index150.js.map +1 -1
  83. package/dist/index151.js +2 -2
  84. package/dist/index151.js.map +1 -1
  85. package/dist/index152.js +2 -2
  86. package/dist/index152.js.map +1 -1
  87. package/dist/index153.js +2 -2
  88. package/dist/index153.js.map +1 -1
  89. package/dist/index154.js +2 -2
  90. package/dist/index154.js.map +1 -1
  91. package/dist/index155.js +2 -2
  92. package/dist/index155.js.map +1 -1
  93. package/dist/index156.js +2 -2
  94. package/dist/index156.js.map +1 -1
  95. package/dist/index157.js +2 -2
  96. package/dist/index157.js.map +1 -1
  97. package/dist/index158.js +2 -2
  98. package/dist/index158.js.map +1 -1
  99. package/dist/index159.js +2 -2
  100. package/dist/index159.js.map +1 -1
  101. package/dist/index160.js +2 -2
  102. package/dist/index160.js.map +1 -1
  103. package/dist/index161.js +2 -2
  104. package/dist/index161.js.map +1 -1
  105. package/dist/index162.js +2 -2
  106. package/dist/index162.js.map +1 -1
  107. package/dist/index163.js +2 -2
  108. package/dist/index163.js.map +1 -1
  109. package/dist/index164.js +2 -2
  110. package/dist/index164.js.map +1 -1
  111. package/dist/index165.js +2 -2
  112. package/dist/index165.js.map +1 -1
  113. package/dist/index166.js +2 -2
  114. package/dist/index166.js.map +1 -1
  115. package/dist/index167.js +2 -2
  116. package/dist/index167.js.map +1 -1
  117. package/dist/index168.js +2 -2
  118. package/dist/index168.js.map +1 -1
  119. package/dist/index169.js +2 -2
  120. package/dist/index169.js.map +1 -1
  121. package/dist/index170.js +2 -2
  122. package/dist/index170.js.map +1 -1
  123. package/dist/index171.js +2 -2
  124. package/dist/index171.js.map +1 -1
  125. package/dist/index172.js +2 -2
  126. package/dist/index172.js.map +1 -1
  127. package/dist/index173.js +2 -2
  128. package/dist/index173.js.map +1 -1
  129. package/dist/index174.js +2 -2
  130. package/dist/index174.js.map +1 -1
  131. package/dist/index175.js +2 -2
  132. package/dist/index175.js.map +1 -1
  133. package/dist/index176.js +2 -2
  134. package/dist/index176.js.map +1 -1
  135. package/dist/index177.js +2 -2
  136. package/dist/index177.js.map +1 -1
  137. package/dist/index178.js +2 -2
  138. package/dist/index178.js.map +1 -1
  139. package/dist/index194.js +6 -97
  140. package/dist/index194.js.map +1 -1
  141. package/dist/index195.js +2 -2
  142. package/dist/index197.js +18 -2
  143. package/dist/index197.js.map +1 -1
  144. package/dist/index198.js +2 -74
  145. package/dist/index198.js.map +1 -1
  146. package/dist/index199.js +74 -64
  147. package/dist/index199.js.map +1 -1
  148. package/dist/index200.js +2 -2
  149. package/dist/index201.js +2 -57
  150. package/dist/index201.js.map +1 -1
  151. package/dist/index202.js +39 -2
  152. package/dist/index202.js.map +1 -1
  153. package/dist/index203.js +2 -2
  154. package/dist/index204.js +219 -144
  155. package/dist/index204.js.map +1 -1
  156. package/dist/index205.js +82 -43
  157. package/dist/index205.js.map +1 -1
  158. package/dist/index206.js +2 -51
  159. package/dist/index206.js.map +1 -1
  160. package/dist/index207.js +94 -2
  161. package/dist/index207.js.map +1 -1
  162. package/dist/index208.js +2 -33
  163. package/dist/index208.js.map +1 -1
  164. package/dist/index209.js +268 -2
  165. package/dist/index209.js.map +1 -1
  166. package/dist/index210.js +2 -6
  167. package/dist/index210.js.map +1 -1
  168. package/dist/index211.js +21 -2
  169. package/dist/index211.js.map +1 -1
  170. package/dist/index212.js +2 -260
  171. package/dist/index212.js.map +1 -1
  172. package/dist/index213.js +8 -16
  173. package/dist/index213.js.map +1 -1
  174. package/dist/index214.js +2 -2
  175. package/dist/index215.js +15 -2
  176. package/dist/index215.js.map +1 -1
  177. package/dist/index216.js +2 -66
  178. package/dist/index216.js.map +1 -1
  179. package/dist/index217.js +146 -24
  180. package/dist/index217.js.map +1 -1
  181. package/dist/index218.js +2 -2
  182. package/dist/index219.js +5 -2
  183. package/dist/index219.js.map +1 -1
  184. package/dist/index220.js +2 -81
  185. package/dist/index220.js.map +1 -1
  186. package/dist/index221.js +6 -78
  187. package/dist/index221.js.map +1 -1
  188. package/dist/index222.js +2 -2
  189. package/dist/index223.js +2 -133
  190. package/dist/index223.js.map +1 -1
  191. package/dist/index224.js +92 -2
  192. package/dist/index224.js.map +1 -1
  193. package/dist/index225.js +59 -2
  194. package/dist/index225.js.map +1 -1
  195. package/dist/index226.js +2 -72
  196. package/dist/index226.js.map +1 -1
  197. package/dist/index227.js +97 -94
  198. package/dist/index227.js.map +1 -1
  199. package/dist/index228.js +2 -2
  200. package/dist/index229.js +2 -71
  201. package/dist/index229.js.map +1 -1
  202. package/dist/index230.js +74 -2
  203. package/dist/index230.js.map +1 -1
  204. package/dist/index231.js +74 -2
  205. package/dist/index231.js.map +1 -1
  206. package/dist/index232.js +2 -12
  207. package/dist/index232.js.map +1 -1
  208. package/dist/index233.js +53 -5
  209. package/dist/index233.js.map +1 -1
  210. package/dist/index234.js +2 -2
  211. package/dist/index235.js +2 -18
  212. package/dist/index235.js.map +1 -1
  213. package/dist/index236.js +162 -2
  214. package/dist/index236.js.map +1 -1
  215. package/dist/index237.js +43 -84
  216. package/dist/index237.js.map +1 -1
  217. package/dist/index238.js +51 -2
  218. package/dist/index238.js.map +1 -1
  219. package/dist/index239.js +2 -2
  220. package/dist/index240.js +33 -39
  221. package/dist/index240.js.map +1 -1
  222. package/dist/index241.js +2 -2
  223. package/dist/index242.js +5 -236
  224. package/dist/index242.js.map +1 -1
  225. package/dist/index243.js +2 -82
  226. package/dist/index243.js.map +1 -1
  227. package/dist/index244.js +260 -2
  228. package/dist/index244.js.map +1 -1
  229. package/dist/index245.js +16 -93
  230. package/dist/index245.js.map +1 -1
  231. package/dist/index246.js +2 -2
  232. package/dist/index247.js +2 -268
  233. package/dist/index247.js.map +1 -1
  234. package/dist/index248.js +66 -2
  235. package/dist/index248.js.map +1 -1
  236. package/dist/index249.js +24 -13
  237. package/dist/index249.js.map +1 -1
  238. package/dist/index250.js +2 -2
  239. package/dist/index251.js +2 -9
  240. package/dist/index251.js.map +1 -1
  241. package/dist/index252.js +81 -2
  242. package/dist/index252.js.map +1 -1
  243. package/dist/index253.js +78 -12
  244. package/dist/index253.js.map +1 -1
  245. package/dist/index254.js +2 -2
  246. package/dist/index255.js +111 -132
  247. package/dist/index255.js.map +1 -1
  248. package/dist/index256.js +2 -2
  249. package/dist/index257.js +2 -5
  250. package/dist/index257.js.map +1 -1
  251. package/dist/index258.js +72 -2
  252. package/dist/index258.js.map +1 -1
  253. package/dist/index259.js +93 -5
  254. package/dist/index259.js.map +1 -1
  255. package/dist/index260.js +2 -2
  256. package/dist/index261.js +71 -2
  257. package/dist/index261.js.map +1 -1
  258. package/dist/index262.js +2 -92
  259. package/dist/index262.js.map +1 -1
  260. package/dist/index263.js +2 -59
  261. package/dist/index263.js.map +1 -1
  262. package/dist/index264.js +12 -2
  263. package/dist/index264.js.map +1 -1
  264. package/dist/index3.js +73 -73
  265. package/dist/index3.js.map +1 -1
  266. package/dist/index34.js +1 -1
  267. package/dist/index347.js +1 -1
  268. package/dist/index352.js +26 -19
  269. package/dist/index352.js.map +1 -1
  270. package/dist/index353.js +24 -13
  271. package/dist/index353.js.map +1 -1
  272. package/dist/index354.js +6 -20
  273. package/dist/index354.js.map +1 -1
  274. package/dist/index355.js +18 -56
  275. package/dist/index355.js.map +1 -1
  276. package/dist/index356.js +57 -55
  277. package/dist/index356.js.map +1 -1
  278. package/dist/index357.js +64 -32
  279. package/dist/index357.js.map +1 -1
  280. package/dist/index44.js +1 -1
  281. package/dist/index47.js +1 -1
  282. package/dist/index49.js +2 -2
  283. package/dist/index50.js +2 -2
  284. package/dist/index51.js +2 -2
  285. package/dist/index52.js +2 -2
  286. package/dist/index53.js +3 -3
  287. package/dist/index54.js +2 -2
  288. package/dist/index55.js +2 -2
  289. package/dist/index56.js +3 -3
  290. package/dist/index57.js +2 -2
  291. package/dist/index58.js +2 -2
  292. package/dist/index59.js +2 -2
  293. package/dist/index60.js +2 -2
  294. package/dist/index61.js +2 -2
  295. package/dist/index62.js +2 -2
  296. package/dist/index63.js +2 -2
  297. package/dist/index64.js +2 -2
  298. package/dist/index65.js +2 -2
  299. package/dist/index66.js +1 -1
  300. package/dist/index67.js +1 -1
  301. package/dist/index68.js +2 -2
  302. package/dist/index69.js +2 -2
  303. package/dist/index70.js +2 -2
  304. package/dist/index71.js +2 -2
  305. package/dist/index72.js +2 -2
  306. package/dist/index73.js +2 -2
  307. package/dist/index74.js +2 -2
  308. package/dist/index75.js +2 -2
  309. package/dist/index76.js +2 -2
  310. package/dist/index77.js +2 -2
  311. package/dist/index78.js +2 -2
  312. package/dist/index79.js +2 -2
  313. package/dist/index80.js +2 -2
  314. package/dist/index81.js +2 -2
  315. package/dist/index82.js +1 -1
  316. package/dist/index83.js +2 -2
  317. package/dist/index84.js +2 -2
  318. package/dist/shared/icons/icon-registry.d.ts +2 -2
  319. package/dist/shared/icons/icon-registry.d.ts.map +1 -1
  320. package/dist/src/shared/icons/icon-registry.d.ts +2 -2
  321. package/dist/src/shared/icons/icon-registry.d.ts.map +1 -1
  322. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index205.js","sources":["../src/components/molecules/color-picker/lib-color-picker.types.ts"],"sourcesContent":["/** Modo de visualización del componente */\nexport type ColorPickerVariant = 'inline' | 'trigger';\n\n/** Modo de los inputs de texto */\nexport type ColorInputMode = 'hex' | 'rgb' | 'hsl';\n\n/** Fila de swatches para el swatch-grid */\nexport interface SwatchRow {\n label: string;\n colors: SwatchColor[];\n}\n\nexport interface SwatchColor {\n value: string; // hex\n name?: string; // tooltip\n}\n\n/** Props internas del estado de color (HSL + alpha) */\nexport interface ColorState {\n h: number; // 0–360\n s: number; // 0–100\n l: number; // 0–100\n alpha: number; // 0–100\n}\n\n/** Paleta Shibui por defecto para el swatch grid */\nexport const SHIBUI_SWATCHES: SwatchRow[] = [\n {\n label: 'washi',\n colors: [\n { value: '#FAF7F4', name: 'washi-50' },\n { value: '#F2EDE6', name: 'washi-100' },\n { value: '#E5DDD3', name: 'washi-200' },\n { value: '#D3C8BC', name: 'washi-300' },\n { value: '#B8A99A', name: 'washi-400' },\n { value: '#9A8878', name: 'washi-500' },\n { value: '#7A6A5C', name: 'washi-600' },\n { value: '#5C4E42', name: 'washi-700' },\n { value: '#3D332A', name: 'washi-800' },\n { value: '#221C16', name: 'washi-900' },\n { value: '#120E0A', name: 'washi-950' },\n ],\n },\n {\n label: 'kaki',\n colors: [\n { value: '#FDF3EC', name: 'kaki-50' },\n { value: '#FAE2CC', name: 'kaki-100' },\n { value: '#F5C89A', name: 'kaki-200' },\n { value: '#EBAA66', name: 'kaki-300' },\n { value: '#D97234', name: 'kaki-400' },\n { value: '#B85A1E', name: 'kaki-500' },\n { value: '#8C4115', name: 'kaki-600' },\n ],\n },\n {\n label: 'celadón',\n colors: [\n { value: '#EFF5F3', name: 'celadon-50' },\n { value: '#D3E8E1', name: 'celadon-100' },\n { value: '#A8D0C5', name: 'celadon-200' },\n { value: '#76B3A5', name: 'celadon-300' },\n { value: '#4D8E82', name: 'celadon-400' },\n { value: '#357164', name: 'celadon-500' },\n { value: '#245249', name: 'celadon-600' },\n ],\n },\n];"],"names":[],"mappings":"AA0BO,MAAM,kBAA+B;AAAA,EAC1C;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,MACN,EAAE,OAAO,WAAW,MAAM,WAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,YAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,YAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,YAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,YAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,YAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,YAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,YAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,YAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,YAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,YAAA;AAAA,IAAY;AAAA,EACxC;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,MACN,EAAE,OAAO,WAAW,MAAM,UAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,WAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,WAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,WAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,WAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,WAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,WAAA;AAAA,IAAW;AAAA,EACvC;AAAA,EAEF;AAAA,IACE,OAAO;AAAA,IACP,QAAQ;AAAA,MACN,EAAE,OAAO,WAAW,MAAM,aAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,cAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,cAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,cAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,cAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,cAAA;AAAA,MAC1B,EAAE,OAAO,WAAW,MAAM,cAAA;AAAA,IAAc;AAAA,EAC1C;AAEJ;"}
1
+ {"version":3,"file":"index205.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/index206.js CHANGED
@@ -1,54 +1,5 @@
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) {
7
- 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 -->
39
- <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
- </div>
47
-
48
- </div>
49
- `;
50
- }
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}}}';
51
2
  export {
52
- dropdownTemplate
3
+ dialogCss as default
53
4
  };
54
5
  //# sourceMappingURL=index206.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index206.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":"index206.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index207.js CHANGED
@@ -1,5 +1,97 @@
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
+ 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
- dropdownCss as default
95
+ drawerTemplate
4
96
  };
5
97
  //# sourceMappingURL=index207.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index207.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index207.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/index208.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 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}}}';
33
2
  export {
34
- emptyStateTemplate
3
+ drawerCss as default
35
4
  };
36
5
  //# sourceMappingURL=index208.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index208.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":"index208.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index209.js CHANGED
@@ -1,5 +1,271 @@
1
- const emptyStateCss = '@layer tokens,reset,components;@layer reset{:host{display:flex;width:100%;justify-content:center;align-items:center}*,*:before,*:after{box-sizing:border-box}}@layer components{.es{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--lib-space-xl) var(--lib-space-lg);gap:0;width:100%}.es-illustration{margin-bottom:var(--lib-space-lg);display:flex;align-items:center;justify-content:center;position:relative}.es-icon-wrap{width:72px;height:72px;border-radius:var(--radius-full);background:var(--color-washi-100);border:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:center;color:var(--color-washi-400);font-size:28px;flex-shrink:0}.es-kanji{font-family:var(--lib-font-display);font-size:6rem;line-height:1;color:var(--color-washi-200);-webkit-user-select:none;user-select:none;letter-spacing:var(--tracking-tight)}.es-body{display:flex;flex-direction:column;align-items:center;gap:0}.es-title{font-family:var(--lib-font-display);font-size:var(--text-2xl);font-weight:var(--weight-light);letter-spacing:var(--tracking-tight);color:var(--text-primary);margin-bottom:var(--lib-space-sm);line-height:var(--leading-snug)}.es-title em{font-style:italic;color:var(--text-muted)}.es-desc{font-family:var(--lib-font-body);font-size:var(--text-sm);color:var(--text-muted);line-height:var(--leading-relaxed);max-width:320px;margin:0 auto var(--lib-space-lg)}.es-actions{display:flex;align-items:center;justify-content:center;gap:var(--lib-space-sm);flex-wrap:wrap}::slotted([slot="actions"]){flex-shrink:0}:host([size="sm"]) .es{padding:var(--lib-space-lg) var(--lib-space-md)}:host([size="sm"]) .es-icon-wrap{width:48px;height:48px;font-size:20px}:host([size="sm"]) .es-illustration{margin-bottom:var(--lib-space-md)}:host([size="sm"]) .es-title{font-size:var(--text-xl);margin-bottom:var(--lib-space-xs)}:host([size="sm"]) .es-desc{font-size:var(--text-xs);margin-bottom:var(--lib-space-md)}:host([layout="inline"]) .es{flex-direction:row;text-align:left;padding:var(--lib-space-md) var(--lib-space-lg);gap:var(--lib-space-lg);align-items:center;justify-content:flex-start}:host([layout="inline"]) .es-illustration{margin-bottom:0;flex-shrink:0}:host([layout="inline"]) .es-body{align-items:flex-start;gap:var(--lib-space-xs)}:host([layout="inline"]) .es-title{font-size:var(--text-xl);margin-bottom:0}:host([layout="inline"]) .es-desc{margin:0;max-width:400px}:host([layout="inline"]) .es-actions{justify-content:flex-start;margin-top:var(--lib-space-sm)}:host([bordered]) .es{border:1px dashed var(--border-default);background:var(--bg-surface)}:host([ghost]) .es-icon-wrap{background:transparent;border:none;color:var(--color-washi-300);font-size:40px}:host([tone="kaki"]) .es-icon-wrap{background:var(--color-kaki-50);color:var(--color-kaki-500);border-color:var(--color-kaki-100)}:host([tone="celadon"]) .es-icon-wrap{background:var(--color-celadon-100);color:var(--color-celadon-500);border-color:var(--color-celadon-100)}:host([tone="error"]) .es-icon-wrap{background:#f5ddd9;color:var(--color-error);border-color:#f5ddd9}@media(max-width:640px){:host([layout="inline"]) .es{flex-direction:column;text-align:center}:host([layout="inline"]) .es-body{align-items:center}:host([layout="inline"]) .es-actions{justify-content:center}}}';
1
+ import { html } from "lit";
2
+ const ICON_GITHUB = html`<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 00-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0020 4.77 5.07 5.07 0 0019.91 1S18.73.65 16 2.48a13.38 13.38 0 00-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 005 4.77a5.44 5.44 0 00-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 009 18.13V22"/></svg>`;
3
+ const ICON_LINKEDIN = html`<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6zM2 9h4v12H2z"/><circle cx="4" cy="4" r="2"/></svg>`;
4
+ const ICON_EMAIL = html`<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22,6 12,13 2,6"/></svg>`;
5
+ const ICON_RSS = html`<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><path d="M4 11a9 9 0 019 9"/><path d="M4 4a16 16 0 0116 16"/><circle cx="5" cy="19" r="1" fill="currentColor" stroke="none"/></svg>`;
6
+ const ICON_CHEVRON_DOWN = html`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"><polyline points="6 9 12 15 18 9"/></svg>`;
7
+ const ICON_ARROW_SM = html`<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg>`;
8
+ function renderSocial(ctx) {
9
+ return html`
10
+ <footer>
11
+ <div class="ft-inner">
12
+
13
+ <!-- Brand centered -->
14
+ <div style="text-align:center;margin-bottom:var(--lib-space-xl,2rem);">
15
+ <div class="ft-brand" style="font-size:2rem;">
16
+ ${ctx.brandName} <em>${ctx.brandKanji}</em>
17
+ </div>
18
+ <span class="ft-brand-sub">${ctx.brandSub}</span>
19
+ </div>
20
+
21
+ <!-- Social grid large -->
22
+ <div class="ft-social-grid">
23
+ <a href="${ctx.githubHref}" class="ft-social-cell" aria-label="GitHub" style="color:var(--color-washi-500,#9A8878);">
24
+ ${ICON_GITHUB}
25
+ <span class="ft-social-cell-label">GitHub</span>
26
+ </a>
27
+ <a href="${ctx.linkedinHref}" class="ft-social-cell" aria-label="LinkedIn" style="color:var(--color-washi-500,#9A8878);">
28
+ ${ICON_LINKEDIN}
29
+ <span class="ft-social-cell-label">LinkedIn</span>
30
+ </a>
31
+ <a href="mailto:${ctx.email}" class="ft-social-cell accent" aria-label="Email" style="color:var(--color-kaki-400,#D97234);">
32
+ ${ICON_EMAIL}
33
+ <span class="ft-social-cell-label">Email</span>
34
+ </a>
35
+ <a href="${ctx.rssHref}" class="ft-social-cell" aria-label="RSS" style="color:var(--color-washi-500,#9A8878);">
36
+ ${ICON_RSS}
37
+ <span class="ft-social-cell-label">RSS</span>
38
+ </a>
39
+ </div>
40
+
41
+ <!-- Nav + copyright -->
42
+ <div class="ft-nav-row">
43
+ <ul class="ft-nav-links">
44
+ ${(ctx.navLinks ?? []).map((link) => html`
45
+ <li>
46
+ <a href="${link.href}" class="ft-link-mono">${link.label}</a>
47
+ </li>
48
+ `)}
49
+ </ul>
50
+ <p class="ft-copyright">© ${ctx.year} · ${ctx.brandName} DS · ${ctx.location}</p>
51
+ </div>
52
+
53
+ </div>
54
+ </footer>
55
+ `;
56
+ }
57
+ function renderAccordion(ctx) {
58
+ return html`
59
+ <footer>
60
+ <div class="ft-inner" style="max-width:480px;">
61
+
62
+ <!-- Brand + social row -->
63
+ <div class="ft-acc-brand-row">
64
+ <div class="ft-brand-dark">
65
+ ${ctx.brandName} <em>${ctx.brandKanji}</em>
66
+ </div>
67
+ <div class="ft-social-mini">
68
+ <a href="${ctx.githubHref}" class="ft-social-mini-btn" aria-label="GitHub">
69
+ ${ICON_GITHUB}
70
+ </a>
71
+ <a href="${ctx.linkedinHref}" class="ft-social-mini-btn" aria-label="LinkedIn">
72
+ ${ICON_LINKEDIN}
73
+ </a>
74
+ <a href="mailto:${ctx.email}" class="ft-social-mini-btn" aria-label="Email">
75
+ ${ICON_EMAIL}
76
+ </a>
77
+ </div>
78
+ </div>
79
+
80
+ <!-- Accordion columns -->
81
+ ${(ctx.columns ?? []).map((col) => html`
82
+ <div class="ft-acc-item">
83
+ <button
84
+ class="ft-acc-trigger"
85
+ @click=${(e) => ctx._toggleAccordion(e.currentTarget)}
86
+ aria-expanded="false"
87
+ >
88
+ ${col.heading}
89
+ <span class="ft-acc-arrow">${ICON_CHEVRON_DOWN}</span>
90
+ </button>
91
+ <div class="ft-acc-body">
92
+ <div class="ft-acc-body-inner">
93
+ ${(col.links ?? []).map((link) => html`<a href="${link.href}">${link.label}</a>`)}
94
+ </div>
95
+ </div>
96
+ </div>
97
+ `)}
98
+
99
+ <!-- Bottom bar -->
100
+ <div class="ft-bottom" style="border-top-color:rgba(255,255,255,.06);">
101
+ <p class="ft-copyright">© ${ctx.year} · ${ctx.brandName} · MIT</p>
102
+ <div style="display:flex;gap:var(--lib-space-md,1rem);">
103
+ ${(ctx.legalLinks ?? []).map((link) => html`
104
+ <a href="${link.href}" class="ft-link-mono">${link.label}</a>
105
+ `)}
106
+ </div>
107
+ </div>
108
+
109
+ </div>
110
+ </footer>
111
+ `;
112
+ }
113
+ function renderKintsugi(ctx) {
114
+ return html`
115
+ <footer style="position:relative;">
116
+
117
+ <!-- Gold seam -->
118
+ <div class="ft-kintsugi-seam" aria-hidden="true"></div>
119
+
120
+ <!-- Ring ornament -->
121
+ <div class="ft-kintsugi-ring" aria-hidden="true">
122
+ <div class="ft-kintsugi-ring-track"></div>
123
+ <span class="ft-kintsugi-symbol">✦</span>
124
+ </div>
125
+
126
+ <div class="ft-inner" style="padding-top:var(--lib-space-xl,2rem);">
127
+
128
+ <!-- Brand centered -->
129
+ <div style="text-align:center;margin-bottom:var(--lib-space-lg,1.5rem);">
130
+ <div class="ft-brand-dark" style="font-size:1.75rem;">
131
+ ${ctx.brandName} <em>${ctx.brandKanji}</em>
132
+ </div>
133
+ <span style="font-family:var(--lib-font-mono,'DM Mono',monospace);font-size:.5rem;letter-spacing:.22em;text-transform:uppercase;color:rgba(250,247,244,.18);display:block;margin-top:.375rem;">
134
+ ${ctx.brandSub}
135
+ </span>
136
+ </div>
137
+
138
+ <!-- Nav columns -->
139
+ <div class="ft-kintsugi-grid">
140
+ ${(ctx.columns ?? []).map((col) => html`
141
+ <div>
142
+ <div class="ft-kintsugi-col-head">${col.heading}</div>
143
+ <ul class="ft-kintsugi-col-links">
144
+ ${(col.links ?? []).map((link) => html`
145
+ <li>
146
+ <a href="${link.href}">
147
+ <span class="ft-kintsugi-arrow">›</span>
148
+ ${link.label}
149
+ </a>
150
+ </li>
151
+ `)}
152
+ </ul>
153
+ </div>
154
+ `)}
155
+ </div>
156
+
157
+ <!-- Bottom bar -->
158
+ <div class="ft-bottom" style="border-top-color:rgba(255,255,255,.06);">
159
+ <p class="ft-copyright">// © ${ctx.year} · ${ctx.brandName.toUpperCase()} · MIT LICENSE</p>
160
+ <div style="display:flex;gap:var(--lib-space-md,1rem);">
161
+ ${(ctx.legalLinks ?? []).map((link) => html`
162
+ <a href="${link.href}" class="ft-link-mono">${link.label}</a>
163
+ `)}
164
+ </div>
165
+ </div>
166
+
167
+ </div>
168
+ </footer>
169
+ `;
170
+ }
171
+ function renderGlitch(ctx) {
172
+ return html`
173
+ <footer style="position:relative;overflow:hidden;">
174
+
175
+ <!-- Texture layers -->
176
+ <div class="ft-glitch-scanlines" aria-hidden="true"></div>
177
+ <div class="ft-glitch-noise" aria-hidden="true"></div>
178
+
179
+ <div class="ft-inner">
180
+
181
+ <div class="ft-glitch-grid">
182
+
183
+ <!-- Col 1: brand + status -->
184
+ <div>
185
+ <!-- Status indicators -->
186
+ <div style="margin-bottom:var(--lib-space-md,1rem);">
187
+ <div class="ft-status-row">
188
+ <span class="ft-status-dot online"></span>
189
+ <span class="ft-status-text">System · online</span>
190
+ </div>
191
+ <div class="ft-status-row">
192
+ <span class="ft-status-dot pending"></span>
193
+ <span class="ft-status-text">Build · pending deploy</span>
194
+ </div>
195
+ </div>
196
+
197
+ <h2 class="ft-glitch-head">
198
+ ${ctx.brandName}<br>
199
+ <em>${ctx.brandKanji}</em><span class="ft-glitch-cursor"></span>
200
+ </h2>
201
+
202
+ <p class="ft-glitch-sub">
203
+ Design System · ${ctx.location}<br>
204
+ v${ctx.version} · ${ctx.year}
205
+ </p>
206
+ </div>
207
+
208
+ <!-- Col 2: modules -->
209
+ <div>
210
+ <div class="ft-glitch-modules-head">// modules</div>
211
+ <div class="ft-glitch-modules-links">
212
+ ${(ctx.navLinks ?? []).map((link) => html`
213
+ <a href="${link.href}">
214
+ <span style="color:var(--color-kaki-400,#D97234);opacity:.6;">${ICON_ARROW_SM}</span>
215
+ ${link.label}
216
+ </a>
217
+ `)}
218
+ </div>
219
+ </div>
220
+
221
+ <!-- Col 3: runtime -->
222
+ <div>
223
+ <div class="ft-glitch-modules-head">// runtime</div>
224
+ <div class="ft-glitch-runtime">
225
+ ${(ctx.runtimeLines ?? []).map((line) => html`
226
+ <div>
227
+ <span class="key">${line.key.padEnd(5, " ")}</span>
228
+ ${line.value.includes("0") && line.key === "deps" ? html`<span class="celadon">${line.value}</span>` : line.value}
229
+ </div>
230
+ `)}
231
+ </div>
232
+ </div>
233
+
234
+ </div>
235
+
236
+ <!-- Bottom mono bar -->
237
+ <div class="ft-bottom" style="border-top-color:rgba(255,255,255,.06);">
238
+ <p class="ft-copyright">// © ${ctx.year} · ${ctx.brandName.toUpperCase()} · MIT LICENSE · node ${ctx.nodeVersion}</p>
239
+ <div style="display:flex;gap:var(--lib-space-md,1rem);">
240
+ ${(ctx.legalLinks ?? []).map((link) => html`
241
+ <a href="${link.href}" class="ft-link-mono">${link.label}</a>
242
+ `)}
243
+ </div>
244
+ </div>
245
+
246
+ </div>
247
+ </footer>
248
+ `;
249
+ }
250
+ function renderFooter(ctx) {
251
+ switch (ctx.variant) {
252
+ case "social":
253
+ return renderSocial(ctx);
254
+ case "accordion":
255
+ return renderAccordion(ctx);
256
+ case "kintsugi":
257
+ return renderKintsugi(ctx);
258
+ case "glitch":
259
+ return renderGlitch(ctx);
260
+ default:
261
+ return renderSocial(ctx);
262
+ }
263
+ }
2
264
  export {
3
- emptyStateCss as default
265
+ renderAccordion,
266
+ renderFooter,
267
+ renderGlitch,
268
+ renderKintsugi,
269
+ renderSocial
4
270
  };
5
271
  //# sourceMappingURL=index209.js.map