@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/index221.js CHANGED
@@ -1,5 +1,84 @@
1
- const progressCss = '@layer tokens,reset,components;@layer reset{:host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;flex-shrink:0}*,*:before,*:after{box-sizing:border-box}}@layer components{.pc{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.pc__svg{display:block;transform:rotate(-90deg);transform-origin:center;overflow:visible}.pc__track,.pc__arc{fill:none;stroke-linecap:round}.pc__track{stroke:var(--color-washi-200)}.pc__arc{stroke:var(--color-washi-900);transition:stroke-dashoffset .7s cubic-bezier(0,0,.2,1),stroke .3s}:host([variant="kaki"]) .pc__arc{stroke:var(--color-kaki-500)}:host([variant="kaki"]) .pc__track{stroke:var(--color-kaki-100)}:host([variant="celadon"]) .pc__arc{stroke:var(--color-celadon-500)}:host([variant="celadon"]) .pc__track{stroke:var(--color-celadon-100)}:host([variant="error"]) .pc__arc{stroke:var(--color-error)}:host([variant="error"]) .pc__track{stroke:#f5ddd9}.pc__label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;pointer-events:none}.pc__value{font-family:var(--lib-font-mono);font-weight:var(--weight-regular);letter-spacing:var(--tracking-wide);color:var(--text-primary);line-height:1}.pc__sub{font-family:var(--lib-font-mono);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--text-muted);line-height:1}:host([size="xs"]) .pc__label{display:none}:host([size="sm"]) .pc__value{font-size:var(--text-xs)}:host([size="sm"]) .pc__sub{font-size:8px}:host([size="md"]) .pc__value{font-size:var(--text-md)}:host([size="md"]) .pc__sub{font-size:9px}:host([size="lg"]) .pc__value{font-size:var(--text-xl)}:host([size="lg"]) .pc__sub{font-size:var(--text-xs)}:host([size="xl"]) .pc__value{font-size:2rem}:host([size="xl"]) .pc__sub{font-size:var(--text-xs)}:host([variant="kaki"]) .pc__value{color:var(--color-kaki-600)}:host([variant="celadon"]) .pc__value{color:var(--color-celadon-600)}:host([variant="error"]) .pc__value{color:var(--color-error)}.pc__check polyline{stroke:var(--color-celadon-500)}:host([variant="kaki"]) .pc__check polyline{stroke:var(--color-kaki-500)}@keyframes pc-spin{to{transform:rotate(270deg)}}.pc__svg--spin{animation:pc-spin 1.2s linear infinite;transform-origin:center}.pc__arc--indet{transition:none}@media(prefers-reduced-motion:reduce){.pc__arc{transition:none}.pc__svg--spin{animation:none}}}';
1
+ import { html, nothing } from "lit";
2
+ const chevronLeft = html`
3
+ <svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true">
4
+ <path d="M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z"/>
5
+ </svg>`;
6
+ const chevronRight = html`
7
+ <svg viewBox="0 0 256 256" fill="currentColor" aria-hidden="true">
8
+ <path d="M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z"/>
9
+ </svg>`;
10
+ function buildPageSequence(current, total, siblings) {
11
+ if (total <= 1) return [1];
12
+ const left = Math.max(2, current - siblings);
13
+ const right = Math.min(total - 1, current + siblings);
14
+ const pages = [1];
15
+ if (left > 2) pages.push(null);
16
+ for (let i = left; i <= right; i++) pages.push(i);
17
+ if (right < total - 1) pages.push(null);
18
+ if (total > 1) pages.push(total);
19
+ return pages;
20
+ }
21
+ function paginationTemplate(ctx) {
22
+ const total = ctx.totalPages;
23
+ const current = ctx.currentPage;
24
+ const sequence = buildPageSequence(current, total, ctx.siblings);
25
+ const infoText = ctx.showInfo ? (() => {
26
+ const from = (current - 1) * ctx.itemsPerPage + 1;
27
+ const to = Math.min(current * ctx.itemsPerPage, ctx.totalItems);
28
+ return html`
29
+ <span class="pg-info" part="info">
30
+ ${from}–${to} de ${ctx.totalItems}
31
+ </span>`;
32
+ })() : nothing;
33
+ return html`
34
+ <nav class="pg" part="root" aria-label="${ctx.ariaLabel}">
35
+
36
+ ${ctx.showInfo ? infoText : nothing}
37
+
38
+ <!-- ← Anterior -->
39
+ <button
40
+ class="pg-btn pg-btn--nav"
41
+ part="btn-prev"
42
+ ?disabled="${current === 1}"
43
+ aria-label="Página anterior"
44
+ @click="${() => ctx._changePage(current - 1)}"
45
+ >
46
+ ${chevronLeft}
47
+ ${ctx.size !== "sm" ? html`<span>Ant</span>` : nothing}
48
+ </button>
49
+
50
+ <!-- Números -->
51
+ <div class="pg-numbers" part="numbers" role="list">
52
+ ${sequence.map(
53
+ (page) => page === null ? html`<span class="pg-ellipsis" role="listitem" aria-hidden="true">…</span>` : html`
54
+ <button
55
+ class="pg-btn ${page === current ? "pg-btn--active" : ""}"
56
+ part="btn-page${page === current ? " btn-page-active" : ""}"
57
+ role="listitem"
58
+ aria-label="Página ${page}"
59
+ aria-current="${page === current ? "page" : nothing}"
60
+ ?disabled="${page === current}"
61
+ @click="${() => ctx._changePage(page)}"
62
+ >${page}</button>`
63
+ )}
64
+ </div>
65
+
66
+ <!-- → Siguiente -->
67
+ <button
68
+ class="pg-btn pg-btn--nav"
69
+ part="btn-next"
70
+ ?disabled="${current === total}"
71
+ aria-label="Página siguiente"
72
+ @click="${() => ctx._changePage(current + 1)}"
73
+ >
74
+ ${ctx.size !== "sm" ? html`<span>Sig</span>` : nothing}
75
+ ${chevronRight}
76
+ </button>
77
+
78
+ </nav>
79
+ `;
80
+ }
2
81
  export {
3
- progressCss as default
82
+ paginationTemplate
4
83
  };
