@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/index67.js CHANGED
@@ -1,105 +1,188 @@
1
- import { unsafeCSS, css, LitElement } from "lit";
2
- import { property, state, customElement } from "lit/decorators.js";
3
- import { codeBlockTemplate } from "./index318.js";
4
- import codeBlockCss from "./index319.js";
5
- import sharedTokens from "./index196.js";
6
- var __defProp = Object.defineProperty;
7
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
- var __decorateClass = (decorators, target, key, kind) => {
9
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
10
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
11
- if (decorator = decorators[i])
12
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
13
- if (kind && result) __defProp(target, key, result);
14
- return result;
15
- };
16
- let LibCodeBlock = class extends LitElement {
17
- constructor() {
18
- super(...arguments);
19
- this.code = "";
20
- this.language = "bash";
21
- this.filename = "";
22
- this.copyable = true;
23
- this.variant = "default";
24
- this._copied = false;
25
- this._copyTimeout = null;
26
- }
27
- _handleCopy() {
28
- const content = this.code || this._getSlotText();
29
- if (!content) return;
30
- navigator.clipboard.writeText(content).then(() => {
31
- this._copied = true;
32
- if (this._copyTimeout) clearTimeout(this._copyTimeout);
33
- this._copyTimeout = setTimeout(() => {
34
- this._copied = false;
35
- }, 2e3);
36
- }).catch(() => {
37
- const ta = document.createElement("textarea");
38
- ta.value = content;
39
- ta.style.position = "fixed";
40
- ta.style.opacity = "0";
41
- document.body.appendChild(ta);
42
- ta.select();
43
- document.execCommand("copy");
44
- document.body.removeChild(ta);
45
- this._copied = true;
46
- if (this._copyTimeout) clearTimeout(this._copyTimeout);
47
- this._copyTimeout = setTimeout(() => {
48
- this._copied = false;
49
- }, 2e3);
50
- });
51
- }
52
- _getSlotText() {
53
- var _a;
54
- const slot = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector("slot");
55
- if (!slot) return "";
56
- return slot.assignedNodes({ flatten: true }).map((node) => node.textContent ?? "").join("");
1
+ import { html, nothing } from "lit";
2
+ import { map as o } from "./index232.js";
3
+ function nodeMatchesSearch(node, term) {
4
+ var _a;
5
+ if (!term) return true;
6
+ const t = term.toLowerCase();
7
+ if (node.label.toLowerCase().includes(t)) return true;
8
+ return ((_a = node.children) == null ? void 0 : _a.some((c) => nodeMatchesSearch(c, term))) ?? false;
9
+ }
10
+ function highlightLabel(label, term) {
11
+ if (!term) return html`${label}`;
12
+ const idx = label.toLowerCase().indexOf(term.toLowerCase());
13
+ if (idx === -1) return html`${label}`;
14
+ return html`${label.slice(0, idx)}<mark>${label.slice(idx, idx + term.length)}</mark>${label.slice(idx + term.length)}`;
15
+ }
16
+ function renderNode(node, ctx, depth, ancestorIsLast, isLast) {
17
+ var _a;
18
+ if (ctx.searchValue && !nodeMatchesSearch(node, ctx.searchValue)) return nothing;
19
+ const st = ctx.nodeStates.get(node.id) ?? { selected: false, indeterminate: false, expanded: false };
20
+ const hasKids = (((_a = node.children) == null ? void 0 : _a.length) ?? 0) > 0;
21
+ const isExpanded = ctx.searchValue ? hasKids : st.expanded;
22
+ const indent = depth > 0 ? html`<div class="ts-indent">${Array.from({ length: depth }, (_, i) => {
23
+ const isLastUnit = i === depth - 1;
24
+ const ancestorWasLast = ancestorIsLast[i] ?? false;
25
+ const cls = [
26
+ "ts-indent-unit",
27
+ ancestorWasLast ? "ts-indent-no-line" : "",
28
+ isLastUnit ? "ts-indent-last" : "",
29
+ isLastUnit && isLast ? "ts-indent-last-child" : ""
30
+ ].filter(Boolean).join(" ");
31
+ return html`<div class="${cls}"></div>`;
32
+ })}</div>` : nothing;
33
+ const toggle = hasKids ? html`
34
+ <div
35
+ class="ts-toggle"
36
+ @click="${(e) => {
37
+ e.stopPropagation();
38
+ ctx.onToggle(node.id);
39
+ }}"
40
+ aria-label="${isExpanded ? "Colapsar" : "Expandir"}"
41
+ >
42
+ <svg class="ts-toggle-icon" viewBox="0 0 8 8" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round">
43
+ <path d="M2 1.5l3 2.5-3 2.5"/>
44
+ </svg>
45
+ </div>` : html`<div class="ts-toggle-spacer"></div>`;
46
+ const checkbox = ctx.multi ? html`
47
+ <div class="ts-checkbox">
48
+ <svg class="ts-checkbox-check" viewBox="0 0 10 10" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
49
+ <path d="M1.5 5l2.5 2.5L8.5 2"/>
50
+ </svg>
51
+ <div class="ts-checkbox-dash"></div>
52
+ </div>` : nothing;
53
+ const rowCls = [
54
+ "ts-node-row",
55
+ st.selected && !st.indeterminate ? "is-selected" : "",
56
+ st.indeterminate ? "is-indeterminate" : ""
57
+ ].filter(Boolean).join(" ");
58
+ const badge = hasKids ? html`<span class="ts-node-badge">${node.children.length}</span>` : nothing;
59
+ const childAncestors = [...ancestorIsLast, isLast];
60
+ const children = hasKids ? html`
61
+ <div class="ts-children">
62
+ <div class="ts-children-inner">
63
+ ${o(
64
+ node.children,
65
+ (child, ci) => renderNode(child, ctx, depth + 1, childAncestors, ci === node.children.length - 1)
66
+ )}
67
+ </div>
68
+ </div>` : nothing;
69
+ return html`
70
+ <div class="ts-node ${isExpanded ? "is-expanded" : ""}">
71
+ <div class="${rowCls}" @click="${() => ctx.onSelect(node)}">
72
+ ${indent}
73
+ ${toggle}
74
+ ${checkbox}
75
+ <span class="ts-node-label">${highlightLabel(node.label, ctx.searchValue)}</span>
76
+ ${badge}
77
+ </div>
78
+ ${children}
79
+ </div>
80
+ `;
81
+ }
82
+ function renderTree(props) {
83
+ const ctx = {
84
+ nodeStates: props.nodeStates,
85
+ multi: props.multi,
86
+ searchValue: props.searchValue,
87
+ onToggle: props.onToggle,
88
+ onSelect: props.onSelect
89
+ };
90
+ const visibleNodes = props.nodes.filter(
91
+ (n) => !props.searchValue || nodeMatchesSearch(n, props.searchValue)
92
+ );
93
+ if (visibleNodes.length === 0) {
94
+ return html`<div class="ts-empty">${props.emptyText}</div>`;
57
95
  }
58
- disconnectedCallback() {
59
- super.disconnectedCallback();
60
- if (this._copyTimeout) clearTimeout(this._copyTimeout);
96
+ return html`${o(
97
+ visibleNodes,
98
+ (node, i) => renderNode(node, ctx, 0, [], i === visibleNodes.length - 1)
99
+ )}`;
100
+ }
101
+ function renderSearch(props) {
102
+ if (!props.searchable) return nothing;
103
+ return html`
104
+ <div class="ts-search-wrap">
105
+ <svg class="ts-search-icon" width="13" height="13" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round">
106
+ <circle cx="7" cy="7" r="5"/><path d="M12 12l2.5 2.5"/>
107
+ </svg>
108
+ <input
109
+ class="ts-search"
110
+ type="text"
111
+ placeholder="Buscar…"
112
+ .value="${props.searchValue}"
113
+ autocomplete="off"
114
+ @input="${(e) => props.onSearch(e.target.value)}"
115
+ >
116
+ </div>
117
+ `;
118
+ }
119
+ function renderFooter(props) {
120
+ if (!props.multi) return nothing;
121
+ return html`
122
+ <div class="ts-footer">
123
+ <span class="ts-footer-info">${props.footerInfo}</span>
124
+ <div class="ts-footer-actions">
125
+ <button class="ts-btn" @click="${props.onClear}">Limpiar</button>
126
+ ${props.inline ? nothing : html`<button class="ts-btn ts-btn-confirm" @click="${props.onConfirm}">Aplicar</button>`}
127
+ </div>
128
+ </div>
129
+ `;
130
+ }
131
+ function renderTags(props) {
132
+ if (!props.multi || props.inline) return nothing;
133
+ return html`
134
+ <div class="ts-tags">
135
+ ${o(props.tags, (tag) => html`
136
+ <div class="ts-tag">
137
+ ${tag.label}
138
+ <span class="ts-tag-remove" @click="${() => props.onTagRemove(tag.id)}">×</span>
139
+ </div>
140
+ `)}
141
+ </div>
142
+ `;
143
+ }
144
+ function treeSelectTemplate(props) {
145
+ if (props.inline) {
146
+ return html`
147
+ <div class="ts-inline">
148
+ ${renderSearch(props)}
149
+ <div class="ts-tree">${renderTree(props)}</div>
150
+ ${renderFooter(props)}
151
+ </div>
152
+ `;
61
153
  }
62
- render() {
63
- return codeBlockTemplate({
64
- code: this.code,
65
- language: this.language,
66
- filename: this.filename,
67
- copyable: this.copyable,
68
- copied: this._copied,
69
- onCopy: () => this._handleCopy()
70
- });
71
- }
72
- };
73
- LibCodeBlock.styles = [
74
- css`
75
- ${unsafeCSS(sharedTokens)}
76
- `,
77
- css`
78
- ${unsafeCSS(codeBlockCss)}
79
- `
80
- ];
81
- __decorateClass([
82
- property({ type: String })
83
- ], LibCodeBlock.prototype, "code", 2);
84
- __decorateClass([
85
- property({ type: String, reflect: true })
86
- ], LibCodeBlock.prototype, "language", 2);
87
- __decorateClass([
88
- property({ type: String })
89
- ], LibCodeBlock.prototype, "filename", 2);
90
- __decorateClass([
91
- property({ type: Boolean, reflect: true })
92
- ], LibCodeBlock.prototype, "copyable", 2);
93
- __decorateClass([
94
- property({ type: String, reflect: true })
95
- ], LibCodeBlock.prototype, "variant", 2);
96
- __decorateClass([
97
- state()
98
- ], LibCodeBlock.prototype, "_copied", 2);
99
- LibCodeBlock = __decorateClass([
100
- customElement("lib-code-block")
101
- ], LibCodeBlock);
154
+ return html`
155
+ <div class="ts-wrap">
156
+
157
+ <div
158
+ class="ts-trigger"
159
+ @click="${props.onTriggerClick}"
160
+ aria-haspopup="listbox"
161
+ aria-expanded="${props.open}"
162
+ >
163
+ <span class="ts-trigger-label ${props.isPlaceholder ? "is-placeholder" : ""}">
164
+ ${props.isPlaceholder ? props.placeholder : props.triggerLabel}
165
+ </span>
166
+
167
+ ${props.multi && props.selectionCount > 0 ? html`<span class="ts-trigger-count">${props.selectionCount}</span>` : nothing}
168
+
169
+ <svg class="ts-trigger-chevron" width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round">
170
+ <path d="M3 6l5 5 5-5"/>
171
+ </svg>
172
+ </div>
173
+
174
+ <div class="ts-dropdown" role="listbox">
175
+ ${renderSearch(props)}
176
+ <div class="ts-tree">${renderTree(props)}</div>
177
+ ${renderFooter(props)}
178
+ </div>
179
+
180
+ </div>
181
+
182
+ ${renderTags(props)}
183
+ `;
184
+ }
102
185
  export {
103
- LibCodeBlock
186
+ treeSelectTemplate
104
187
  };
105
188
  //# sourceMappingURL=index67.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index67.js","sources":["../src/components/atoms/code-block/lib-code-block.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport type { LibCodeBlockLanguage } from './lib-code-block.html';\nimport { codeBlockTemplate } from './lib-code-block.html';\nimport codeBlockCss from './lib-code-block.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\nexport type LibCodeBlockVariant = 'default' | 'ghost';\n\n/**\n * @element lib-code-block\n *\n * Bloque de código con sintaxis destacada, etiqueta de lenguaje y botón de copia.\n *\n * @slot - Código a mostrar. Si se usa este slot, tiene prioridad sobre el atributo `code`.\n *\n * @example\n * <lib-code-block language=\"bash\" code=\"npm install @shibui-ui/ui lit\"></lib-code-block>\n *\n * @example\n * <lib-code-block language=\"ts\" filename=\"main.ts\">\n * import '@shibui-ui/ui';\n * </lib-code-block>\n */\n@customElement('lib-code-block')\nexport class LibCodeBlock extends LitElement {\n static override styles = [\n css`\n ${unsafeCSS(sharedTokens)}\n `,\n css`\n ${unsafeCSS(codeBlockCss)}\n `,\n ];\n\n /** Código a mostrar como texto plano */\n @property({ type: String })\n code = '';\n\n /** Etiqueta de lenguaje mostrada en el header (decorativa) */\n @property({ type: String, reflect: true })\n language: LibCodeBlockLanguage = 'bash';\n\n /** Nombre de fichero opcional mostrado en el header */\n @property({ type: String })\n filename = '';\n\n /** Muestra u oculta el botón de copiar */\n @property({ type: Boolean, reflect: true })\n copyable = true;\n\n /** Variante visual: default (oscuro) | ghost (claro) */\n @property({ type: String, reflect: true })\n variant: LibCodeBlockVariant = 'default';\n\n /** Estado interno: feedback tras copiar */\n @state()\n private _copied = false;\n\n private _copyTimeout: ReturnType<typeof setTimeout> | null = null;\n\n private _handleCopy(): void {\n const content = this.code || this._getSlotText();\n if (!content) return;\n\n navigator.clipboard.writeText(content).then(() => {\n this._copied = true;\n if (this._copyTimeout) clearTimeout(this._copyTimeout);\n this._copyTimeout = setTimeout(() => {\n this._copied = false;\n }, 2000);\n }).catch(() => {\n // Fallback para entornos sin clipboard API\n const ta = document.createElement('textarea');\n ta.value = content;\n ta.style.position = 'fixed';\n ta.style.opacity = '0';\n document.body.appendChild(ta);\n ta.select();\n document.execCommand('copy');\n document.body.removeChild(ta);\n this._copied = true;\n if (this._copyTimeout) clearTimeout(this._copyTimeout);\n this._copyTimeout = setTimeout(() => {\n this._copied = false;\n }, 2000);\n });\n }\n\n private _getSlotText(): string {\n const slot = this.shadowRoot?.querySelector('slot');\n if (!slot) return '';\n return slot.assignedNodes({ flatten: true })\n .map(node => node.textContent ?? '')\n .join('');\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this._copyTimeout) clearTimeout(this._copyTimeout);\n }\n\n override render(): TemplateResult {\n return codeBlockTemplate({\n code: this.code,\n language: this.language,\n filename: this.filename,\n copyable: this.copyable,\n copied: this._copied,\n onCopy: () => this._handleCopy(),\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-code-block': LibCodeBlock;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAyBO,IAAM,eAAN,cAA2B,WAAW;AAAA,EAAtC,cAAA;AAAA,UAAA,GAAA,SAAA;AAYL,SAAA,OAAO;AAIP,SAAA,WAAiC;AAIjC,SAAA,WAAW;AAIX,SAAA,WAAW;AAIX,SAAA,UAA+B;AAI/B,SAAQ,UAAU;AAElB,SAAQ,eAAqD;AAAA,EAAA;AAAA,EAErD,cAAoB;AAC1B,UAAM,UAAU,KAAK,QAAQ,KAAK,aAAA;AAClC,QAAI,CAAC,QAAS;AAEd,cAAU,UAAU,UAAU,OAAO,EAAE,KAAK,MAAM;AAChD,WAAK,UAAU;AACf,UAAI,KAAK,aAAc,cAAa,KAAK,YAAY;AACrD,WAAK,eAAe,WAAW,MAAM;AACnC,aAAK,UAAU;AAAA,MACjB,GAAG,GAAI;AAAA,IACT,CAAC,EAAE,MAAM,MAAM;AAEb,YAAM,KAAK,SAAS,cAAc,UAAU;AAC5C,SAAG,QAAQ;AACX,SAAG,MAAM,WAAW;AACpB,SAAG,MAAM,UAAU;AACnB,eAAS,KAAK,YAAY,EAAE;AAC5B,SAAG,OAAA;AACH,eAAS,YAAY,MAAM;AAC3B,eAAS,KAAK,YAAY,EAAE;AAC5B,WAAK,UAAU;AACf,UAAI,KAAK,aAAc,cAAa,KAAK,YAAY;AACrD,WAAK,eAAe,WAAW,MAAM;AACnC,aAAK,UAAU;AAAA,MACjB,GAAG,GAAI;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEQ,eAAuB;;AAC7B,UAAM,QAAO,UAAK,eAAL,mBAAiB,cAAc;AAC5C,QAAI,CAAC,KAAM,QAAO;AAClB,WAAO,KAAK,cAAc,EAAE,SAAS,MAAM,EACxC,IAAI,CAAA,SAAQ,KAAK,eAAe,EAAE,EAClC,KAAK,EAAE;AAAA,EACZ;AAAA,EAES,uBAA6B;AACpC,UAAM,qBAAA;AACN,QAAI,KAAK,aAAc,cAAa,KAAK,YAAY;AAAA,EACvD;AAAA,EAES,SAAyB;AAChC,WAAO,kBAAkB;AAAA,MACvB,MAAM,KAAK;AAAA,MACX,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,QAAQ,KAAK;AAAA,MACb,QAAQ,MAAM,KAAK,YAAA;AAAA,IAAY,CAChC;AAAA,EACH;AACF;AAvFa,aACK,SAAS;AAAA,EACvB;AAAA,QACI,UAAU,YAAY,CAAC;AAAA;AAAA,EAE3B;AAAA,QACI,UAAU,YAAY,CAAC;AAAA;AAE7B;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAXf,aAYX,WAAA,QAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAf9B,aAgBX,WAAA,YAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAnBf,aAoBX,WAAA,YAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAvB/B,aAwBX,WAAA,YAAA,CAAA;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GA3B9B,aA4BX,WAAA,WAAA,CAAA;AAIQ,gBAAA;AAAA,EADP,MAAA;AAAM,GA/BI,aAgCH,WAAA,WAAA,CAAA;AAhCG,eAAN,gBAAA;AAAA,EADN,cAAc,gBAAgB;AAAA,GAClB,YAAA;"}
1
+ {"version":3,"file":"index67.js","sources":["../src/components/molecules/tree-select/lib-tree-select.component.html.ts"],"sourcesContent":["import { html, nothing, TemplateResult } from 'lit';\nimport { map } from 'lit/directives/map.js';\nimport type {\n TreeNode,\n TreeNodeState,\n TreeSelectTemplateProps,\n RenderNodeCtx,\n} from './lib-tree-node.types';\n\n/* ──────────────────────────────────────────────────────────────\n HELPERS\n────────────────────────────────────────────────────────────── */\n\nfunction nodeMatchesSearch(node: TreeNode, term: string): boolean {\n if (!term) return true;\n const t = term.toLowerCase();\n if (node.label.toLowerCase().includes(t)) return true;\n return node.children?.some(c => nodeMatchesSearch(c, term)) ?? false;\n}\n\nfunction highlightLabel(label: string, term: string): TemplateResult {\n if (!term) return html`${label}`;\n const idx = label.toLowerCase().indexOf(term.toLowerCase());\n if (idx === -1) return html`${label}`;\n return html`${label.slice(0, idx)}<mark>${label.slice(idx, idx + term.length)}</mark>${label.slice(idx + term.length)}`;\n}\n\n/* ──────────────────────────────────────────────────────────────\n RENDERIZADO RECURSIVO DE NODO\n────────────────────────────────────────────────────────────── */\n\nfunction renderNode(\n node: TreeNode,\n ctx: RenderNodeCtx,\n depth: number,\n ancestorIsLast: boolean[],\n isLast: boolean,\n): TemplateResult | typeof nothing {\n\n if (ctx.searchValue && !nodeMatchesSearch(node, ctx.searchValue)) return nothing;\n\n const st: TreeNodeState = ctx.nodeStates.get(node.id)\n ?? { selected: false, indeterminate: false, expanded: false };\n\n const hasKids = (node.children?.length ?? 0) > 0;\n const isExpanded = ctx.searchValue ? hasKids : st.expanded;\n\n /* ── Líneas de indentación (estética bambú) ── */\n const indent: TemplateResult | typeof nothing = depth > 0\n ? html`<div class=\"ts-indent\">${\n Array.from({ length: depth }, (_, i) => {\n const isLastUnit = i === depth - 1;\n const ancestorWasLast = ancestorIsLast[i] ?? false;\n const cls = [\n 'ts-indent-unit',\n ancestorWasLast ? 'ts-indent-no-line' : '',\n isLastUnit ? 'ts-indent-last' : '',\n isLastUnit && isLast ? 'ts-indent-last-child' : '',\n ].filter(Boolean).join(' ');\n return html`<div class=\"${cls}\"></div>`;\n })\n }</div>`\n : nothing;\n\n /* ── Toggle expand/collapse ── */\n const toggle: TemplateResult = hasKids\n ? html`\n <div\n class=\"ts-toggle\"\n @click=\"${(e: Event): void => { e.stopPropagation(); ctx.onToggle(node.id); }}\"\n aria-label=\"${isExpanded ? 'Colapsar' : 'Expandir'}\"\n >\n <svg class=\"ts-toggle-icon\" viewBox=\"0 0 8 8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\">\n <path d=\"M2 1.5l3 2.5-3 2.5\"/>\n </svg>\n </div>`\n : html`<div class=\"ts-toggle-spacer\"></div>`;\n\n /* ── Checkbox (solo en modo multi) ── */\n const checkbox: TemplateResult | typeof nothing = ctx.multi\n ? html`\n <div class=\"ts-checkbox\">\n <svg class=\"ts-checkbox-check\" viewBox=\"0 0 10 10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M1.5 5l2.5 2.5L8.5 2\"/>\n </svg>\n <div class=\"ts-checkbox-dash\"></div>\n </div>`\n : nothing;\n\n /* ── Row classes ── */\n const rowCls = [\n 'ts-node-row',\n st.selected && !st.indeterminate ? 'is-selected' : '',\n st.indeterminate ? 'is-indeterminate' : '',\n ].filter(Boolean).join(' ');\n\n /* ── Badge (número de hijos directos) ── */\n const badge: TemplateResult | typeof nothing = hasKids\n ? html`<span class=\"ts-node-badge\">${node.children!.length}</span>`\n : nothing;\n\n /* ── Hijos (siempre en DOM, animados con grid-template-rows) ── */\n const childAncestors = [...ancestorIsLast, isLast];\n const children: TemplateResult | typeof nothing = hasKids\n ? html`\n <div class=\"ts-children\">\n <div class=\"ts-children-inner\">\n ${map(node.children!, (child, ci) =>\n renderNode(child, ctx, depth + 1, childAncestors, ci === node.children!.length - 1)\n )}\n </div>\n </div>`\n : nothing;\n\n return html`\n <div class=\"ts-node ${isExpanded ? 'is-expanded' : ''}\">\n <div class=\"${rowCls}\" @click=\"${(): void => ctx.onSelect(node)}\">\n ${indent}\n ${toggle}\n ${checkbox}\n <span class=\"ts-node-label\">${highlightLabel(node.label, ctx.searchValue)}</span>\n ${badge}\n </div>\n ${children}\n </div>\n `;\n}\n\n/* ──────────────────────────────────────────────────────────────\n ÁRBOL COMPLETO\n────────────────────────────────────────────────────────────── */\nfunction renderTree(props: TreeSelectTemplateProps): TemplateResult {\n const ctx: RenderNodeCtx = {\n nodeStates: props.nodeStates,\n multi: props.multi,\n searchValue: props.searchValue,\n onToggle: props.onToggle,\n onSelect: props.onSelect,\n };\n\n const visibleNodes = props.nodes.filter(n =>\n !props.searchValue || nodeMatchesSearch(n, props.searchValue)\n );\n\n if (visibleNodes.length === 0) {\n return html`<div class=\"ts-empty\">${props.emptyText}</div>`;\n }\n\n return html`${map(visibleNodes, (node, i) =>\n renderNode(node, ctx, 0, [], i === visibleNodes.length - 1)\n )}`;\n}\n\n/* ──────────────────────────────────────────────────────────────\n BÚSQUEDA\n────────────────────────────────────────────────────────────── */\nfunction renderSearch(props: TreeSelectTemplateProps): TemplateResult | typeof nothing {\n if (!props.searchable) return nothing;\n return html`\n <div class=\"ts-search-wrap\">\n <svg class=\"ts-search-icon\" width=\"13\" height=\"13\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\">\n <circle cx=\"7\" cy=\"7\" r=\"5\"/><path d=\"M12 12l2.5 2.5\"/>\n </svg>\n <input\n class=\"ts-search\"\n type=\"text\"\n placeholder=\"Buscar…\"\n .value=\"${props.searchValue}\"\n autocomplete=\"off\"\n @input=\"${(e: Event): void => props.onSearch((e.target as HTMLInputElement).value)}\"\n >\n </div>\n `;\n}\n\n/* ──────────────────────────────────────────────────────────────\n FOOTER (solo en multi)\n────────────────────────────────────────────────────────────── */\nfunction renderFooter(props: TreeSelectTemplateProps): TemplateResult | typeof nothing {\n if (!props.multi) return nothing;\n return html`\n <div class=\"ts-footer\">\n <span class=\"ts-footer-info\">${props.footerInfo}</span>\n <div class=\"ts-footer-actions\">\n <button class=\"ts-btn\" @click=\"${props.onClear}\">Limpiar</button>\n ${props.inline\n ? nothing\n : html`<button class=\"ts-btn ts-btn-confirm\" @click=\"${props.onConfirm}\">Aplicar</button>`}\n </div>\n </div>\n `;\n}\n\n/* ──────────────────────────────────────────────────────────────\n TAGS (multi dropdown — debajo del trigger)\n────────────────────────────────────────────────────────────── */\nfunction renderTags(props: TreeSelectTemplateProps): TemplateResult | typeof nothing {\n if (!props.multi || props.inline) return nothing;\n return html`\n <div class=\"ts-tags\">\n ${map(props.tags, tag => html`\n <div class=\"ts-tag\">\n ${tag.label}\n <span class=\"ts-tag-remove\" @click=\"${(): void => props.onTagRemove(tag.id)}\">×</span>\n </div>\n `)}\n </div>\n `;\n}\n\n/* ──────────────────────────────────────────────────────────────\n TEMPLATE PRINCIPAL\n────────────────────────────────────────────────────────────── */\nexport function treeSelectTemplate(props: TreeSelectTemplateProps): TemplateResult {\n\n /* ── Modo INLINE ── */\n if (props.inline) {\n return html`\n <div class=\"ts-inline\">\n ${renderSearch(props)}\n <div class=\"ts-tree\">${renderTree(props)}</div>\n ${renderFooter(props)}\n </div>\n `;\n }\n\n /* ── Modo DROPDOWN ── */\n return html`\n <div class=\"ts-wrap\">\n\n <div\n class=\"ts-trigger\"\n @click=\"${props.onTriggerClick}\"\n aria-haspopup=\"listbox\"\n aria-expanded=\"${props.open}\"\n >\n <span class=\"ts-trigger-label ${props.isPlaceholder ? 'is-placeholder' : ''}\">\n ${props.isPlaceholder ? props.placeholder : props.triggerLabel}\n </span>\n\n ${props.multi && props.selectionCount > 0\n ? html`<span class=\"ts-trigger-count\">${props.selectionCount}</span>`\n : nothing}\n\n <svg class=\"ts-trigger-chevron\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\">\n <path d=\"M3 6l5 5 5-5\"/>\n </svg>\n </div>\n\n <div class=\"ts-dropdown\" role=\"listbox\">\n ${renderSearch(props)}\n <div class=\"ts-tree\">${renderTree(props)}</div>\n ${renderFooter(props)}\n </div>\n\n </div>\n\n ${renderTags(props)}\n `;\n}"],"names":["map"],"mappings":"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"}
package/dist/index68.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
- import { property, query, customElement } from "lit/decorators.js";
3
- import { dialogTemplate } from "./index320.js";
4
- import dialogCss from "./index321.js";
2
+ import { property, customElement } from "lit/decorators.js";
3
+ import { accordionTemplate } from "./index233.js";
4
+ import accordionCss from "./index234.js";
5
5
  import sharedTokens from "./index196.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -13,106 +13,45 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibDialog = class extends LitElement {
16
+ let LibAccordion = class extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
- this.eyebrow = "";
20
- this.dlgTitle = "";
21
19
  this.variant = "default";
22
- this.size = "md";
23
- this.layout = "dialog";
24
- this.open = false;
25
- this.footerMeta = "";
20
+ this.exclusive = false;
26
21
  }
27
- /* ── Lifecycle ── */
28
- /**
29
- * Cuando `open` cambia: abrir con showModal + reflow + .is-open
30
- * o cerrar con animación de salida + transitionend.
31
- */
32
- updated(changed) {
33
- if (!changed.has("open")) return;
34
- if (this.open) {
35
- this._dlg.showModal();
36
- this._dlg.getBoundingClientRect();
37
- this._dlg.classList.add("is-open");
38
- } else {
39
- this._animateClose();
40
- }
41
- }
42
- /* ── API pública ── */
43
- /** Abre el dialog */
44
- show() {
45
- this.open = true;
46
- }
47
- /** Cierra el dialog con animación */
48
- close() {
49
- this.open = false;
50
- }
51
- /* ── Render ── */
52
- render() {
53
- return dialogTemplate({
54
- eyebrow: this.eyebrow,
55
- dlgTitle: this.dlgTitle,
56
- variant: this.variant,
57
- size: this.size,
58
- layout: this.layout,
59
- footerMeta: this.footerMeta,
60
- open: this.open,
61
- onClose: () => {
62
- this.close();
22
+ _handleToggle(e) {
23
+ if (!this.exclusive) return;
24
+ const target = e.target;
25
+ if (!target.open) return;
26
+ const items = Array.from(
27
+ this.querySelectorAll("lib-accordion-item")
28
+ );
29
+ items.forEach((item) => {
30
+ if (item !== target) {
31
+ item.open = false;
63
32
  }
64
33
  });
65
34
  }
66
- /* ── Private ── */
67
- _animateClose() {
68
- var _a;
69
- if (!((_a = this._dlg) == null ? void 0 : _a.open)) return;
70
- this._dlg.classList.add("is-closing");
71
- this._dlg.classList.remove("is-open");
72
- this._dlg.addEventListener("transitionend", () => {
73
- this._dlg.close();
74
- this._dlg.classList.remove("is-closing");
75
- this.dispatchEvent(
76
- new CustomEvent("ui-lib-dialog-close", {
77
- bubbles: true,
78
- composed: true
79
- })
80
- );
81
- }, { once: true });
35
+ render() {
36
+ return accordionTemplate({
37
+ onToggle: this._handleToggle.bind(this)
38
+ });
82
39
  }
83
40
  };
84
- LibDialog.styles = [
41
+ LibAccordion.styles = [
85
42
  css`${unsafeCSS(sharedTokens)}`,
86
- css`${unsafeCSS(dialogCss)}`
43
+ css`${unsafeCSS(accordionCss)}`
87
44
  ];
88
- __decorateClass([
89
- property({ type: String })
90
- ], LibDialog.prototype, "eyebrow", 2);
91
- __decorateClass([
92
- property({ type: String, attribute: "dlg-title" })
93
- ], LibDialog.prototype, "dlgTitle", 2);
94
- __decorateClass([
95
- property({ type: String, reflect: true })
96
- ], LibDialog.prototype, "variant", 2);
97
45
  __decorateClass([
98
46
  property({ type: String, reflect: true })
99
- ], LibDialog.prototype, "size", 2);
100
- __decorateClass([
101
- property({ type: String, reflect: true })
102
- ], LibDialog.prototype, "layout", 2);
103
- __decorateClass([
104
- property({ type: Boolean, reflect: true })
105
- ], LibDialog.prototype, "open", 2);
106
- __decorateClass([
107
- property({ type: String, attribute: "footer-meta" })
108
- ], LibDialog.prototype, "footerMeta", 2);
47
+ ], LibAccordion.prototype, "variant", 2);
109
48
  __decorateClass([
110
- query("dialog")
111
- ], LibDialog.prototype, "_dlg", 2);
112
- LibDialog = __decorateClass([
113
- customElement("lib-dialog")
114
- ], LibDialog);
49
+ property({ type: Boolean })
50
+ ], LibAccordion.prototype, "exclusive", 2);
51
+ LibAccordion = __decorateClass([
52
+ customElement("lib-accordion")
53
+ ], LibAccordion);
115
54
  export {
116
- LibDialog
55
+ LibAccordion
117
56
  };
118
57
  //# sourceMappingURL=index68.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index68.js","sources":["../src/components/organisms/dialog/lib-dialog.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult, PropertyValues } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { dialogTemplate } from './lib-dialog.html';\nimport dialogCss from './lib-dialog.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { DialogVariant, DialogSize, DialogLayout } from './lib-dialog.types';\n\n/**\n * @element lib-dialog\n *\n * Ventana de diálogo sobre `<dialog>` nativo con animación de entrada/salida.\n *\n * @prop {string} eyebrow — Texto pequeño encima del título\n * @prop {string} dlg-title — Título principal del header\n * @prop {DialogVariant} variant — default · danger · warning · dark\n * @prop {DialogSize} size — sm · md · lg · xl · full (default: md)\n * @prop {DialogLayout} layout — dialog · drawer-right · drawer-bottom · alert (default: dialog)\n * @prop {boolean} open — Estado controlado del panel\n * @prop {string} footer-meta — Texto auxiliar izquierdo en el footer\n *\n * @slot — Cuerpo del dialog (dlg-body)\n * @slot header — Override completo del título (dentro de dlg-header-text)\n * @slot footer — Botones del footer (a la derecha del footer-meta)\n *\n * @fires ui-lib-dialog-close Emitido tras la animación de cierre (bubbles, composed)\n *\n * @method show() — Abre el dialog con animación de entrada\n * @method close() — Cierra el dialog con animación de salida\n */\n@customElement('lib-dialog')\nexport class LibDialog extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(dialogCss)}`,\n ];\n\n /* ── Props ── */\n\n @property({ type: String })\n eyebrow = '';\n\n /**\n * `title` está reservado en HTMLElement — usamos `dlgTitle` + attribute `dlg-title`.\n */\n @property({ type: String, attribute: 'dlg-title' })\n dlgTitle = '';\n\n @property({ type: String, reflect: true })\n variant: DialogVariant = 'default';\n\n @property({ type: String, reflect: true })\n size: DialogSize = 'md';\n\n @property({ type: String, reflect: true })\n layout: DialogLayout = 'dialog';\n\n @property({ type: Boolean, reflect: true })\n open = false;\n\n @property({ type: String, attribute: 'footer-meta' })\n footerMeta = '';\n\n /* ── Refs ── */\n\n @query('dialog') declare private _dlg: HTMLDialogElement;\n\n /* ── Lifecycle ── */\n\n /**\n * Cuando `open` cambia: abrir con showModal + reflow + .is-open\n * o cerrar con animación de salida + transitionend.\n */\n protected override updated(changed: PropertyValues<this>): void {\n if (!changed.has('open')) return;\n\n if (this.open) {\n this._dlg.showModal();\n this._dlg.getBoundingClientRect(); // force reflow antes de la transición\n this._dlg.classList.add('is-open');\n } else {\n this._animateClose();\n }\n }\n\n /* ── API pública ── */\n\n /** Abre el dialog */\n public show(): void {\n this.open = true;\n }\n\n /** Cierra el dialog con animación */\n public close(): void {\n this.open = false;\n }\n\n /* ── Render ── */\n\n protected override render(): TemplateResult {\n return dialogTemplate({\n eyebrow: this.eyebrow,\n dlgTitle: this.dlgTitle,\n variant: this.variant,\n size: this.size,\n layout: this.layout,\n footerMeta: this.footerMeta,\n open: this.open,\n onClose: (): void => { this.close(); },\n });\n }\n\n /* ── Private ── */\n\n private _animateClose(): void {\n if (!this._dlg?.open) return;\n\n this._dlg.classList.add('is-closing');\n this._dlg.classList.remove('is-open');\n\n this._dlg.addEventListener('transitionend', () => {\n this._dlg.close();\n this._dlg.classList.remove('is-closing');\n\n this.dispatchEvent(\n new CustomEvent('ui-lib-dialog-close', {\n bubbles: true,\n composed: true,\n })\n );\n }, { once: true });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-dialog': LibDialog;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AA8BO,IAAM,YAAN,cAAwB,WAAW;AAAA,EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA;AASL,SAAA,UAAU;AAMV,SAAA,WAAW;AAGX,SAAA,UAAyB;AAGzB,SAAA,OAAmB;AAGnB,SAAA,SAAuB;AAGvB,SAAA,OAAO;AAGP,SAAA,aAAa;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYM,QAAQ,SAAqC;AAC9D,QAAI,CAAC,QAAQ,IAAI,MAAM,EAAG;AAE1B,QAAI,KAAK,MAAM;AACb,WAAK,KAAK,UAAA;AACV,WAAK,KAAK,sBAAA;AACV,WAAK,KAAK,UAAU,IAAI,SAAS;AAAA,IACnC,OAAO;AACL,WAAK,cAAA;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA,EAKO,OAAa;AAClB,SAAK,OAAO;AAAA,EACd;AAAA;AAAA,EAGO,QAAc;AACnB,SAAK,OAAO;AAAA,EACd;AAAA;AAAA,EAImB,SAAyB;AAC1C,WAAO,eAAe;AAAA,MACpB,SAAY,KAAK;AAAA,MACjB,UAAY,KAAK;AAAA,MACjB,SAAY,KAAK;AAAA,MACjB,MAAY,KAAK;AAAA,MACjB,QAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,MAAY,KAAK;AAAA,MACjB,SAAY,MAAY;AAAE,aAAK,MAAA;AAAA,MAAS;AAAA,IAAA,CACzC;AAAA,EACH;AAAA;AAAA,EAIQ,gBAAsB;;AAC5B,QAAI,GAAC,UAAK,SAAL,mBAAW,MAAM;AAEtB,SAAK,KAAK,UAAU,IAAI,YAAY;AACpC,SAAK,KAAK,UAAU,OAAO,SAAS;AAEpC,SAAK,KAAK,iBAAiB,iBAAiB,MAAM;AAChD,WAAK,KAAK,MAAA;AACV,WAAK,KAAK,UAAU,OAAO,YAAY;AAEvC,WAAK;AAAA,QACH,IAAI,YAAY,uBAAuB;AAAA,UACrC,SAAS;AAAA,UACT,UAAU;AAAA,QAAA,CACX;AAAA,MAAA;AAAA,IAEL,GAAG,EAAE,MAAM,MAAM;AAAA,EACnB;AACF;AArGa,UACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,SAAS,CAAC;AAC5B;AAKA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GARf,UASX,WAAA,WAAA,CAAA;AAMA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,aAAa;AAAA,GAdvC,UAeX,WAAA,YAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAjB9B,UAkBX,WAAA,WAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GApB9B,UAqBX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAvB9B,UAwBX,WAAA,UAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GA1B/B,UA2BX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,eAAe;AAAA,GA7BzC,UA8BX,WAAA,cAAA,CAAA;AAIiC,gBAAA;AAAA,EAAhC,MAAM,QAAQ;AAAA,GAlCJ,UAkCsB,WAAA,QAAA,CAAA;AAlCtB,YAAN,gBAAA;AAAA,EADN,cAAc,YAAY;AAAA,GACd,SAAA;"}
1
+ {"version":3,"file":"index68.js","sources":["../src/components/organisms/accordion/lib-accordion.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { accordionTemplate } from './lib-accordion.component.html';\nimport type { LibAccordionItem } from '../../atoms/accordion-item/lib-accordion-item.component';\nimport accordionCss from './lib-accordion.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\n\nexport type LibAccordionVariant = 'default' | 'flush' | 'separated' | 'accent';\n\n/**\n * @element lib-accordion\n *\n * Organismo que orquesta uno o varios lib-accordion-item.\n * Gestiona el modo exclusive y aplica variantes visuales\n * sobre los items via la API de CSS custom properties.\n *\n * @slot - lib-accordion-item elements\n *\n * @example\n * <lib-accordion variant=\"accent\" exclusive>\n * <lib-accordion-item label=\"Pregunta 1\">Respuesta 1</lib-accordion-item>\n * <lib-accordion-item label=\"Pregunta 2\" open>Respuesta 2</lib-accordion-item>\n * </lib-accordion>\n */\n@customElement('lib-accordion')\nexport class LibAccordion extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(accordionCss)}`,\n ];\n\n /** Variante visual del accordion */\n @property({ type: String, reflect: true })\n variant: LibAccordionVariant = 'default';\n\n /**\n * Si true, solo un item puede estar abierto a la vez.\n * Al abrir uno, los demas se cierran automaticamente.\n */\n @property({ type: Boolean })\n exclusive = false;\n\n private _handleToggle(e: Event): void {\n if (!this.exclusive) return;\n\n const target = e.target as LibAccordionItem;\n\n // Solo actuamos si el item se acaba de abrir\n if (!target.open) return;\n\n const items = Array.from(\n this.querySelectorAll<LibAccordionItem>('lib-accordion-item')\n );\n\n items.forEach(item => {\n if (item !== target) {\n item.open = false;\n }\n });\n }\n\n override render(): TemplateResult {\n return accordionTemplate({\n onToggle: this._handleToggle.bind(this),\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-accordion': LibAccordion;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AAyBO,IAAM,eAAN,cAA2B,WAAW;AAAA,EAAtC,cAAA;AAAA,UAAA,GAAA,SAAA;AAQL,SAAA,UAA+B;AAO/B,SAAA,YAAY;AAAA,EAAA;AAAA,EAEJ,cAAc,GAAgB;AACpC,QAAI,CAAC,KAAK,UAAW;AAErB,UAAM,SAAS,EAAE;AAGjB,QAAI,CAAC,OAAO,KAAM;AAElB,UAAM,QAAQ,MAAM;AAAA,MAClB,KAAK,iBAAmC,oBAAoB;AAAA,IAAA;AAG9D,UAAM,QAAQ,CAAA,SAAQ;AACpB,UAAI,SAAS,QAAQ;AACnB,aAAK,OAAO;AAAA,MACd;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAES,SAAyB;AAChC,WAAO,kBAAkB;AAAA,MACvB,UAAU,KAAK,cAAc,KAAK,IAAI;AAAA,IAAA,CACvC;AAAA,EACH;AACF;AAzCa,aACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,YAAY,CAAC;AAC/B;AAIA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAP9B,aAQX,WAAA,WAAA,CAAA;AAOA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GAdhB,aAeX,WAAA,aAAA,CAAA;AAfW,eAAN,gBAAA;AAAA,EADN,cAAc,eAAe;AAAA,GACjB,YAAA;"}