5
84
  //# sourceMappingURL=index221.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index221.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index221.js","sources":["../src/components/molecules/pagination/lib-pagination.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport type { LibPagination } from './lib-pagination.component';\n\n/* ── Chevrons inline — sin dependencia de lib-icon ── */\nconst chevronLeft: TemplateResult = html`\n <svg viewBox=\"0 0 256 256\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M165.66,202.34a8,8,0,0,1-11.32,11.32l-80-80a8,8,0,0,1,0-11.32l80-80a8,8,0,0,1,11.32,11.32L91.31,128Z\"/>\n </svg>`;\n\nconst chevronRight: TemplateResult = html`\n <svg viewBox=\"0 0 256 256\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z\"/>\n </svg>`;\n\n/**\n * Genera la secuencia de páginas con ellipsis.\n *\n * Ejemplo (current=5, total=10, siblings=1):\n * [1] … [4][5][6] … [10]\n *\n * Retorna un array de números o null (null = ellipsis).\n */\nfunction buildPageSequence(current: number, total: number, siblings: number): (number | null)[] {\n if (total <= 1) return [1];\n\n const left = Math.max(2, current - siblings);\n const right = Math.min(total - 1, current + siblings);\n\n const pages: (number | null)[] = [1];\n\n if (left > 2) pages.push(null); // ellipsis izquierdo\n for (let i = left; i <= right; i++) pages.push(i);\n if (right < total - 1) pages.push(null); // ellipsis derecho\n if (total > 1) pages.push(total);\n\n return pages;\n}\n\nexport function paginationTemplate(ctx: LibPagination): TemplateResult {\n const total = ctx.totalPages;\n const current = ctx.currentPage;\n const sequence = buildPageSequence(current, total, ctx.siblings);\n\n /* Info de resultados */\n const infoText = ctx.showInfo\n ? (():TemplateResult => {\n const from = (current - 1) * ctx.itemsPerPage + 1;\n const to = Math.min(current * ctx.itemsPerPage, ctx.totalItems);\n return html`\n <span class=\"pg-info\" part=\"info\">\n ${from}–${to} de ${ctx.totalItems}\n </span>`;\n })()\n : nothing;\n\n return html`\n <nav class=\"pg\" part=\"root\" aria-label=\"${ctx.ariaLabel}\">\n\n ${ctx.showInfo ? infoText : nothing}\n\n <!-- ← Anterior -->\n <button\n class=\"pg-btn pg-btn--nav\"\n part=\"btn-prev\"\n ?disabled=\"${current === 1}\"\n aria-label=\"Página anterior\"\n @click=\"${(): void => ctx._changePage(current - 1)}\"\n >\n ${chevronLeft}\n ${ctx.size !== 'sm' ? html`<span>Ant</span>` : nothing}\n </button>\n\n <!-- Números -->\n <div class=\"pg-numbers\" part=\"numbers\" role=\"list\">\n ${sequence.map((page, /*idx*/) =>\n page === null\n ? html`<span class=\"pg-ellipsis\" role=\"listitem\" aria-hidden=\"true\">…</span>`\n : html`\n <button\n class=\"pg-btn ${page === current ? 'pg-btn--active' : ''}\"\n part=\"btn-page${page === current ? ' btn-page-active' : ''}\"\n role=\"listitem\"\n aria-label=\"Página ${page}\"\n aria-current=\"${page === current ? 'page' : nothing}\"\n ?disabled=\"${page === current}\"\n @click=\"${(): void => ctx._changePage(page as number)}\"\n >${page}</button>`\n )}\n </div>\n\n <!-- → Siguiente -->\n <button\n class=\"pg-btn pg-btn--nav\"\n part=\"btn-next\"\n ?disabled=\"${current === total}\"\n aria-label=\"Página siguiente\"\n @click=\"${(): void => ctx._changePage(current + 1)}\"\n >\n ${ctx.size !== 'sm' ? html`<span>Sig</span>` : nothing}\n ${chevronRight}\n </button>\n\n </nav>\n `;\n}"],"names":[],"mappings":";AAIA,MAAM,cAA8B;AAAA;AAAA;AAAA;AAKpC,MAAM,eAA+B;AAAA;AAAA;AAAA;AAarC,SAAS,kBAAkB,SAAiB,OAAe,UAAqC;AAC9F,MAAI,SAAS,EAAG,QAAO,CAAC,CAAC;AAEzB,QAAM,OAAQ,KAAK,IAAI,GAAG,UAAU,QAAQ;AAC5C,QAAM,QAAQ,KAAK,IAAI,QAAQ,GAAG,UAAU,QAAQ;AAEpD,QAAM,QAA2B,CAAC,CAAC;AAEnC,MAAI,OAAO,EAAU,OAAM,KAAK,IAAI;AACpC,WAAS,IAAI,MAAM,KAAK,OAAO,IAAK,OAAM,KAAK,CAAC;AAChD,MAAI,QAAQ,QAAQ,EAAG,OAAM,KAAK,IAAI;AACtC,MAAI,QAAQ,EAAG,OAAM,KAAK,KAAK;AAE/B,SAAO;AACT;AAEO,SAAS,mBAAmB,KAAoC;AACrE,QAAM,QAAU,IAAI;AACpB,QAAM,UAAU,IAAI;AACpB,QAAM,WAAW,kBAAkB,SAAS,OAAO,IAAI,QAAQ;AAG/D,QAAM,WAAW,IAAI,YAChB,MAAqB;AACpB,UAAM,QAAQ,UAAU,KAAK,IAAI,eAAe;AAChD,UAAM,KAAO,KAAK,IAAI,UAAU,IAAI,cAAc,IAAI,UAAU;AAChE,WAAO;AAAA;AAAA,cAED,IAAI,IAAI,EAAE,OAAO,IAAI,UAAU;AAAA;AAAA,EAEvC,OACA;AAEJ,SAAO;AAAA,8CACqC,IAAI,SAAS;AAAA;AAAA,QAEnD,IAAI,WAAW,WAAW,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAMpB,YAAY,CAAC;AAAA;AAAA,kBAEhB,MAAY,IAAI,YAAY,UAAU,CAAC,CAAC;AAAA;AAAA,UAEhD,WAAW;AAAA,UACX,IAAI,SAAS,OAAO,yBAAyB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKpD,SAAS;AAAA,IAAI,CAAC,SACd,SAAS,OACL,8EACA;AAAA;AAAA,gCAEkB,SAAS,UAAU,mBAAmB,EAAE;AAAA,gCACxC,SAAS,UAAU,qBAAqB,EAAE;AAAA;AAAA,qCAErC,IAAI;AAAA,gCACT,SAAS,UAAU,SAAS,OAAO;AAAA,6BACtC,SAAS,OAAO;AAAA,0BACnB,MAAY,IAAI,YAAY,IAAc,CAAC;AAAA,iBACpD,IAAI;AAAA,EAAA,CACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAOY,YAAY,KAAK;AAAA;AAAA,kBAEpB,MAAY,IAAI,YAAY,UAAU,CAAC,CAAC;AAAA;AAAA,UAEhD,IAAI,SAAS,OAAO,yBAAyB,OAAO;AAAA,UACpD,YAAY;AAAA;AAAA;AAAA;AAAA;AAKtB;"}
package/dist/index222.js CHANGED
@@ -1,13 +1,5 @@
1
- import { nothing, html } from "lit";
2
- function badgeTemplate(props) {
3
- return html`
4
- <span class="badge">
5
- ${props.dot ? html`<span class="badge__dot" aria-hidden="true"></span>` : nothing}
6
- <slot></slot>
7
- </span>
8
- `;
9
- }
1
+ const paginationCss = '@layer tokens,reset,components;@layer reset{:host{display:block}*,*:before,*:after{box-sizing:border-box}button{font:inherit;background:none;border:none;padding:0;margin:0;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}}@layer components{.pg{display:flex;align-items:center;justify-content:center;gap:var(--lib-space-sm);flex-wrap:wrap}.pg-numbers{display:flex;align-items:center;gap:var(--lib-space-xs)}.pg-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--lib-space-xs);font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);color:var(--text-secondary);background:var(--bg-elevated);border:1px solid var(--border-default);min-width:var(--_pg-size, 32px);height:var(--_pg-size, 32px);padding:0 var(--lib-space-sm);white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background var(--duration-base) var(--ease-out),border-color var(--duration-base) var(--ease-out),color var(--duration-base) var(--ease-out)}.pg-btn:hover:not(:disabled,.pg-btn--active){background:var(--bg-surface);border-color:var(--border-strong);color:var(--text-primary)}.pg-btn:focus-visible{outline:2px solid var(--color-kaki-400);outline-offset:2px}.pg-btn:active:not(:disabled){transform:scale(.96)}.pg-btn--active{background:var(--color-washi-900);border-color:var(--color-washi-900);color:var(--color-washi-50);cursor:default}.pg-btn:disabled{opacity:.35;cursor:not-allowed}.pg-btn--nav{padding:0 var(--lib-space-md)}.pg-btn--nav svg{width:10px;height:10px;flex-shrink:0}.pg-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:var(--_pg-size, 32px);height:var(--_pg-size, 32px);font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);color:var(--text-muted);-webkit-user-select:none;user-select:none}:host([size="sm"]){--_pg-size: 26px}:host([size="sm"]) .pg-btn{font-size:10px;padding:0 var(--lib-space-xs)}:host([size="sm"]) .pg-btn--nav{padding:0 var(--lib-space-sm)}:host([size="sm"]) .pg-ellipsis{font-size:10px}:host([size="md"]){--_pg-size: 32px}:host([size="lg"]){--_pg-size: 40px}:host([size="lg"]) .pg-btn{font-size:var(--text-sm);letter-spacing:var(--tracking-wider);padding:0 var(--lib-space-md)}:host([size="lg"]) .pg-btn--nav{padding:0 calc(var(--lib-space-md) + var(--lib-space-xs))}:host([variant="outline"]) .pg-btn{background:transparent}:host([variant="outline"]) .pg-btn:hover:not(:disabled,.pg-btn--active){background:var(--bg-surface)}:host([variant="outline"]) .pg-btn--active{background:transparent;border-color:var(--color-washi-900);color:var(--color-washi-900)}:host([variant="ghost"]) .pg-btn{background:transparent;border-color:transparent}:host([variant="ghost"]) .pg-btn:hover:not(:disabled,.pg-btn--active){background:var(--bg-surface);border-color:transparent}:host([variant="ghost"]) .pg-btn--active{background:var(--bg-surface);border-color:transparent;color:var(--text-primary);font-weight:500}.pg-info{font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);color:var(--text-muted);white-space:nowrap}:host([dark]) .pg-btn{background:var(--color-washi-800);border-color:var(--color-washi-700);color:var(--color-washi-400)}:host([dark]) .pg-btn:hover:not(:disabled,.pg-btn--active){background:var(--color-washi-700);border-color:var(--color-washi-600);color:var(--color-washi-100)}:host([dark]) .pg-btn--active{background:var(--color-washi-50);border-color:var(--color-washi-50);color:var(--color-washi-950)}:host([dark]) .pg-ellipsis{color:var(--color-washi-600)}:host([dark]) .pg-info{color:var(--color-washi-600)}}';
10
2
  export {
11
- badgeTemplate
3
+ paginationCss as default
12
4
  };
13
5
  //# sourceMappingURL=index222.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index222.js","sources":["../src/components/atoms/badge/lib-badge.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\n\n/**\n * Variantes visuales del badge.\n * TODO: mover a src/models/ui/ cuando se integre en el monorepo.\n */\nexport type LibBadgeVariant =\n | 'default'\n | 'accent'\n | 'celadon'\n | 'dark'\n | 'error'\n | 'success'\n | 'warning';\n\nexport type LibBadgeSize = 'sm' | 'md';\n\nexport interface BadgeTemplateProps {\n variant: LibBadgeVariant;\n size: LibBadgeSize;\n dot: boolean;\n pill: boolean;\n}\n\n/**\n * Plantilla para lib-badge.\n * El contenido se proyecta mediante <slot> para máxima flexibilidad.\n */\nexport function badgeTemplate(props: BadgeTemplateProps): TemplateResult {\n return html`\n <span class=\"badge\">\n ${props.dot ? html`<span class=\"badge__dot\" aria-hidden=\"true\"></span>` : nothing}\n <slot></slot>\n </span>\n `;\n}"],"names":[],"mappings":";AA4BO,SAAS,cAAc,OAA2C;AACvE,SAAO;AAAA;AAAA,QAED,MAAM,MAAM,4DAA4D,OAAO;AAAA;AAAA;AAAA;AAIvF;"}
1
+ {"version":3,"file":"index222.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index223.js CHANGED
@@ -1,5 +1,136 @@
1
- const badgeCss = '@layer tokens,reset,components;@layer reset{:host{display:inline-block;vertical-align:middle}*,*:before,*:after{box-sizing:border-box}}@layer components{.badge{display:inline-flex;align-items:center;gap:var(--lib-space-xs);font-family:var(--lib-font-mono);font-size:10px;font-weight:var(--weight-medium);letter-spacing:var(--tracking-wider);text-transform:uppercase;white-space:nowrap;line-height:1;padding:var(--lib-space-xs) var(--lib-space-sm);border:var(--lib-border-width) solid transparent;border-radius:var(--lib-radius-xs);-webkit-user-select:none;user-select:none}:host([size="md"]) .badge,.badge{padding:var(--lib-space-xs) var(--lib-space-sm);font-size:10px}:host([size="sm"]) .badge{padding:2px var(--lib-space-xs);font-size:9px;letter-spacing:var(--tracking-wide)}:host([pill]) .badge{border-radius:var(--radius-full);padding-inline:var(--lib-space-md)}.badge__dot{display:inline-block;width:5px;height:5px;border-radius:var(--radius-full);background:currentcolor;opacity:.75;flex-shrink:0}:host([variant="default"]) .badge,.badge{background:var(--color-washi-100);color:var(--text-secondary);border-color:var(--border-default)}:host([variant="accent"]) .badge{background:var(--color-kaki-50);color:var(--color-kaki-600);border-color:var(--color-kaki-200)}:host([variant="celadon"]) .badge{background:var(--color-celadon-50);color:var(--color-celadon-600);border-color:var(--color-celadon-200)}:host([variant="dark"]) .badge{background:var(--color-washi-900);color:var(--color-washi-300);border-color:var(--color-washi-700)}:host([variant="error"]) .badge{background:#fcf3f3;color:var(--color-error);border-color:#e7c4c5}:host([variant="success"]) .badge{background:#f1f7f2;color:var(--color-success);border-color:#bcd6c0}:host([variant="warning"]) .badge{background:#fcf4e6;color:var(--color-warning);border-color:#e6d1b0}}';
1
+ import { nothing, html } from "lit";
2
+ function renderValue(v, unit) {
3
+ return html`${v}${unit ? html`<span class="rs-value-unit">${unit}</span>` : nothing}`;
4
+ }
5
+ function renderMarks(marks, pct) {
6
+ if (!marks.length) return html``;
7
+ return html`
8
+ <div class="rs-marks">
9
+ ${marks.map((m) => html`
10
+ <div
11
+ class="rs-mark ${m.pct <= pct ? "is-filled" : ""}"
12
+ style="left: ${m.pct}%"
13
+ >
14
+ ${m.label ? html`<span class="rs-mark-label">${m.label}</span>` : nothing}
15
+ </div>
16
+ `)}
17
+ </div>
18
+ `;
19
+ }
20
+ function renderLimits(show, low, high) {
21
+ if (!show) return html``;
22
+ return html`
23
+ <div class="rs-limits">
24
+ <span class="rs-limit">${low}</span>
25
+ <span class="rs-limit">${high}</span>
26
+ </div>
27
+ `;
28
+ }
29
+ function renderTooltip(show, pct, value, unit) {
30
+ if (!show) return html``;
31
+ return html`
32
+ <div class="rs-tooltip-wrap" style="left: ${pct}%">
33
+ <span class="rs-tooltip-bubble">${value}${unit}</span>
34
+ </div>
35
+ `;
36
+ }
37
+ function renderTrack(p) {
38
+ if (p.dual) {
39
+ return html`
40
+ <div class="rs-track-wrap">
41
+ <div class="rs-track">
42
+ <div
43
+ class="rs-fill-dual"
44
+ style="left: ${p.minPct}%; right: ${100 - p.maxPct}%"
45
+ ></div>
46
+ </div>
47
+ <input
48
+ type="range"
49
+ class="rs-input-min"
50
+ min=${p.min} max=${p.max} step=${p.step}
51
+ .value=${String(p.valueMin)}
52
+ ?disabled=${p.disabled}
53
+ aria-label="Mínimo"
54
+ @input=${p.onInputMin}
55
+ >
56
+ <input
57
+ type="range"
58
+ class="rs-input-max"
59
+ min=${p.min} max=${p.max} step=${p.step}
60
+ .value=${String(p.valueMax)}
61
+ ?disabled=${p.disabled}
62
+ aria-label="Máximo"
63
+ @input=${p.onInputMax}
64
+ >
65
+ </div>
66
+ `;
67
+ }
68
+ if (p.vertical) {
69
+ return html`
70
+ <div class="rs-vert-wrap">
71
+ <div class="rs-track-wrap">
72
+ <div class="rs-track">
73
+ <div class="rs-fill" style="width: ${p.pct}%"></div>
74
+ </div>
75
+ <input
76
+ type="range"
77
+ min=${p.min} max=${p.max} step=${p.step}
78
+ .value=${String(p.value)}
79
+ ?disabled=${p.disabled}
80
+ @input=${p.onInput}
81
+ >
82
+ </div>
83
+ </div>
84
+ `;
85
+ }
86
+ return html`
87
+ <div class="rs-track-wrap">
88
+ <div class="rs-track">
89
+ <div class="rs-fill" style="width: ${p.pct}%"></div>
90
+ </div>
91
+ <input
92
+ type="range"
93
+ min=${p.min} max=${p.max} step=${p.step}
94
+ .value=${String(p.value)}
95
+ ?disabled=${p.disabled}
96
+ @input=${p.onInput}
97
+ >
98
+ ${renderTooltip(p.tooltip, p.pct, p.value, p.unit)}
99
+ </div>
100
+ `;
101
+ }
102
+ function rangeSliderTemplate(p) {
103
+ const valueDisplay = p.dual ? html`<span class="rs-value">
104
+ ${p.valueMin} — ${p.valueMax}
105
+ ${p.unit ? html`<span class="rs-value-unit">${p.unit}</span>` : nothing}
106
+ </span>` : html`<span class="rs-value">${renderValue(p.value, p.unit)}</span>`;
107
+ return html`
108
+ <div class="rs">
109
+
110
+ ${!p.vertical && (p.label || p.dual) ? html`
111
+ <div class="rs-label-row">
112
+ ${p.label ? html`<span class="rs-label">${p.label}</span>` : nothing}
113
+ ${valueDisplay}
114
+ </div>
115
+ ` : nothing}
116
+
117
+ ${renderTrack(p)}
118
+
119
+ ${p.vertical ? html`
120
+ <div class="rs-label-row">
121
+ ${p.label ? html`<span class="rs-label">${p.label}</span>` : nothing}
122
+ ${valueDisplay}
123
+ </div>
124
+ ` : nothing}
125
+
126
+ ${renderMarks(p.marks, p.pct)}
127
+
128
+ ${renderLimits(p.showLimits, p.limitMinText, p.limitMaxText)}
129
+
130
+ </div>
131
+ `;
132
+ }
2
133
  export {
3
- badgeCss as default
134
+ rangeSliderTemplate
4
135
  };
5
136
  //# sourceMappingURL=index223.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index223.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index223.js","sources":["../src/components/molecules/range-slider/lib-range-slider.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport type { RsSize, RsTone, RsMark } from './lib-range-slider.component';\n\nexport interface RangeSliderTemplateProps {\n /* sizing / modes */\n size: RsSize;\n tone: RsTone;\n dual: boolean;\n vertical: boolean;\n disabled: boolean;\n tooltip: boolean;\n\n /* range attrs */\n min: number;\n max: number;\n step: number;\n\n /* values */\n value: number; // single mode\n valueMin: number; // dual low\n valueMax: number; // dual high\n\n /* computed pcts (0–100) */\n pct: number; // single fill\n minPct: number; // dual fill left\n maxPct: number; // dual fill right\n\n /* display */\n label: string;\n unit: string;\n showLimits: boolean;\n limitMinText: string;\n limitMaxText: string;\n marks: RsMark[];\n\n /* handlers */\n onInput: (e: Event) => void;\n onInputMin: (e: Event) => void;\n onInputMax: (e: Event) => void;\n}\n\n/* ── Value display ───────────────────────────────────────── */\nfunction renderValue(v: number | string, unit: string): TemplateResult {\n return html`${v}${unit ? html`<span class=\"rs-value-unit\">${unit}</span>` : nothing}`;\n}\n\n/* ── Marks ───────────────────────────────────────────────── */\nfunction renderMarks(marks: RsMark[], pct: number): TemplateResult {\n if (!marks.length) return html``;\n return html`\n <div class=\"rs-marks\">\n ${marks.map(m => html`\n <div\n class=\"rs-mark ${m.pct <= pct ? 'is-filled' : ''}\"\n style=\"left: ${m.pct}%\"\n >\n ${m.label ? html`<span class=\"rs-mark-label\">${m.label}</span>` : nothing}\n </div>\n `)}\n </div>\n `;\n}\n\n/* ── Limits ──────────────────────────────────────────────── */\nfunction renderLimits(show: boolean, low: string, high: string): TemplateResult {\n if (!show) return html``;\n return html`\n <div class=\"rs-limits\">\n <span class=\"rs-limit\">${low}</span>\n <span class=\"rs-limit\">${high}</span>\n </div>\n `;\n}\n\n/* ── Tooltip ─────────────────────────────────────────────── */\nfunction renderTooltip(show: boolean, pct: number, value: number, unit: string): TemplateResult {\n if (!show) return html``;\n return html`\n <div class=\"rs-tooltip-wrap\" style=\"left: ${pct}%\">\n <span class=\"rs-tooltip-bubble\">${value}${unit}</span>\n </div>\n `;\n}\n\n/* ── Track content ───────────────────────────────────────── */\nfunction renderTrack(p: RangeSliderTemplateProps): TemplateResult {\n if (p.dual) {\n return html`\n <div class=\"rs-track-wrap\">\n <div class=\"rs-track\">\n <div\n class=\"rs-fill-dual\"\n style=\"left: ${p.minPct}%; right: ${100 - p.maxPct}%\"\n ></div>\n </div>\n <input\n type=\"range\"\n class=\"rs-input-min\"\n min=${p.min} max=${p.max} step=${p.step}\n .value=${String(p.valueMin)}\n ?disabled=${p.disabled}\n aria-label=\"Mínimo\"\n @input=${p.onInputMin}\n >\n <input\n type=\"range\"\n class=\"rs-input-max\"\n min=${p.min} max=${p.max} step=${p.step}\n .value=${String(p.valueMax)}\n ?disabled=${p.disabled}\n aria-label=\"Máximo\"\n @input=${p.onInputMax}\n >\n </div>\n `;\n }\n\n if (p.vertical) {\n return html`\n <div class=\"rs-vert-wrap\">\n <div class=\"rs-track-wrap\">\n <div class=\"rs-track\">\n <div class=\"rs-fill\" style=\"width: ${p.pct}%\"></div>\n </div>\n <input\n type=\"range\"\n min=${p.min} max=${p.max} step=${p.step}\n .value=${String(p.value)}\n ?disabled=${p.disabled}\n @input=${p.onInput}\n >\n </div>\n </div>\n `;\n }\n\n /* single horizontal */\n return html`\n <div class=\"rs-track-wrap\">\n <div class=\"rs-track\">\n <div class=\"rs-fill\" style=\"width: ${p.pct}%\"></div>\n </div>\n <input\n type=\"range\"\n min=${p.min} max=${p.max} step=${p.step}\n .value=${String(p.value)}\n ?disabled=${p.disabled}\n @input=${p.onInput}\n >\n ${renderTooltip(p.tooltip, p.pct, p.value, p.unit)}\n </div>\n `;\n}\n\n/**\n * Template principal de lib-range-slider.\n */\nexport function rangeSliderTemplate(p: RangeSliderTemplateProps): TemplateResult {\n /* Dual value display: \"120 — 480 €\" */\n const valueDisplay = p.dual\n ? html`<span class=\"rs-value\">\n ${p.valueMin} — ${p.valueMax}\n ${p.unit ? html`<span class=\"rs-value-unit\">${p.unit}</span>` : nothing}\n </span>`\n : html`<span class=\"rs-value\">${renderValue(p.value, p.unit)}</span>`;\n\n return html`\n <div class=\"rs\">\n\n ${!p.vertical && (p.label || p.dual) ? html`\n <div class=\"rs-label-row\">\n ${p.label ? html`<span class=\"rs-label\">${p.label}</span>` : nothing}\n ${valueDisplay}\n </div>\n ` : nothing}\n\n ${renderTrack(p)}\n\n ${p.vertical ? html`\n <div class=\"rs-label-row\">\n ${p.label ? html`<span class=\"rs-label\">${p.label}</span>` : nothing}\n ${valueDisplay}\n </div>\n ` : nothing}\n\n ${renderMarks(p.marks, p.pct)}\n\n ${renderLimits(p.showLimits, p.limitMinText, p.limitMaxText)}\n\n </div>\n `;\n}"],"names":[],"mappings":";AA0CA,SAAS,YAAY,GAAoB,MAA8B;AACrE,SAAO,OAAO,CAAC,GAAG,OAAO,mCAAmC,IAAI,YAAY,OAAO;AACrF;AAGA,SAAS,YAAY,OAAiB,KAA6B;AACjE,MAAI,CAAC,MAAM,OAAQ,QAAO;AAC1B,SAAO;AAAA;AAAA,QAED,MAAM,IAAI,CAAA,MAAK;AAAA;AAAA,2BAEI,EAAE,OAAO,MAAM,cAAc,EAAE;AAAA,yBACjC,EAAE,GAAG;AAAA;AAAA,YAElB,EAAE,QAAQ,mCAAmC,EAAE,KAAK,YAAY,OAAO;AAAA;AAAA,OAE5E,CAAC;AAAA;AAAA;AAGR;AAGA,SAAS,aAAa,MAAe,KAAa,MAA8B;AAC9E,MAAI,CAAC,KAAM,QAAO;AAClB,SAAO;AAAA;AAAA,+BAEsB,GAAG;AAAA,+BACH,IAAI;AAAA;AAAA;AAGnC;AAGA,SAAS,cAAc,MAAe,KAAa,OAAe,MAA8B;AAC9F,MAAI,CAAC,KAAM,QAAO;AAClB,SAAO;AAAA,gDACuC,GAAG;AAAA,wCACX,KAAK,GAAG,IAAI;AAAA;AAAA;AAGpD;AAGA,SAAS,YAAY,GAA6C;AAChE,MAAI,EAAE,MAAM;AACV,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKgB,EAAE,MAAM,aAAa,MAAM,EAAE,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAM9C,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,IAAI;AAAA,mBAC9B,OAAO,EAAE,QAAQ,CAAC;AAAA,sBACf,EAAE,QAAQ;AAAA;AAAA,mBAEb,EAAE,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,gBAKf,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,IAAI;AAAA,mBAC9B,OAAO,EAAE,QAAQ,CAAC;AAAA,sBACf,EAAE,QAAQ;AAAA;AAAA,mBAEb,EAAE,UAAU;AAAA;AAAA;AAAA;AAAA,EAI7B;AAEA,MAAI,EAAE,UAAU;AACd,WAAO;AAAA;AAAA;AAAA;AAAA,iDAIsC,EAAE,GAAG;AAAA;AAAA;AAAA;AAAA,kBAIpC,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,IAAI;AAAA,qBAC9B,OAAO,EAAE,KAAK,CAAC;AAAA,wBACZ,EAAE,QAAQ;AAAA,qBACb,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAK5B;AAGA,SAAO;AAAA;AAAA;AAAA,6CAGoC,EAAE,GAAG;AAAA;AAAA;AAAA;AAAA,cAIpC,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,IAAI;AAAA,iBAC9B,OAAO,EAAE,KAAK,CAAC;AAAA,oBACZ,EAAE,QAAQ;AAAA,iBACb,EAAE,OAAO;AAAA;AAAA,QAElB,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA;AAGxD;AAKO,SAAS,oBAAoB,GAA6C;AAE/E,QAAM,eAAe,EAAE,OACnB;AAAA,UACI,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAAA,UAC1B,EAAE,OAAO,mCAAmC,EAAE,IAAI,YAAY,OAAO;AAAA,iBAEzE,8BAA8B,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC;AAE9D,SAAO;AAAA;AAAA;AAAA,QAGD,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ;AAAA;AAAA,YAEjC,EAAE,QAAQ,8BAA8B,EAAE,KAAK,YAAY,OAAO;AAAA,YAClE,YAAY;AAAA;AAAA,UAEd,OAAO;AAAA;AAAA,QAET,YAAY,CAAC,CAAC;AAAA;AAAA,QAEd,EAAE,WAAW;AAAA;AAAA,YAET,EAAE,QAAQ,8BAA8B,EAAE,KAAK,YAAY,OAAO;AAAA,YAClE,YAAY;AAAA;AAAA,UAEd,OAAO;AAAA;AAAA,QAET,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC;AAAA;AAAA,QAE3B,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC;AAAA;AAAA;AAAA;AAIlE;"}
package/dist/index224.js CHANGED
@@ -1,29 +1,5 @@
1
- import { nothing, html } from "lit";
2
- function switchTemplate(props) {
3
- return html`
4
- <label class="sw" for=${props.switchId}>
5
- <input
6
- id=${props.switchId}
7
- class="sw-input"
8
- type="checkbox"
9
- ?checked=${props.checked}
10
- ?disabled=${props.disabled}
11
- aria-checked=${props.checked ? "true" : "false"}
12
- @change=${props.handleChange}
13
- >
14
- <span class="sw-track" aria-hidden="true">
15
- <span class="sw-thumb"></span>
16
- </span>
17
- ${props.label ? html`
18
- <span class="sw-label">
19
- <span class="sw-label-text">${props.label}</span>
20
- ${props.sub ? html`<span class="sw-label-sub">${props.sub}</span>` : nothing}
21
- </span>
22
- ` : nothing}
23
- </label>
24
- `;
25
- }
1
+ const sliderCss = '@layer tokens,reset,components;@layer reset{:host{display:block}*,*:before,*:after{box-sizing:border-box}}@layer components{.rs{--rs-thumb-size: 20px;--rs-track-h: 4px;--rs-fill-color: var(--color-washi-900);--rs-track-bg: var(--color-washi-200);display:flex;flex-direction:column;gap:var(--lib-space-sm);width:100%}.rs-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--lib-space-md)}.rs-label{font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--text-secondary)}.rs-value{font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);color:var(--text-primary);min-width:2.5rem;text-align:right;transition:color var(--duration-fast)}.rs-value-unit{color:var(--text-muted);font-size:10px;margin-left:1px}.rs-track-wrap{position:relative;height:var(--rs-thumb-size);display:flex;align-items:center}.rs-track{position:absolute;left:0;right:0;height:var(--rs-track-h);background:var(--rs-track-bg);border-radius:var(--radius-full);overflow:hidden;pointer-events:none}.rs-fill{position:absolute;left:0;top:0;bottom:0;background:var(--rs-fill-color);border-radius:var(--radius-full);transition:width var(--duration-fast),background var(--duration-base);pointer-events:none}.rs-fill-dual{position:absolute;top:0;bottom:0;background:var(--rs-fill-color);border-radius:var(--radius-full);pointer-events:none;transition:left var(--duration-fast),right var(--duration-fast)}.rs input[type=range]{position:absolute;left:0;right:0;width:100%;height:var(--rs-thumb-size);margin:0;padding:0;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;cursor:pointer;pointer-events:auto}.rs input[type=range]::-webkit-slider-runnable-track{height:var(--rs-track-h);background:transparent;border-radius:var(--radius-full)}.rs input[type=range]::-moz-range-track{height:var(--rs-track-h);background:transparent;border-radius:var(--radius-full)}.rs input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--rs-thumb-size);height:var(--rs-thumb-size);border-radius:var(--radius-full);background:var(--bg-elevated);border:2px solid var(--rs-fill-color);box-shadow:var(--shadow-sm),0 0 0 0 transparent;cursor:grab;transition:border-color var(--duration-base),box-shadow var(--duration-base),transform var(--duration-fast);margin-top:calc((var(--rs-track-h) - var(--rs-thumb-size)) / 2)}.rs input[type=range]::-moz-range-thumb{width:var(--rs-thumb-size);height:var(--rs-thumb-size);border-radius:var(--radius-full);background:var(--bg-elevated);border:2px solid var(--rs-fill-color);box-shadow:var(--shadow-sm);cursor:grab;transition:border-color var(--duration-base),box-shadow var(--duration-base)}.rs input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:var(--shadow-sm),0 0 0 3px var(--color-ink-10)}.rs input[type=range]:active::-webkit-slider-thumb{cursor:grabbing;transform:scale(1.15);box-shadow:var(--shadow-md)}:host([size="sm"]) .rs{--rs-thumb-size: 14px;--rs-track-h: 3px;gap:var(--lib-space-xs)}:host([size="sm"]) .rs-label{font-size:10px}:host([size="sm"]) .rs-value{font-size:10px}:host([size="lg"]) .rs{--rs-thumb-size: 26px;--rs-track-h: 8px;gap:var(--lib-space-md)}:host([size="lg"]) .rs-label{font-size:var(--text-sm)}:host([size="lg"]) .rs-value{font-size:var(--text-sm)}:host([tone="kaki"]) .rs{--rs-fill-color: var(--color-kaki-500)}:host([tone="celadon"]) .rs{--rs-fill-color: var(--color-celadon-500)}:host([tone="error"]) .rs{--rs-fill-color: var(--color-error)}:host([tone="washi"]) .rs{--rs-fill-color: var(--color-washi-700)}:host([tone="dark"]) .rs{--rs-track-bg: oklch(20% .02 45deg);--rs-fill-color: oklch(65% .02 55deg)}:host([tone="dark"]) .rs-label{color:#574a43}:host([tone="dark"]) .rs-value{color:#998c84}:host([tone="dark"]) .rs-limit{color:#312620}:host([tone="dark"]) .rs-mark{background:#231813}:host([tone="dark"]) .rs-mark.is-filled{background:#998c84}:host([tone="dark"]) .rs-mark-label{color:#312620}:host([tone="dark"]) .rs input[type=range]::-webkit-slider-thumb{background:#0c0604;border-color:#8a7d75}:host([tone="dark"]) .rs input[type=range]::-moz-range-thumb{background:#0c0604;border-color:#8a7d75}:host([disabled]) .rs{opacity:.38;pointer-events:none}:host([disabled]) .rs input[type=range]{cursor:not-allowed}.rs-limits{display:flex;justify-content:space-between;margin-top:calc(-1 * var(--lib-space-xs))}.rs-limit{font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wide);color:var(--text-muted)}.rs-marks{position:relative;height:10px;margin-top:calc(-1 * var(--lib-space-sm));pointer-events:none}.rs-mark{position:absolute;top:0;transform:translate(-50%);width:1px;height:5px;background:var(--border-default)}.rs-mark.is-filled{background:var(--rs-fill-color)}.rs-mark-label{position:absolute;top:7px;transform:translate(-50%);font-family:var(--lib-font-mono);font-size:9px;letter-spacing:var(--tracking-wide);color:var(--text-muted);white-space:nowrap}.rs-tooltip-wrap{position:absolute;top:0;height:100%;display:flex;align-items:flex-start;pointer-events:none;transform:translate(-50%)}.rs-tooltip-bubble{position:absolute;bottom:calc(100% + var(--lib-space-sm));left:0;transform:translate(-50%);background:var(--color-washi-900);color:var(--color-washi-50);font-family:var(--lib-font-mono);font-size:10px;letter-spacing:var(--tracking-wide);padding:2px var(--lib-space-sm);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--duration-base)}.rs-tooltip-bubble:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:4px solid transparent;border-top-color:var(--color-washi-900)}.rs-track-wrap:hover .rs-tooltip-bubble{opacity:1}:host([dual]) .rs-track{overflow:visible}:host([dual]) .rs-track-wrap{overflow:visible}:host([dual]) .rs input[type=range]{pointer-events:none}:host([dual]) .rs input[type=range]::-webkit-slider-thumb{pointer-events:auto}:host([dual]) .rs input[type=range]::-moz-range-thumb{pointer-events:auto}:host([dual]) .rs .rs-input-max{z-index:1}:host([vertical]) .rs{width:auto;align-items:center}:host([vertical]) .rs-vert-wrap{position:relative;width:var(--rs-thumb-size);height:160px;flex-shrink:0}:host([vertical][size="sm"]) .rs-vert-wrap{height:120px}:host([vertical][size="lg"]) .rs-vert-wrap{height:200px}:host([vertical]) .rs-track-wrap{position:absolute;top:50%;left:50%;width:160px;height:var(--rs-thumb-size);transform:translate(-50%,-50%) rotate(-90deg)}:host([vertical][size="sm"]) .rs-track-wrap{width:120px}:host([vertical][size="lg"]) .rs-track-wrap{width:200px}:host([vertical]) .rs-label-row{flex-direction:column;align-items:center;gap:2px;width:auto}:host([vertical]) .rs-label-row .rs-label{text-align:center}:host([vertical]) .rs-label-row .rs-value{min-width:auto;text-align:center}@media(prefers-reduced-motion:reduce){.rs-fill,.rs-fill-dual{transition:none}.rs input[type=range]::-webkit-slider-thumb{transition:none}}}';
26
2
  export {
27
- switchTemplate
3
+ sliderCss as default
28
4
  };
29
5
  //# sourceMappingURL=index224.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index224.js","sources":["../src/components/atoms/switch/lib-switch.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\n\nexport type LibSwitchVariant = 'default' | 'kintsugi';\nexport type LibSwitchSize = 'sm' | 'md' | 'lg';\n\nexport interface SwitchTemplateProps {\n switchId: string;\n checked: boolean;\n disabled: boolean;\n label: string;\n sub: string;\n handleChange: (e: Event) => void;\n}\n\n/**\n * Template para lib-switch.\n *\n * Estructura:\n * label.sw\n * input[type=checkbox] — oculto, accesible\n * span.sw-track\n * span.sw-thumb\n * span.sw-label — (opcional) si hay label\n * span.sw-label-text\n * span.sw-label-sub — (opcional) si hay sub\n *\n * El estado visual (checked, disabled, variant, size) se controla\n * íntegramente desde :host([attr]) en el CSS — el template es estático.\n */\nexport function switchTemplate(props: SwitchTemplateProps): TemplateResult {\n return html`\n <label class=\"sw\" for=${props.switchId}>\n <input\n id=${props.switchId}\n class=\"sw-input\"\n type=\"checkbox\"\n ?checked=${props.checked}\n ?disabled=${props.disabled}\n aria-checked=${props.checked ? 'true' : 'false'}\n @change=${props.handleChange}\n >\n <span class=\"sw-track\" aria-hidden=\"true\">\n <span class=\"sw-thumb\"></span>\n </span>\n ${props.label ? html`\n <span class=\"sw-label\">\n <span class=\"sw-label-text\">${props.label}</span>\n ${props.sub ? html`<span class=\"sw-label-sub\">${props.sub}</span>` : nothing}\n </span>\n ` : nothing}\n </label>\n `;\n}"],"names":[],"mappings":";AA6BO,SAAS,eAAe,OAA4C;AACzE,SAAO;AAAA,4BACmB,MAAM,QAAQ;AAAA;AAAA,aAE7B,MAAM,QAAQ;AAAA;AAAA;AAAA,mBAGR,MAAM,OAAO;AAAA,oBACZ,MAAM,QAAQ;AAAA,uBACX,MAAM,UAAU,SAAS,OAAO;AAAA,kBACrC,MAAM,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,QAK5B,MAAM,QAAQ;AAAA;AAAA,wCAEkB,MAAM,KAAK;AAAA,YACvC,MAAM,MAAM,kCAAkC,MAAM,GAAG,YAAY,OAAO;AAAA;AAAA,UAE5E,OAAO;AAAA;AAAA;AAGjB;"}
1
+ {"version":3,"file":"index224.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/index225.js CHANGED
@@ -1,5 +1,5 @@
1
- const switchCss = '@layer tokens,reset,components;@layer reset{:host{display:inline-flex;align-items:center;vertical-align:middle}*,*:before,*:after{box-sizing:border-box}}@layer components{.sw{display:inline-flex;align-items:center;gap:var(--lib-space-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.sw-input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.sw-track{position:relative;flex-shrink:0;width:40px;height:24px;border-radius:var(--radius-full);background:var(--color-washi-300);transition:background var(--duration-base) var(--ease-default),box-shadow var(--duration-slow) var(--ease-out)}.sw-thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:var(--radius-full);background:var(--color-white);box-shadow:var(--shadow-sm);transition:transform var(--duration-base) var(--ease-bounce),width var(--duration-base) var(--ease-default),background var(--duration-slow) var(--ease-default)}.sw-label{display:flex;flex-direction:column;gap:2px}.sw-label-text{font-family:var(--lib-font-body);font-size:var(--text-base);color:var(--text-primary);line-height:var(--leading-snug);transition:color var(--duration-base) var(--ease-default)}.sw-label-sub{font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);color:var(--text-muted);line-height:var(--leading-snug)}:host([checked]) .sw-track{background:var(--color-washi-900)}:host([checked]) .sw-thumb{transform:translate(16px)}.sw:hover .sw-thumb{width:22px}:host([checked]) .sw:hover .sw-thumb{transform:translate(12px)}:host([disabled]){pointer-events:none}:host([disabled]) .sw{opacity:.35;cursor:not-allowed}.sw-input:focus-visible~.sw-track{outline:2px solid var(--color-washi-700);outline-offset:2px}:host([size="sm"]) .sw-track{width:30px;height:18px}:host([size="sm"]) .sw-thumb{width:12px;height:12px;top:2px;left:2px}:host([size="sm"][checked]) .sw-thumb{transform:translate(12px)}:host([size="sm"]) .sw:hover .sw-thumb{width:15px}:host([size="sm"][checked]) .sw:hover .sw-thumb{transform:translate(9px)}:host([size="lg"]) .sw-track{width:52px;height:30px}:host([size="lg"]) .sw-thumb{width:22px;height:22px;top:3px;left:3px}:host([size="lg"][checked]) .sw-thumb{transform:translate(22px)}:host([size="lg"]) .sw:hover .sw-thumb{width:27px}:host([size="lg"][checked]) .sw:hover .sw-thumb{transform:translate(17px)}@keyframes kin-pulse{0%,to{opacity:.45}50%{opacity:1}}@keyframes kin-pulse-on{0%,to{opacity:.7}50%{opacity:1}}@keyframes kin-thumb-glow{0%,to{box-shadow:0 0 6px 1px #be96324d}50%{box-shadow:0 0 14px 3px #be96328c}}:host([variant="kintsugi"]){--gold-bright: oklch(80% .09 78deg);--gold-mid: oklch(72% .06 68deg);--gold-deep: oklch(62% .05 60deg)}:host([variant="kintsugi"]) .sw-track{background:#0c0402;overflow:visible}:host([variant="kintsugi"]) .sw-track:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius-full);padding:1px;background:var(--lib-kintsugi-border);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:xor;-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;animation:kin-pulse 3.5s ease-in-out infinite}:host([variant="kintsugi"]) .sw-thumb{background:#221812;box-shadow:none}:host([variant="kintsugi"][checked]) .sw-track{background:#1e0d01}:host([variant="kintsugi"][checked]) .sw-track:before{animation:kin-pulse-on 2.4s ease-in-out infinite}:host([variant="kintsugi"][checked]) .sw-thumb{background:linear-gradient(135deg,var(--gold-bright) 0%,var(--gold-mid) 60%,var(--gold-deep) 100%);animation:kin-thumb-glow 2.4s ease-in-out infinite}:host([variant="kintsugi"]) .sw-input:focus-visible~.sw-track:before{opacity:1;animation:none}:host([variant="kintsugi"]) .sw-label-text{color:#afa299}:host([variant="kintsugi"]) .sw-label-sub{color:#51453e}:host([variant="kintsugi"][checked]) .sw-label-text{color:#dfcab2}@media(prefers-reduced-motion:reduce){.sw-thumb,.sw-track{transition:none}:host([variant="kintsugi"]) .sw-track:before,:host([variant="kintsugi"][checked]) .sw-track:before,:host([variant="kintsugi"][checked]) .sw-thumb{animation:none}}}';
1
+ const segmentedCss = '@layer tokens,reset,components;@layer reset{*,*:before,*:after{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}:host([full]){display:block;width:100%}}@layer components{.seg{display:inline-flex;align-items:stretch;position:relative;-webkit-user-select:none;user-select:none}.seg-thumb{position:absolute;top:0;bottom:0;left:0;pointer-events:none;z-index:1;transition:transform var(--duration-slow) var(--ease-bounce),width var(--duration-slow) var(--ease-out)}.seg-option{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;gap:var(--lib-space-sm);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;-webkit-tap-highlight-color:transparent;transition:color var(--duration-base) var(--ease-out),opacity var(--duration-base) var(--ease-out)}.seg-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;pointer-events:none}.seg-badge-dot{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;font-size:9px;font-family:var(--lib-font-mono);letter-spacing:0;line-height:1;background:var(--color-kaki-500);color:var(--color-white);border-radius:var(--radius-full)}.seg-option.is-active .seg-badge-dot{background:#ffffff4d}.seg-option.is-disabled{opacity:.35;cursor:not-allowed;pointer-events:none}:host([disabled]) .seg{opacity:.55;pointer-events:none}:host([full]) .seg{width:100%}:host([full]) .seg-option{flex:1}:host([icon-only]) .seg-option{min-width:44px;padding:var(--lib-space-sm)}:host([variant="outline"]) .seg{border:1.5px solid var(--border-default);background:var(--bg-elevated);padding:3px;gap:0}:host([variant="outline"]) .seg-thumb{background:var(--color-washi-900);top:3px;bottom:3px}:host([variant="outline"]) .seg-option{padding:var(--lib-space-sm) var(--lib-space-md);color:var(--text-muted);min-width:80px}:host([variant="outline"]) .seg-option:hover{color:var(--text-primary)}:host([variant="outline"]) .seg-option.is-active{color:var(--color-washi-50)}:host([variant="underline"]) .seg{background:transparent;border-bottom:1px solid var(--border-subtle);gap:0;padding:0}:host([variant="underline"]) .seg-thumb{height:2px;top:auto;bottom:-1px;background:var(--color-kaki-500);transition:transform var(--duration-slow) var(--ease-bounce)}:host([variant="underline"]) .seg-option{padding:var(--lib-space-sm) calc(var(--lib-space-md) + var(--lib-space-sm));color:var(--text-muted);border-bottom:2px solid transparent}:host([variant="underline"]) .seg-option:hover{color:var(--text-primary)}:host([variant="underline"]) .seg-option.is-active{color:var(--text-primary)}:host([variant="pill"]) .seg{background:var(--color-washi-100);border:1px solid var(--border-subtle);border-radius:var(--radius-full);padding:4px;gap:0}:host([variant="pill"]) .seg-thumb{background:var(--bg-elevated);border-radius:var(--radius-full);top:4px;bottom:4px;box-shadow:0 1px 4px var(--color-ink-20)}:host([variant="pill"]) .seg-option{padding:var(--lib-space-sm) calc(var(--lib-space-md) + var(--lib-space-sm));color:var(--text-muted);border-radius:var(--radius-full);min-width:80px}:host([variant="pill"]) .seg-option:hover{color:var(--text-primary)}:host([variant="pill"]) .seg-option.is-active{color:var(--text-primary)}:host([variant="ghost"]) .seg{background:transparent;gap:0}:host([variant="ghost"]) .seg-thumb{display:none}:host([variant="ghost"]) .seg-option{padding:var(--lib-space-sm) var(--lib-space-md);color:var(--text-muted);border-right:1px solid var(--border-subtle)}:host([variant="ghost"]) .seg-option:last-child{border-right:none}:host([variant="ghost"]) .seg-option:hover{color:var(--text-primary)}:host([variant="ghost"]) .seg-option.is-active{color:var(--text-primary)}:host([variant="ghost"]) .seg-option.is-active:after{content:"";position:absolute;bottom:-1px;left:var(--lib-space-md);right:var(--lib-space-md);height:1px;background:var(--color-kaki-500)}:host([variant="kaki"]) .seg{border:1.5px solid var(--border-default);background:var(--bg-elevated);padding:3px;gap:0}:host([variant="kaki"]) .seg-thumb{background:var(--color-kaki-500);top:3px;bottom:3px}:host([variant="kaki"]) .seg-option{padding:var(--lib-space-sm) var(--lib-space-md);color:var(--text-muted);min-width:80px}:host([variant="kaki"]) .seg-option:hover{color:var(--text-primary)}:host([variant="kaki"]) .seg-option.is-active{color:var(--color-white)}:host([variant="celadon"]) .seg{border:1.5px solid var(--border-default);background:var(--bg-elevated);padding:3px;gap:0}:host([variant="celadon"]) .seg-thumb{background:var(--color-celadon-500);top:3px;bottom:3px}:host([variant="celadon"]) .seg-option{padding:var(--lib-space-sm) var(--lib-space-md);color:var(--text-muted);min-width:80px}:host([variant="celadon"]) .seg-option:hover{color:var(--text-primary)}:host([variant="celadon"]) .seg-option.is-active{color:var(--color-white)}:host([variant="dark-outline"]) .seg{border:1px solid rgb(255,255,255,.1);background:#ffffff0a;padding:3px;gap:0}:host([variant="dark-outline"]) .seg-thumb{background:#faf7f41f;top:3px;bottom:3px}:host([variant="dark-outline"]) .seg-option{padding:var(--lib-space-sm) var(--lib-space-md);color:#faf7f447;min-width:80px}:host([variant="dark-outline"]) .seg-option:hover{color:#faf7f4a6}:host([variant="dark-outline"]) .seg-option.is-active{color:#faf7f4cc}:host([variant="dark-pill"]) .seg{background:#ffffff0f;border:1px solid rgb(255,255,255,.07);border-radius:var(--radius-full);padding:4px;gap:0}:host([variant="dark-pill"]) .seg-thumb{background:#faf7f41f;border-radius:var(--radius-full);top:4px;bottom:4px}:host([variant="dark-pill"]) .seg-option{padding:var(--lib-space-sm) calc(var(--lib-space-md) + var(--lib-space-sm));color:#faf7f447;border-radius:var(--radius-full);min-width:80px}:host([variant="dark-pill"]) .seg-option:hover{color:#faf7f4a6}:host([variant="dark-pill"]) .seg-option.is-active{color:#faf7f4d9}:host([variant="dark-kaki"]) .seg{border:1px solid rgb(255,255,255,.07);background:#ffffff08;padding:3px;gap:0}:host([variant="dark-kaki"]) .seg-thumb{background:var(--color-kaki-500);top:3px;bottom:3px}:host([variant="dark-kaki"]) .seg-option{padding:var(--lib-space-sm) var(--lib-space-md);color:#faf7f44d;min-width:80px}:host([variant="dark-kaki"]) .seg-option:hover{color:#faf7f4a6}:host([variant="dark-kaki"]) .seg-option.is-active{color:var(--color-white)}:host([variant="dark-underline"]) .seg{background:transparent;border-bottom:1px solid rgb(255,255,255,.07);gap:0;padding:0}:host([variant="dark-underline"]) .seg-thumb{height:2px;top:auto;bottom:-1px;background:var(--color-kaki-400);transition:transform var(--duration-slow) var(--ease-bounce)}:host([variant="dark-underline"]) .seg-option{padding:var(--lib-space-sm) calc(var(--lib-space-md) + var(--lib-space-sm));color:#faf7f447}:host([variant="dark-underline"]) .seg-option:hover{color:#faf7f4a6}:host([variant="dark-underline"]) .seg-option.is-active{color:#faf7f4cc}:host([size="sm"]) .seg-option{padding:var(--lib-space-xs) var(--lib-space-md);font-size:10px;min-width:60px}:host([size="sm"][variant="pill"]) .seg{padding:3px;border-radius:var(--radius-full)}:host([size="sm"][variant="pill"]) .seg-thumb{top:3px;bottom:3px}:host([size="sm"][variant="dark-pill"]) .seg{padding:3px;border-radius:var(--radius-full)}:host([size="sm"][variant="dark-pill"]) .seg-thumb{top:3px;bottom:3px}:host([size="sm"][variant="outline"]) .seg{padding:2px}:host([size="sm"][variant="outline"]) .seg-thumb{top:2px;bottom:2px}:host([size="sm"][variant="kaki"]) .seg{padding:2px}:host([size="sm"][variant="kaki"]) .seg-thumb{top:2px;bottom:2px}:host([size="lg"]) .seg-option{padding:var(--lib-space-sm) var(--lib-space-lg);font-size:.75rem;min-width:100px}:host([size="lg"][variant="pill"]) .seg{padding:5px}:host([size="lg"][variant="pill"]) .seg-thumb{top:5px;bottom:5px}:host([size="lg"][variant="dark-pill"]) .seg{padding:5px}:host([size="lg"][variant="dark-pill"]) .seg-thumb{top:5px;bottom:5px}:host([glitch]) .seg-option.is-active:before,:host([glitch]) .seg-option.is-active:after{content:attr(data-label);position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-family:var(--lib-font-mono);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;pointer-events:none;opacity:0}:host([glitch]) .seg-option.is-active:before{color:var(--color-kaki-400);mix-blend-mode:screen}:host([glitch]) .seg-option.is-active:after{color:var(--color-celadon-400);mix-blend-mode:screen}:host([glitch]) .seg-option.glitch-on:before{opacity:.7;animation:seg-glitch-a .24s steps(1) infinite}:host([glitch]) .seg-option.glitch-on:after{opacity:.5;animation:seg-glitch-b .24s steps(1) infinite;animation-delay:30ms}@keyframes seg-glitch-a{0%{clip-path:inset(30% 0 50% 0);transform:translate(-2px)}50%{clip-path:inset(60% 0 10% 0);transform:translate(2px)}}@keyframes seg-glitch-b{0%{clip-path:inset(50% 0 20% 0);transform:translate(2px)}50%{clip-path:inset(10% 0 60% 0);transform:translate(-2px)}}.seg-ripple{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.seg-ripple-dot{position:absolute;width:4px;height:4px;border-radius:50%;background:currentcolor;transform:scale(0);opacity:.25;animation:seg-ripple .36s ease-out forwards}@keyframes seg-ripple{to{transform:scale(40);opacity:0}}}';
2
2
  export {
3
- switchCss as default
3
+ segmentedCss as default
4
4
  };
5
5
  //# sourceMappingURL=index225.js.map
package/dist/index226.js CHANGED
@@ -1,21 +1,75 @@
1
- import { html } from "lit";
2
- function selectOptionTemplate(props) {
1
+ import { nothing, html } from "lit";
2
+ import { map as o } from "./index232.js";
3
+ function segmentedTemplate(props) {
4
+ const {
5
+ options,
6
+ value,
7
+ variant,
8
+ size,
9
+ full,
10
+ iconOnly,
11
+ disabled,
12
+ glitch,
13
+ thumbStyle,
14
+ onSelect
15
+ } = props;
16
+ const isGhost = variant === "ghost";
17
+ const trackCls = [
18
+ "seg",
19
+ `seg-${variant}`,
20
+ size !== "md" ? `seg-${size}` : "",
21
+ full ? "seg-full" : "",
22
+ iconOnly ? "seg-icon-only" : "",
23
+ glitch ? "seg-glitch" : ""
24
+ ].filter(Boolean).join(" ");
3
25
  return html`
4
26
  <div
5
- class="option"
6
- role="option"
7
- aria-selected="${props.selected}"
8
- aria-disabled="${props.disabled}"
9
- @click="${props.handleClick}"
27
+ class="${trackCls}"
28
+ role="radiogroup"
29
+ aria-disabled="${disabled}"
10
30
  >
11
- <span class="option-label">
12
- <slot></slot>
13
- </span>
14
- <span class="option-check" aria-hidden="true"></span>
31
+ <!-- Thumb — indicador animado de selección -->
32
+ ${isGhost ? nothing : html`<div class="seg-thumb" style="${thumbStyle}"></div>`}
33
+
34
+ <!-- Opciones -->
35
+ ${o(options, (opt) => {
36
+ const isActive = opt.value === value;
37
+ const isDisabled = opt.disabled ?? false;
38
+ const optCls = [
39
+ "seg-option",
40
+ isActive ? "is-active" : "",
41
+ isDisabled ? "is-disabled" : ""
42
+ ].filter(Boolean).join(" ");
43
+ return html`
44
+ <div
45
+ class="${optCls}"
46
+ role="radio"
47
+ aria-checked="${isActive}"
48
+ aria-disabled="${isDisabled}"
49
+ data-label="${opt.label}"
50
+ data-value="${opt.value}"
51
+ @click="${(e) => {
52
+ if (disabled || isDisabled) return;
53
+ onSelect(opt, e);
54
+ }}"
55
+ >
56
+ <!-- Icono Phosphor (slot reutilizando lib-icon) -->
57
+ ${opt.icon ? html`<span class="seg-icon">
58
+ <lib-icon name="${opt.icon}" size="xs"></lib-icon>
59
+ </span>` : nothing}
60
+
61
+ <!-- Label — oculto si icon-only -->
62
+ ${iconOnly ? nothing : html`<span class="seg-label">${opt.label}</span>`}
63
+
64
+ <!-- Badge numérico opcional -->
65
+ ${opt.badge != null ? html`<span class="seg-badge-dot">${opt.badge}</span>` : nothing}
66
+ </div>
67
+ `;
68
+ })}
15
69
  </div>
16
70
  `;
17
71
  }
18
72
  export {
19
- selectOptionTemplate
73
+ segmentedTemplate
20
74
  };
21
75
  //# sourceMappingURL=index226.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index226.js","sources":["../src/components/atoms/select-option/lib-select-option.html.ts"],"sourcesContent":["import { html, TemplateResult } from 'lit';\nimport type { SelectOptionTemplateProps } from './lib-select-option.types';\n\nexport function selectOptionTemplate(props: SelectOptionTemplateProps): TemplateResult {\n return html`\n <div\n class=\"option\"\n role=\"option\"\n aria-selected=\"${props.selected}\"\n aria-disabled=\"${props.disabled}\"\n @click=\"${props.handleClick}\"\n >\n <span class=\"option-label\">\n <slot></slot>\n </span>\n <span class=\"option-check\" aria-hidden=\"true\"></span>\n </div>\n `;\n}"],"names":[],"mappings":";AAGO,SAAS,qBAAqB,OAAkD;AACrF,SAAO;AAAA;AAAA;AAAA;AAAA,uBAIc,MAAM,QAAQ;AAAA,uBACd,MAAM,QAAQ;AAAA,gBACrB,MAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQjC;"}
1
+ {"version":3,"file":"index226.js","sources":["../src/components/molecules/segmented-control/lib-segmented-control.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport { map } from 'lit/directives/map.js';\nimport type { SegmentedOption, SegmentedTemplateProps } from './lib-segmented-control.types';\n\n/**\n * Template del componente lib-segmented-control.\n *\n * El thumb se posiciona via `style` calculado en el componente\n * (offsetLeft / offsetWidth del option activo).\n * La variante ghost oculta el thumb con CSS y usa un ::after de línea.\n */\nexport function segmentedTemplate(props: SegmentedTemplateProps): TemplateResult {\n const {\n options, value, variant, size, full,\n iconOnly, disabled, glitch, thumbStyle, onSelect,\n } = props;\n\n const isGhost = variant === 'ghost';\n //const isUnderline = variant === 'underline' || variant === 'dark-underline';\n //const isPill = variant === 'pill' || variant === 'dark-pill';\n\n const trackCls = [\n 'seg',\n `seg-${variant}`,\n size !== 'md' ? `seg-${size}` : '',\n full ? 'seg-full' : '',\n iconOnly ? 'seg-icon-only' : '',\n glitch ? 'seg-glitch' : '',\n ].filter(Boolean).join(' ');\n\n return html`\n <div\n class=\"${trackCls}\"\n role=\"radiogroup\"\n aria-disabled=\"${disabled}\"\n >\n <!-- Thumb — indicador animado de selección -->\n ${isGhost ? nothing : html`<div class=\"seg-thumb\" style=\"${thumbStyle}\"></div>`}\n\n <!-- Opciones -->\n ${map(options, (opt: SegmentedOption) => {\n const isActive = opt.value === value;\n const isDisabled = opt.disabled ?? false;\n\n const optCls = [\n 'seg-option',\n isActive ? 'is-active' : '',\n isDisabled ? 'is-disabled' : '',\n ].filter(Boolean).join(' ');\n\n return html`\n <div\n class=\"${optCls}\"\n role=\"radio\"\n aria-checked=\"${isActive}\"\n aria-disabled=\"${isDisabled}\"\n data-label=\"${opt.label}\"\n data-value=\"${opt.value}\"\n @click=\"${(e: MouseEvent): void => {\n if (disabled || isDisabled) return;\n onSelect(opt, e);\n }}\"\n >\n <!-- Icono Phosphor (slot reutilizando lib-icon) -->\n ${opt.icon\n ? html`<span class=\"seg-icon\">\n <lib-icon name=\"${opt.icon}\" size=\"xs\"></lib-icon>\n </span>`\n : nothing}\n\n <!-- Label — oculto si icon-only -->\n ${iconOnly\n ? nothing\n : html`<span class=\"seg-label\">${opt.label}</span>`}\n\n <!-- Badge numérico opcional -->\n ${opt.badge != null\n ? html`<span class=\"seg-badge-dot\">${opt.badge}</span>`\n : nothing}\n </div>\n `;\n })}\n </div>\n `;\n}"],"names":["map"],"mappings":";;AAWO,SAAS,kBAAkB,OAA+C;AAC/E,QAAM;AAAA,IACJ;AAAA,IAAS;AAAA,IAAO;AAAA,IAAS;AAAA,IAAM;AAAA,IAC/B;AAAA,IAAU;AAAA,IAAU;AAAA,IAAQ;AAAA,IAAY;AAAA,EAAA,IACtC;AAEJ,QAAM,UAAe,YAAY;AAIjC,QAAM,WAAW;AAAA,IACf;AAAA,IACA,OAAO,OAAO;AAAA,IACd,SAAS,OAAO,OAAO,IAAI,KAAK;AAAA,IAChC,OAAW,aAAkB;AAAA,IAC7B,WAAW,kBAAkB;AAAA,IAC7B,SAAW,eAAkB;AAAA,EAAA,EAC7B,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,SAAO;AAAA;AAAA,eAEM,QAAQ;AAAA;AAAA,uBAEA,QAAQ;AAAA;AAAA;AAAA,QAGvB,UAAU,UAAU,qCAAqC,UAAU,UAAU;AAAA;AAAA;AAAA,QAG7EA,EAAI,SAAS,CAAC,QAAyB;AACvC,UAAM,WAAa,IAAI,UAAU;AACjC,UAAM,aAAa,IAAI,YAAY;AAEnC,UAAM,SAAS;AAAA,MACb;AAAA,MACA,WAAa,cAAgB;AAAA,MAC7B,aAAa,gBAAgB;AAAA,IAAA,EAC7B,OAAO,OAAO,EAAE,KAAK,GAAG;AAE1B,WAAO;AAAA;AAAA,qBAEM,MAAM;AAAA;AAAA,4BAEC,QAAQ;AAAA,6BACP,UAAU;AAAA,0BACb,IAAI,KAAK;AAAA,0BACT,IAAI,KAAK;AAAA,sBACb,CAAC,MAAwB;AACjC,UAAI,YAAY,WAAY;AAC5B,eAAS,KAAK,CAAC;AAAA,IACjB,CAAC;AAAA;AAAA;AAAA,cAGC,IAAI,OACF;AAAA,oCACoB,IAAI,IAAI;AAAA,2BAE5B,OAAO;AAAA;AAAA;AAAA,cAGT,WACE,UACA,+BAA+B,IAAI,KAAK,SAAS;AAAA;AAAA;AAAA,cAGnD,IAAI,SAAS,OACX,mCAAmC,IAAI,KAAK,YAC5C,OAAO;AAAA;AAAA;AAAA,EAGjB,CAAC,CAAC;AAAA;AAAA;AAGR;"}
package/dist/index227.js CHANGED
@@ -1,5 +1,100 @@
1
- const optionCss = `@layer tokens,reset,components;@layer reset{:host{display:block}:host:is([search-hidden]){display:none}*,*:before,*:after{box-sizing:border-box}}@layer components{.option{display:flex;align-items:center;gap:var(--lib-space-sm);padding:var(--lib-space-sm) var(--lib-space-md);cursor:pointer;transition:background var(--duration-fast) var(--ease-default),color var(--duration-fast) var(--ease-default)}:host(:not([disabled],[selected]):hover) .option{background:var(--bg-surface)}:host([selected]) .option{background:var(--color-washi-100)}:host([disabled]) .option{opacity:.38;cursor:not-allowed;pointer-events:none}.option-label{flex:1;min-width:0;font-family:var(--lib-font-body);font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-snug);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}:host(:hover) .option-label{color:var(--text-primary)}:host([selected]) .option-label{color:var(--text-primary)}:host([disabled]) .option-label{color:var(--text-muted)}.option-check{flex-shrink:0;width:14px;height:14px;opacity:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 256 256'%3E%3Cpath fill='%23221C16' d='M229.66 77.66l-128 128a8 8 0 0 1-11.32 0l-56-56a8 8 0 0 1 11.32-11.32L96 188.69 218.34 66.34a8 8 0 0 1 11.32 11.32Z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:contain;transition:opacity var(--duration-fast) var(--ease-default)}:host([selected]) .option-check{opacity:1}}`;
1
+ import { nothing, html } from "lit";
2
+ function selectTemplate(props) {
3
+ const {
4
+ label,
5
+ placeholder,
6
+ hint,
7
+ errorMessage,
8
+ required,
9
+ optional,
10
+ open,
11
+ error,
12
+ selectedLabel,
13
+ hasSelection,
14
+ multi,
15
+ selectedCount,
16
+ searchable,
17
+ searchQuery,
18
+ visibleCount,
19
+ onTriggerClick,
20
+ onSearchInput,
21
+ onConfirm
22
+ } = props;
23
+ const labelTpl = label ? html`
24
+ <label class="sel-label">
25
+ ${label}
26
+ ${required ? html`<span class="sel-label-req" aria-hidden="true">*</span>` : nothing}
27
+ ${optional ? html`<span class="sel-label-opt">(opcional)</span>` : nothing}
28
+ </label>` : nothing;
29
+ const hintTpl = error && errorMessage ? html`<span class="sel-hint is-error">${errorMessage}</span>` : hint ? html`<span class="sel-hint">${hint}</span>` : nothing;
30
+ const triggerValueTpl = multi ? selectedCount > 0 ? html`
31
+ <span class="sel-trigger-value">
32
+ ${selectedCount} seleccionada${selectedCount !== 1 ? "s" : ""}
33
+ <span class="sel-trigger-count">${selectedCount}</span>
34
+ </span>` : html`<span class="sel-trigger-value is-placeholder">${placeholder}</span>` : hasSelection ? html`<span class="sel-trigger-value">${selectedLabel}</span>` : html`<span class="sel-trigger-value is-placeholder">${placeholder}</span>`;
35
+ const searchTpl = searchable ? html`
36
+ <div class="sel-panel-search">
37
+ <span class="sel-panel-search-icon" aria-hidden="true"></span>
38
+ <input
39
+ type="text"
40
+ placeholder="Buscar…"
41
+ .value="${searchQuery}"
42
+ @input="${onSearchInput}"
43
+ autocomplete="off"
44
+ aria-label="Buscar opciones"
45
+ >
46
+ </div>` : nothing;
47
+ const footerTpl = multi ? html`
48
+ <div class="sel-panel-footer">
49
+ <span class="sel-panel-footer-text">
50
+ ${selectedCount} seleccionada${selectedCount !== 1 ? "s" : ""}
51
+ </span>
52
+ <button
53
+ class="sel-panel-footer-btn"
54
+ type="button"
55
+ @click="${onConfirm}"
56
+ >Confirmar</button>
57
+ </div>` : nothing;
58
+ const emptyTpl = searchable && searchQuery && visibleCount === 0 ? html`<div class="sel-panel-empty">Sin resultados</div>` : nothing;
59
+ return html`
60
+ <div class="sel-field">
61
+
62
+ ${labelTpl}
63
+
64
+ <div class="sel-custom">
65
+ <button
66
+ class="sel-trigger"
67
+ type="button"
68
+ aria-haspopup="listbox"
69
+ aria-expanded="${open}"
70
+ @click="${onTriggerClick}"
71
+ >
72
+ ${triggerValueTpl}
73
+ <span class="sel-trigger-chevron" aria-hidden="true"></span>
74
+ </button>
75
+
76
+ <div
77
+ class="sel-panel"
78
+ role="listbox"
79
+ aria-multiselectable="${multi}"
80
+ >
81
+ ${searchTpl}
82
+
83
+ <div class="sel-panel-list">
84
+ <slot></slot>
85
+ ${emptyTpl}
86
+ </div>
87
+
88
+ ${footerTpl}
89
+ </div>
90
+ </div>
91
+
92
+ ${hintTpl}
93
+
94
+ </div>
95
+ `;
96
+ }
2
97
  export {
3
- optionCss as default
98
+ selectTemplate
4
99
  };
5
100
  //# sourceMappingURL=index227.js.map