angular-tailwind-components 1.3.1 → 1.4.0

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 (1503) hide show
  1. package/README.md +30 -4
  2. package/fesm2022/angular-tailwind-components.mjs +407 -1284
  3. package/fesm2022/angular-tailwind-components.mjs.map +1 -1
  4. package/package.json +1 -1
  5. package/tailwind-icons/academic-cap.svg +5 -0
  6. package/tailwind-icons/adjustments-horizontal.svg +5 -0
  7. package/tailwind-icons/adjustments-vertical.svg +5 -0
  8. package/tailwind-icons/archive-box-arrow-down.svg +5 -0
  9. package/tailwind-icons/archive-box-x-mark.svg +5 -0
  10. package/tailwind-icons/archive-box.svg +5 -0
  11. package/tailwind-icons/arrow-down-circle.svg +5 -0
  12. package/tailwind-icons/arrow-down-left.svg +5 -0
  13. package/tailwind-icons/arrow-down-on-square-stack.svg +5 -0
  14. package/tailwind-icons/arrow-down-on-square.svg +5 -0
  15. package/tailwind-icons/arrow-down-right.svg +5 -0
  16. package/tailwind-icons/arrow-down-tray.svg +5 -0
  17. package/tailwind-icons/arrow-down.svg +2 -1
  18. package/tailwind-icons/arrow-left-circle.svg +5 -0
  19. package/tailwind-icons/arrow-left-end-on-rectangle.svg +5 -0
  20. package/tailwind-icons/arrow-left-on-rectangle.svg +5 -0
  21. package/tailwind-icons/arrow-left-start-on-rectangle.svg +5 -0
  22. package/tailwind-icons/arrow-left.svg +2 -1
  23. package/tailwind-icons/arrow-long-down.svg +5 -0
  24. package/tailwind-icons/arrow-long-left.svg +5 -0
  25. package/tailwind-icons/arrow-long-right.svg +5 -0
  26. package/tailwind-icons/arrow-long-up.svg +5 -0
  27. package/tailwind-icons/arrow-path-rounded-square.svg +5 -0
  28. package/tailwind-icons/arrow-path.svg +5 -0
  29. package/tailwind-icons/arrow-right-circle.svg +5 -0
  30. package/tailwind-icons/arrow-right-end-on-rectangle.svg +5 -0
  31. package/tailwind-icons/arrow-right-on-rectangle.svg +5 -0
  32. package/tailwind-icons/arrow-right-start-on-rectangle.svg +5 -0
  33. package/tailwind-icons/arrow-right.svg +2 -1
  34. package/tailwind-icons/arrow-small-down.svg +5 -0
  35. package/tailwind-icons/arrow-small-left.svg +5 -0
  36. package/tailwind-icons/arrow-small-right.svg +5 -0
  37. package/tailwind-icons/arrow-small-up.svg +5 -0
  38. package/tailwind-icons/arrow-top-right-on-square.svg +5 -0
  39. package/tailwind-icons/arrow-trending-down.svg +5 -0
  40. package/tailwind-icons/arrow-trending-up.svg +5 -0
  41. package/tailwind-icons/arrow-turn-down-left.svg +5 -0
  42. package/tailwind-icons/arrow-turn-down-right.svg +5 -0
  43. package/tailwind-icons/arrow-turn-left-down.svg +5 -0
  44. package/tailwind-icons/arrow-turn-left-up.svg +5 -0
  45. package/tailwind-icons/arrow-turn-right-down.svg +5 -0
  46. package/tailwind-icons/arrow-turn-right-up.svg +5 -0
  47. package/tailwind-icons/arrow-turn-up-left.svg +5 -0
  48. package/tailwind-icons/arrow-turn-up-right.svg +5 -0
  49. package/tailwind-icons/arrow-up-circle.svg +5 -0
  50. package/tailwind-icons/arrow-up-left.svg +5 -0
  51. package/tailwind-icons/arrow-up-on-square-stack.svg +5 -0
  52. package/tailwind-icons/arrow-up-on-square.svg +5 -0
  53. package/tailwind-icons/arrow-up-right.svg +5 -0
  54. package/tailwind-icons/arrow-up-tray.svg +5 -0
  55. package/tailwind-icons/arrow-up.svg +2 -1
  56. package/tailwind-icons/arrow-uturn-down.svg +5 -0
  57. package/tailwind-icons/arrow-uturn-left.svg +5 -0
  58. package/tailwind-icons/arrow-uturn-right.svg +5 -0
  59. package/tailwind-icons/arrow-uturn-up.svg +5 -0
  60. package/tailwind-icons/arrows-pointing-in.svg +5 -0
  61. package/tailwind-icons/arrows-pointing-out.svg +5 -0
  62. package/tailwind-icons/arrows-right-left.svg +5 -0
  63. package/tailwind-icons/arrows-up-down.svg +5 -0
  64. package/tailwind-icons/at-symbol.svg +5 -0
  65. package/tailwind-icons/backspace.svg +2 -1
  66. package/tailwind-icons/backward.svg +5 -0
  67. package/tailwind-icons/banknotes.svg +5 -0
  68. package/tailwind-icons/bars-2.svg +5 -0
  69. package/tailwind-icons/bars-3-bottom-left.svg +5 -0
  70. package/tailwind-icons/bars-3-bottom-right.svg +5 -0
  71. package/tailwind-icons/bars-3-center-left.svg +5 -0
  72. package/tailwind-icons/bars-3.svg +5 -0
  73. package/tailwind-icons/bars-4.svg +5 -0
  74. package/tailwind-icons/bars-arrow-down.svg +5 -0
  75. package/tailwind-icons/bars-arrow-up.svg +5 -0
  76. package/tailwind-icons/battery-0.svg +5 -0
  77. package/tailwind-icons/battery-100.svg +5 -0
  78. package/tailwind-icons/battery-50.svg +5 -0
  79. package/tailwind-icons/beaker.svg +5 -0
  80. package/tailwind-icons/bell-alert.svg +5 -0
  81. package/tailwind-icons/bell-slash.svg +5 -0
  82. package/tailwind-icons/bell-snooze.svg +5 -0
  83. package/tailwind-icons/bell.svg +2 -1
  84. package/tailwind-icons/bold.svg +5 -0
  85. package/tailwind-icons/bolt-slash.svg +5 -0
  86. package/tailwind-icons/bolt.svg +2 -1
  87. package/tailwind-icons/book-open.svg +5 -0
  88. package/tailwind-icons/bookmark-slash.svg +5 -0
  89. package/tailwind-icons/bookmark-square.svg +2 -1
  90. package/tailwind-icons/bookmark.svg +2 -1
  91. package/tailwind-icons/briefcase.svg +5 -0
  92. package/tailwind-icons/bug-ant.svg +5 -0
  93. package/tailwind-icons/building-library.svg +5 -0
  94. package/tailwind-icons/building-office-2.svg +5 -0
  95. package/tailwind-icons/building-office.svg +5 -0
  96. package/tailwind-icons/building-storefront.svg +5 -0
  97. package/tailwind-icons/cake.svg +5 -0
  98. package/tailwind-icons/calculator.svg +2 -1
  99. package/tailwind-icons/calendar-date-range.svg +5 -0
  100. package/tailwind-icons/calendar-days.svg +5 -0
  101. package/tailwind-icons/calendar.svg +2 -1
  102. package/tailwind-icons/camera.svg +2 -1
  103. package/tailwind-icons/chart-bar-square.svg +5 -0
  104. package/tailwind-icons/chart-bar.svg +5 -0
  105. package/tailwind-icons/chart-pie.svg +5 -0
  106. package/tailwind-icons/chat-bubble-bottom-center-text.svg +5 -0
  107. package/tailwind-icons/chat-bubble-bottom-center.svg +5 -0
  108. package/tailwind-icons/chat-bubble-left-ellipsis.svg +5 -0
  109. package/tailwind-icons/chat-bubble-left-right.svg +5 -0
  110. package/tailwind-icons/chat-bubble-left.svg +5 -0
  111. package/tailwind-icons/chat-bubble-oval-left-ellipsis.svg +5 -0
  112. package/tailwind-icons/chat-bubble-oval-left.svg +5 -0
  113. package/tailwind-icons/check-badge.svg +5 -0
  114. package/tailwind-icons/check-circle.svg +2 -1
  115. package/tailwind-icons/check.svg +5 -0
  116. package/tailwind-icons/chevron-double-down.svg +5 -0
  117. package/tailwind-icons/chevron-double-left.svg +5 -0
  118. package/tailwind-icons/chevron-double-right.svg +5 -0
  119. package/tailwind-icons/chevron-double-up.svg +5 -0
  120. package/tailwind-icons/chevron-down.svg +5 -0
  121. package/tailwind-icons/chevron-left.svg +5 -0
  122. package/tailwind-icons/chevron-right.svg +5 -0
  123. package/tailwind-icons/chevron-up-down.svg +5 -0
  124. package/tailwind-icons/chevron-up.svg +5 -0
  125. package/tailwind-icons/circle-stack.svg +5 -0
  126. package/tailwind-icons/clipboard-document-check.svg +5 -0
  127. package/tailwind-icons/clipboard-document-list.svg +5 -0
  128. package/tailwind-icons/clipboard-document.svg +5 -0
  129. package/tailwind-icons/clipboard.svg +2 -1
  130. package/tailwind-icons/clock.svg +5 -0
  131. package/tailwind-icons/cloud-arrow-down.svg +5 -0
  132. package/tailwind-icons/cloud-arrow-up.svg +5 -0
  133. package/tailwind-icons/cloud.svg +2 -1
  134. package/tailwind-icons/code-bracket-square.svg +5 -0
  135. package/tailwind-icons/code-bracket.svg +5 -0
  136. package/tailwind-icons/cog-6-tooth.svg +5 -0
  137. package/tailwind-icons/cog-8-tooth.svg +5 -0
  138. package/tailwind-icons/cog.svg +5 -0
  139. package/tailwind-icons/command-line.svg +5 -0
  140. package/tailwind-icons/computer-desktop.svg +5 -0
  141. package/tailwind-icons/cpu-chip.svg +5 -0
  142. package/tailwind-icons/credit-card.svg +5 -0
  143. package/tailwind-icons/cube-transparent.svg +5 -0
  144. package/tailwind-icons/cube.svg +5 -0
  145. package/tailwind-icons/currency-bangladeshi.svg +5 -0
  146. package/tailwind-icons/currency-dollar.svg +5 -0
  147. package/tailwind-icons/currency-euro.svg +5 -0
  148. package/tailwind-icons/currency-pound.svg +5 -0
  149. package/tailwind-icons/currency-rupee.svg +5 -0
  150. package/tailwind-icons/currency-yen.svg +5 -0
  151. package/tailwind-icons/cursor-arrow-rays.svg +5 -0
  152. package/tailwind-icons/cursor-arrow-ripple.svg +5 -0
  153. package/tailwind-icons/device-phone-mobile.svg +5 -0
  154. package/tailwind-icons/device-tablet.svg +5 -0
  155. package/tailwind-icons/divide.svg +5 -0
  156. package/tailwind-icons/document-arrow-down.svg +5 -0
  157. package/tailwind-icons/document-arrow-up.svg +5 -0
  158. package/tailwind-icons/document-chart-bar.svg +5 -0
  159. package/tailwind-icons/document-check.svg +5 -0
  160. package/tailwind-icons/document-currency-bangladeshi.svg +5 -0
  161. package/tailwind-icons/document-currency-dollar.svg +5 -0
  162. package/tailwind-icons/document-currency-euro.svg +5 -0
  163. package/tailwind-icons/document-currency-pound.svg +5 -0
  164. package/tailwind-icons/document-currency-rupee.svg +5 -0
  165. package/tailwind-icons/document-currency-yen.svg +5 -0
  166. package/tailwind-icons/document-duplicate.svg +5 -0
  167. package/tailwind-icons/document-magnifying-glass.svg +5 -0
  168. package/tailwind-icons/document-minus.svg +5 -0
  169. package/tailwind-icons/document-plus.svg +5 -0
  170. package/tailwind-icons/document-text.svg +2 -1
  171. package/tailwind-icons/document.svg +2 -1
  172. package/tailwind-icons/ellipsis-horizontal-circle.svg +5 -0
  173. package/tailwind-icons/ellipsis-horizontal.svg +5 -0
  174. package/tailwind-icons/ellipsis-vertical.svg +5 -0
  175. package/tailwind-icons/envelope-open.svg +5 -0
  176. package/tailwind-icons/envelope.svg +5 -0
  177. package/tailwind-icons/equals.svg +5 -0
  178. package/tailwind-icons/exclamation-circle.svg +5 -0
  179. package/tailwind-icons/exclamation-triangle.svg +5 -0
  180. package/tailwind-icons/eye-dropper.svg +5 -0
  181. package/tailwind-icons/eye-slash.svg +5 -0
  182. package/tailwind-icons/eye.svg +2 -1
  183. package/tailwind-icons/face-frown.svg +5 -0
  184. package/tailwind-icons/face-smile.svg +5 -0
  185. package/tailwind-icons/film.svg +5 -0
  186. package/tailwind-icons/finger-print.svg +5 -0
  187. package/tailwind-icons/fire.svg +2 -1
  188. package/tailwind-icons/flag.svg +2 -1
  189. package/tailwind-icons/folder-arrow-down.svg +5 -0
  190. package/tailwind-icons/folder-minus.svg +5 -0
  191. package/tailwind-icons/folder-open.svg +2 -1
  192. package/tailwind-icons/folder-plus.svg +5 -0
  193. package/tailwind-icons/folder.svg +2 -1
  194. package/tailwind-icons/forward.svg +2 -1
  195. package/tailwind-icons/funnel.svg +5 -0
  196. package/tailwind-icons/gif.svg +5 -0
  197. package/tailwind-icons/gift-top.svg +5 -0
  198. package/tailwind-icons/gift.svg +2 -1
  199. package/tailwind-icons/globe-alt.svg +5 -0
  200. package/tailwind-icons/globe-americas.svg +5 -0
  201. package/tailwind-icons/globe-asia-australia.svg +5 -0
  202. package/tailwind-icons/globe-europe-africa.svg +5 -0
  203. package/tailwind-icons/h1.svg +5 -0
  204. package/tailwind-icons/h2.svg +5 -0
  205. package/tailwind-icons/h3.svg +5 -0
  206. package/tailwind-icons/hand-raised.svg +5 -0
  207. package/tailwind-icons/hand-thumb-down.svg +5 -0
  208. package/tailwind-icons/hand-thumb-up.svg +5 -0
  209. package/tailwind-icons/hashtag.svg +2 -1
  210. package/tailwind-icons/heart.svg +2 -1
  211. package/tailwind-icons/home-modern.svg +5 -0
  212. package/tailwind-icons/home.svg +2 -1
  213. package/tailwind-icons/identification.svg +5 -0
  214. package/tailwind-icons/inbox-arrow-down.svg +5 -0
  215. package/tailwind-icons/inbox-stack.svg +5 -0
  216. package/tailwind-icons/inbox.svg +2 -1
  217. package/tailwind-icons/information-circle.svg +5 -0
  218. package/tailwind-icons/italic.svg +5 -0
  219. package/tailwind-icons/key.svg +2 -1
  220. package/tailwind-icons/language.svg +5 -0
  221. package/tailwind-icons/lifebuoy.svg +5 -0
  222. package/tailwind-icons/light-bulb.svg +5 -0
  223. package/tailwind-icons/link-slash.svg +5 -0
  224. package/tailwind-icons/link.svg +2 -1
  225. package/tailwind-icons/list-bullet.svg +5 -0
  226. package/tailwind-icons/lock-closed.svg +5 -0
  227. package/tailwind-icons/lock-open.svg +5 -0
  228. package/tailwind-icons/magnifying-glass-circle.svg +5 -0
  229. package/tailwind-icons/magnifying-glass-minus.svg +5 -0
  230. package/tailwind-icons/magnifying-glass-plus.svg +5 -0
  231. package/tailwind-icons/magnifying-glass.svg +5 -0
  232. package/tailwind-icons/map-pin.svg +5 -0
  233. package/tailwind-icons/map.svg +2 -1
  234. package/tailwind-icons/megaphone.svg +5 -0
  235. package/tailwind-icons/microphone.svg +2 -1
  236. package/tailwind-icons/minus-circle.svg +2 -1
  237. package/tailwind-icons/minus-small.svg +5 -0
  238. package/tailwind-icons/minus.svg +5 -0
  239. package/tailwind-icons/moon.svg +2 -1
  240. package/tailwind-icons/musical-note.svg +5 -0
  241. package/tailwind-icons/newspaper.svg +5 -0
  242. package/tailwind-icons/no-symbol.svg +5 -0
  243. package/tailwind-icons/numbered-list.svg +5 -0
  244. package/tailwind-icons/paint-brush.svg +5 -0
  245. package/tailwind-icons/paper-airplane.svg +5 -0
  246. package/tailwind-icons/paper-clip.svg +5 -0
  247. package/tailwind-icons/pause-circle.svg +2 -1
  248. package/tailwind-icons/pause.svg +2 -1
  249. package/tailwind-icons/pencil-square.svg +5 -0
  250. package/tailwind-icons/pencil.svg +5 -0
  251. package/tailwind-icons/percent-badge.svg +5 -0
  252. package/tailwind-icons/phone-arrow-down-left.svg +5 -0
  253. package/tailwind-icons/phone-arrow-up-right.svg +5 -0
  254. package/tailwind-icons/phone-x-mark.svg +5 -0
  255. package/tailwind-icons/phone.svg +2 -1
  256. package/tailwind-icons/photo.svg +5 -0
  257. package/tailwind-icons/play-circle.svg +2 -1
  258. package/tailwind-icons/play-pause.svg +5 -0
  259. package/tailwind-icons/play.svg +2 -1
  260. package/tailwind-icons/plus-circle.svg +5 -0
  261. package/tailwind-icons/plus-small.svg +5 -0
  262. package/tailwind-icons/plus.svg +5 -0
  263. package/tailwind-icons/power.svg +2 -1
  264. package/tailwind-icons/presentation-chart-bar.svg +5 -0
  265. package/tailwind-icons/presentation-chart-line.svg +5 -0
  266. package/tailwind-icons/printer.svg +2 -1
  267. package/tailwind-icons/puzzle-piece.svg +5 -0
  268. package/tailwind-icons/qr-code.svg +2 -1
  269. package/tailwind-icons/question-mark-circle.svg +5 -0
  270. package/tailwind-icons/queue-list.svg +5 -0
  271. package/tailwind-icons/radio.svg +2 -1
  272. package/tailwind-icons/receipt-percent.svg +5 -0
  273. package/tailwind-icons/receipt-refund.svg +5 -0
  274. package/tailwind-icons/rectangle-group.svg +5 -0
  275. package/tailwind-icons/rectangle-stack.svg +5 -0
  276. package/tailwind-icons/rocket-launch.svg +5 -0
  277. package/tailwind-icons/rss.svg +5 -0
  278. package/tailwind-icons/scale.svg +2 -1
  279. package/tailwind-icons/scissors.svg +2 -1
  280. package/tailwind-icons/server-stack.svg +5 -0
  281. package/tailwind-icons/server.svg +2 -1
  282. package/tailwind-icons/share.svg +2 -1
  283. package/tailwind-icons/shield-check.svg +2 -1
  284. package/tailwind-icons/shield-exclamation.svg +5 -0
  285. package/tailwind-icons/shopping-bag.svg +5 -0
  286. package/tailwind-icons/shopping-cart.svg +5 -0
  287. package/tailwind-icons/signal-slash.svg +5 -0
  288. package/tailwind-icons/signal.svg +5 -0
  289. package/tailwind-icons/slash.svg +5 -0
  290. package/tailwind-icons/sparkles.svg +5 -0
  291. package/tailwind-icons/speaker-wave.svg +5 -0
  292. package/tailwind-icons/speaker-x-mark.svg +5 -0
  293. package/tailwind-icons/square-2-stack.svg +5 -0
  294. package/tailwind-icons/square-3-stack-3d.svg +5 -0
  295. package/tailwind-icons/squares-2x2.svg +5 -0
  296. package/tailwind-icons/squares-plus.svg +5 -0
  297. package/tailwind-icons/star.svg +2 -1
  298. package/tailwind-icons/stop-circle.svg +2 -1
  299. package/tailwind-icons/stop.svg +2 -1
  300. package/tailwind-icons/strikethrough.svg +5 -0
  301. package/tailwind-icons/sun.svg +2 -1
  302. package/tailwind-icons/swatch.svg +5 -0
  303. package/tailwind-icons/table-cells.svg +5 -0
  304. package/tailwind-icons/tag.svg +2 -1
  305. package/tailwind-icons/ticket.svg +2 -1
  306. package/tailwind-icons/trash.svg +5 -0
  307. package/tailwind-icons/trophy.svg +5 -0
  308. package/tailwind-icons/truck.svg +5 -0
  309. package/tailwind-icons/tv.svg +2 -1
  310. package/tailwind-icons/underline.svg +5 -0
  311. package/tailwind-icons/user-circle.svg +2 -1
  312. package/tailwind-icons/user-group.svg +5 -0
  313. package/tailwind-icons/user-minus.svg +2 -1
  314. package/tailwind-icons/user-plus.svg +2 -1
  315. package/tailwind-icons/user.svg +2 -1
  316. package/tailwind-icons/users.svg +5 -0
  317. package/tailwind-icons/variable.svg +5 -0
  318. package/tailwind-icons/video-camera-slash.svg +5 -0
  319. package/tailwind-icons/video-camera.svg +5 -0
  320. package/tailwind-icons/view-columns.svg +5 -0
  321. package/tailwind-icons/viewfinder-circle.svg +5 -0
  322. package/tailwind-icons/wallet.svg +2 -1
  323. package/tailwind-icons/wifi.svg +5 -0
  324. package/tailwind-icons/window.svg +5 -0
  325. package/tailwind-icons/wrench-screwdriver.svg +5 -0
  326. package/tailwind-icons/wrench.svg +5 -0
  327. package/tailwind-icons/x-circle.svg +5 -0
  328. package/tailwind-icons/x-mark.svg +5 -0
  329. package/types/angular-tailwind-components.d.ts +62 -21
  330. package/tailwind-icons/4k.svg +0 -4
  331. package/tailwind-icons/accessibility.svg +0 -4
  332. package/tailwind-icons/accumulator.svg +0 -4
  333. package/tailwind-icons/add-circle.svg +0 -4
  334. package/tailwind-icons/add-folder.svg +0 -4
  335. package/tailwind-icons/add-square.svg +0 -4
  336. package/tailwind-icons/adhesive-plaster-2.svg +0 -4
  337. package/tailwind-icons/adhesive-plaster.svg +0 -4
  338. package/tailwind-icons/airbuds-case-charge.svg +0 -4
  339. package/tailwind-icons/airbuds-case-minimalistic.svg +0 -4
  340. package/tailwind-icons/airbuds-case-open.svg +0 -4
  341. package/tailwind-icons/airbuds-case.svg +0 -4
  342. package/tailwind-icons/airbuds-charge.svg +0 -4
  343. package/tailwind-icons/airbuds-check.svg +0 -4
  344. package/tailwind-icons/airbuds-left.svg +0 -4
  345. package/tailwind-icons/airbuds-remove.svg +0 -4
  346. package/tailwind-icons/airbuds-right.svg +0 -4
  347. package/tailwind-icons/airbuds.svg +0 -4
  348. package/tailwind-icons/alarm-add.svg +0 -4
  349. package/tailwind-icons/alarm-pause.svg +0 -4
  350. package/tailwind-icons/alarm-play.svg +0 -4
  351. package/tailwind-icons/alarm-remove.svg +0 -4
  352. package/tailwind-icons/alarm-sleep.svg +0 -4
  353. package/tailwind-icons/alarm-turn-off.svg +0 -4
  354. package/tailwind-icons/alarm.svg +0 -4
  355. package/tailwind-icons/album.svg +0 -4
  356. package/tailwind-icons/align-bottom.svg +0 -4
  357. package/tailwind-icons/align-horizonta-spacing.svg +0 -4
  358. package/tailwind-icons/align-horizontal-center.svg +0 -4
  359. package/tailwind-icons/align-left.svg +0 -4
  360. package/tailwind-icons/align-right.svg +0 -4
  361. package/tailwind-icons/align-top.svg +0 -4
  362. package/tailwind-icons/align-vertical-center.svg +0 -4
  363. package/tailwind-icons/align-vertical-spacing.svg +0 -4
  364. package/tailwind-icons/alt-arrow-down.svg +0 -4
  365. package/tailwind-icons/alt-arrow-left.svg +0 -4
  366. package/tailwind-icons/alt-arrow-right.svg +0 -4
  367. package/tailwind-icons/alt-arrow-up.svg +0 -4
  368. package/tailwind-icons/archive-check.svg +0 -4
  369. package/tailwind-icons/archive-down-minimlistic.svg +0 -4
  370. package/tailwind-icons/archive-down.svg +0 -4
  371. package/tailwind-icons/archive-minimalistic.svg +0 -4
  372. package/tailwind-icons/archive-up-minimlistic.svg +0 -4
  373. package/tailwind-icons/archive-up.svg +0 -4
  374. package/tailwind-icons/archive.svg +0 -4
  375. package/tailwind-icons/armchair-2.svg +0 -4
  376. package/tailwind-icons/armchair.svg +0 -4
  377. package/tailwind-icons/arrow-left-down.svg +0 -4
  378. package/tailwind-icons/arrow-left-up.svg +0 -4
  379. package/tailwind-icons/arrow-right-down.svg +0 -4
  380. package/tailwind-icons/arrow-right-up.svg +0 -4
  381. package/tailwind-icons/arrow-to-down-left.svg +0 -4
  382. package/tailwind-icons/arrow-to-down-right.svg +0 -4
  383. package/tailwind-icons/arrow-to-top-left.svg +0 -4
  384. package/tailwind-icons/arrow-to-top-right.svg +0 -4
  385. package/tailwind-icons/asteroid.svg +0 -4
  386. package/tailwind-icons/atom.svg +0 -4
  387. package/tailwind-icons/augmented-reality.svg +0 -4
  388. package/tailwind-icons/backpack.svg +0 -4
  389. package/tailwind-icons/bacteria.svg +0 -4
  390. package/tailwind-icons/bag-2.svg +0 -4
  391. package/tailwind-icons/bag-3.svg +0 -4
  392. package/tailwind-icons/bag-4.svg +0 -4
  393. package/tailwind-icons/bag-5.svg +0 -4
  394. package/tailwind-icons/bag-check.svg +0 -4
  395. package/tailwind-icons/bag-cross.svg +0 -4
  396. package/tailwind-icons/bag-heart.svg +0 -4
  397. package/tailwind-icons/bag-music-2.svg +0 -4
  398. package/tailwind-icons/bag-music.svg +0 -4
  399. package/tailwind-icons/bag-smile.svg +0 -4
  400. package/tailwind-icons/bag.svg +0 -4
  401. package/tailwind-icons/balloon.svg +0 -4
  402. package/tailwind-icons/balls.svg +0 -4
  403. package/tailwind-icons/banknote-2.svg +0 -4
  404. package/tailwind-icons/banknote.svg +0 -4
  405. package/tailwind-icons/bar-chair.svg +0 -4
  406. package/tailwind-icons/basketball.svg +0 -4
  407. package/tailwind-icons/bath.svg +0 -4
  408. package/tailwind-icons/battery-charge-minimalistic.svg +0 -4
  409. package/tailwind-icons/battery-charge.svg +0 -4
  410. package/tailwind-icons/battery-full-minimalistic.svg +0 -4
  411. package/tailwind-icons/battery-full.svg +0 -4
  412. package/tailwind-icons/battery-half-minimalistic.svg +0 -4
  413. package/tailwind-icons/battery-half.svg +0 -4
  414. package/tailwind-icons/battery-low-minimalistic.svg +0 -4
  415. package/tailwind-icons/battery-low.svg +0 -4
  416. package/tailwind-icons/bed.svg +0 -4
  417. package/tailwind-icons/bedside-table-2.svg +0 -4
  418. package/tailwind-icons/bedside-table-3.svg +0 -4
  419. package/tailwind-icons/bedside-table-4.svg +0 -4
  420. package/tailwind-icons/bedside-table.svg +0 -4
  421. package/tailwind-icons/bell-bing.svg +0 -4
  422. package/tailwind-icons/bell-off.svg +0 -4
  423. package/tailwind-icons/benzene-ring.svg +0 -4
  424. package/tailwind-icons/bicycling-round.svg +0 -4
  425. package/tailwind-icons/bicycling.svg +0 -4
  426. package/tailwind-icons/bill-check.svg +0 -4
  427. package/tailwind-icons/bill-cross.svg +0 -4
  428. package/tailwind-icons/bill-list.svg +0 -4
  429. package/tailwind-icons/bill.svg +0 -4
  430. package/tailwind-icons/black-hole-2.svg +0 -4
  431. package/tailwind-icons/black-hole-3.svg +0 -4
  432. package/tailwind-icons/black-hole.svg +0 -4
  433. package/tailwind-icons/bluetooth-circle.svg +0 -4
  434. package/tailwind-icons/bluetooth-square.svg +0 -4
  435. package/tailwind-icons/bluetooth-wave.svg +0 -4
  436. package/tailwind-icons/bluetooth.svg +0 -4
  437. package/tailwind-icons/body-shape-minimalistic.svg +0 -4
  438. package/tailwind-icons/body-shape.svg +0 -4
  439. package/tailwind-icons/body.svg +0 -4
  440. package/tailwind-icons/bolt-circle.svg +0 -4
  441. package/tailwind-icons/bomb-emoji.svg +0 -4
  442. package/tailwind-icons/bomb-minimalistic.svg +0 -4
  443. package/tailwind-icons/bomb.svg +0 -4
  444. package/tailwind-icons/bone-broken.svg +0 -4
  445. package/tailwind-icons/bone-crack.svg +0 -4
  446. package/tailwind-icons/bone.svg +0 -4
  447. package/tailwind-icons/bones.svg +0 -4
  448. package/tailwind-icons/bonfire.svg +0 -4
  449. package/tailwind-icons/book-2.svg +0 -4
  450. package/tailwind-icons/book-bookmark-minimalistic.svg +0 -4
  451. package/tailwind-icons/book-bookmark.svg +0 -4
  452. package/tailwind-icons/book-minimalistic.svg +0 -4
  453. package/tailwind-icons/book.svg +0 -4
  454. package/tailwind-icons/bookmark-circle.svg +0 -4
  455. package/tailwind-icons/bookmark-opened.svg +0 -4
  456. package/tailwind-icons/bookmark-square-minimalistic.svg +0 -4
  457. package/tailwind-icons/boombox.svg +0 -4
  458. package/tailwind-icons/bottle.svg +0 -4
  459. package/tailwind-icons/bowling.svg +0 -4
  460. package/tailwind-icons/box-minimalistic.svg +0 -4
  461. package/tailwind-icons/box.svg +0 -4
  462. package/tailwind-icons/branching-paths-down.svg +0 -4
  463. package/tailwind-icons/branching-paths-up.svg +0 -4
  464. package/tailwind-icons/broom.svg +0 -4
  465. package/tailwind-icons/bug-minimalistic.svg +0 -4
  466. package/tailwind-icons/bug.svg +0 -4
  467. package/tailwind-icons/buildings-2.svg +0 -4
  468. package/tailwind-icons/buildings-3.svg +0 -4
  469. package/tailwind-icons/buildings.svg +0 -4
  470. package/tailwind-icons/bus.svg +0 -4
  471. package/tailwind-icons/calculator-minimalistic.svg +0 -4
  472. package/tailwind-icons/calendar-add.svg +0 -4
  473. package/tailwind-icons/calendar-date.svg +0 -4
  474. package/tailwind-icons/calendar-mark.svg +0 -4
  475. package/tailwind-icons/calendar-minimalistic.svg +0 -4
  476. package/tailwind-icons/calendar-search.svg +0 -4
  477. package/tailwind-icons/call-cancel-rounded.svg +0 -4
  478. package/tailwind-icons/call-cancel.svg +0 -4
  479. package/tailwind-icons/call-chat-rounded.svg +0 -4
  480. package/tailwind-icons/call-chat.svg +0 -4
  481. package/tailwind-icons/call-dropped-rounded.svg +0 -4
  482. package/tailwind-icons/call-dropped.svg +0 -4
  483. package/tailwind-icons/call-medicine-rounded.svg +0 -4
  484. package/tailwind-icons/call-medicine.svg +0 -4
  485. package/tailwind-icons/camera-add.svg +0 -4
  486. package/tailwind-icons/camera-minimalistic.svg +0 -4
  487. package/tailwind-icons/camera-rotate.svg +0 -4
  488. package/tailwind-icons/camera-square.svg +0 -4
  489. package/tailwind-icons/card-2.svg +0 -4
  490. package/tailwind-icons/card-recive.svg +0 -4
  491. package/tailwind-icons/card-search.svg +0 -4
  492. package/tailwind-icons/card-send.svg +0 -4
  493. package/tailwind-icons/card-transfer.svg +0 -4
  494. package/tailwind-icons/card.svg +0 -4
  495. package/tailwind-icons/cardholder.svg +0 -4
  496. package/tailwind-icons/cart-2.svg +0 -4
  497. package/tailwind-icons/cart-3.svg +0 -4
  498. package/tailwind-icons/cart-4.svg +0 -4
  499. package/tailwind-icons/cart-5.svg +0 -4
  500. package/tailwind-icons/cart-check.svg +0 -4
  501. package/tailwind-icons/cart-cross.svg +0 -4
  502. package/tailwind-icons/cart-large-2.svg +0 -4
  503. package/tailwind-icons/cart-large-3.svg +0 -4
  504. package/tailwind-icons/cart-large-4.svg +0 -4
  505. package/tailwind-icons/cart-large-minimalistic.svg +0 -4
  506. package/tailwind-icons/cart-large.svg +0 -4
  507. package/tailwind-icons/cart-plus.svg +0 -4
  508. package/tailwind-icons/cart.svg +0 -4
  509. package/tailwind-icons/case-minimalistic.svg +0 -4
  510. package/tailwind-icons/case-round-minimalistic.svg +0 -4
  511. package/tailwind-icons/case-round.svg +0 -4
  512. package/tailwind-icons/case.svg +0 -4
  513. package/tailwind-icons/cash-out.svg +0 -4
  514. package/tailwind-icons/cassette-2.svg +0 -4
  515. package/tailwind-icons/cassette.svg +0 -4
  516. package/tailwind-icons/cat.svg +0 -4
  517. package/tailwind-icons/chair-2.svg +0 -4
  518. package/tailwind-icons/chair.svg +0 -4
  519. package/tailwind-icons/chandelier.svg +0 -4
  520. package/tailwind-icons/chart-2.svg +0 -4
  521. package/tailwind-icons/chart-square.svg +0 -4
  522. package/tailwind-icons/chart.svg +0 -4
  523. package/tailwind-icons/chat-dots.svg +0 -4
  524. package/tailwind-icons/chat-line.svg +0 -4
  525. package/tailwind-icons/chat-round-call.svg +0 -4
  526. package/tailwind-icons/chat-round-check.svg +0 -4
  527. package/tailwind-icons/chat-round-dots.svg +0 -4
  528. package/tailwind-icons/chat-round-like.svg +0 -4
  529. package/tailwind-icons/chat-round-line.svg +0 -4
  530. package/tailwind-icons/chat-round-money.svg +0 -4
  531. package/tailwind-icons/chat-round-unread.svg +0 -4
  532. package/tailwind-icons/chat-round-video.svg +0 -4
  533. package/tailwind-icons/chat-round.svg +0 -4
  534. package/tailwind-icons/chat-square-2.svg +0 -4
  535. package/tailwind-icons/chat-square-arrow.svg +0 -4
  536. package/tailwind-icons/chat-square-call.svg +0 -4
  537. package/tailwind-icons/chat-square-check.svg +0 -4
  538. package/tailwind-icons/chat-square-code.svg +0 -4
  539. package/tailwind-icons/chat-square-like.svg +0 -4
  540. package/tailwind-icons/chat-square.svg +0 -4
  541. package/tailwind-icons/chat-unread.svg +0 -4
  542. package/tailwind-icons/check-read.svg +0 -4
  543. package/tailwind-icons/check-square.svg +0 -4
  544. package/tailwind-icons/checklist-minimalistic.svg +0 -4
  545. package/tailwind-icons/checklist.svg +0 -4
  546. package/tailwind-icons/chef-hat-heart.svg +0 -4
  547. package/tailwind-icons/chef-hat-minimalistic.svg +0 -4
  548. package/tailwind-icons/chef-hat.svg +0 -4
  549. package/tailwind-icons/circle-bottom-down.svg +0 -4
  550. package/tailwind-icons/circle-bottom-up.svg +0 -4
  551. package/tailwind-icons/circle-top-down.svg +0 -4
  552. package/tailwind-icons/circle-top-up.svg +0 -4
  553. package/tailwind-icons/city.svg +0 -4
  554. package/tailwind-icons/clapperboard-edit.svg +0 -4
  555. package/tailwind-icons/clapperboard-open-play.svg +0 -4
  556. package/tailwind-icons/clapperboard-open.svg +0 -4
  557. package/tailwind-icons/clapperboard-play.svg +0 -4
  558. package/tailwind-icons/clapperboard-text.svg +0 -4
  559. package/tailwind-icons/clapperboard.svg +0 -4
  560. package/tailwind-icons/clipboard-add.svg +0 -4
  561. package/tailwind-icons/clipboard-check.svg +0 -4
  562. package/tailwind-icons/clipboard-heart.svg +0 -4
  563. package/tailwind-icons/clipboard-list.svg +0 -4
  564. package/tailwind-icons/clipboard-remove.svg +0 -4
  565. package/tailwind-icons/clipboard-text.svg +0 -4
  566. package/tailwind-icons/clock-circle.svg +0 -4
  567. package/tailwind-icons/clock-square.svg +0 -4
  568. package/tailwind-icons/close-circle.svg +0 -4
  569. package/tailwind-icons/close-square.svg +0 -4
  570. package/tailwind-icons/closet-2.svg +0 -4
  571. package/tailwind-icons/closet.svg +0 -4
  572. package/tailwind-icons/cloud-bolt-minimalistic.svg +0 -4
  573. package/tailwind-icons/cloud-bolt.svg +0 -4
  574. package/tailwind-icons/cloud-check.svg +0 -4
  575. package/tailwind-icons/cloud-cross.svg +0 -4
  576. package/tailwind-icons/cloud-download.svg +0 -4
  577. package/tailwind-icons/cloud-file.svg +0 -4
  578. package/tailwind-icons/cloud-minus.svg +0 -4
  579. package/tailwind-icons/cloud-plus.svg +0 -4
  580. package/tailwind-icons/cloud-rain.svg +0 -4
  581. package/tailwind-icons/cloud-snowfall-minimalistic.svg +0 -4
  582. package/tailwind-icons/cloud-snowfall.svg +0 -4
  583. package/tailwind-icons/cloud-storage.svg +0 -4
  584. package/tailwind-icons/cloud-storm.svg +0 -4
  585. package/tailwind-icons/cloud-sun-2.svg +0 -4
  586. package/tailwind-icons/cloud-sun.svg +0 -4
  587. package/tailwind-icons/cloud-upload.svg +0 -4
  588. package/tailwind-icons/cloud-waterdrop.svg +0 -4
  589. package/tailwind-icons/cloud-waterdrops.svg +0 -4
  590. package/tailwind-icons/clouds.svg +0 -4
  591. package/tailwind-icons/cloudy-moon.svg +0 -4
  592. package/tailwind-icons/code-2.svg +0 -4
  593. package/tailwind-icons/code-circle.svg +0 -4
  594. package/tailwind-icons/code-file.svg +0 -4
  595. package/tailwind-icons/code-scan.svg +0 -4
  596. package/tailwind-icons/code-square.svg +0 -4
  597. package/tailwind-icons/code.svg +0 -4
  598. package/tailwind-icons/colour-tuneing.svg +0 -4
  599. package/tailwind-icons/command.svg +0 -4
  600. package/tailwind-icons/compass-big.svg +0 -4
  601. package/tailwind-icons/compass-square.svg +0 -4
  602. package/tailwind-icons/compass.svg +0 -4
  603. package/tailwind-icons/condicioner-2.svg +0 -4
  604. package/tailwind-icons/condicioner.svg +0 -4
  605. package/tailwind-icons/confetti-minimalistic.svg +0 -4
  606. package/tailwind-icons/confetti.svg +0 -4
  607. package/tailwind-icons/confounded-circle.svg +0 -4
  608. package/tailwind-icons/confounded-square.svg +0 -4
  609. package/tailwind-icons/copy.svg +0 -4
  610. package/tailwind-icons/copyright.svg +0 -4
  611. package/tailwind-icons/corkscrew.svg +0 -4
  612. package/tailwind-icons/cosmetic.svg +0 -4
  613. package/tailwind-icons/course-down.svg +0 -4
  614. package/tailwind-icons/course-up.svg +0 -4
  615. package/tailwind-icons/cpu-bolt.svg +0 -4
  616. package/tailwind-icons/cpu.svg +0 -4
  617. package/tailwind-icons/creative-commons.svg +0 -4
  618. package/tailwind-icons/crop-minimalistic.svg +0 -4
  619. package/tailwind-icons/crop.svg +0 -4
  620. package/tailwind-icons/crown-line.svg +0 -4
  621. package/tailwind-icons/crown-minimalistic.svg +0 -4
  622. package/tailwind-icons/crown-star.svg +0 -4
  623. package/tailwind-icons/crown.svg +0 -4
  624. package/tailwind-icons/cup-first.svg +0 -4
  625. package/tailwind-icons/cup-hot.svg +0 -4
  626. package/tailwind-icons/cup-music.svg +0 -4
  627. package/tailwind-icons/cup-paper.svg +0 -4
  628. package/tailwind-icons/cup-star.svg +0 -4
  629. package/tailwind-icons/cup.svg +0 -4
  630. package/tailwind-icons/cursor-square.svg +0 -4
  631. package/tailwind-icons/cursor.svg +0 -4
  632. package/tailwind-icons/danger-circle.svg +0 -4
  633. package/tailwind-icons/danger-square.svg +0 -4
  634. package/tailwind-icons/danger-triangle.svg +0 -4
  635. package/tailwind-icons/danger.svg +0 -4
  636. package/tailwind-icons/database.svg +0 -4
  637. package/tailwind-icons/delivery.svg +0 -4
  638. package/tailwind-icons/devices.svg +0 -4
  639. package/tailwind-icons/diagram-down.svg +0 -4
  640. package/tailwind-icons/diagram-up.svg +0 -4
  641. package/tailwind-icons/dialog-2.svg +0 -4
  642. package/tailwind-icons/dialog.svg +0 -4
  643. package/tailwind-icons/diploma-verified.svg +0 -4
  644. package/tailwind-icons/diploma.svg +0 -4
  645. package/tailwind-icons/diskette.svg +0 -4
  646. package/tailwind-icons/dislike.svg +0 -4
  647. package/tailwind-icons/display.svg +0 -4
  648. package/tailwind-icons/dna.svg +0 -4
  649. package/tailwind-icons/document-add.svg +0 -4
  650. package/tailwind-icons/document-medicine.svg +0 -4
  651. package/tailwind-icons/documents-minimalistic.svg +0 -4
  652. package/tailwind-icons/documents.svg +0 -4
  653. package/tailwind-icons/dollar-minimalistic.svg +0 -4
  654. package/tailwind-icons/dollar.svg +0 -4
  655. package/tailwind-icons/donut-bitten.svg +0 -4
  656. package/tailwind-icons/donut.svg +0 -4
  657. package/tailwind-icons/double-alt-arrow-down.svg +0 -4
  658. package/tailwind-icons/double-alt-arrow-left.svg +0 -4
  659. package/tailwind-icons/double-alt-arrow-right.svg +0 -4
  660. package/tailwind-icons/double-alt-arrow-up.svg +0 -4
  661. package/tailwind-icons/download-minimalistic.svg +0 -4
  662. package/tailwind-icons/download-square.svg +0 -4
  663. package/tailwind-icons/download-twice-square.svg +0 -4
  664. package/tailwind-icons/download.svg +0 -4
  665. package/tailwind-icons/dropper-2.svg +0 -4
  666. package/tailwind-icons/dropper-3.svg +0 -4
  667. package/tailwind-icons/dropper-minimalistic-2.svg +0 -4
  668. package/tailwind-icons/dropper-minimalistic.svg +0 -4
  669. package/tailwind-icons/dropper.svg +0 -4
  670. package/tailwind-icons/dumbbell-large-minimalistic.svg +0 -4
  671. package/tailwind-icons/dumbbell-large.svg +0 -4
  672. package/tailwind-icons/dumbbell-small.svg +0 -4
  673. package/tailwind-icons/dumbbell.svg +0 -4
  674. package/tailwind-icons/dumbbells-2.svg +0 -4
  675. package/tailwind-icons/dumbbells.svg +0 -4
  676. package/tailwind-icons/earth.svg +0 -4
  677. package/tailwind-icons/electric-refueling.svg +0 -4
  678. package/tailwind-icons/emoji-funny-circle.svg +0 -4
  679. package/tailwind-icons/emoji-funny-square.svg +0 -4
  680. package/tailwind-icons/end-call-rounded.svg +0 -4
  681. package/tailwind-icons/end-call.svg +0 -4
  682. package/tailwind-icons/eraser-circle.svg +0 -4
  683. package/tailwind-icons/eraser-square.svg +0 -4
  684. package/tailwind-icons/eraser.svg +0 -4
  685. package/tailwind-icons/euro.svg +0 -4
  686. package/tailwind-icons/exit.svg +0 -4
  687. package/tailwind-icons/explicit.svg +0 -4
  688. package/tailwind-icons/export.svg +0 -4
  689. package/tailwind-icons/expressionless-circle.svg +0 -4
  690. package/tailwind-icons/expressionless-square.svg +0 -4
  691. package/tailwind-icons/eye-closed.svg +0 -4
  692. package/tailwind-icons/eye-scan.svg +0 -4
  693. package/tailwind-icons/face-scan-circle.svg +0 -4
  694. package/tailwind-icons/face-scan-square.svg +0 -4
  695. package/tailwind-icons/facemask-circle.svg +0 -4
  696. package/tailwind-icons/facemask-square.svg +0 -4
  697. package/tailwind-icons/feed.svg +0 -4
  698. package/tailwind-icons/ferris-wheel.svg +0 -4
  699. package/tailwind-icons/figma-file.svg +0 -4
  700. package/tailwind-icons/figma.svg +0 -4
  701. package/tailwind-icons/file-check.svg +0 -4
  702. package/tailwind-icons/file-corrupted.svg +0 -4
  703. package/tailwind-icons/file-download.svg +0 -4
  704. package/tailwind-icons/file-favourite.svg +0 -4
  705. package/tailwind-icons/file-left.svg +0 -4
  706. package/tailwind-icons/file-remove.svg +0 -4
  707. package/tailwind-icons/file-right.svg +0 -4
  708. package/tailwind-icons/file-send.svg +0 -4
  709. package/tailwind-icons/file-smile.svg +0 -4
  710. package/tailwind-icons/file-text.svg +0 -4
  711. package/tailwind-icons/file.svg +0 -4
  712. package/tailwind-icons/filter.svg +0 -4
  713. package/tailwind-icons/filters.svg +0 -4
  714. package/tailwind-icons/fire-minimalistic.svg +0 -4
  715. package/tailwind-icons/fire-square.svg +0 -4
  716. package/tailwind-icons/flag-2.svg +0 -4
  717. package/tailwind-icons/flame.svg +0 -4
  718. package/tailwind-icons/flash-drive.svg +0 -4
  719. package/tailwind-icons/flashlight-on.svg +0 -4
  720. package/tailwind-icons/flashlight.svg +0 -4
  721. package/tailwind-icons/flip-horizontal.svg +0 -4
  722. package/tailwind-icons/flip-vertical.svg +0 -4
  723. package/tailwind-icons/floor-lamp-minimalistic.svg +0 -4
  724. package/tailwind-icons/floor-lamp.svg +0 -4
  725. package/tailwind-icons/fog.svg +0 -4
  726. package/tailwind-icons/folder-2.svg +0 -4
  727. package/tailwind-icons/folder-check.svg +0 -4
  728. package/tailwind-icons/folder-cloud.svg +0 -4
  729. package/tailwind-icons/folder-error.svg +0 -4
  730. package/tailwind-icons/folder-favourite-bookmark.svg +0 -4
  731. package/tailwind-icons/folder-favourite-star.svg +0 -4
  732. package/tailwind-icons/folder-path-connect.svg +0 -4
  733. package/tailwind-icons/folder-security.svg +0 -4
  734. package/tailwind-icons/folder-with-files.svg +0 -4
  735. package/tailwind-icons/football.svg +0 -4
  736. package/tailwind-icons/forbidden-circle.svg +0 -4
  737. package/tailwind-icons/forbidden.svg +0 -4
  738. package/tailwind-icons/forward-2.svg +0 -4
  739. package/tailwind-icons/fridge.svg +0 -4
  740. package/tailwind-icons/fuel.svg +0 -4
  741. package/tailwind-icons/full-screen-circle.svg +0 -4
  742. package/tailwind-icons/full-screen-square.svg +0 -4
  743. package/tailwind-icons/full-screen.svg +0 -4
  744. package/tailwind-icons/gallery-add.svg +0 -4
  745. package/tailwind-icons/gallery-check.svg +0 -4
  746. package/tailwind-icons/gallery-circle.svg +0 -4
  747. package/tailwind-icons/gallery-download.svg +0 -4
  748. package/tailwind-icons/gallery-edit.svg +0 -4
  749. package/tailwind-icons/gallery-favourite.svg +0 -4
  750. package/tailwind-icons/gallery-minimalistic.svg +0 -4
  751. package/tailwind-icons/gallery-remove.svg +0 -4
  752. package/tailwind-icons/gallery-round.svg +0 -4
  753. package/tailwind-icons/gallery-send.svg +0 -4
  754. package/tailwind-icons/gallery-wide.svg +0 -4
  755. package/tailwind-icons/gallery.svg +0 -4
  756. package/tailwind-icons/gameboy.svg +0 -4
  757. package/tailwind-icons/gamepad-charge.svg +0 -4
  758. package/tailwind-icons/gamepad-minimalistic.svg +0 -4
  759. package/tailwind-icons/gamepad-no-charge.svg +0 -4
  760. package/tailwind-icons/gamepad-old.svg +0 -4
  761. package/tailwind-icons/gamepad.svg +0 -4
  762. package/tailwind-icons/garage.svg +0 -4
  763. package/tailwind-icons/gas-station.svg +0 -4
  764. package/tailwind-icons/ghost-smile.svg +0 -4
  765. package/tailwind-icons/ghost.svg +0 -4
  766. package/tailwind-icons/glasses.svg +0 -4
  767. package/tailwind-icons/global.svg +0 -4
  768. package/tailwind-icons/globus.svg +0 -4
  769. package/tailwind-icons/golf.svg +0 -4
  770. package/tailwind-icons/gps.svg +0 -4
  771. package/tailwind-icons/graph-down-new.svg +0 -4
  772. package/tailwind-icons/graph-down.svg +0 -4
  773. package/tailwind-icons/graph-new-up.svg +0 -4
  774. package/tailwind-icons/graph-new.svg +0 -4
  775. package/tailwind-icons/graph-up.svg +0 -4
  776. package/tailwind-icons/graph.svg +0 -4
  777. package/tailwind-icons/hamburger-menu.svg +0 -4
  778. package/tailwind-icons/hand-heart.svg +0 -4
  779. package/tailwind-icons/hand-money.svg +0 -4
  780. package/tailwind-icons/hand-pills.svg +0 -4
  781. package/tailwind-icons/hand-shake.svg +0 -4
  782. package/tailwind-icons/hand-stars.svg +0 -4
  783. package/tailwind-icons/hanger-2.svg +0 -4
  784. package/tailwind-icons/hanger.svg +0 -4
  785. package/tailwind-icons/hashtag-chat.svg +0 -4
  786. package/tailwind-icons/hashtag-circle.svg +0 -4
  787. package/tailwind-icons/hashtag-square.svg +0 -4
  788. package/tailwind-icons/headphones-round-sound.svg +0 -4
  789. package/tailwind-icons/headphones-round.svg +0 -4
  790. package/tailwind-icons/headphones-square-sound.svg +0 -4
  791. package/tailwind-icons/headphones-square.svg +0 -4
  792. package/tailwind-icons/health.svg +0 -4
  793. package/tailwind-icons/heart-angle.svg +0 -4
  794. package/tailwind-icons/heart-broken.svg +0 -4
  795. package/tailwind-icons/heart-lock.svg +0 -4
  796. package/tailwind-icons/heart-pulse-2.svg +0 -4
  797. package/tailwind-icons/heart-pulse.svg +0 -4
  798. package/tailwind-icons/heart-shine.svg +0 -4
  799. package/tailwind-icons/heart-unlock.svg +0 -4
  800. package/tailwind-icons/hearts.svg +0 -4
  801. package/tailwind-icons/help.svg +0 -4
  802. package/tailwind-icons/high-definition.svg +0 -4
  803. package/tailwind-icons/high-quality.svg +0 -4
  804. package/tailwind-icons/hiking-minimalistic.svg +0 -4
  805. package/tailwind-icons/hiking-round.svg +0 -4
  806. package/tailwind-icons/hiking.svg +0 -4
  807. package/tailwind-icons/history-2.svg +0 -4
  808. package/tailwind-icons/history-3.svg +0 -4
  809. package/tailwind-icons/history.svg +0 -4
  810. package/tailwind-icons/home-2.svg +0 -4
  811. package/tailwind-icons/home-add-angle.svg +0 -4
  812. package/tailwind-icons/home-add.svg +0 -4
  813. package/tailwind-icons/home-angle-2.svg +0 -4
  814. package/tailwind-icons/home-angle.svg +0 -4
  815. package/tailwind-icons/home-smile-angle.svg +0 -4
  816. package/tailwind-icons/home-smile.svg +0 -4
  817. package/tailwind-icons/home-wifi-angle.svg +0 -4
  818. package/tailwind-icons/home-wifi.svg +0 -4
  819. package/tailwind-icons/hospital.svg +0 -4
  820. package/tailwind-icons/hourglass-line.svg +0 -4
  821. package/tailwind-icons/hourglass.svg +0 -4
  822. package/tailwind-icons/import.svg +0 -4
  823. package/tailwind-icons/inbox-archive.svg +0 -4
  824. package/tailwind-icons/inbox-in.svg +0 -4
  825. package/tailwind-icons/inbox-line.svg +0 -4
  826. package/tailwind-icons/inbox-out.svg +0 -4
  827. package/tailwind-icons/inbox-unread.svg +0 -4
  828. package/tailwind-icons/incognito.svg +0 -4
  829. package/tailwind-icons/incoming-call-rounded.svg +0 -4
  830. package/tailwind-icons/incoming-call.svg +0 -4
  831. package/tailwind-icons/infinity.svg +0 -4
  832. package/tailwind-icons/info-circle.svg +0 -4
  833. package/tailwind-icons/info-square.svg +0 -4
  834. package/tailwind-icons/iphone.svg +0 -4
  835. package/tailwind-icons/jar-of-pills-2.svg +0 -4
  836. package/tailwind-icons/jar-of-pills.svg +0 -4
  837. package/tailwind-icons/key-minimalistic-2.svg +0 -4
  838. package/tailwind-icons/key-minimalistic-square-2.svg +0 -4
  839. package/tailwind-icons/key-minimalistic-square-3.svg +0 -4
  840. package/tailwind-icons/key-minimalistic-square.svg +0 -4
  841. package/tailwind-icons/key-minimalistic.svg +0 -4
  842. package/tailwind-icons/key-square-2.svg +0 -4
  843. package/tailwind-icons/key-square.svg +0 -4
  844. package/tailwind-icons/keyboard.svg +0 -4
  845. package/tailwind-icons/kick-scooter.svg +0 -4
  846. package/tailwind-icons/ladle.svg +0 -4
  847. package/tailwind-icons/lamp.svg +0 -4
  848. package/tailwind-icons/laptop-2.svg +0 -4
  849. package/tailwind-icons/laptop-3.svg +0 -4
  850. package/tailwind-icons/laptop-minimalistic.svg +0 -4
  851. package/tailwind-icons/laptop.svg +0 -4
  852. package/tailwind-icons/layers-minimalistic.svg +0 -4
  853. package/tailwind-icons/layers.svg +0 -4
  854. package/tailwind-icons/leaf.svg +0 -4
  855. package/tailwind-icons/letter-opened.svg +0 -4
  856. package/tailwind-icons/letter-unread.svg +0 -4
  857. package/tailwind-icons/letter.svg +0 -4
  858. package/tailwind-icons/library.svg +0 -4
  859. package/tailwind-icons/lightbulb-bolt.svg +0 -4
  860. package/tailwind-icons/lightbulb-minimalistic.svg +0 -4
  861. package/tailwind-icons/lightbulb.svg +0 -4
  862. package/tailwind-icons/lightning.svg +0 -4
  863. package/tailwind-icons/like.svg +0 -4
  864. package/tailwind-icons/link-broken-minimalistic.svg +0 -4
  865. package/tailwind-icons/link-broken.svg +0 -4
  866. package/tailwind-icons/link-circle.svg +0 -4
  867. package/tailwind-icons/link-minimalistic-2.svg +0 -4
  868. package/tailwind-icons/link-minimalistic.svg +0 -4
  869. package/tailwind-icons/link-round-angle.svg +0 -4
  870. package/tailwind-icons/link-round.svg +0 -4
  871. package/tailwind-icons/link-square.svg +0 -4
  872. package/tailwind-icons/list-arrow-down-minimalistic.svg +0 -4
  873. package/tailwind-icons/list-arrow-down.svg +0 -4
  874. package/tailwind-icons/list-arrow-up-minimalistic.svg +0 -4
  875. package/tailwind-icons/list-arrow-up.svg +0 -4
  876. package/tailwind-icons/list-check-minimalistic.svg +0 -4
  877. package/tailwind-icons/list-check.svg +0 -4
  878. package/tailwind-icons/list-cross-minimalistic.svg +0 -4
  879. package/tailwind-icons/list-cross.svg +0 -4
  880. package/tailwind-icons/list-down-minimalistic.svg +0 -4
  881. package/tailwind-icons/list-down.svg +0 -4
  882. package/tailwind-icons/list-heart-minimalistic.svg +0 -4
  883. package/tailwind-icons/list-heart.svg +0 -4
  884. package/tailwind-icons/list-up-minimalistic.svg +0 -4
  885. package/tailwind-icons/list-up.svg +0 -4
  886. package/tailwind-icons/list.svg +0 -4
  887. package/tailwind-icons/lock-keyhole-minimalistic-unlocked.svg +0 -4
  888. package/tailwind-icons/lock-keyhole-minimalistic.svg +0 -4
  889. package/tailwind-icons/lock-keyhole-unlocked.svg +0 -4
  890. package/tailwind-icons/lock-keyhole.svg +0 -4
  891. package/tailwind-icons/lock-password-unlocked.svg +0 -4
  892. package/tailwind-icons/lock-password.svg +0 -4
  893. package/tailwind-icons/lock-unlocked.svg +0 -4
  894. package/tailwind-icons/lock.svg +0 -4
  895. package/tailwind-icons/login-2.svg +0 -4
  896. package/tailwind-icons/login-3.svg +0 -4
  897. package/tailwind-icons/login.svg +0 -4
  898. package/tailwind-icons/logout-2.svg +0 -4
  899. package/tailwind-icons/logout-3.svg +0 -4
  900. package/tailwind-icons/logout.svg +0 -4
  901. package/tailwind-icons/magic-stick-2.svg +0 -4
  902. package/tailwind-icons/magic-stick-3.svg +0 -4
  903. package/tailwind-icons/magic-stick.svg +0 -4
  904. package/tailwind-icons/magnet-wave.svg +0 -4
  905. package/tailwind-icons/magnet.svg +0 -4
  906. package/tailwind-icons/magnifer-bug.svg +0 -4
  907. package/tailwind-icons/magnifer-zoom-in.svg +0 -4
  908. package/tailwind-icons/magnifer-zoom-out.svg +0 -4
  909. package/tailwind-icons/magnifer.svg +0 -4
  910. package/tailwind-icons/mailbox.svg +0 -4
  911. package/tailwind-icons/map-arrow-down.svg +0 -4
  912. package/tailwind-icons/map-arrow-left.svg +0 -4
  913. package/tailwind-icons/map-arrow-right.svg +0 -4
  914. package/tailwind-icons/map-arrow-square.svg +0 -4
  915. package/tailwind-icons/map-arrow-up.svg +0 -4
  916. package/tailwind-icons/map-point-add.svg +0 -4
  917. package/tailwind-icons/map-point-favourite.svg +0 -4
  918. package/tailwind-icons/map-point-hospital.svg +0 -4
  919. package/tailwind-icons/map-point-remove.svg +0 -4
  920. package/tailwind-icons/map-point-rotate.svg +0 -4
  921. package/tailwind-icons/map-point-school.svg +0 -4
  922. package/tailwind-icons/map-point-search.svg +0 -4
  923. package/tailwind-icons/map-point-wave.svg +0 -4
  924. package/tailwind-icons/map-point.svg +0 -4
  925. package/tailwind-icons/mask-happly.svg +0 -4
  926. package/tailwind-icons/mask-sad.svg +0 -4
  927. package/tailwind-icons/masks.svg +0 -4
  928. package/tailwind-icons/maximize-square-2.svg +0 -4
  929. package/tailwind-icons/maximize-square-3.svg +0 -4
  930. package/tailwind-icons/maximize-square-minimalistic.svg +0 -4
  931. package/tailwind-icons/maximize-square.svg +0 -4
  932. package/tailwind-icons/maximize.svg +0 -4
  933. package/tailwind-icons/medal-ribbon-star.svg +0 -4
  934. package/tailwind-icons/medal-ribbon.svg +0 -4
  935. package/tailwind-icons/medal-ribbons-star.svg +0 -4
  936. package/tailwind-icons/medal-star-circle.svg +0 -4
  937. package/tailwind-icons/medal-star-square.svg +0 -4
  938. package/tailwind-icons/medal-star.svg +0 -4
  939. package/tailwind-icons/medical-kit.svg +0 -4
  940. package/tailwind-icons/meditation-round.svg +0 -4
  941. package/tailwind-icons/meditation.svg +0 -4
  942. package/tailwind-icons/men.svg +0 -4
  943. package/tailwind-icons/mention-circle.svg +0 -4
  944. package/tailwind-icons/mention-square.svg +0 -4
  945. package/tailwind-icons/menu-dots-circle.svg +0 -4
  946. package/tailwind-icons/menu-dots-square.svg +0 -4
  947. package/tailwind-icons/menu-dots.svg +0 -4
  948. package/tailwind-icons/microphone-2.svg +0 -4
  949. package/tailwind-icons/microphone-3.svg +0 -4
  950. package/tailwind-icons/microphone-large.svg +0 -4
  951. package/tailwind-icons/minimalistic-magnifer-bug.svg +0 -4
  952. package/tailwind-icons/minimalistic-magnifer-zoom-in.svg +0 -4
  953. package/tailwind-icons/minimalistic-magnifer-zoom-out.svg +0 -4
  954. package/tailwind-icons/minimalistic-magnifer.svg +0 -4
  955. package/tailwind-icons/minimize-square-2.svg +0 -4
  956. package/tailwind-icons/minimize-square-3.svg +0 -4
  957. package/tailwind-icons/minimize-square-minimalistic.svg +0 -4
  958. package/tailwind-icons/minimize-square.svg +0 -4
  959. package/tailwind-icons/minimize.svg +0 -4
  960. package/tailwind-icons/minus-square.svg +0 -4
  961. package/tailwind-icons/mirror-left.svg +0 -4
  962. package/tailwind-icons/mirror-right.svg +0 -4
  963. package/tailwind-icons/mirror.svg +0 -4
  964. package/tailwind-icons/money-bag.svg +0 -4
  965. package/tailwind-icons/monitor-camera.svg +0 -4
  966. package/tailwind-icons/monitor-smartphone.svg +0 -4
  967. package/tailwind-icons/monitor.svg +0 -4
  968. package/tailwind-icons/moon-fog.svg +0 -4
  969. package/tailwind-icons/moon-sleep.svg +0 -4
  970. package/tailwind-icons/moon-stars.svg +0 -4
  971. package/tailwind-icons/mouse-circle.svg +0 -4
  972. package/tailwind-icons/mouse-minimalistic.svg +0 -4
  973. package/tailwind-icons/mouse.svg +0 -4
  974. package/tailwind-icons/move-to-folder.svg +0 -4
  975. package/tailwind-icons/multiple-forward-left.svg +0 -4
  976. package/tailwind-icons/multiple-forward-right.svg +0 -4
  977. package/tailwind-icons/music-library-2.svg +0 -4
  978. package/tailwind-icons/music-library.svg +0 -4
  979. package/tailwind-icons/music-note-2.svg +0 -4
  980. package/tailwind-icons/music-note-3.svg +0 -4
  981. package/tailwind-icons/music-note-4.svg +0 -4
  982. package/tailwind-icons/music-note-slider-2.svg +0 -4
  983. package/tailwind-icons/music-note-slider.svg +0 -4
  984. package/tailwind-icons/music-note.svg +0 -4
  985. package/tailwind-icons/music-notes.svg +0 -4
  986. package/tailwind-icons/muted.svg +0 -4
  987. package/tailwind-icons/notebook-bookmark.svg +0 -4
  988. package/tailwind-icons/notebook-minimalistic.svg +0 -4
  989. package/tailwind-icons/notebook-square.svg +0 -4
  990. package/tailwind-icons/notebook.svg +0 -4
  991. package/tailwind-icons/notes-minimalistic.svg +0 -4
  992. package/tailwind-icons/notes.svg +0 -4
  993. package/tailwind-icons/notification-lines-remove.svg +0 -4
  994. package/tailwind-icons/notification-remove.svg +0 -4
  995. package/tailwind-icons/notification-unread-lines.svg +0 -4
  996. package/tailwind-icons/notification-unread.svg +0 -4
  997. package/tailwind-icons/object-scan.svg +0 -4
  998. package/tailwind-icons/outgoing-call-rounded.svg +0 -4
  999. package/tailwind-icons/outgoing-call.svg +0 -4
  1000. package/tailwind-icons/oven-mitts-minimalistic.svg +0 -4
  1001. package/tailwind-icons/oven-mitts.svg +0 -4
  1002. package/tailwind-icons/paint-roller.svg +0 -4
  1003. package/tailwind-icons/palette-round.svg +0 -4
  1004. package/tailwind-icons/palette.svg +0 -4
  1005. package/tailwind-icons/pallete-2.svg +0 -4
  1006. package/tailwind-icons/panorama.svg +0 -4
  1007. package/tailwind-icons/paper-bin.svg +0 -4
  1008. package/tailwind-icons/paperclip-2.svg +0 -4
  1009. package/tailwind-icons/paperclip-rounded-2.svg +0 -4
  1010. package/tailwind-icons/paperclip-rounded.svg +0 -4
  1011. package/tailwind-icons/paperclip.svg +0 -4
  1012. package/tailwind-icons/paragraph-spacing.svg +0 -4
  1013. package/tailwind-icons/passport-minimalistic.svg +0 -4
  1014. package/tailwind-icons/passport.svg +0 -4
  1015. package/tailwind-icons/password-minimalistic-input.svg +0 -4
  1016. package/tailwind-icons/password-minimalistic.svg +0 -4
  1017. package/tailwind-icons/password.svg +0 -4
  1018. package/tailwind-icons/paw.svg +0 -4
  1019. package/tailwind-icons/pen-2.svg +0 -4
  1020. package/tailwind-icons/pen-new-round.svg +0 -4
  1021. package/tailwind-icons/pen-new-square.svg +0 -4
  1022. package/tailwind-icons/pen.svg +0 -4
  1023. package/tailwind-icons/people-nearby.svg +0 -4
  1024. package/tailwind-icons/perfume.svg +0 -4
  1025. package/tailwind-icons/phone-calling-rounded.svg +0 -4
  1026. package/tailwind-icons/phone-calling.svg +0 -4
  1027. package/tailwind-icons/phone-rounded.svg +0 -4
  1028. package/tailwind-icons/pie-chart-2.svg +0 -4
  1029. package/tailwind-icons/pie-chart-3.svg +0 -4
  1030. package/tailwind-icons/pie-chart.svg +0 -4
  1031. package/tailwind-icons/pill.svg +0 -4
  1032. package/tailwind-icons/pills-2.svg +0 -4
  1033. package/tailwind-icons/pills-3.svg +0 -4
  1034. package/tailwind-icons/pills.svg +0 -4
  1035. package/tailwind-icons/pin-circle.svg +0 -4
  1036. package/tailwind-icons/pin-list.svg +0 -4
  1037. package/tailwind-icons/pin.svg +0 -4
  1038. package/tailwind-icons/pip-2.svg +0 -4
  1039. package/tailwind-icons/pip.svg +0 -4
  1040. package/tailwind-icons/pipette.svg +0 -4
  1041. package/tailwind-icons/plaaylist-minimalistic.svg +0 -4
  1042. package/tailwind-icons/plain-2.svg +0 -4
  1043. package/tailwind-icons/plain-3.svg +0 -4
  1044. package/tailwind-icons/plain.svg +0 -4
  1045. package/tailwind-icons/planet-2.svg +0 -4
  1046. package/tailwind-icons/planet-3.svg +0 -4
  1047. package/tailwind-icons/planet-4.svg +0 -4
  1048. package/tailwind-icons/planet.svg +0 -4
  1049. package/tailwind-icons/plate.svg +0 -4
  1050. package/tailwind-icons/play-stream.svg +0 -4
  1051. package/tailwind-icons/playback-speed.svg +0 -4
  1052. package/tailwind-icons/playlist-2.svg +0 -4
  1053. package/tailwind-icons/playlist-minimalistic-2.svg +0 -4
  1054. package/tailwind-icons/playlist-minimalistic-3.svg +0 -4
  1055. package/tailwind-icons/playlist.svg +0 -4
  1056. package/tailwind-icons/plug-circle.svg +0 -4
  1057. package/tailwind-icons/plus-minus.svg +0 -4
  1058. package/tailwind-icons/podcast.svg +0 -4
  1059. package/tailwind-icons/point-on-map-perspective.svg +0 -4
  1060. package/tailwind-icons/point-on-map.svg +0 -4
  1061. package/tailwind-icons/posts-carousel-horizontal.svg +0 -4
  1062. package/tailwind-icons/posts-carousel-vertical.svg +0 -4
  1063. package/tailwind-icons/presentation-graph.svg +0 -4
  1064. package/tailwind-icons/printer-2.svg +0 -4
  1065. package/tailwind-icons/printer-minimalistic.svg +0 -4
  1066. package/tailwind-icons/programming.svg +0 -4
  1067. package/tailwind-icons/projector.svg +0 -4
  1068. package/tailwind-icons/pulse-2.svg +0 -4
  1069. package/tailwind-icons/pulse.svg +0 -4
  1070. package/tailwind-icons/question-circle.svg +0 -4
  1071. package/tailwind-icons/question-square.svg +0 -4
  1072. package/tailwind-icons/quit-full-screen-circle.svg +0 -4
  1073. package/tailwind-icons/quit-full-screen-square.svg +0 -4
  1074. package/tailwind-icons/quit-full-screen.svg +0 -4
  1075. package/tailwind-icons/quit-pip.svg +0 -4
  1076. package/tailwind-icons/radar-2.svg +0 -4
  1077. package/tailwind-icons/radar.svg +0 -4
  1078. package/tailwind-icons/radial-blur.svg +0 -4
  1079. package/tailwind-icons/radio-minimalistic.svg +0 -4
  1080. package/tailwind-icons/ranking.svg +0 -4
  1081. package/tailwind-icons/recive-square.svg +0 -4
  1082. package/tailwind-icons/recive-twice-square.svg +0 -4
  1083. package/tailwind-icons/record-circle.svg +0 -4
  1084. package/tailwind-icons/record-minimalistic.svg +0 -4
  1085. package/tailwind-icons/record-square.svg +0 -4
  1086. package/tailwind-icons/record.svg +0 -4
  1087. package/tailwind-icons/reel-2.svg +0 -4
  1088. package/tailwind-icons/reel.svg +0 -4
  1089. package/tailwind-icons/refresh-circle.svg +0 -4
  1090. package/tailwind-icons/refresh-square.svg +0 -4
  1091. package/tailwind-icons/refresh.svg +0 -4
  1092. package/tailwind-icons/remote-controller-2.svg +0 -4
  1093. package/tailwind-icons/remote-controller-minimalistic.svg +0 -4
  1094. package/tailwind-icons/remote-controller.svg +0 -4
  1095. package/tailwind-icons/remove-folder.svg +0 -4
  1096. package/tailwind-icons/reorder.svg +0 -4
  1097. package/tailwind-icons/repeat-one-minimalistic.svg +0 -4
  1098. package/tailwind-icons/repeat-one.svg +0 -4
  1099. package/tailwind-icons/repeat.svg +0 -4
  1100. package/tailwind-icons/reply-2.svg +0 -4
  1101. package/tailwind-icons/reply.svg +0 -4
  1102. package/tailwind-icons/restart-circle.svg +0 -4
  1103. package/tailwind-icons/restart-square.svg +0 -4
  1104. package/tailwind-icons/restart.svg +0 -4
  1105. package/tailwind-icons/revote.svg +0 -4
  1106. package/tailwind-icons/rewind-10-seconds-back.svg +0 -4
  1107. package/tailwind-icons/rewind-10-seconds-forward.svg +0 -4
  1108. package/tailwind-icons/rewind-15-seconds-back.svg +0 -4
  1109. package/tailwind-icons/rewind-15-seconds-forward.svg +0 -4
  1110. package/tailwind-icons/rewind-5-seconds-back.svg +0 -4
  1111. package/tailwind-icons/rewind-5-seconds-forward.svg +0 -4
  1112. package/tailwind-icons/rewind-back-circle.svg +0 -4
  1113. package/tailwind-icons/rewind-back.svg +0 -4
  1114. package/tailwind-icons/rewind-forward-circle.svg +0 -4
  1115. package/tailwind-icons/rewind-forward.svg +0 -4
  1116. package/tailwind-icons/rocket-2.svg +0 -4
  1117. package/tailwind-icons/rocket.svg +0 -4
  1118. package/tailwind-icons/rolling-pin.svg +0 -4
  1119. package/tailwind-icons/round-alt-arrow-down.svg +0 -4
  1120. package/tailwind-icons/round-alt-arrow-left.svg +0 -4
  1121. package/tailwind-icons/round-alt-arrow-right.svg +0 -4
  1122. package/tailwind-icons/round-alt-arrow-up.svg +0 -4
  1123. package/tailwind-icons/round-arrow-down.svg +0 -4
  1124. package/tailwind-icons/round-arrow-left-down.svg +0 -4
  1125. package/tailwind-icons/round-arrow-left-up.svg +0 -4
  1126. package/tailwind-icons/round-arrow-left.svg +0 -4
  1127. package/tailwind-icons/round-arrow-right-down.svg +0 -4
  1128. package/tailwind-icons/round-arrow-right-up.svg +0 -4
  1129. package/tailwind-icons/round-arrow-right.svg +0 -4
  1130. package/tailwind-icons/round-arrow-up.svg +0 -4
  1131. package/tailwind-icons/round-double-alt-arrow-down.svg +0 -4
  1132. package/tailwind-icons/round-double-alt-arrow-left.svg +0 -4
  1133. package/tailwind-icons/round-double-alt-arrow-right.svg +0 -4
  1134. package/tailwind-icons/round-double-alt-arrow-up.svg +0 -4
  1135. package/tailwind-icons/round-graph.svg +0 -4
  1136. package/tailwind-icons/round-sort-horizontal.svg +0 -4
  1137. package/tailwind-icons/round-sort-vertical.svg +0 -4
  1138. package/tailwind-icons/round-transfer-diagonal.svg +0 -4
  1139. package/tailwind-icons/round-transfer-horizontal.svg +0 -4
  1140. package/tailwind-icons/round-transfer-vertical.svg +0 -4
  1141. package/tailwind-icons/rounded-magnifer-bug.svg +0 -4
  1142. package/tailwind-icons/rounded-magnifer-zoom-in.svg +0 -4
  1143. package/tailwind-icons/rounded-magnifer-zoom-out.svg +0 -4
  1144. package/tailwind-icons/rounded-magnifer.svg +0 -4
  1145. package/tailwind-icons/route.svg +0 -4
  1146. package/tailwind-icons/routing-2.svg +0 -4
  1147. package/tailwind-icons/routing-3.svg +0 -4
  1148. package/tailwind-icons/routing.svg +0 -4
  1149. package/tailwind-icons/ruble.svg +0 -4
  1150. package/tailwind-icons/rugby.svg +0 -4
  1151. package/tailwind-icons/ruler-angular.svg +0 -4
  1152. package/tailwind-icons/ruler-cross-pen.svg +0 -4
  1153. package/tailwind-icons/ruler-pen.svg +0 -4
  1154. package/tailwind-icons/ruler.svg +0 -4
  1155. package/tailwind-icons/running-2.svg +0 -4
  1156. package/tailwind-icons/running-round.svg +0 -4
  1157. package/tailwind-icons/running.svg +0 -4
  1158. package/tailwind-icons/sad-circle.svg +0 -4
  1159. package/tailwind-icons/sad-square.svg +0 -4
  1160. package/tailwind-icons/safe-2.svg +0 -4
  1161. package/tailwind-icons/safe-circle.svg +0 -4
  1162. package/tailwind-icons/safe-square.svg +0 -4
  1163. package/tailwind-icons/sale-square.svg +0 -4
  1164. package/tailwind-icons/sale.svg +0 -4
  1165. package/tailwind-icons/satellite.svg +0 -4
  1166. package/tailwind-icons/scanner-2.svg +0 -4
  1167. package/tailwind-icons/scanner.svg +0 -4
  1168. package/tailwind-icons/scissors-square.svg +0 -4
  1169. package/tailwind-icons/scooter.svg +0 -4
  1170. package/tailwind-icons/screen-share.svg +0 -4
  1171. package/tailwind-icons/screencast-2.svg +0 -4
  1172. package/tailwind-icons/screencast.svg +0 -4
  1173. package/tailwind-icons/sd-card.svg +0 -4
  1174. package/tailwind-icons/send-square.svg +0 -4
  1175. package/tailwind-icons/send-twice-square.svg +0 -4
  1176. package/tailwind-icons/server-2.svg +0 -4
  1177. package/tailwind-icons/server-minimalistic.svg +0 -4
  1178. package/tailwind-icons/server-path.svg +0 -4
  1179. package/tailwind-icons/server-square-cloud.svg +0 -4
  1180. package/tailwind-icons/server-square-update.svg +0 -4
  1181. package/tailwind-icons/server-square.svg +0 -4
  1182. package/tailwind-icons/settings-minimalistic.svg +0 -4
  1183. package/tailwind-icons/settings.svg +0 -4
  1184. package/tailwind-icons/share-circle.svg +0 -4
  1185. package/tailwind-icons/shield-cross.svg +0 -4
  1186. package/tailwind-icons/shield-keyhole-minimalistic.svg +0 -4
  1187. package/tailwind-icons/shield-keyhole.svg +0 -4
  1188. package/tailwind-icons/shield-minimalistic.svg +0 -4
  1189. package/tailwind-icons/shield-minus.svg +0 -4
  1190. package/tailwind-icons/shield-network.svg +0 -4
  1191. package/tailwind-icons/shield-plus.svg +0 -4
  1192. package/tailwind-icons/shield-star.svg +0 -4
  1193. package/tailwind-icons/shield-up.svg +0 -4
  1194. package/tailwind-icons/shield-user.svg +0 -4
  1195. package/tailwind-icons/shield-warning.svg +0 -4
  1196. package/tailwind-icons/shield.svg +0 -4
  1197. package/tailwind-icons/shock-absorber.svg +0 -4
  1198. package/tailwind-icons/shop-2.svg +0 -4
  1199. package/tailwind-icons/shop-minimalistic.svg +0 -4
  1200. package/tailwind-icons/shop.svg +0 -4
  1201. package/tailwind-icons/shuffle.svg +0 -4
  1202. package/tailwind-icons/sidebar-code.svg +0 -4
  1203. package/tailwind-icons/sidebar-minimalistic.svg +0 -4
  1204. package/tailwind-icons/siderbar.svg +0 -4
  1205. package/tailwind-icons/signpost-2.svg +0 -4
  1206. package/tailwind-icons/signpost.svg +0 -4
  1207. package/tailwind-icons/sim-card-minimalistic.svg +0 -4
  1208. package/tailwind-icons/sim-card.svg +0 -4
  1209. package/tailwind-icons/sim-cards.svg +0 -4
  1210. package/tailwind-icons/siren-rounded.svg +0 -4
  1211. package/tailwind-icons/siren.svg +0 -4
  1212. package/tailwind-icons/skateboard.svg +0 -4
  1213. package/tailwind-icons/skateboarding-round.svg +0 -4
  1214. package/tailwind-icons/skateboarding.svg +0 -4
  1215. package/tailwind-icons/skip-next.svg +0 -4
  1216. package/tailwind-icons/skip-previous.svg +0 -4
  1217. package/tailwind-icons/skirt.svg +0 -4
  1218. package/tailwind-icons/slash-circle.svg +0 -4
  1219. package/tailwind-icons/slash-square.svg +0 -4
  1220. package/tailwind-icons/sledgehammer.svg +0 -4
  1221. package/tailwind-icons/sleeping-circle.svg +0 -4
  1222. package/tailwind-icons/sleeping-square.svg +0 -4
  1223. package/tailwind-icons/sleeping.svg +0 -4
  1224. package/tailwind-icons/slider-horizontal.svg +0 -4
  1225. package/tailwind-icons/slider-minimalistic-horizontal.svg +0 -4
  1226. package/tailwind-icons/slider-vertical-minimalistic.svg +0 -4
  1227. package/tailwind-icons/slider-vertical.svg +0 -4
  1228. package/tailwind-icons/smart-home-angle.svg +0 -4
  1229. package/tailwind-icons/smart-home.svg +0 -4
  1230. package/tailwind-icons/smart-speaker-2.svg +0 -4
  1231. package/tailwind-icons/smart-speaker-minimalistic.svg +0 -4
  1232. package/tailwind-icons/smart-speaker.svg +0 -4
  1233. package/tailwind-icons/smart-vacuum-cleaner-2.svg +0 -4
  1234. package/tailwind-icons/smart-vacuum-cleaner.svg +0 -4
  1235. package/tailwind-icons/smartphone-2.svg +0 -4
  1236. package/tailwind-icons/smartphone-rotate-2.svg +0 -4
  1237. package/tailwind-icons/smartphone-rotate-angle.svg +0 -4
  1238. package/tailwind-icons/smartphone-rotate-orientation.svg +0 -4
  1239. package/tailwind-icons/smartphone-update.svg +0 -4
  1240. package/tailwind-icons/smartphone-vibration.svg +0 -4
  1241. package/tailwind-icons/smartphone.svg +0 -4
  1242. package/tailwind-icons/smile-circle.svg +0 -4
  1243. package/tailwind-icons/smile-square.svg +0 -4
  1244. package/tailwind-icons/snowflake.svg +0 -4
  1245. package/tailwind-icons/socket.svg +0 -4
  1246. package/tailwind-icons/sofa-2.svg +0 -4
  1247. package/tailwind-icons/sofa-3.svg +0 -4
  1248. package/tailwind-icons/sofa.svg +0 -4
  1249. package/tailwind-icons/sort-by-alphabet.svg +0 -4
  1250. package/tailwind-icons/sort-by-time.svg +0 -4
  1251. package/tailwind-icons/sort-from-bottom-to-top.svg +0 -4
  1252. package/tailwind-icons/sort-from-top-to-bottom.svg +0 -4
  1253. package/tailwind-icons/sort-horizontal.svg +0 -4
  1254. package/tailwind-icons/sort-vertical.svg +0 -4
  1255. package/tailwind-icons/sort.svg +0 -4
  1256. package/tailwind-icons/soundwave-circle.svg +0 -4
  1257. package/tailwind-icons/soundwave-square.svg +0 -4
  1258. package/tailwind-icons/soundwave.svg +0 -4
  1259. package/tailwind-icons/speaker-minimalistic.svg +0 -4
  1260. package/tailwind-icons/speaker.svg +0 -4
  1261. package/tailwind-icons/special-effects.svg +0 -4
  1262. package/tailwind-icons/spedometer-low.svg +0 -4
  1263. package/tailwind-icons/spedometer-max.svg +0 -4
  1264. package/tailwind-icons/spedometer-middle.svg +0 -4
  1265. package/tailwind-icons/square-academic-cap-2.svg +0 -4
  1266. package/tailwind-icons/square-academic-cap.svg +0 -4
  1267. package/tailwind-icons/square-alt-arrow-down.svg +0 -4
  1268. package/tailwind-icons/square-alt-arrow-left.svg +0 -4
  1269. package/tailwind-icons/square-alt-arrow-right.svg +0 -4
  1270. package/tailwind-icons/square-alt-arrow-up.svg +0 -4
  1271. package/tailwind-icons/square-arrow-down.svg +0 -4
  1272. package/tailwind-icons/square-arrow-left-down.svg +0 -4
  1273. package/tailwind-icons/square-arrow-left-up.svg +0 -4
  1274. package/tailwind-icons/square-arrow-left.svg +0 -4
  1275. package/tailwind-icons/square-arrow-right-down.svg +0 -4
  1276. package/tailwind-icons/square-arrow-right-up.svg +0 -4
  1277. package/tailwind-icons/square-arrow-right.svg +0 -4
  1278. package/tailwind-icons/square-arrow-up.svg +0 -4
  1279. package/tailwind-icons/square-bottom-down.svg +0 -4
  1280. package/tailwind-icons/square-bottom-up.svg +0 -4
  1281. package/tailwind-icons/square-double-alt-arrow-down.svg +0 -4
  1282. package/tailwind-icons/square-double-alt-arrow-left.svg +0 -4
  1283. package/tailwind-icons/square-double-alt-arrow-right.svg +0 -4
  1284. package/tailwind-icons/square-double-alt-arrow-up.svg +0 -4
  1285. package/tailwind-icons/square-forward.svg +0 -4
  1286. package/tailwind-icons/square-share-line.svg +0 -4
  1287. package/tailwind-icons/square-sort-horizontal.svg +0 -4
  1288. package/tailwind-icons/square-sort-vertical.svg +0 -4
  1289. package/tailwind-icons/square-top-down.svg +0 -4
  1290. package/tailwind-icons/square-top-up.svg +0 -4
  1291. package/tailwind-icons/square-transfer-horizontal.svg +0 -4
  1292. package/tailwind-icons/square-transfer-vertical.svg +0 -4
  1293. package/tailwind-icons/ssd-round.svg +0 -4
  1294. package/tailwind-icons/ssd-square.svg +0 -4
  1295. package/tailwind-icons/star-angle.svg +0 -4
  1296. package/tailwind-icons/star-circle.svg +0 -4
  1297. package/tailwind-icons/star-fall-2.svg +0 -4
  1298. package/tailwind-icons/star-fall-minimalistic-2.svg +0 -4
  1299. package/tailwind-icons/star-fall-minimalistic.svg +0 -4
  1300. package/tailwind-icons/star-fall.svg +0 -4
  1301. package/tailwind-icons/star-rainbow.svg +0 -4
  1302. package/tailwind-icons/star-ring.svg +0 -4
  1303. package/tailwind-icons/star-rings.svg +0 -4
  1304. package/tailwind-icons/star-shine.svg +0 -4
  1305. package/tailwind-icons/stars-line.svg +0 -4
  1306. package/tailwind-icons/stars-minimalistic.svg +0 -4
  1307. package/tailwind-icons/stars.svg +0 -4
  1308. package/tailwind-icons/station-minimalistic.svg +0 -4
  1309. package/tailwind-icons/station.svg +0 -4
  1310. package/tailwind-icons/stethoscope.svg +0 -4
  1311. package/tailwind-icons/sticker-circle.svg +0 -4
  1312. package/tailwind-icons/sticker-smile-circle-2.svg +0 -4
  1313. package/tailwind-icons/sticker-smile-circle.svg +0 -4
  1314. package/tailwind-icons/sticker-smile-square.svg +0 -4
  1315. package/tailwind-icons/sticker-square.svg +0 -4
  1316. package/tailwind-icons/stopwatch-pause.svg +0 -4
  1317. package/tailwind-icons/stopwatch-play.svg +0 -4
  1318. package/tailwind-icons/stopwatch.svg +0 -4
  1319. package/tailwind-icons/stream.svg +0 -4
  1320. package/tailwind-icons/streets-map-point.svg +0 -4
  1321. package/tailwind-icons/streets-navigation.svg +0 -4
  1322. package/tailwind-icons/streets.svg +0 -4
  1323. package/tailwind-icons/stretching-round.svg +0 -4
  1324. package/tailwind-icons/stretching.svg +0 -4
  1325. package/tailwind-icons/structure.svg +0 -4
  1326. package/tailwind-icons/subtitles.svg +0 -4
  1327. package/tailwind-icons/suitcase-lines.svg +0 -4
  1328. package/tailwind-icons/suitcase-tag.svg +0 -4
  1329. package/tailwind-icons/suitcase.svg +0 -4
  1330. package/tailwind-icons/sun-2.svg +0 -4
  1331. package/tailwind-icons/sun-fog.svg +0 -4
  1332. package/tailwind-icons/sunrise.svg +0 -4
  1333. package/tailwind-icons/sunset.svg +0 -4
  1334. package/tailwind-icons/suspension-bolt.svg +0 -4
  1335. package/tailwind-icons/suspension-cross.svg +0 -4
  1336. package/tailwind-icons/suspension.svg +0 -4
  1337. package/tailwind-icons/swimming.svg +0 -4
  1338. package/tailwind-icons/syringe.svg +0 -4
  1339. package/tailwind-icons/t-shirt.svg +0 -4
  1340. package/tailwind-icons/tablet.svg +0 -4
  1341. package/tailwind-icons/tag-horizontal.svg +0 -4
  1342. package/tailwind-icons/tag-price.svg +0 -4
  1343. package/tailwind-icons/target.svg +0 -4
  1344. package/tailwind-icons/tea-cup.svg +0 -4
  1345. package/tailwind-icons/telescope.svg +0 -4
  1346. package/tailwind-icons/temperature.svg +0 -4
  1347. package/tailwind-icons/tennis-2.svg +0 -4
  1348. package/tailwind-icons/tennis.svg +0 -4
  1349. package/tailwind-icons/test-tube-minimalistic.svg +0 -4
  1350. package/tailwind-icons/test-tube.svg +0 -4
  1351. package/tailwind-icons/text-bold-circle.svg +0 -4
  1352. package/tailwind-icons/text-bold-square.svg +0 -4
  1353. package/tailwind-icons/text-bold.svg +0 -4
  1354. package/tailwind-icons/text-circle.svg +0 -4
  1355. package/tailwind-icons/text-cross-circle.svg +0 -4
  1356. package/tailwind-icons/text-cross-square.svg +0 -4
  1357. package/tailwind-icons/text-cross.svg +0 -4
  1358. package/tailwind-icons/text-field-focus.svg +0 -4
  1359. package/tailwind-icons/text-field.svg +0 -4
  1360. package/tailwind-icons/text-italic-circle.svg +0 -4
  1361. package/tailwind-icons/text-italic-square.svg +0 -4
  1362. package/tailwind-icons/text-italic.svg +0 -4
  1363. package/tailwind-icons/text-selection.svg +0 -4
  1364. package/tailwind-icons/text-square-2.svg +0 -4
  1365. package/tailwind-icons/text-square.svg +0 -4
  1366. package/tailwind-icons/text-underline-circle.svg +0 -4
  1367. package/tailwind-icons/text-underline-cross.svg +0 -4
  1368. package/tailwind-icons/text-underline.svg +0 -4
  1369. package/tailwind-icons/text.svg +0 -4
  1370. package/tailwind-icons/thermometer.svg +0 -4
  1371. package/tailwind-icons/three-squares.svg +0 -4
  1372. package/tailwind-icons/ticker-star.svg +0 -4
  1373. package/tailwind-icons/ticket-sale.svg +0 -4
  1374. package/tailwind-icons/to-pip.svg +0 -4
  1375. package/tailwind-icons/tornado-small.svg +0 -4
  1376. package/tailwind-icons/tornado.svg +0 -4
  1377. package/tailwind-icons/traffic-economy.svg +0 -4
  1378. package/tailwind-icons/traffic.svg +0 -4
  1379. package/tailwind-icons/tram.svg +0 -4
  1380. package/tailwind-icons/transfer-horizontal.svg +0 -4
  1381. package/tailwind-icons/transfer-vertical.svg +0 -4
  1382. package/tailwind-icons/translation-2.svg +0 -4
  1383. package/tailwind-icons/translation.svg +0 -4
  1384. package/tailwind-icons/transmission-circle.svg +0 -4
  1385. package/tailwind-icons/transmission-square.svg +0 -4
  1386. package/tailwind-icons/transmission.svg +0 -4
  1387. package/tailwind-icons/trash-bin-2.svg +0 -4
  1388. package/tailwind-icons/trash-bin-minimalistic-2.svg +0 -4
  1389. package/tailwind-icons/trash-bin-minimalistic.svg +0 -4
  1390. package/tailwind-icons/trash-bin-trash.svg +0 -4
  1391. package/tailwind-icons/treadmill-round.svg +0 -4
  1392. package/tailwind-icons/treadmill.svg +0 -4
  1393. package/tailwind-icons/trellis.svg +0 -4
  1394. package/tailwind-icons/tuning-2.svg +0 -4
  1395. package/tailwind-icons/tuning-3.svg +0 -4
  1396. package/tailwind-icons/tuning-4.svg +0 -4
  1397. package/tailwind-icons/tuning-square-2.svg +0 -4
  1398. package/tailwind-icons/tuning-square.svg +0 -4
  1399. package/tailwind-icons/tuning.svg +0 -4
  1400. package/tailwind-icons/turntable-minimalistic.svg +0 -4
  1401. package/tailwind-icons/turntable-music-note.svg +0 -4
  1402. package/tailwind-icons/turntable.svg +0 -4
  1403. package/tailwind-icons/ufo-2.svg +0 -4
  1404. package/tailwind-icons/ufo-3.svg +0 -4
  1405. package/tailwind-icons/ufo.svg +0 -4
  1406. package/tailwind-icons/umbrella.svg +0 -4
  1407. package/tailwind-icons/undo-left-round-square.svg +0 -4
  1408. package/tailwind-icons/undo-left-round.svg +0 -4
  1409. package/tailwind-icons/undo-left-square.svg +0 -4
  1410. package/tailwind-icons/undo-left.svg +0 -4
  1411. package/tailwind-icons/undo-right-round-square.svg +0 -4
  1412. package/tailwind-icons/undo-right-round.svg +0 -4
  1413. package/tailwind-icons/undo-right-square.svg +0 -4
  1414. package/tailwind-icons/undo-right.svg +0 -4
  1415. package/tailwind-icons/unread.svg +0 -4
  1416. package/tailwind-icons/upload-minimalistic.svg +0 -4
  1417. package/tailwind-icons/upload-square.svg +0 -4
  1418. package/tailwind-icons/upload-track-2.svg +0 -4
  1419. package/tailwind-icons/upload-track.svg +0 -4
  1420. package/tailwind-icons/upload-twice-square.svg +0 -4
  1421. package/tailwind-icons/upload.svg +0 -4
  1422. package/tailwind-icons/usb-circle.svg +0 -4
  1423. package/tailwind-icons/usb-square.svg +0 -4
  1424. package/tailwind-icons/usb.svg +0 -4
  1425. package/tailwind-icons/user-block-rounded.svg +0 -4
  1426. package/tailwind-icons/user-block.svg +0 -4
  1427. package/tailwind-icons/user-check-rounded.svg +0 -4
  1428. package/tailwind-icons/user-check.svg +0 -4
  1429. package/tailwind-icons/user-cross-rounded.svg +0 -4
  1430. package/tailwind-icons/user-cross.svg +0 -4
  1431. package/tailwind-icons/user-hand-up.svg +0 -4
  1432. package/tailwind-icons/user-hands.svg +0 -4
  1433. package/tailwind-icons/user-heart-rounded.svg +0 -4
  1434. package/tailwind-icons/user-heart.svg +0 -4
  1435. package/tailwind-icons/user-id.svg +0 -4
  1436. package/tailwind-icons/user-minus-rounded.svg +0 -4
  1437. package/tailwind-icons/user-plus-rounded.svg +0 -4
  1438. package/tailwind-icons/user-rounded.svg +0 -4
  1439. package/tailwind-icons/user-speak-rounded.svg +0 -4
  1440. package/tailwind-icons/user-speak.svg +0 -4
  1441. package/tailwind-icons/users-group-rounded.svg +0 -4
  1442. package/tailwind-icons/users-group-two-rounded.svg +0 -4
  1443. package/tailwind-icons/verified-check.svg +0 -4
  1444. package/tailwind-icons/video-frame-2.svg +0 -4
  1445. package/tailwind-icons/video-frame-cut-2.svg +0 -4
  1446. package/tailwind-icons/video-frame-cut.svg +0 -4
  1447. package/tailwind-icons/video-frame-play-horizontal.svg +0 -4
  1448. package/tailwind-icons/video-frame-play-vertical.svg +0 -4
  1449. package/tailwind-icons/video-frame-replace.svg +0 -4
  1450. package/tailwind-icons/video-frame.svg +0 -4
  1451. package/tailwind-icons/video-library.svg +0 -4
  1452. package/tailwind-icons/videocamera-add.svg +0 -4
  1453. package/tailwind-icons/videocamera-record.svg +0 -4
  1454. package/tailwind-icons/videocamera.svg +0 -4
  1455. package/tailwind-icons/vinyl-record.svg +0 -4
  1456. package/tailwind-icons/vinyl.svg +0 -4
  1457. package/tailwind-icons/virus.svg +0 -4
  1458. package/tailwind-icons/volleyball-2.svg +0 -4
  1459. package/tailwind-icons/volleyball.svg +0 -4
  1460. package/tailwind-icons/volume-cross.svg +0 -4
  1461. package/tailwind-icons/volume-knob.svg +0 -4
  1462. package/tailwind-icons/volume-loud.svg +0 -4
  1463. package/tailwind-icons/volume-small.svg +0 -4
  1464. package/tailwind-icons/volume.svg +0 -4
  1465. package/tailwind-icons/wad-of-money.svg +0 -4
  1466. package/tailwind-icons/walking-round.svg +0 -4
  1467. package/tailwind-icons/walking.svg +0 -4
  1468. package/tailwind-icons/wallet-2.svg +0 -4
  1469. package/tailwind-icons/wallet-money.svg +0 -4
  1470. package/tailwind-icons/wallpaper.svg +0 -4
  1471. package/tailwind-icons/washing-machine-minimalistic.svg +0 -4
  1472. package/tailwind-icons/washing-machine.svg +0 -4
  1473. package/tailwind-icons/watch-round.svg +0 -4
  1474. package/tailwind-icons/watch-square-minimalistic-charge.svg +0 -4
  1475. package/tailwind-icons/watch-square-minimalistic.svg +0 -4
  1476. package/tailwind-icons/watch-square.svg +0 -4
  1477. package/tailwind-icons/water-sun.svg +0 -4
  1478. package/tailwind-icons/water.svg +0 -4
  1479. package/tailwind-icons/waterdrop.svg +0 -4
  1480. package/tailwind-icons/waterdrops.svg +0 -4
  1481. package/tailwind-icons/weigher.svg +0 -4
  1482. package/tailwind-icons/wheel-angle.svg +0 -4
  1483. package/tailwind-icons/wheel.svg +0 -4
  1484. package/tailwind-icons/whisk.svg +0 -4
  1485. package/tailwind-icons/wi-fi-router-minimalistic.svg +0 -4
  1486. package/tailwind-icons/wi-fi-router-round.svg +0 -4
  1487. package/tailwind-icons/wi-fi-router.svg +0 -4
  1488. package/tailwind-icons/widget-2.svg +0 -4
  1489. package/tailwind-icons/widget-3.svg +0 -4
  1490. package/tailwind-icons/widget-4.svg +0 -4
  1491. package/tailwind-icons/widget-5.svg +0 -4
  1492. package/tailwind-icons/widget-6.svg +0 -4
  1493. package/tailwind-icons/widget-add.svg +0 -4
  1494. package/tailwind-icons/widget.svg +0 -4
  1495. package/tailwind-icons/wind.svg +0 -4
  1496. package/tailwind-icons/window-frame.svg +0 -4
  1497. package/tailwind-icons/wineglass-triangle.svg +0 -4
  1498. package/tailwind-icons/wineglass.svg +0 -4
  1499. package/tailwind-icons/winrar.svg +0 -4
  1500. package/tailwind-icons/wireless-charge.svg +0 -4
  1501. package/tailwind-icons/women.svg +0 -4
  1502. package/tailwind-icons/xxx.svg +0 -4
  1503. package/tailwind-icons/zip-file.svg +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"angular-tailwind-components.mjs","sources":["../../../projects/angular-tailwind-components/src/lib/models/types.ts","../../../projects/angular-tailwind-components/src/lib/models/icons.ts","../../../projects/angular-tailwind-components/src/lib/components/tailwind.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.html","../../../projects/angular-tailwind-components/src/lib/directives/tooltip/tooltip.directive.ts","../../../projects/angular-tailwind-components/src/lib/directives/table/tailwind-table-row.directive.ts","../../../projects/angular-tailwind-components/src/lib/directives/table/tailwind-sort-header.directive.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.html","../../../projects/angular-tailwind-components/src/lib/tokens/tokens.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.html","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.ts","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.html","../../../projects/angular-tailwind-components/src/lib/components/textarea/textarea.component.ts","../../../projects/angular-tailwind-components/src/lib/components/textarea/textarea.component.html","../../../projects/angular-tailwind-components/src/lib/components/upload/upload.component.ts","../../../projects/angular-tailwind-components/src/lib/components/upload/upload.component.html","../../../projects/angular-tailwind-components/src/lib/components/input-otp/input-otp.component.ts","../../../projects/angular-tailwind-components/src/lib/components/input-otp/input-otp.component.html","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.ts","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.html","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.html","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.ts","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.html","../../../projects/angular-tailwind-components/src/lib/components/title/title.component.ts","../../../projects/angular-tailwind-components/src/lib/components/title/title.component.html","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.ts","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.html","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.ts","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.html","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.ts","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.html","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.ts","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.html","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.html","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.ts","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.html","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.ts","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.html","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.ts","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.html","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.html","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.ts","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.html","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.html","../../../projects/angular-tailwind-components/src/lib/ref/modal/modal.ref.ts","../../../projects/angular-tailwind-components/src/lib/services/modal/modal.service.ts","../../../projects/angular-tailwind-components/src/lib/services/toast/toast.service.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.html","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.ts","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.html","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.ts","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.html","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.ts","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.html","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.html","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.html","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.ts","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.html","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.html","../../../projects/angular-tailwind-components/src/lib/components/index.ts","../../../projects/angular-tailwind-components/src/public-api.ts","../../../projects/angular-tailwind-components/src/angular-tailwind-components.ts"],"sourcesContent":["/** Common types used across all components */\n\n/** Size variants for components */\nexport type TailwindSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Color variants for buttons and interactive elements */\nexport type TailwindColor = 'primary' | 'secondary' | 'danger' | 'success' | 'warning' | 'info';\n\n/** Button kinds */\nexport type TailwindButtonKind = 'solid' | 'outlined' | 'ghost' | 'text';\n\n/** Alert/feedback color variants */\nexport type TailwindSeverity = 'success' | 'warning' | 'danger' | 'info';\n\n/** Position variants for overlays */\nexport type TailwindPosition = 'top' | 'bottom' | 'left' | 'right';\n\n/** Shape variants */\nexport type TailwindShape = 'rounded' | 'pill' | 'square';\n\n/** Semantic heading level for `TailwindTitle` */\nexport type TailwindTitleTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n/**\n * Pixel width and height for `TailwindIcon`. Intended range **16–64**; values outside it are clamped at runtime.\n */\nexport type TailwindIconSize = number;\n\n/** Option interface for select/radio/checkbox groups */\nexport interface TailwindOption<T = unknown> {\n value: T;\n label: string;\n disabled?: boolean;\n}\n\nexport interface TailwindOptionGroup<T = unknown> extends TailwindOption<T> {\n description?: string;\n}\n\nexport interface TailwindMenuItem {\n label?: string;\n icon?: string;\n disabled?: boolean;\n divider?: boolean;\n value?: string;\n}\n","/**\n * Solar Line Duotone icon names (kebab-case). SVG assets in `public/tailwind-icons/`.\n * Generated by scripts/copy-icons.js sync — do not edit manually.\n *\n * Icons: Solar Icons (480 Design), CC BY 4.0.\n */\nexport const TAILWIND_SOLAR_ICON_NAMES = [\n '4k',\n 'accessibility',\n 'accumulator',\n 'add-circle',\n 'add-folder',\n 'add-square',\n 'adhesive-plaster',\n 'adhesive-plaster-2',\n 'airbuds',\n 'airbuds-case',\n 'airbuds-case-charge',\n 'airbuds-case-minimalistic',\n 'airbuds-case-open',\n 'airbuds-charge',\n 'airbuds-check',\n 'airbuds-left',\n 'airbuds-remove',\n 'airbuds-right',\n 'alarm',\n 'alarm-add',\n 'alarm-pause',\n 'alarm-play',\n 'alarm-remove',\n 'alarm-sleep',\n 'alarm-turn-off',\n 'album',\n 'align-bottom',\n 'align-horizonta-spacing',\n 'align-horizontal-center',\n 'align-left',\n 'align-right',\n 'align-top',\n 'align-vertical-center',\n 'align-vertical-spacing',\n 'alt-arrow-down',\n 'alt-arrow-left',\n 'alt-arrow-right',\n 'alt-arrow-up',\n 'archive',\n 'archive-check',\n 'archive-down',\n 'archive-down-minimlistic',\n 'archive-minimalistic',\n 'archive-up',\n 'archive-up-minimlistic',\n 'armchair',\n 'armchair-2',\n 'arrow-down',\n 'arrow-left',\n 'arrow-left-down',\n 'arrow-left-up',\n 'arrow-right',\n 'arrow-right-down',\n 'arrow-right-up',\n 'arrow-to-down-left',\n 'arrow-to-down-right',\n 'arrow-to-top-left',\n 'arrow-to-top-right',\n 'arrow-up',\n 'asteroid',\n 'atom',\n 'augmented-reality',\n 'backpack',\n 'backspace',\n 'bacteria',\n 'bag',\n 'bag-2',\n 'bag-3',\n 'bag-4',\n 'bag-5',\n 'bag-check',\n 'bag-cross',\n 'bag-heart',\n 'bag-music',\n 'bag-music-2',\n 'bag-smile',\n 'balloon',\n 'balls',\n 'banknote',\n 'banknote-2',\n 'bar-chair',\n 'basketball',\n 'bath',\n 'battery-charge',\n 'battery-charge-minimalistic',\n 'battery-full',\n 'battery-full-minimalistic',\n 'battery-half',\n 'battery-half-minimalistic',\n 'battery-low',\n 'battery-low-minimalistic',\n 'bed',\n 'bedside-table',\n 'bedside-table-2',\n 'bedside-table-3',\n 'bedside-table-4',\n 'bell',\n 'bell-bing',\n 'bell-off',\n 'benzene-ring',\n 'bicycling',\n 'bicycling-round',\n 'bill',\n 'bill-check',\n 'bill-cross',\n 'bill-list',\n 'black-hole',\n 'black-hole-2',\n 'black-hole-3',\n 'bluetooth',\n 'bluetooth-circle',\n 'bluetooth-square',\n 'bluetooth-wave',\n 'body',\n 'body-shape',\n 'body-shape-minimalistic',\n 'bolt',\n 'bolt-circle',\n 'bomb',\n 'bomb-emoji',\n 'bomb-minimalistic',\n 'bone',\n 'bone-broken',\n 'bone-crack',\n 'bones',\n 'bonfire',\n 'book',\n 'book-2',\n 'book-bookmark',\n 'book-bookmark-minimalistic',\n 'book-minimalistic',\n 'bookmark',\n 'bookmark-circle',\n 'bookmark-opened',\n 'bookmark-square',\n 'bookmark-square-minimalistic',\n 'boombox',\n 'bottle',\n 'bowling',\n 'box',\n 'box-minimalistic',\n 'branching-paths-down',\n 'branching-paths-up',\n 'broom',\n 'bug',\n 'bug-minimalistic',\n 'buildings',\n 'buildings-2',\n 'buildings-3',\n 'bus',\n 'calculator',\n 'calculator-minimalistic',\n 'calendar',\n 'calendar-add',\n 'calendar-date',\n 'calendar-mark',\n 'calendar-minimalistic',\n 'calendar-search',\n 'call-cancel',\n 'call-cancel-rounded',\n 'call-chat',\n 'call-chat-rounded',\n 'call-dropped',\n 'call-dropped-rounded',\n 'call-medicine',\n 'call-medicine-rounded',\n 'camera',\n 'camera-add',\n 'camera-minimalistic',\n 'camera-rotate',\n 'camera-square',\n 'card',\n 'card-2',\n 'card-recive',\n 'card-search',\n 'card-send',\n 'card-transfer',\n 'cardholder',\n 'cart',\n 'cart-2',\n 'cart-3',\n 'cart-4',\n 'cart-5',\n 'cart-check',\n 'cart-cross',\n 'cart-large',\n 'cart-large-2',\n 'cart-large-3',\n 'cart-large-4',\n 'cart-large-minimalistic',\n 'cart-plus',\n 'case',\n 'case-minimalistic',\n 'case-round',\n 'case-round-minimalistic',\n 'cash-out',\n 'cassette',\n 'cassette-2',\n 'cat',\n 'chair',\n 'chair-2',\n 'chandelier',\n 'chart',\n 'chart-2',\n 'chart-square',\n 'chat-dots',\n 'chat-line',\n 'chat-round',\n 'chat-round-call',\n 'chat-round-check',\n 'chat-round-dots',\n 'chat-round-like',\n 'chat-round-line',\n 'chat-round-money',\n 'chat-round-unread',\n 'chat-round-video',\n 'chat-square',\n 'chat-square-2',\n 'chat-square-arrow',\n 'chat-square-call',\n 'chat-square-check',\n 'chat-square-code',\n 'chat-square-like',\n 'chat-unread',\n 'check-circle',\n 'check-read',\n 'check-square',\n 'checklist',\n 'checklist-minimalistic',\n 'chef-hat',\n 'chef-hat-heart',\n 'chef-hat-minimalistic',\n 'circle-bottom-down',\n 'circle-bottom-up',\n 'circle-top-down',\n 'circle-top-up',\n 'city',\n 'clapperboard',\n 'clapperboard-edit',\n 'clapperboard-open',\n 'clapperboard-open-play',\n 'clapperboard-play',\n 'clapperboard-text',\n 'clipboard',\n 'clipboard-add',\n 'clipboard-check',\n 'clipboard-heart',\n 'clipboard-list',\n 'clipboard-remove',\n 'clipboard-text',\n 'clock-circle',\n 'clock-square',\n 'close-circle',\n 'close-square',\n 'closet',\n 'closet-2',\n 'cloud',\n 'cloud-bolt',\n 'cloud-bolt-minimalistic',\n 'cloud-check',\n 'cloud-cross',\n 'cloud-download',\n 'cloud-file',\n 'cloud-minus',\n 'cloud-plus',\n 'cloud-rain',\n 'cloud-snowfall',\n 'cloud-snowfall-minimalistic',\n 'cloud-storage',\n 'cloud-storm',\n 'cloud-sun',\n 'cloud-sun-2',\n 'cloud-upload',\n 'cloud-waterdrop',\n 'cloud-waterdrops',\n 'clouds',\n 'cloudy-moon',\n 'code',\n 'code-2',\n 'code-circle',\n 'code-file',\n 'code-scan',\n 'code-square',\n 'colour-tuneing',\n 'command',\n 'compass',\n 'compass-big',\n 'compass-square',\n 'condicioner',\n 'condicioner-2',\n 'confetti',\n 'confetti-minimalistic',\n 'confounded-circle',\n 'confounded-square',\n 'copy',\n 'copyright',\n 'corkscrew',\n 'cosmetic',\n 'course-down',\n 'course-up',\n 'cpu',\n 'cpu-bolt',\n 'creative-commons',\n 'crop',\n 'crop-minimalistic',\n 'crown',\n 'crown-line',\n 'crown-minimalistic',\n 'crown-star',\n 'cup',\n 'cup-first',\n 'cup-hot',\n 'cup-music',\n 'cup-paper',\n 'cup-star',\n 'cursor',\n 'cursor-square',\n 'danger',\n 'danger-circle',\n 'danger-square',\n 'danger-triangle',\n 'database',\n 'delivery',\n 'devices',\n 'diagram-down',\n 'diagram-up',\n 'dialog',\n 'dialog-2',\n 'diploma',\n 'diploma-verified',\n 'diskette',\n 'dislike',\n 'display',\n 'dna',\n 'document',\n 'document-add',\n 'document-medicine',\n 'document-text',\n 'documents',\n 'documents-minimalistic',\n 'dollar',\n 'dollar-minimalistic',\n 'donut',\n 'donut-bitten',\n 'double-alt-arrow-down',\n 'double-alt-arrow-left',\n 'double-alt-arrow-right',\n 'double-alt-arrow-up',\n 'download',\n 'download-minimalistic',\n 'download-square',\n 'download-twice-square',\n 'dropper',\n 'dropper-2',\n 'dropper-3',\n 'dropper-minimalistic',\n 'dropper-minimalistic-2',\n 'dumbbell',\n 'dumbbell-large',\n 'dumbbell-large-minimalistic',\n 'dumbbell-small',\n 'dumbbells',\n 'dumbbells-2',\n 'earth',\n 'electric-refueling',\n 'emoji-funny-circle',\n 'emoji-funny-square',\n 'end-call',\n 'end-call-rounded',\n 'eraser',\n 'eraser-circle',\n 'eraser-square',\n 'euro',\n 'exit',\n 'explicit',\n 'export',\n 'expressionless-circle',\n 'expressionless-square',\n 'eye',\n 'eye-closed',\n 'eye-scan',\n 'face-scan-circle',\n 'face-scan-square',\n 'facemask-circle',\n 'facemask-square',\n 'feed',\n 'ferris-wheel',\n 'figma',\n 'figma-file',\n 'file',\n 'file-check',\n 'file-corrupted',\n 'file-download',\n 'file-favourite',\n 'file-left',\n 'file-remove',\n 'file-right',\n 'file-send',\n 'file-smile',\n 'file-text',\n 'filter',\n 'filters',\n 'fire',\n 'fire-minimalistic',\n 'fire-square',\n 'flag',\n 'flag-2',\n 'flame',\n 'flash-drive',\n 'flashlight',\n 'flashlight-on',\n 'flip-horizontal',\n 'flip-vertical',\n 'floor-lamp',\n 'floor-lamp-minimalistic',\n 'fog',\n 'folder',\n 'folder-2',\n 'folder-check',\n 'folder-cloud',\n 'folder-error',\n 'folder-favourite-bookmark',\n 'folder-favourite-star',\n 'folder-open',\n 'folder-path-connect',\n 'folder-security',\n 'folder-with-files',\n 'football',\n 'forbidden',\n 'forbidden-circle',\n 'forward',\n 'forward-2',\n 'fridge',\n 'fuel',\n 'full-screen',\n 'full-screen-circle',\n 'full-screen-square',\n 'gallery',\n 'gallery-add',\n 'gallery-check',\n 'gallery-circle',\n 'gallery-download',\n 'gallery-edit',\n 'gallery-favourite',\n 'gallery-minimalistic',\n 'gallery-remove',\n 'gallery-round',\n 'gallery-send',\n 'gallery-wide',\n 'gameboy',\n 'gamepad',\n 'gamepad-charge',\n 'gamepad-minimalistic',\n 'gamepad-no-charge',\n 'gamepad-old',\n 'garage',\n 'gas-station',\n 'ghost',\n 'ghost-smile',\n 'gift',\n 'glasses',\n 'global',\n 'globus',\n 'golf',\n 'gps',\n 'graph',\n 'graph-down',\n 'graph-down-new',\n 'graph-new',\n 'graph-new-up',\n 'graph-up',\n 'hamburger-menu',\n 'hand-heart',\n 'hand-money',\n 'hand-pills',\n 'hand-shake',\n 'hand-stars',\n 'hanger',\n 'hanger-2',\n 'hashtag',\n 'hashtag-chat',\n 'hashtag-circle',\n 'hashtag-square',\n 'headphones-round',\n 'headphones-round-sound',\n 'headphones-square',\n 'headphones-square-sound',\n 'health',\n 'heart',\n 'heart-angle',\n 'heart-broken',\n 'heart-lock',\n 'heart-pulse',\n 'heart-pulse-2',\n 'heart-shine',\n 'heart-unlock',\n 'hearts',\n 'help',\n 'high-definition',\n 'high-quality',\n 'hiking',\n 'hiking-minimalistic',\n 'hiking-round',\n 'history',\n 'history-2',\n 'history-3',\n 'home',\n 'home-2',\n 'home-add',\n 'home-add-angle',\n 'home-angle',\n 'home-angle-2',\n 'home-smile',\n 'home-smile-angle',\n 'home-wifi',\n 'home-wifi-angle',\n 'hospital',\n 'hourglass',\n 'hourglass-line',\n 'import',\n 'inbox',\n 'inbox-archive',\n 'inbox-in',\n 'inbox-line',\n 'inbox-out',\n 'inbox-unread',\n 'incognito',\n 'incoming-call',\n 'incoming-call-rounded',\n 'infinity',\n 'info-circle',\n 'info-square',\n 'iphone',\n 'jar-of-pills',\n 'jar-of-pills-2',\n 'key',\n 'key-minimalistic',\n 'key-minimalistic-2',\n 'key-minimalistic-square',\n 'key-minimalistic-square-2',\n 'key-minimalistic-square-3',\n 'key-square',\n 'key-square-2',\n 'keyboard',\n 'kick-scooter',\n 'ladle',\n 'lamp',\n 'laptop',\n 'laptop-2',\n 'laptop-3',\n 'laptop-minimalistic',\n 'layers',\n 'layers-minimalistic',\n 'leaf',\n 'letter',\n 'letter-opened',\n 'letter-unread',\n 'library',\n 'lightbulb',\n 'lightbulb-bolt',\n 'lightbulb-minimalistic',\n 'lightning',\n 'like',\n 'link',\n 'link-broken',\n 'link-broken-minimalistic',\n 'link-circle',\n 'link-minimalistic',\n 'link-minimalistic-2',\n 'link-round',\n 'link-round-angle',\n 'link-square',\n 'list',\n 'list-arrow-down',\n 'list-arrow-down-minimalistic',\n 'list-arrow-up',\n 'list-arrow-up-minimalistic',\n 'list-check',\n 'list-check-minimalistic',\n 'list-cross',\n 'list-cross-minimalistic',\n 'list-down',\n 'list-down-minimalistic',\n 'list-heart',\n 'list-heart-minimalistic',\n 'list-up',\n 'list-up-minimalistic',\n 'lock',\n 'lock-keyhole',\n 'lock-keyhole-minimalistic',\n 'lock-keyhole-minimalistic-unlocked',\n 'lock-keyhole-unlocked',\n 'lock-password',\n 'lock-password-unlocked',\n 'lock-unlocked',\n 'login',\n 'login-2',\n 'login-3',\n 'logout',\n 'logout-2',\n 'logout-3',\n 'magic-stick',\n 'magic-stick-2',\n 'magic-stick-3',\n 'magnet',\n 'magnet-wave',\n 'magnifer',\n 'magnifer-bug',\n 'magnifer-zoom-in',\n 'magnifer-zoom-out',\n 'mailbox',\n 'map',\n 'map-arrow-down',\n 'map-arrow-left',\n 'map-arrow-right',\n 'map-arrow-square',\n 'map-arrow-up',\n 'map-point',\n 'map-point-add',\n 'map-point-favourite',\n 'map-point-hospital',\n 'map-point-remove',\n 'map-point-rotate',\n 'map-point-school',\n 'map-point-search',\n 'map-point-wave',\n 'mask-happly',\n 'mask-sad',\n 'masks',\n 'maximize',\n 'maximize-square',\n 'maximize-square-2',\n 'maximize-square-3',\n 'maximize-square-minimalistic',\n 'medal-ribbon',\n 'medal-ribbon-star',\n 'medal-ribbons-star',\n 'medal-star',\n 'medal-star-circle',\n 'medal-star-square',\n 'medical-kit',\n 'meditation',\n 'meditation-round',\n 'men',\n 'mention-circle',\n 'mention-square',\n 'menu-dots',\n 'menu-dots-circle',\n 'menu-dots-square',\n 'microphone',\n 'microphone-2',\n 'microphone-3',\n 'microphone-large',\n 'minimalistic-magnifer',\n 'minimalistic-magnifer-bug',\n 'minimalistic-magnifer-zoom-in',\n 'minimalistic-magnifer-zoom-out',\n 'minimize',\n 'minimize-square',\n 'minimize-square-2',\n 'minimize-square-3',\n 'minimize-square-minimalistic',\n 'minus-circle',\n 'minus-square',\n 'mirror',\n 'mirror-left',\n 'mirror-right',\n 'money-bag',\n 'monitor',\n 'monitor-camera',\n 'monitor-smartphone',\n 'moon',\n 'moon-fog',\n 'moon-sleep',\n 'moon-stars',\n 'mouse',\n 'mouse-circle',\n 'mouse-minimalistic',\n 'move-to-folder',\n 'multiple-forward-left',\n 'multiple-forward-right',\n 'music-library',\n 'music-library-2',\n 'music-note',\n 'music-note-2',\n 'music-note-3',\n 'music-note-4',\n 'music-note-slider',\n 'music-note-slider-2',\n 'music-notes',\n 'muted',\n 'notebook',\n 'notebook-bookmark',\n 'notebook-minimalistic',\n 'notebook-square',\n 'notes',\n 'notes-minimalistic',\n 'notification-lines-remove',\n 'notification-remove',\n 'notification-unread',\n 'notification-unread-lines',\n 'object-scan',\n 'outgoing-call',\n 'outgoing-call-rounded',\n 'oven-mitts',\n 'oven-mitts-minimalistic',\n 'paint-roller',\n 'palette',\n 'palette-round',\n 'pallete-2',\n 'panorama',\n 'paper-bin',\n 'paperclip',\n 'paperclip-2',\n 'paperclip-rounded',\n 'paperclip-rounded-2',\n 'paragraph-spacing',\n 'passport',\n 'passport-minimalistic',\n 'password',\n 'password-minimalistic',\n 'password-minimalistic-input',\n 'pause',\n 'pause-circle',\n 'paw',\n 'pen',\n 'pen-2',\n 'pen-new-round',\n 'pen-new-square',\n 'people-nearby',\n 'perfume',\n 'phone',\n 'phone-calling',\n 'phone-calling-rounded',\n 'phone-rounded',\n 'pie-chart',\n 'pie-chart-2',\n 'pie-chart-3',\n 'pill',\n 'pills',\n 'pills-2',\n 'pills-3',\n 'pin',\n 'pin-circle',\n 'pin-list',\n 'pip',\n 'pip-2',\n 'pipette',\n 'plaaylist-minimalistic',\n 'plain',\n 'plain-2',\n 'plain-3',\n 'planet',\n 'planet-2',\n 'planet-3',\n 'planet-4',\n 'plate',\n 'play',\n 'play-circle',\n 'play-stream',\n 'playback-speed',\n 'playlist',\n 'playlist-2',\n 'playlist-minimalistic-2',\n 'playlist-minimalistic-3',\n 'plug-circle',\n 'plus-minus',\n 'podcast',\n 'point-on-map',\n 'point-on-map-perspective',\n 'posts-carousel-horizontal',\n 'posts-carousel-vertical',\n 'power',\n 'presentation-graph',\n 'printer',\n 'printer-2',\n 'printer-minimalistic',\n 'programming',\n 'projector',\n 'pulse',\n 'pulse-2',\n 'qr-code',\n 'question-circle',\n 'question-square',\n 'quit-full-screen',\n 'quit-full-screen-circle',\n 'quit-full-screen-square',\n 'quit-pip',\n 'radar',\n 'radar-2',\n 'radial-blur',\n 'radio',\n 'radio-minimalistic',\n 'ranking',\n 'recive-square',\n 'recive-twice-square',\n 'record',\n 'record-circle',\n 'record-minimalistic',\n 'record-square',\n 'reel',\n 'reel-2',\n 'refresh',\n 'refresh-circle',\n 'refresh-square',\n 'remote-controller',\n 'remote-controller-2',\n 'remote-controller-minimalistic',\n 'remove-folder',\n 'reorder',\n 'repeat',\n 'repeat-one',\n 'repeat-one-minimalistic',\n 'reply',\n 'reply-2',\n 'restart',\n 'restart-circle',\n 'restart-square',\n 'revote',\n 'rewind-10-seconds-back',\n 'rewind-10-seconds-forward',\n 'rewind-15-seconds-back',\n 'rewind-15-seconds-forward',\n 'rewind-5-seconds-back',\n 'rewind-5-seconds-forward',\n 'rewind-back',\n 'rewind-back-circle',\n 'rewind-forward',\n 'rewind-forward-circle',\n 'rocket',\n 'rocket-2',\n 'rolling-pin',\n 'round-alt-arrow-down',\n 'round-alt-arrow-left',\n 'round-alt-arrow-right',\n 'round-alt-arrow-up',\n 'round-arrow-down',\n 'round-arrow-left',\n 'round-arrow-left-down',\n 'round-arrow-left-up',\n 'round-arrow-right',\n 'round-arrow-right-down',\n 'round-arrow-right-up',\n 'round-arrow-up',\n 'round-double-alt-arrow-down',\n 'round-double-alt-arrow-left',\n 'round-double-alt-arrow-right',\n 'round-double-alt-arrow-up',\n 'round-graph',\n 'round-sort-horizontal',\n 'round-sort-vertical',\n 'round-transfer-diagonal',\n 'round-transfer-horizontal',\n 'round-transfer-vertical',\n 'rounded-magnifer',\n 'rounded-magnifer-bug',\n 'rounded-magnifer-zoom-in',\n 'rounded-magnifer-zoom-out',\n 'route',\n 'routing',\n 'routing-2',\n 'routing-3',\n 'ruble',\n 'rugby',\n 'ruler',\n 'ruler-angular',\n 'ruler-cross-pen',\n 'ruler-pen',\n 'running',\n 'running-2',\n 'running-round',\n 'sad-circle',\n 'sad-square',\n 'safe-2',\n 'safe-circle',\n 'safe-square',\n 'sale',\n 'sale-square',\n 'satellite',\n 'scale',\n 'scanner',\n 'scanner-2',\n 'scissors',\n 'scissors-square',\n 'scooter',\n 'screen-share',\n 'screencast',\n 'screencast-2',\n 'sd-card',\n 'send-square',\n 'send-twice-square',\n 'server',\n 'server-2',\n 'server-minimalistic',\n 'server-path',\n 'server-square',\n 'server-square-cloud',\n 'server-square-update',\n 'settings',\n 'settings-minimalistic',\n 'share',\n 'share-circle',\n 'shield',\n 'shield-check',\n 'shield-cross',\n 'shield-keyhole',\n 'shield-keyhole-minimalistic',\n 'shield-minimalistic',\n 'shield-minus',\n 'shield-network',\n 'shield-plus',\n 'shield-star',\n 'shield-up',\n 'shield-user',\n 'shield-warning',\n 'shock-absorber',\n 'shop',\n 'shop-2',\n 'shop-minimalistic',\n 'shuffle',\n 'sidebar-code',\n 'sidebar-minimalistic',\n 'siderbar',\n 'signpost',\n 'signpost-2',\n 'sim-card',\n 'sim-card-minimalistic',\n 'sim-cards',\n 'siren',\n 'siren-rounded',\n 'skateboard',\n 'skateboarding',\n 'skateboarding-round',\n 'skip-next',\n 'skip-previous',\n 'skirt',\n 'slash-circle',\n 'slash-square',\n 'sledgehammer',\n 'sleeping',\n 'sleeping-circle',\n 'sleeping-square',\n 'slider-horizontal',\n 'slider-minimalistic-horizontal',\n 'slider-vertical',\n 'slider-vertical-minimalistic',\n 'smart-home',\n 'smart-home-angle',\n 'smart-speaker',\n 'smart-speaker-2',\n 'smart-speaker-minimalistic',\n 'smart-vacuum-cleaner',\n 'smart-vacuum-cleaner-2',\n 'smartphone',\n 'smartphone-2',\n 'smartphone-rotate-2',\n 'smartphone-rotate-angle',\n 'smartphone-rotate-orientation',\n 'smartphone-update',\n 'smartphone-vibration',\n 'smile-circle',\n 'smile-square',\n 'snowflake',\n 'socket',\n 'sofa',\n 'sofa-2',\n 'sofa-3',\n 'sort',\n 'sort-by-alphabet',\n 'sort-by-time',\n 'sort-from-bottom-to-top',\n 'sort-from-top-to-bottom',\n 'sort-horizontal',\n 'sort-vertical',\n 'soundwave',\n 'soundwave-circle',\n 'soundwave-square',\n 'speaker',\n 'speaker-minimalistic',\n 'special-effects',\n 'spedometer-low',\n 'spedometer-max',\n 'spedometer-middle',\n 'square-academic-cap',\n 'square-academic-cap-2',\n 'square-alt-arrow-down',\n 'square-alt-arrow-left',\n 'square-alt-arrow-right',\n 'square-alt-arrow-up',\n 'square-arrow-down',\n 'square-arrow-left',\n 'square-arrow-left-down',\n 'square-arrow-left-up',\n 'square-arrow-right',\n 'square-arrow-right-down',\n 'square-arrow-right-up',\n 'square-arrow-up',\n 'square-bottom-down',\n 'square-bottom-up',\n 'square-double-alt-arrow-down',\n 'square-double-alt-arrow-left',\n 'square-double-alt-arrow-right',\n 'square-double-alt-arrow-up',\n 'square-forward',\n 'square-share-line',\n 'square-sort-horizontal',\n 'square-sort-vertical',\n 'square-top-down',\n 'square-top-up',\n 'square-transfer-horizontal',\n 'square-transfer-vertical',\n 'ssd-round',\n 'ssd-square',\n 'star',\n 'star-angle',\n 'star-circle',\n 'star-fall',\n 'star-fall-2',\n 'star-fall-minimalistic',\n 'star-fall-minimalistic-2',\n 'star-rainbow',\n 'star-ring',\n 'star-rings',\n 'star-shine',\n 'stars',\n 'stars-line',\n 'stars-minimalistic',\n 'station',\n 'station-minimalistic',\n 'stethoscope',\n 'sticker-circle',\n 'sticker-smile-circle',\n 'sticker-smile-circle-2',\n 'sticker-smile-square',\n 'sticker-square',\n 'stop',\n 'stop-circle',\n 'stopwatch',\n 'stopwatch-pause',\n 'stopwatch-play',\n 'stream',\n 'streets',\n 'streets-map-point',\n 'streets-navigation',\n 'stretching',\n 'stretching-round',\n 'structure',\n 'subtitles',\n 'suitcase',\n 'suitcase-lines',\n 'suitcase-tag',\n 'sun',\n 'sun-2',\n 'sun-fog',\n 'sunrise',\n 'sunset',\n 'suspension',\n 'suspension-bolt',\n 'suspension-cross',\n 'swimming',\n 'syringe',\n 't-shirt',\n 'tablet',\n 'tag',\n 'tag-horizontal',\n 'tag-price',\n 'target',\n 'tea-cup',\n 'telescope',\n 'temperature',\n 'tennis',\n 'tennis-2',\n 'test-tube',\n 'test-tube-minimalistic',\n 'text',\n 'text-bold',\n 'text-bold-circle',\n 'text-bold-square',\n 'text-circle',\n 'text-cross',\n 'text-cross-circle',\n 'text-cross-square',\n 'text-field',\n 'text-field-focus',\n 'text-italic',\n 'text-italic-circle',\n 'text-italic-square',\n 'text-selection',\n 'text-square',\n 'text-square-2',\n 'text-underline',\n 'text-underline-circle',\n 'text-underline-cross',\n 'thermometer',\n 'three-squares',\n 'ticker-star',\n 'ticket',\n 'ticket-sale',\n 'to-pip',\n 'tornado',\n 'tornado-small',\n 'traffic',\n 'traffic-economy',\n 'tram',\n 'transfer-horizontal',\n 'transfer-vertical',\n 'translation',\n 'translation-2',\n 'transmission',\n 'transmission-circle',\n 'transmission-square',\n 'trash-bin-2',\n 'trash-bin-minimalistic',\n 'trash-bin-minimalistic-2',\n 'trash-bin-trash',\n 'treadmill',\n 'treadmill-round',\n 'trellis',\n 'tuning',\n 'tuning-2',\n 'tuning-3',\n 'tuning-4',\n 'tuning-square',\n 'tuning-square-2',\n 'turntable',\n 'turntable-minimalistic',\n 'turntable-music-note',\n 'tv',\n 'ufo',\n 'ufo-2',\n 'ufo-3',\n 'umbrella',\n 'undo-left',\n 'undo-left-round',\n 'undo-left-round-square',\n 'undo-left-square',\n 'undo-right',\n 'undo-right-round',\n 'undo-right-round-square',\n 'undo-right-square',\n 'unread',\n 'upload',\n 'upload-minimalistic',\n 'upload-square',\n 'upload-track',\n 'upload-track-2',\n 'upload-twice-square',\n 'usb',\n 'usb-circle',\n 'usb-square',\n 'user',\n 'user-block',\n 'user-block-rounded',\n 'user-check',\n 'user-check-rounded',\n 'user-circle',\n 'user-cross',\n 'user-cross-rounded',\n 'user-hand-up',\n 'user-hands',\n 'user-heart',\n 'user-heart-rounded',\n 'user-id',\n 'user-minus',\n 'user-minus-rounded',\n 'user-plus',\n 'user-plus-rounded',\n 'user-rounded',\n 'user-speak',\n 'user-speak-rounded',\n 'users-group-rounded',\n 'users-group-two-rounded',\n 'verified-check',\n 'video-frame',\n 'video-frame-2',\n 'video-frame-cut',\n 'video-frame-cut-2',\n 'video-frame-play-horizontal',\n 'video-frame-play-vertical',\n 'video-frame-replace',\n 'video-library',\n 'videocamera',\n 'videocamera-add',\n 'videocamera-record',\n 'vinyl',\n 'vinyl-record',\n 'virus',\n 'volleyball',\n 'volleyball-2',\n 'volume',\n 'volume-cross',\n 'volume-knob',\n 'volume-loud',\n 'volume-small',\n 'wad-of-money',\n 'walking',\n 'walking-round',\n 'wallet',\n 'wallet-2',\n 'wallet-money',\n 'wallpaper',\n 'washing-machine',\n 'washing-machine-minimalistic',\n 'watch-round',\n 'watch-square',\n 'watch-square-minimalistic',\n 'watch-square-minimalistic-charge',\n 'water',\n 'water-sun',\n 'waterdrop',\n 'waterdrops',\n 'weigher',\n 'wheel',\n 'wheel-angle',\n 'whisk',\n 'wi-fi-router',\n 'wi-fi-router-minimalistic',\n 'wi-fi-router-round',\n 'widget',\n 'widget-2',\n 'widget-3',\n 'widget-4',\n 'widget-5',\n 'widget-6',\n 'widget-add',\n 'wind',\n 'window-frame',\n 'wineglass',\n 'wineglass-triangle',\n 'winrar',\n 'wireless-charge',\n 'women',\n 'xxx',\n 'zip-file',\n] as const;\n\n/** Use names listed in {@link TAILWIND_SOLAR_ICON_NAMES} (compile-time union omitted — large sets break Angular template inference). */\nexport type TailwindSolarIcon = string;\n","import { Directive, input } from '@angular/core';\r\n\r\n@Directive({\r\n host: {\r\n '[attr.id]': 'id() || null',\r\n '[class]': 'class() || null'\r\n }\r\n})\r\nexport abstract class TailwindComponent {\r\n /** Optional ID for the component */\r\n readonly id = input<string>();\r\n\r\n /** Custom CSS classes to append */\r\n readonly class = input<string>(undefined, { alias: 'class' });\r\n}\r\n","import { Component, computed, inject, input, signal, OnDestroy, AfterViewInit, NgZone, ElementRef, viewChild } from '@angular/core';\r\nimport { TailwindPosition } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'tailwind-tooltip',\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.css'\r\n})\r\nexport class TailwindTooltip extends TailwindComponent implements AfterViewInit, OnDestroy {\r\n /** Tooltip text */\r\n readonly text = input.required<string>();\r\n /** Position relative to trigger */\r\n readonly position = input<TailwindPosition>('top');\r\n\r\n readonly isVisible = signal(false);\r\n readonly topPos = signal<number>(0);\r\n readonly leftPos = signal<number>(0);\r\n\r\n private targetElement: HTMLElement | null = null;\r\n\r\n private document = inject(DOCUMENT);\r\n private ngZone = inject(NgZone);\r\n private el = inject(ElementRef);\r\n \r\n readonly tooltipEl = viewChild.required<ElementRef<HTMLDivElement>>('tooltipEl');\r\n\r\n private scrollListener = () => this.updatePosition();\r\n\r\n readonly tooltipClasses = computed(() => {\r\n const base = [\r\n 'fixed z-[1070] px-3 py-1.5',\r\n 'text-xs font-medium text-white bg-surface-900 rounded-lg',\r\n 'shadow-lg whitespace-nowrap pointer-events-none',\r\n 'transition-opacity duration-150',\r\n this.isVisible() ? 'opacity-100' : 'opacity-0'\r\n ];\r\n return base.join(' ');\r\n });\r\n\r\n readonly arrowClasses = computed(() => {\r\n const base = 'absolute w-2 h-2 bg-surface-900 rotate-45';\r\n\r\n const posMap: Record<TailwindPosition, string> = {\r\n top: 'top-full left-1/2 -translate-x-1/2 -mt-1',\r\n bottom: 'bottom-full left-1/2 -translate-x-1/2 -mb-1',\r\n left: 'left-full top-1/2 -translate-y-1/2 -ml-1',\r\n right: 'right-full top-1/2 -translate-y-1/2 -mr-1'\r\n };\r\n\r\n return `${base} ${posMap[this.position()]}`;\r\n });\r\n\r\n ngAfterViewInit() {\r\n this.updatePosition();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.hide();\r\n }\r\n\r\n setTarget(el: HTMLElement) {\r\n this.targetElement = el;\r\n this.updatePosition();\r\n }\r\n\r\n private getFixedOrigin(): { top: number; left: number } {\r\n const dummy = this.document.createElement('div');\r\n dummy.style.position = 'fixed';\r\n dummy.style.top = '0';\r\n dummy.style.left = '0';\r\n this.el.nativeElement.appendChild(dummy);\r\n const rect = dummy.getBoundingClientRect();\r\n this.el.nativeElement.removeChild(dummy);\r\n return { top: rect.top, left: rect.left };\r\n }\r\n\r\n updatePosition(): void {\r\n if (!this.targetElement) return;\r\n \r\n const origin = this.getFixedOrigin();\r\n const targetRect = this.targetElement.getBoundingClientRect();\r\n const tooltipRect = this.tooltipEl().nativeElement.getBoundingClientRect();\r\n\r\n let top = 0;\r\n let left = 0;\r\n\r\n switch (this.position()) {\r\n case 'top':\r\n top = targetRect.top - tooltipRect.height - 8;\r\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\r\n break;\r\n case 'bottom':\r\n top = targetRect.bottom + 8;\r\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\r\n break;\r\n case 'left':\r\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\r\n left = targetRect.left - tooltipRect.width - 8;\r\n break;\r\n case 'right':\r\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\r\n left = targetRect.right + 8;\r\n break;\r\n }\r\n\r\n this.ngZone.run(() => {\r\n this.topPos.set(top - origin.top);\r\n this.leftPos.set(left - origin.left);\r\n });\r\n }\r\n\r\n show(): void {\r\n this.updatePosition();\r\n this.ngZone.run(() => {\r\n this.isVisible.set(true);\r\n });\r\n this.ngZone.runOutsideAngular(() => {\r\n window.addEventListener('scroll', this.scrollListener, true);\r\n window.addEventListener('resize', this.scrollListener, true);\r\n });\r\n }\r\n\r\n hide(): void {\r\n this.ngZone.run(() => {\r\n this.isVisible.set(false);\r\n });\r\n window.removeEventListener('scroll', this.scrollListener, true);\r\n window.removeEventListener('resize', this.scrollListener, true);\r\n }\r\n}\r\n","<div #tooltipEl role=\"tooltip\" [class]=\"tooltipClasses()\" \n [style.top.px]=\"topPos()\" \n [style.left.px]=\"leftPos()\">\n {{ text() }}\n <!-- Arrow -->\n <div [class]=\"arrowClasses()\"></div>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n ViewContainerRef,\n ComponentRef,\n inject\n} from '@angular/core';\nimport { TailwindTooltip } from '../../components/tooltip/tooltip.component';\nimport { TailwindPosition } from '../../models';\n\n@Directive({\n selector: '[tooltip]'\n})\nexport class TailwindTooltipDirective implements OnDestroy {\n @Input('tooltip') text!: string;\n @Input() tooltipPosition: TailwindPosition = 'top';\n\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n private componentRef: ComponentRef<TailwindTooltip> | null = null;\n\n private viewContainerRef = inject(ViewContainerRef);\n private el = inject(ElementRef);\n\n @HostListener('mouseenter')\n @HostListener('focusin')\n show() {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n\n if (this.componentRef) {\n return;\n }\n\n this.showTimeout = setTimeout(() => {\n this.createComponent();\n }, 200);\n }\n\n @HostListener('mouseleave')\n @HostListener('focusout')\n hide() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n\n if (!this.componentRef) {\n return;\n }\n\n this.componentRef.instance.hide();\n\n this.hideTimeout = setTimeout(() => {\n this.destroyComponent();\n }, 150);\n }\n\n private createComponent() {\n this.componentRef = this.viewContainerRef.createComponent(TailwindTooltip);\n this.componentRef.setInput('text', this.text);\n this.componentRef.setInput('position', this.tooltipPosition);\n this.componentRef.instance.setTarget(this.el.nativeElement);\n\n setTimeout(() => {\n if (this.componentRef) {\n this.componentRef.instance.show();\n }\n });\n }\n\n private destroyComponent() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n ngOnDestroy() {\n if (this.showTimeout) clearTimeout(this.showTimeout);\n if (this.hideTimeout) clearTimeout(this.hideTimeout);\n this.destroyComponent();\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\r\n\r\n/**\r\n * Row definition for `TailwindTable`. Prefer structural syntax on `<tbody>`:\r\n * `<tbody *tailwindTableRow=\"let row\">...</tbody>` — each rendered fragment is one `<tbody>` per data row.\r\n *\r\n * Legacy: `<ng-template tailwindTableRow let-row>` with only `<td>` cells still works.\r\n */\r\n@Directive({\r\n selector: '[tailwindTableRow]',\r\n standalone: true\r\n})\r\nexport class TailwindTableRowDirective {\r\n readonly templateRef = inject(TemplateRef<{ $implicit: Record<string, unknown>; index: number }>);\r\n}\r\n\r\n/** @deprecated Use TailwindTableRowDirective instead. */\r\nexport { TailwindTableRowDirective as TailwindTableRowTemplateDirective };\r\n","import { Directive, ElementRef, Renderer2, effect, inject, input } from '@angular/core';\r\n/** Host attributes on `<tailwind-table>`; kept in sync for sort-header observers. */\r\nexport const TW_TABLE_SORT_KEY_ATTR = 'data-tw-sort-key';\r\nexport const TW_TABLE_SORT_DIR_ATTR = 'data-tw-sort-dir';\r\n\r\n/**\r\n * Sortable column header: put on `<th>` (plain header text + directive). Not sortable columns omit this directive.\r\n * Sorting is handled by the nearest `tailwind-table` host (event delegation); do not pass a table reference.\r\n */\r\n@Directive({\r\n selector: '[tailwindSortHeader]',\r\n standalone: true,\r\n host: {\r\n class:\r\n 'cursor-pointer hover:text-surface-900 select-none table-cell align-middle whitespace-nowrap text-left',\r\n '[attr.tabindex]': '0',\r\n '[attr.data-sort-key]': 'sortKey()'\r\n }\r\n})\r\nexport class TailwindSortHeaderDirective {\r\n /** Property key on each row used for sorting. */\r\n readonly sortKey = input.required<string>();\r\n\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n private readonly renderer = inject(Renderer2);\r\n private svg?: SVGSVGElement;\r\n\r\n constructor() {\r\n effect(onCleanup => {\r\n const key = this.sortKey();\r\n const tableEl = this.host.nativeElement.closest('tailwind-table');\r\n if (!tableEl) return;\r\n\r\n const sync = (): void => {\r\n const activeKey = tableEl.getAttribute(TW_TABLE_SORT_KEY_ATTR) ?? '';\r\n const dirRaw = tableEl.getAttribute(TW_TABLE_SORT_DIR_ATTR) ?? 'asc';\r\n const asc = dirRaw === 'asc';\r\n const active = activeKey === key;\r\n\r\n if (!this.svg) {\r\n this.svg = this.createSvg();\r\n this.renderer.appendChild(this.host.nativeElement, this.svg);\r\n }\r\n this.updateSvg(active, asc);\r\n this.renderer.setAttribute(\r\n this.host.nativeElement,\r\n 'aria-label',\r\n active ? `Sorted ${asc ? 'ascending' : 'descending'}, activate to reverse` : `Sort by ${key}`\r\n );\r\n };\r\n\r\n sync();\r\n const mo = new MutationObserver(() => sync());\r\n mo.observe(tableEl, {\r\n attributes: true,\r\n attributeFilter: [TW_TABLE_SORT_KEY_ATTR, TW_TABLE_SORT_DIR_ATTR]\r\n });\r\n onCleanup(() => mo.disconnect());\r\n });\r\n }\r\n\r\n private createSvg(): SVGSVGElement {\r\n const svg = this.renderer.createElement('svg', 'svg') as SVGSVGElement;\r\n this.renderer.setAttribute(svg, 'xmlns', 'http://www.w3.org/2000/svg');\r\n this.renderer.setAttribute(svg, 'viewBox', '0 0 20 20');\r\n this.renderer.setAttribute(svg, 'fill', 'currentColor');\r\n this.renderer.setAttribute(svg, 'aria-hidden', 'true');\r\n\r\n const ascPath = this.renderer.createElement('path', 'svg');\r\n this.renderer.setAttribute(ascPath, 'fill-rule', 'evenodd');\r\n this.renderer.setAttribute(\r\n ascPath,\r\n 'd',\r\n 'M10 17a.75.75 0 01-.75-.75V5.612L5.29 9.77a.75.75 0 01-1.08-1.04l5.25-5.5a.75.75 0 011.08 0l5.25 5.5a.75.75 0 11-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0110 17z'\r\n );\r\n this.renderer.setAttribute(ascPath, 'clip-rule', 'evenodd');\r\n this.renderer.addClass(ascPath, 'tailwind-sort-header__asc');\r\n\r\n const descPath = this.renderer.createElement('path', 'svg');\r\n this.renderer.setAttribute(descPath, 'fill-rule', 'evenodd');\r\n this.renderer.setAttribute(\r\n descPath,\r\n 'd',\r\n 'M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z'\r\n );\r\n this.renderer.setAttribute(descPath, 'clip-rule', 'evenodd');\r\n this.renderer.addClass(descPath, 'tailwind-sort-header__desc');\r\n\r\n this.renderer.appendChild(svg, ascPath);\r\n this.renderer.appendChild(svg, descPath);\r\n return svg;\r\n }\r\n\r\n private updateSvg(active: boolean, asc: boolean): void {\r\n if (!this.svg) return;\r\n\r\n this.renderer.setAttribute(\r\n this.svg,\r\n 'class',\r\n `inline-block align-middle ml-1 w-3.5 h-3.5 shrink-0 ${active ? 'text-primary-600' : 'text-surface-400'}`\r\n );\r\n\r\n const ascPath = this.svg.querySelector('.tailwind-sort-header__asc');\r\n const descPath = this.svg.querySelector('.tailwind-sort-header__desc');\r\n\r\n const showAsc = active && asc;\r\n const showDesc = active ? !asc : true;\r\n\r\n this.setPathHidden(ascPath, !showAsc);\r\n this.setPathHidden(descPath, !showDesc);\r\n }\r\n\r\n private setPathHidden(el: Element | null, hidden: boolean): void {\r\n if (!el) return;\r\n if (hidden) this.renderer.addClass(el, 'hidden');\r\n else this.renderer.removeClass(el, 'hidden');\r\n }\r\n}\r\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { TailwindSize, TailwindColor, TailwindButtonKind } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-button',\r\n imports: [NgClass],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.css'\r\n})\r\nexport class TailwindButton extends TailwindComponent {\r\n /** Visual color */\r\n readonly color = input<TailwindColor>('primary');\r\n /** Visual kind: `ghost` = transparent with hover tint; `text` = text color only, no hover background */\r\n readonly kind = input<TailwindButtonKind>('solid');\r\n /** Size of the button */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether the button is disabled */\r\n readonly disabled = input<boolean>(false);\r\n /** HTML button type attribute */\r\n readonly type = input<'button' | 'submit' | 'reset'>('button');\r\n\r\n /** Emitted when the button is clicked (not disabled/loading) */\r\n readonly onClick = output<MouseEvent>();\r\n\r\n /** Computed Tailwind classes based on color, kind, size, and state */\r\n readonly computedClasses = computed(() => {\r\n const base = [\r\n 'inline-flex items-center justify-center gap-2',\r\n 'font-medium',\r\n 'transition-all duration-150 ease-in-out',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2',\r\n 'disabled:cursor-not-allowed disabled:opacity-50',\r\n 'cursor-pointer',\r\n 'border'\r\n ];\r\n\r\n const solidMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 border-transparent focus-visible:outline-primary-600 shadow-sm',\r\n secondary:\r\n 'bg-surface-100 text-surface-800 hover:bg-surface-200 active:bg-surface-300 border-surface-300 focus-visible:outline-surface-500 shadow-sm',\r\n danger:\r\n 'bg-danger-600 text-white hover:bg-danger-700 active:bg-danger-800 border-transparent focus-visible:outline-danger-600 shadow-sm',\r\n success:\r\n 'bg-success-600 text-white hover:bg-success-700 active:bg-success-800 border-transparent focus-visible:outline-success-600 shadow-sm',\r\n warning:\r\n 'bg-warning-500 text-surface-900 hover:bg-warning-600 active:bg-warning-700 border-transparent focus-visible:outline-warning-500 shadow-sm',\r\n info: 'bg-info-600 text-white hover:bg-info-700 active:bg-info-800 border-transparent focus-visible:outline-info-600 shadow-sm'\r\n };\r\n\r\n const outlinedMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-transparent text-primary-600 border-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\r\n secondary:\r\n 'bg-transparent text-surface-700 border-surface-300 hover:bg-surface-50 active:bg-surface-100 focus-visible:outline-surface-500',\r\n danger:\r\n 'bg-transparent text-danger-600 border-danger-600 hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\r\n success:\r\n 'bg-transparent text-success-600 border-success-600 hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\r\n warning:\r\n 'bg-transparent text-warning-600 border-warning-500 hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-info-600 hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600'\r\n };\r\n\r\n /** Transparent + hover/active background tint (former `text` look). */\r\n const ghostMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-transparent text-primary-600 border-transparent hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\r\n secondary:\r\n 'bg-transparent text-surface-700 border-transparent hover:bg-surface-100 active:bg-surface-200 focus-visible:outline-surface-500',\r\n danger:\r\n 'bg-transparent text-danger-600 border-transparent hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\r\n success:\r\n 'bg-transparent text-success-600 border-transparent hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\r\n warning:\r\n 'bg-transparent text-warning-600 border-transparent hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-transparent hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600'\r\n };\r\n\r\n /** Text color from severity only; background stays transparent on hover/active. */\r\n const textMap: Record<TailwindColor, string> = {\r\n primary: 'bg-transparent text-primary-600 border-transparent focus-visible:outline-primary-600',\r\n secondary: 'bg-transparent text-surface-700 border-transparent focus-visible:outline-surface-500',\r\n danger: 'bg-transparent text-danger-600 border-transparent focus-visible:outline-danger-600',\r\n success: 'bg-transparent text-success-600 border-transparent focus-visible:outline-success-600',\r\n warning: 'bg-transparent text-warning-600 border-transparent focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-transparent focus-visible:outline-info-600'\r\n };\r\n\r\n const styleMap = {\r\n solid: solidMap,\r\n outlined: outlinedMap,\r\n ghost: ghostMap,\r\n text: textMap\r\n };\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-3 py-1.5 rounded-md',\r\n md: 'text-sm px-4 py-2 rounded-md',\r\n lg: 'text-base px-5 py-2.5 rounded-lg',\r\n xl: 'text-base px-6 py-3 rounded-lg'\r\n };\r\n\r\n const iconSizeMap: Record<TailwindSize, string> = {\r\n xs: 'p-1 rounded-sm',\r\n sm: 'p-1.5 rounded-md',\r\n md: 'p-2 rounded-md',\r\n lg: 'p-2.5 rounded-lg',\r\n xl: 'p-3 rounded-lg'\r\n };\r\n\r\n return [...base, styleMap[this.kind()][this.color()] || styleMap['solid']['primary'], sizeMap[this.size()]].join(\r\n ' '\r\n );\r\n });\r\n\r\n handleClick(event: MouseEvent): void {\r\n if (!this.disabled()) {\r\n this.onClick.emit(event);\r\n }\r\n }\r\n}\r\n","<button\n [ngClass]=\"computedClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"handleClick($event)\">\n <ng-content />\n</button>\n","import { InjectionToken } from '@angular/core';\r\nimport { TailwindSize } from '../models';\r\n\r\nexport const TAILWIND_MODAL_DATA = new InjectionToken<unknown>('TAILWIND_MODAL_DATA');\r\n\r\n/** Default pixel size for `tailwind-icon` when `size` is omitted (typically 16–64). */\r\nexport const TAILWIND_ICON_SIZE = new InjectionToken<number>('TAILWIND_ICON_SIZE');\r\n\r\nexport const TAILWIND_DATETIME_LANGUAGE = new InjectionToken<'it' | 'en'>('TAILWIND_DATETIME_LANGUAGE');\r\n\r\nexport const TAILWIND_COMPONENTS_SIZE = new InjectionToken<TailwindSize>('TAILWIND_COMPONENTS_SIZE');\r\n","import { Component, computed, inject, input } from '@angular/core';\r\nimport type { TailwindSolarIcon, TailwindIconSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TAILWIND_ICON_SIZE } from '../../tokens';\r\n\r\nconst clampIconSize = (value: number): number => {\r\n if (!Number.isFinite(value)) return 24;\r\n const rounded = Math.round(value);\r\n return Math.min(64, Math.max(16, rounded));\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-icon',\r\n host: {\r\n class: 'inline-flex shrink-0 items-center justify-center'\r\n },\r\n templateUrl: './icon.component.html'\r\n})\r\nexport class TailwindIcon extends TailwindComponent {\r\n private readonly iconSize = inject(TAILWIND_ICON_SIZE, { optional: true });\r\n\r\n /** Solar Line Duotone icon name; SVG path `/tailwind-icons/<name>.svg` */\r\n readonly icon = input.required<TailwindSolarIcon>();\r\n /** Width and height in px (16–64, clamped); default from `TAILWIND_ICON_SIZE` or **24** */\r\n readonly size = input<TailwindIconSize>(clampIconSize(this.iconSize ?? 24));\r\n\r\n readonly src = computed(() => `/tailwind-icons/${this.icon()}.svg`);\r\n\r\n readonly pixelSize = computed(() => clampIconSize(this.size()));\r\n}\r\n","<img\r\n class=\"block shrink-0\"\r\n [src]=\"src()\"\r\n [attr.width]=\"pixelSize()\"\r\n [attr.height]=\"pixelSize()\"\r\n [attr.alt]=\"icon()\"\r\n [attr.aria-hidden]=\"true\"\r\n decoding=\"async\" />\r\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-input',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindInput),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './input.component.html',\r\n styleUrl: './input.component.css'\r\n})\r\nexport class TailwindInput extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Input type */\r\n readonly type = input<'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'>('text');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether the input is readonly */\r\n readonly readonly = input<boolean>(false);\r\n /** Helper text shown below input */\r\n readonly helperText = input<string>('');\r\n /** Error text shown when hasError is true */\r\n readonly errorText = input<string>('');\r\n /** Whether the input is in error state */\r\n readonly hasError = input<boolean>(false);\r\n\r\n /** Two-way bound value */\r\n readonly value = model<string>('');\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Computed input classes */\r\n readonly inputClasses = computed(() => {\r\n const base = [\r\n 'block w-full bg-white',\r\n 'border transition-colors duration-150',\r\n 'placeholder:text-surface-400',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed'\r\n ];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\r\n md: 'text-sm px-3 py-2 rounded-md',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\r\n xl: 'text-base px-4 py-3 rounded-lg'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500 text-surface-900';\r\n\r\n return [...base, sizeMap[this.size()], stateClass].join(' ');\r\n });\r\n\r\n // CVA\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value.set(value ?? '');\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onInputChange(event: Event): void {\r\n const val = (event.target as HTMLInputElement).value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"tailwind-input-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-surface-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [value]=\"value()\"\n [class]=\"inputClasses()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\" />\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-textarea',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindTextarea),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './textarea.component.html',\r\n styleUrl: './textarea.component.css'\r\n})\r\nexport class TailwindTextarea extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Visible row count */\r\n readonly rows = input<number>(4);\r\n /** Optional maximum width in columns */\r\n readonly cols = input<number | undefined>(undefined);\r\n /** Maximum character length (HTML maxlength) */\r\n readonly maxlength = input<number | undefined>(undefined);\r\n /** Resize behavior */\r\n readonly resize = input<'vertical' | 'none' | 'both' | 'horizontal'>('vertical');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether the textarea is readonly */\r\n readonly readonly = input<boolean>(false);\r\n /** Helper text shown below field */\r\n readonly helperText = input<string>('');\r\n /** Error text shown when hasError is true */\r\n readonly errorText = input<string>('');\r\n /** Whether the textarea is in error state */\r\n readonly hasError = input<boolean>(false);\r\n\r\n /** Two-way bound value */\r\n readonly value = model<string>('');\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Computed textarea classes */\r\n readonly textareaClasses = computed(() => {\r\n const base = [\r\n 'block w-full bg-white',\r\n 'border transition-colors duration-150',\r\n 'placeholder:text-surface-400',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed'\r\n ];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm min-h-[4.5rem]',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md min-h-[5rem]',\r\n md: 'text-sm px-3 py-2 rounded-md min-h-[5.5rem]',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg min-h-[6.5rem]',\r\n xl: 'text-base px-4 py-3 rounded-lg min-h-[7.5rem]'\r\n };\r\n\r\n const resizeMap: Record<'vertical' | 'none' | 'both' | 'horizontal', string> = {\r\n vertical: 'resize-y',\r\n none: 'resize-none',\r\n both: 'resize',\r\n horizontal: 'resize-x'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500 text-surface-900';\r\n\r\n return [...base, sizeMap[this.size()], resizeMap[this.resize()], stateClass].join(' ');\r\n });\r\n\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value.set(value ?? '');\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onInputChange(event: Event): void {\r\n const val = (event.target as HTMLTextAreaElement).value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"tailwind-textarea-wrapper flex flex-col gap-1.5\">\r\n @if (label()) {\r\n <label\r\n [attr.for]=\"id() ? id() + '-inner' : null\"\r\n class=\"text-sm font-medium text-surface-700\"\r\n [class.text-danger-600]=\"hasError()\">\r\n {{ label() }}\r\n </label>\r\n }\r\n\r\n <textarea\r\n [attr.id]=\"id() ? id() + '-inner' : null\"\r\n [placeholder]=\"placeholder()\"\r\n [rows]=\"rows()\"\r\n [attr.cols]=\"cols() ?? null\"\r\n [attr.maxlength]=\"maxlength() ?? null\"\r\n [disabled]=\"isDisabled()\"\r\n [readonly]=\"readonly()\"\r\n [attr.aria-invalid]=\"hasError() || null\"\r\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\r\n [value]=\"value()\"\r\n [class]=\"textareaClasses()\"\r\n (input)=\"onInputChange($event)\"\r\n (blur)=\"onBlur()\"></textarea>\r\n\r\n @if (helperText() && !hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">\r\n {{ helperText() }}\r\n </p>\r\n }\r\n @if (errorText() && hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\r\n {{ errorText() }}\r\n </p>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n computed,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindIcon } from '../icon/icon.component';\r\nimport { TailwindButton } from '../button/button.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-upload',\r\n imports: [TailwindIcon, TailwindButton],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindUpload),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './upload.component.html',\r\n styleUrl: './upload.component.css'\r\n})\r\nexport class TailwindUpload extends TailwindComponent implements ControlValueAccessor {\r\n private static nextId = 0;\r\n private readonly fallbackFileId = `tw-upload-${TailwindUpload.nextId++}`;\r\n\r\n readonly fileInput = viewChild.required<ElementRef<HTMLInputElement>>('fileInput');\r\n\r\n /** Visual layout: compact button or drop zone */\r\n readonly variant = input<'button' | 'area'>('area');\r\n /** Field label */\r\n readonly label = input<string>('');\r\n /** Button label when `variant` is `button` */\r\n readonly buttonLabel = input<string>('Choose file');\r\n /** Drop zone title when `variant` is `area` */\r\n readonly areaTitle = input<string>('Drag and drop a file');\r\n /** Drop zone hint when `variant` is `area` */\r\n readonly areaHint = input<string>('or click to browse');\r\n /** Accepted MIME types / extensions (native `accept`) */\r\n readonly accept = input<string | undefined>(undefined);\r\n /** Allow multiple files */\r\n readonly multiple = input<boolean>(false);\r\n /** Max size per file (bytes); if any file exceeds it, selection is rejected */\r\n readonly maxFileSizeBytes = input<number | undefined>(undefined);\r\n /** Button / control size */\r\n readonly size = input<TailwindSize>('md');\r\n /** Show a clear control when there is a value */\r\n readonly showClear = input<boolean>(true);\r\n /** Label for the clear action (i18n) */\r\n readonly clearText = input<string>('clear');\r\n readonly helperText = input<string>('');\r\n readonly errorText = input<string>('');\r\n readonly hasError = input<boolean>(false);\r\n\r\n /** Data URL (`data:<mime>;base64,...`) — forms / `[(value)]`; with `multiple`, only the first file is stored here */\r\n readonly value = model<string>('');\r\n\r\n /** Raw files after a successful selection */\r\n readonly filesSelected = output<File[]>();\r\n /** Human-readable validation message when selection is rejected */\r\n readonly validationError = output<string>();\r\n\r\n readonly isDisabled = signal(false);\r\n readonly isDragOver = signal(false);\r\n readonly selectedNames = signal<string[]>([]);\r\n\r\n private dragDepth = 0;\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n readonly fileInputId = computed(() => this.id() ?? this.fallbackFileId);\r\n\r\n readonly areaClasses = computed(() => {\r\n const base = [\r\n 'flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center',\r\n 'transition-colors duration-150 outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2'\r\n ];\r\n\r\n if (this.isDisabled()) {\r\n return [...base, 'cursor-not-allowed opacity-50 bg-surface-50 border-surface-200 text-surface-500'].join(' ');\r\n }\r\n if (this.isDragOver()) {\r\n return [...base, 'cursor-pointer border-primary-500 bg-primary-50/60 text-surface-800 focus-visible:outline-primary-500'].join(\r\n ' '\r\n );\r\n }\r\n if (this.hasError()) {\r\n return [\r\n ...base,\r\n 'cursor-pointer border-danger-400 bg-danger-50/40 text-danger-900 focus-visible:outline-danger-500 hover:border-danger-500'\r\n ].join(' ');\r\n }\r\n return [\r\n ...base,\r\n 'cursor-pointer border-surface-300 bg-surface-50/50 text-surface-800 focus-visible:outline-primary-500',\r\n 'hover:border-primary-400 hover:bg-primary-50/30'\r\n ].join(' ');\r\n });\r\n\r\n writeValue(obj: string | null): void {\r\n this.value.set(obj ?? '');\r\n if (!obj) {\r\n this.selectedNames.set([]);\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n triggerPicker(event?: Event): void {\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n if (this.isDisabled()) return;\r\n this.fileInput().nativeElement.click();\r\n }\r\n\r\n onKeydownArea(event: KeyboardEvent): void {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this.triggerPicker();\r\n }\r\n }\r\n\r\n onDragEnter(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.isDisabled()) return;\r\n this.dragDepth++;\r\n this.isDragOver.set(true);\r\n }\r\n\r\n onDragLeave(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.dragDepth = Math.max(0, this.dragDepth - 1);\r\n if (this.dragDepth === 0) {\r\n this.isDragOver.set(false);\r\n }\r\n }\r\n\r\n onDragOver(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n onDrop(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.dragDepth = 0;\r\n this.isDragOver.set(false);\r\n if (this.isDisabled()) return;\r\n const files = event.dataTransfer?.files;\r\n if (files?.length) {\r\n void this.handleFiles(files);\r\n }\r\n }\r\n\r\n onNativeChange(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n const files = input.files;\r\n if (files?.length) {\r\n void this.handleFiles(files);\r\n }\r\n input.value = '';\r\n }\r\n\r\n clear(event?: Event): void {\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n if (this.isDisabled()) return;\r\n this.selectedNames.set([]);\r\n this.value.set('');\r\n this.onChange('');\r\n this.fileInput().nativeElement.value = '';\r\n }\r\n\r\n blurHost(): void {\r\n this.onTouched();\r\n }\r\n\r\n private validate(files: File[]): string | null {\r\n const max = this.maxFileSizeBytes();\r\n if (max == null) return null;\r\n const tooLarge = files.filter((f) => f.size > max);\r\n if (tooLarge.length === 0) return null;\r\n const maxLabel =\r\n max >= 1024 * 1024\r\n ? `${(max / (1024 * 1024)).toFixed(1)} MB`\r\n : max >= 1024\r\n ? `${Math.round(max / 1024)} KB`\r\n : `${max} bytes`;\r\n return tooLarge.length === 1\r\n ? `File exceeds maximum size (${maxLabel}).`\r\n : `${tooLarge.length} files exceed maximum size (${maxLabel}).`;\r\n }\r\n\r\n private async handleFiles(fileList: FileList): Promise<void> {\r\n let files = Array.from(fileList);\r\n if (!this.multiple() && files.length > 1) {\r\n files = [files[0]];\r\n }\r\n\r\n const err = this.validate(files);\r\n if (err) {\r\n this.validationError.emit(err);\r\n return;\r\n }\r\n\r\n this.selectedNames.set(files.map((f) => f.name));\r\n\r\n try {\r\n const dataUrls = await Promise.all(files.map((f) => this.readAsDataUrl(f)));\r\n this.filesSelected.emit(files);\r\n\r\n const primary = dataUrls[0] ?? '';\r\n this.value.set(primary);\r\n this.onChange(primary);\r\n } catch {\r\n this.validationError.emit('Could not read file.');\r\n }\r\n }\r\n\r\n private readAsDataUrl(file: File): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const result = reader.result;\r\n if (typeof result === 'string') {\r\n resolve(result);\r\n } else {\r\n reject(new Error('Unexpected read result'));\r\n }\r\n };\r\n reader.onerror = () => reject(reader.error ?? new Error('read error'));\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n}\r\n","<div class=\"tailwind-upload-wrapper flex flex-col gap-1.5\">\r\n @if (label()) {\r\n <label\r\n [attr.for]=\"fileInputId()\"\r\n class=\"text-sm font-medium text-surface-700\"\r\n [class.text-danger-600]=\"hasError()\">\r\n {{ label() }}\r\n </label>\r\n }\r\n\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n class=\"sr-only\"\r\n [attr.id]=\"fileInputId()\"\r\n [accept]=\"accept() ?? null\"\r\n [attr.multiple]=\"multiple() ? '' : null\"\r\n [disabled]=\"isDisabled()\"\r\n [attr.aria-invalid]=\"hasError() || null\"\r\n [attr.aria-describedby]=\"helperText() || errorText() ? fileInputId() + '-helper' : null\"\r\n (change)=\"onNativeChange($event)\"\r\n (blur)=\"blurHost()\" />\r\n\r\n @if (variant() === 'button') {\r\n <div class=\"flex flex-wrap items-center gap-2\">\r\n <tailwind-button\r\n type=\"button\"\r\n color=\"primary\"\r\n kind=\"solid\"\r\n [size]=\"size()\"\r\n [disabled]=\"isDisabled()\"\r\n (onClick)=\"triggerPicker($event)\">\r\n {{ buttonLabel() }}\r\n </tailwind-button>\r\n @if (showClear() && value()) {\r\n <button\r\n type=\"button\"\r\n class=\"text-sm font-medium text-primary-600 underline-offset-2 hover:underline disabled:cursor-not-allowed disabled:opacity-50\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"clear($event)\">\r\n {{ clearText() }}\r\n </button>\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"flex flex-col gap-2\">\r\n <div\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [class]=\"areaClasses()\"\r\n [attr.aria-disabled]=\"isDisabled() || null\"\r\n (click)=\"triggerPicker($event)\"\r\n (keydown)=\"onKeydownArea($event)\"\r\n (dragenter)=\"onDragEnter($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\">\r\n <tailwind-icon icon=\"cloud-upload\" [size]=\"40\" />\r\n <span class=\"text-sm font-medium\">{{ areaTitle() }}</span>\r\n <span class=\"text-xs text-surface-500\">{{ areaHint() }}</span>\r\n </div>\r\n @if (showClear() && value()) {\r\n <button\r\n type=\"button\"\r\n class=\"self-start text-sm font-medium text-primary-600 underline-offset-2 hover:underline disabled:cursor-not-allowed disabled:opacity-50\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"clear($event)\">\r\n {{ clearText() }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (selectedNames().length) {\r\n <p class=\"truncate text-xs text-surface-600\" [attr.title]=\"selectedNames().join(', ')\">\r\n {{ selectedNames().join(', ') }}\r\n </p>\r\n }\r\n\r\n @if (helperText() && !hasError()) {\r\n <p [attr.id]=\"fileInputId() + '-helper'\" class=\"text-xs text-surface-500\">\r\n {{ helperText() }}\r\n </p>\r\n }\r\n @if (errorText() && hasError()) {\r\n <p [attr.id]=\"fileInputId() + '-helper'\" class=\"text-xs text-danger-600\">\r\n {{ errorText() }}\r\n </p>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n computed,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChildren,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-input-otp',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindInputOtp),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './input-otp.component.html',\r\n styleUrl: './input-otp.component.css'\r\n})\r\nexport class TailwindInputOtp extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Number of character slots */\r\n readonly length = input<number>(6);\r\n /** Allow only digits */\r\n readonly integerOnly = input<boolean>(true);\r\n /** Mask digits (password bullets) */\r\n readonly mask = input<boolean>(false);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Slots are read-only (navigation still allowed) */\r\n readonly readonly = input<boolean>(false);\r\n /** Helper text shown below */\r\n readonly helperText = input<string>('');\r\n /** Error text when hasError is true */\r\n readonly errorText = input<string>('');\r\n /** Error state styling */\r\n readonly hasError = input<boolean>(false);\r\n /** Accessible label for the group (used when label is empty) */\r\n readonly ariaLabel = input<string>('Verification code');\r\n /** Separator string; empty hides */\r\n readonly separator = input<string>('');\r\n /** 0-based slot index after which the separator is rendered */\r\n readonly separatorAfterIndex = input<number | null>(null);\r\n /** Hint for browsers / SMS autofill (first slot only) */\r\n readonly autocomplete = input<string>('one-time-code');\r\n\r\n /** Two-way bound full code string */\r\n readonly value = model<string>('');\r\n\r\n /** Emitted when all slots are filled */\r\n readonly completed = output<string>();\r\n\r\n readonly isDisabled = signal(false);\r\n\r\n readonly slotIndexes = computed(() => {\r\n const n = Math.max(1, Math.min(32, Math.floor(this.length())));\r\n return Array.from({ length: n }, (_, i) => i);\r\n });\r\n\r\n readonly otpInputs = viewChildren<ElementRef<HTMLInputElement>>('otpDigit');\r\n\r\n readonly cellClasses = computed(() => {\r\n const base = [\r\n 'block w-10 text-center font-mono tabular-nums bg-white',\r\n 'border transition-colors duration-150',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed'\r\n ];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-1 py-1 rounded-sm min-w-7',\r\n sm: 'text-sm px-1.5 py-1.5 rounded-md min-w-8',\r\n md: 'text-sm px-2 py-2 rounded-md min-w-10',\r\n lg: 'text-base px-2.5 py-2.5 rounded-lg min-w-11',\r\n xl: 'text-base px-3 py-3 rounded-lg min-w-12'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500 text-surface-900';\r\n\r\n return [...base, sizeMap[this.size()], stateClass].join(' ');\r\n });\r\n\r\n readonly groupAriaLabel = computed(() => this.label() || this.ariaLabel());\r\n\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value.set(this.normalizeIncoming(value ?? ''));\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n maxSlots(): number {\r\n return this.slotIndexes().length;\r\n }\r\n\r\n digitAt(index: number): string {\r\n return this.value()[index] ?? '';\r\n }\r\n\r\n showSeparatorAfter(index: number): boolean {\r\n const sep = this.separator();\r\n const pos = this.separatorAfterIndex();\r\n return !!sep && pos !== null && pos === index;\r\n }\r\n\r\n inputType(): string {\r\n return this.mask() ? 'password' : 'text';\r\n }\r\n\r\n inputMode(): 'numeric' | 'text' {\r\n return this.integerOnly() ? 'numeric' : 'text';\r\n }\r\n\r\n autocompleteForSlot(index: number): string | null {\r\n return index === 0 ? this.autocomplete() : null;\r\n }\r\n\r\n cellId(index: number): string {\r\n const base = this.id() ?? 'tailwind-input-otp';\r\n return `${base}-digit-${index}`;\r\n }\r\n\r\n onSlotFocus(index: number): void {\r\n this.onTouched();\r\n const len = this.value().length;\r\n if (index > len) {\r\n queueMicrotask(() => this.focusSlot(Math.min(len, this.maxSlots() - 1)));\r\n }\r\n }\r\n\r\n onInput(event: Event, index: number): void {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n const inputEl = event.target as HTMLInputElement;\r\n let raw = inputEl.value;\r\n if (this.integerOnly()) {\r\n raw = raw.replace(/\\D/g, '');\r\n }\r\n const char = raw.slice(-1);\r\n\r\n let v = this.value();\r\n const max = this.maxSlots();\r\n\r\n if (char && index > v.length) {\r\n queueMicrotask(() => this.focusSlot(v.length));\r\n inputEl.value = this.digitAt(index);\r\n return;\r\n }\r\n\r\n if (!char) {\r\n if (index < v.length) {\r\n v = v.slice(0, index) + v.slice(index + 1);\r\n }\r\n } else {\r\n if (index < v.length) {\r\n v = v.slice(0, index) + char + v.slice(index + 1);\r\n } else if (index === v.length) {\r\n v = v + char;\r\n }\r\n v = v.slice(0, max);\r\n }\r\n\r\n v = this.normalizeIncoming(v);\r\n this.commit(v);\r\n\r\n queueMicrotask(() => {\r\n inputEl.value = this.digitAt(index);\r\n if (char && index < max - 1) {\r\n this.focusSlot(index + 1);\r\n }\r\n });\r\n }\r\n\r\n onPaste(event: ClipboardEvent, index: number): void {\r\n if (this.readonly() || this.isDisabled()) {\r\n return;\r\n }\r\n event.preventDefault();\r\n const text = event.clipboardData?.getData('text') ?? '';\r\n let cleaned = this.integerOnly() ? text.replace(/\\D/g, '') : text.replace(/\\s/g, '');\r\n const max = this.maxSlots();\r\n cleaned = cleaned.slice(0, max - index);\r\n const merged = this.normalizeIncoming(this.value().slice(0, index) + cleaned);\r\n this.commit(merged);\r\n\r\n queueMicrotask(() =>\r\n this.focusSlot(cleaned.length ? Math.min(index + cleaned.length - 1, max - 1) : index)\r\n );\r\n }\r\n\r\n onKeydown(event: KeyboardEvent, index: number): void {\r\n const max = this.maxSlots();\r\n const v = this.value();\r\n\r\n if (event.key === 'Backspace') {\r\n const cur = this.digitAt(index);\r\n if (!cur && index > 0) {\r\n event.preventDefault();\r\n const nextVal = this.normalizeIncoming(v.slice(0, index - 1) + v.slice(index));\r\n this.commit(nextVal);\r\n queueMicrotask(() => this.focusSlot(index - 1));\r\n } else if (cur) {\r\n event.preventDefault();\r\n const nextVal = this.normalizeIncoming(v.slice(0, index) + v.slice(index + 1));\r\n this.commit(nextVal);\r\n queueMicrotask(() => {\r\n const el = this.otpInputs()[index]?.nativeElement;\r\n if (el) {\r\n el.value = this.digitAt(index);\r\n }\r\n });\r\n }\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowLeft' && index > 0) {\r\n event.preventDefault();\r\n this.focusSlot(index - 1);\r\n } else if (event.key === 'ArrowRight' && index < max - 1) {\r\n event.preventDefault();\r\n this.focusSlot(index + 1);\r\n }\r\n }\r\n\r\n private commit(joined: string): void {\r\n const prev = this.value();\r\n this.value.set(joined);\r\n this.onChange(joined);\r\n const max = this.maxSlots();\r\n if (joined.length === max && prev.length !== max) {\r\n this.completed.emit(joined);\r\n }\r\n }\r\n\r\n private normalizeIncoming(v: string): string {\r\n const max = Math.max(1, Math.min(32, Math.floor(this.length())));\r\n let s = v ?? '';\r\n if (this.integerOnly()) {\r\n s = s.replace(/\\D/g, '');\r\n }\r\n return s.slice(0, max);\r\n }\r\n\r\n private focusSlot(index: number): void {\r\n queueMicrotask(() => {\r\n const list = this.otpInputs();\r\n const el = list[index]?.nativeElement;\r\n el?.focus();\r\n el?.select();\r\n });\r\n }\r\n}\r\n","<div class=\"tailwind-input-otp-wrapper flex flex-col gap-1.5\">\r\n @if (label()) {\r\n <label\r\n [attr.for]=\"cellId(0)\"\r\n class=\"text-sm font-medium text-surface-700\"\r\n [class.text-danger-600]=\"hasError()\">\r\n {{ label() }}\r\n </label>\r\n }\r\n\r\n <div role=\"group\" [attr.aria-label]=\"groupAriaLabel()\" class=\"flex flex-wrap items-center gap-2\">\r\n @for (idx of slotIndexes(); track idx) {\r\n <input\r\n #otpDigit\r\n [attr.id]=\"cellId(idx)\"\r\n [type]=\"inputType()\"\r\n [attr.inputmode]=\"inputMode()\"\r\n [attr.autocomplete]=\"autocompleteForSlot(idx)\"\r\n [attr.aria-label]=\"'Digit ' + (idx + 1) + ' of ' + slotIndexes().length\"\r\n [disabled]=\"isDisabled()\"\r\n [readonly]=\"readonly()\"\r\n [attr.aria-invalid]=\"hasError() || null\"\r\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\r\n maxlength=\"1\"\r\n spellcheck=\"false\"\r\n [class]=\"cellClasses()\"\r\n [value]=\"digitAt(idx)\"\r\n (input)=\"onInput($event, idx)\"\r\n (keydown)=\"onKeydown($event, idx)\"\r\n (paste)=\"onPaste($event, idx)\"\r\n (focus)=\"onSlotFocus(idx)\" />\r\n @if (showSeparatorAfter(idx)) {\r\n <span class=\"select-none text-surface-500\" aria-hidden=\"true\">{{ separator() }}</span>\r\n }\r\n }\r\n </div>\r\n\r\n @if (helperText() && !hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">\r\n {{ helperText() }}\r\n </p>\r\n }\r\n @if (errorText() && hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\r\n {{ errorText() }}\r\n </p>\r\n }\r\n</div>\r\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-checkbox',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindCheckbox),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './checkbox.component.html',\r\n styleUrl: './checkbox.component.css'\r\n})\r\nexport class TailwindCheckbox extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Description text */\r\n readonly description = input<string>('');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Unique ID */\r\n \r\n /** Two-way bound checked state */\r\n readonly checked = model<boolean>(false);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Box size class based on size input */\r\n readonly boxSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3.5 h-3.5',\r\n sm: 'w-4 h-4',\r\n md: 'w-5 h-5',\r\n lg: 'w-6 h-6',\r\n xl: 'w-7 h-7'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n // CVA\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.checked.set(!!value);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onCheckboxChange(event: Event): void {\r\n const val = (event.target as HTMLInputElement).checked;\r\n this.checked.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n}\r\n\r\n","<div\n class=\"inline-flex items-center gap-2.5 select-none\"\n [class.opacity-50]=\"isDisabled()\">\n <label\n class=\"relative flex items-center justify-center shrink-0\"\n [class.cursor-pointer]=\"!isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n [attr.for]=\"id() ? id() + '-inner' : null\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"checkbox\"\n class=\"peer sr-only\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-describedby]=\"description() && id() ? id() + '-desc' : null\"\n [attr.aria-labelledby]=\"label() && id() ? id() + '-label' : null\"\n (change)=\"onCheckboxChange($event)\" />\n <div\n class=\"w-full h-full border-2 transition-all duration-150 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1\"\n [class.rounded-sm]=\"size() === 'xs' || size() === 'sm'\"\n [class.rounded-md]=\"size() !== 'xs' && size() !== 'sm'\"\n [class.border-surface-300]=\"!checked()\"\n [class.bg-white]=\"!checked()\"\n [class.border-primary-600]=\"checked()\"\n [class.bg-primary-600]=\"checked()\">\n @if (checked()) {\n <svg class=\"w-full h-full text-white p-0.5\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M13.5 4.5L6.5 11.5L3 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n </div>\n </label>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n @if (label()) {\n <span [attr.id]=\"id() ? id() + '-label' : null\" class=\"text-sm font-medium text-surface-800 leading-tight\">{{\n label()\n }}</span>\n }\n @if (description()) {\n <span [attr.id]=\"id() ? id() + '-desc' : null\" class=\"text-xs text-surface-500 leading-snug\">\n {{ description() }}\n </span>\n }\n </div>\n</div>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindOptionGroup, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-radio-group',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindRadioGroup),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './radio-group.component.html',\r\n styleUrl: './radio-group.component.css'\r\n})\r\nexport class TailwindRadioGroup<T = unknown> extends TailwindComponent implements ControlValueAccessor {\r\n /** Label for the radio group */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('');\r\n /** Name for the radio group (used for native radio grouping) */\r\n readonly name = input<string>();\r\n /** Available options */\r\n readonly options = input<TailwindOptionGroup<T>[]>([]);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Layout orientation */\r\n readonly orientation = input<'horizontal' | 'vertical'>('vertical');\r\n\r\n /** Currently selected value */\r\n readonly value = model<T | null>(null);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Radio button outer ring size */\r\n readonly radioSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3.5 h-3.5',\r\n sm: 'w-4 h-4',\r\n md: 'w-5 h-5',\r\n lg: 'w-6 h-6',\r\n xl: 'w-7 h-7'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n /** Inner dot size */\r\n readonly dotSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-1.5 h-1.5',\r\n sm: 'w-2 h-2',\r\n md: 'w-2.5 h-2.5',\r\n lg: 'w-3 h-3',\r\n xl: 'w-3.5 h-3.5'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n // CVA\r\n private onChange: (value: T) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: T): void {\r\n this.value.set(value ?? null);\r\n }\r\n\r\n registerOnChange(fn: (value: T) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onRadioChange(optionValue: T): void {\r\n this.value.set(optionValue);\r\n this.onChange(optionValue);\r\n this.onTouched();\r\n }\r\n}\r\n","<fieldset\n class=\"flex gap-3\"\n [class.flex-col]=\"orientation() === 'vertical'\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"radiogroup\">\n @if (label()) {\n <legend class=\"text-sm font-medium text-surface-700 mb-2\">{{ label() }}</legend>\n }\n\n @for (option of options(); track option.value) {\n <label\n class=\"inline-flex items-start gap-2.5 cursor-pointer select-none\"\n [class.cursor-not-allowed]=\"isDisabled() || option.disabled\"\n [class.opacity-50]=\"isDisabled() || option.disabled\">\n <div class=\"relative flex items-center justify-center shrink-0\" [class]=\"radioSizeClass()\">\n <input\n type=\"radio\"\n class=\"peer sr-only\"\n [name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"value() === option.value\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n (change)=\"onRadioChange(option.value)\" />\n <div\n class=\"w-full h-full rounded-full border-2 transition-all duration-150 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1 flex items-center justify-center\"\n [class.border-surface-300]=\"value() !== option.value\"\n [class.border-primary-600]=\"value() === option.value\">\n @if (value() === option.value) {\n <div\n class=\"rounded-full bg-primary-600 transition-transform duration-150 scale-100\"\n [class]=\"dotSizeClass()\"></div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n <span class=\"text-sm font-medium text-surface-800 leading-tight\">{{ option.label }}</span>\n @if (option.description) {\n <span class=\"text-xs text-surface-500 leading-snug\">{{ option.description }}</span>\n }\n </div>\n </label>\n }\n</fieldset>\n","import {\r\n Component,\r\n computed,\r\n ElementRef,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n OnDestroy,\r\n signal,\r\n TemplateRef,\r\n ViewContainerRef,\r\n viewChild\r\n} from '@angular/core';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindOption, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-select',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindSelect),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.css'\r\n})\r\nexport class TailwindSelect<T = unknown> extends TailwindComponent implements ControlValueAccessor, OnDestroy {\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly elRef = inject(ElementRef<HTMLElement>);\r\n private readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n private outsideSub: Subscription | null = null;\r\n\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Available options */\r\n readonly options = input<TailwindOption<T>[]>([]);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Helper text */\r\n readonly helperText = input<string>('');\r\n /** Error text */\r\n readonly errorText = input<string>('');\r\n /** Whether in error state */\r\n readonly hasError = input<boolean>(false);\r\n /** When true, value is `T[]` and several options can be selected */\r\n readonly multiple = input(false);\r\n\r\n /** Selected value: `T | null` when single, `T[]` when `multiple` */\r\n readonly value = model<T | T[] | null>(null);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Whether the dropdown panel is open */\r\n readonly isOpen = signal(false);\r\n\r\n /** Keyboard-highlighted option index (-1 = none) */\r\n readonly activeIndex = signal(-1);\r\n\r\n /** The currently selected option object (single mode only) */\r\n readonly selectedOption = computed(() => {\r\n if (this.multiple()) return null;\r\n const v = this.value();\r\n if (v == null || Array.isArray(v)) return null;\r\n return this.options().find(o => this.optionValueEquals(o.value, v)) ?? null;\r\n });\r\n\r\n /** Selected option objects in `options()` order (multiple mode only) */\r\n readonly selectedOptions = computed(() => {\r\n if (!this.multiple()) return [];\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n return this.options().filter(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\r\n });\r\n\r\n /** Classes for the trigger button */\r\n readonly triggerClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\r\n md: 'text-sm px-3 py-2 rounded-md',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\r\n xl: 'text-base px-4 py-3 rounded-lg'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500';\r\n\r\n const layout = this.multiple() ? 'items-start' : 'items-center';\r\n\r\n return [\r\n 'flex justify-between w-full bg-white border transition-colors duration-150',\r\n layout,\r\n 'pr-3 cursor-pointer text-left',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed',\r\n sizeMap[this.size()],\r\n stateClass\r\n ].join(' ');\r\n });\r\n\r\n private optionValueEquals(a: unknown, b: unknown): boolean {\r\n return Object.is(a, b);\r\n }\r\n\r\n /** Used in the template to compare option values */\r\n isOptionSelected(option: TailwindOption<T>): boolean {\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n return arr.some(sv => this.optionValueEquals(option.value, sv));\r\n }\r\n const v = this.value();\r\n if (v == null || Array.isArray(v)) return false;\r\n return this.optionValueEquals(option.value, v);\r\n }\r\n\r\n /** Classes for a single option row */\r\n optionClasses(index: number, option: TailwindOption<T>): string {\r\n const isSelected = this.isOptionSelected(option);\r\n const isActive = this.activeIndex() === index;\r\n const isDisabled = !!option.disabled;\r\n\r\n return [\r\n 'flex items-center justify-between px-3 py-2 text-sm cursor-pointer select-none',\r\n isDisabled\r\n ? 'text-surface-400 cursor-not-allowed'\r\n : isSelected\r\n ? 'bg-primary-50 text-primary-700 font-medium'\r\n : isActive\r\n ? 'bg-surface-100 text-surface-900'\r\n : 'text-surface-800 hover:bg-surface-50'\r\n ].join(' ');\r\n }\r\n\r\n // CVA\r\n private onChange: (value: T | T[] | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: T | T[] | null | undefined): void {\r\n if (this.multiple()) {\r\n if (value == null) this.value.set([]);\r\n else this.value.set(Array.isArray(value) ? [...value] : []);\r\n } else {\r\n if (Array.isArray(value)) this.value.set(null);\r\n else this.value.set(value ?? null);\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: T | T[] | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeDropdown();\r\n }\r\n\r\n private openDropdown(): void {\r\n if (this.overlayRef) return;\r\n\r\n const trigger =\r\n (this.elRef.nativeElement.querySelector('button[role=\"combobox\"]') as HTMLElement) ?? this.elRef.nativeElement;\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(trigger)\r\n .withPositions([\r\n // Preferred: open downward\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n // Fallback: open upward\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.close(),\r\n width: trigger.offsetWidth,\r\n minWidth: 'w-full'\r\n });\r\n\r\n const portal = new TemplatePortal(this.panelTemplate(), this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n const pane = this.overlayRef.overlayElement;\r\n this.outsideSub = new Subscription();\r\n\r\n // Close on outside click (capture: trigger + panel are excluded; avoids CDK edge cases)\r\n this.outsideSub.add(\r\n fromEvent<PointerEvent>(document, 'pointerdown', { capture: true }).subscribe(ev => {\r\n const t = ev.target as Node;\r\n if (this.elRef.nativeElement.contains(t) || pane.contains(t)) return;\r\n this.closeDropdown();\r\n })\r\n );\r\n\r\n this.outsideSub.add(\r\n fromEvent<KeyboardEvent>(document, 'keydown').subscribe(ev => {\r\n if (ev.key === 'Escape') {\r\n ev.preventDefault();\r\n this.closeDropdown();\r\n }\r\n })\r\n );\r\n\r\n this.isOpen.set(true);\r\n\r\n const opts = this.options();\r\n let initial = -1;\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n initial = opts.findIndex(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\r\n } else {\r\n const v = this.value();\r\n if (v != null && !Array.isArray(v)) {\r\n initial = opts.findIndex(o => this.optionValueEquals(o.value, v));\r\n }\r\n }\r\n this.activeIndex.set(initial >= 0 ? initial : -1);\r\n }\r\n\r\n private closeDropdown(): void {\r\n this.overlayRef?.detach();\r\n this.overlayRef?.dispose();\r\n this.overlayRef = null;\r\n this.outsideSub?.unsubscribe();\r\n this.outsideSub = null;\r\n this.isOpen.set(false);\r\n this.activeIndex.set(-1);\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (this.isDisabled()) return;\r\n if (this.isOpen()) {\r\n this.closeDropdown();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n selectOption(option: TailwindOption<T>): void {\r\n if (option.disabled) return;\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const current = Array.isArray(v) ? [...v] : [];\r\n const idx = current.findIndex(sv => this.optionValueEquals(sv, option.value));\r\n if (idx >= 0) current.splice(idx, 1);\r\n else current.push(option.value);\r\n this.value.set(current);\r\n this.onChange(current);\r\n this.onTouched();\r\n return;\r\n }\r\n const val = option.value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n this.closeDropdown();\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n if (this.isDisabled()) return;\r\n const opts = this.options();\r\n\r\n switch (event.key) {\r\n case 'ArrowDown': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n let next = this.activeIndex() + 1;\r\n while (next < opts.length && opts[next].disabled) next++;\r\n if (next < opts.length) this.activeIndex.set(next);\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n let prev = this.activeIndex() - 1;\r\n while (prev >= 0 && opts[prev].disabled) prev--;\r\n if (prev >= 0) this.activeIndex.set(prev);\r\n break;\r\n }\r\n case 'Enter':\r\n case ' ': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n const active = this.activeIndex();\r\n if (active >= 0 && active < opts.length) {\r\n this.selectOption(opts[active]);\r\n }\r\n break;\r\n }\r\n case 'Escape':\r\n case 'Tab': {\r\n this.closeDropdown();\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-surface-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <!-- Trigger button -->\n <button\n type=\"button\"\n [attr.id]=\"id() ? id() + '-inner' : null\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [disabled]=\"isDisabled()\"\n [class]=\"triggerClasses()\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeydown($event)\">\n @if (multiple()) {\n <span class=\"flex flex-wrap gap-1 flex-1 min-w-0 mr-2\" [class.text-surface-400]=\"selectedOptions().length === 0\">\n @if (selectedOptions().length === 0) {\n {{ placeholder() }}\n } @else {\n @for (opt of selectedOptions(); track opt) {\n <span class=\"rounded-md bg-surface-100 px-2 py-0.5 text-sm text-surface-800\">{{ opt.label }}</span>\n }\n }\n </span>\n } @else {\n <span [class.text-surface-400]=\"!selectedOption()\">\n {{ selectedOption()?.label ?? placeholder() }}\n </span>\n }\n\n <svg\n class=\"shrink-0 ml-2 w-4 h-4 text-surface-400 transition-transform duration-150\"\n [class.rotate-180]=\"isOpen()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">{{ helperText() }}</p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">{{ errorText() }}</p>\n }\n</div>\n\n<!-- Dropdown panel — rendered via CDK Overlay outside the component DOM -->\n<ng-template #panelTemplate>\n <ul\n role=\"listbox\"\n [attr.aria-multiselectable]=\"multiple() ? true : null\"\n class=\"w-full bg-white border border-surface-200 rounded-md shadow-lg py-1 max-h-60 overflow-auto\">\n @if (placeholder()) {\n <li role=\"option\" aria-disabled=\"true\" class=\"px-3 py-2 text-sm text-surface-400 cursor-default select-none\">\n {{ placeholder() }}\n </li>\n }\n @for (option of options(); track option.value; let i = $index) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [class]=\"optionClasses(i, option)\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"!option.disabled && activeIndex.set(i)\">\n <span>{{ option.label }}</span>\n\n @if (isOptionSelected(option)) {\n <svg\n class=\"w-4 h-4 text-primary-600 shrink-0\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\">\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n </li>\n }\n </ul>\n</ng-template>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-toggle',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindToggle),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.css'\r\n})\r\nexport class TailwindToggle extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n\r\n /** Two-way bound checked state */\r\n readonly checked = model<boolean>(false);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Track (background) classes */\r\n readonly trackClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-7 h-4',\r\n sm: 'w-8 h-5',\r\n md: 'w-11 h-6',\r\n lg: 'w-14 h-7',\r\n xl: 'w-16 h-8'\r\n };\r\n\r\n const base = [\r\n 'relative inline-flex shrink-0 rounded-full',\r\n 'border-2 border-transparent',\r\n 'transition-colors duration-200 ease-in-out',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600',\r\n 'cursor-pointer disabled:cursor-not-allowed'\r\n ];\r\n\r\n const stateClass = this.checked() ? 'bg-primary-600' : 'bg-surface-300';\r\n\r\n return [...base, sizeMap[this.size()], stateClass].join(' ');\r\n });\r\n\r\n /** `aria-label` / `aria-labelledby` for the switch (label text is not a hit target) */\r\n readonly switchAria = computed(() => {\r\n const al = this.ariaLabel();\r\n if (al) {\r\n return { label: al, labelledBy: null as string | null };\r\n }\r\n const lb = this.label();\r\n const sid = this.id();\r\n if (lb && sid) {\r\n return { label: null, labelledBy: `${sid}-label` };\r\n }\r\n if (lb) {\r\n return { label: lb, labelledBy: null };\r\n }\r\n return { label: 'Toggle', labelledBy: null };\r\n });\r\n\r\n /** Thumb (knob) classes */\r\n readonly thumbClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, { thumb: string; translateOn: string }> = {\r\n xs: { thumb: 'w-3 h-3', translateOn: 'translate-x-3' },\r\n sm: { thumb: 'w-4 h-4', translateOn: 'translate-x-3' },\r\n md: { thumb: 'w-5 h-5', translateOn: 'translate-x-5' },\r\n lg: { thumb: 'w-6 h-6', translateOn: 'translate-x-7' },\r\n xl: { thumb: 'w-7 h-7', translateOn: 'translate-x-8' }\r\n };\r\n\r\n const config = sizeMap[this.size()];\r\n\r\n const base = [\r\n 'pointer-events-none inline-block rounded-full',\r\n 'bg-white shadow-md',\r\n 'transform transition-transform duration-200 ease-in-out'\r\n ];\r\n\r\n const translateClass = this.checked() ? config.translateOn : 'translate-x-0';\r\n\r\n return [...base, config.thumb, translateClass].join(' ');\r\n });\r\n\r\n // CVA\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.checked.set(!!value);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n toggle(): void {\r\n if (this.isDisabled()) return;\r\n const newValue = !this.checked();\r\n this.checked.set(newValue);\r\n this.onChange(newValue);\r\n this.onTouched();\r\n }\r\n}\r\n","<div\n class=\"inline-flex items-center gap-3 select-none\"\n [class.opacity-50]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-label]=\"switchAria().label\"\n [attr.aria-labelledby]=\"switchAria().labelledBy\"\n [disabled]=\"isDisabled()\"\n [class]=\"trackClasses()\"\n (click)=\"toggle()\">\n <span [class]=\"thumbClasses()\" aria-hidden=\"true\"></span>\n </button>\n\n @if (label()) {\n <span [attr.id]=\"id() ? id() + '-label' : null\" class=\"text-sm font-medium text-surface-800\">{{ label() }}</span>\n }\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-badge',\r\n templateUrl: './badge.component.html',\r\n styleUrl: './badge.component.css'\r\n})\r\nexport class TailwindBadge extends TailwindComponent {\r\n /** Color variant */\r\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('primary');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Show a dot indicator */\r\n readonly dot = input<boolean>(false);\r\n /** Shape variant */\r\n readonly rounded = input<boolean>(false);\r\n /** Accessible label */\r\n readonly ariaLabel = input<string>('');\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = ['inline-flex items-center gap-1 font-medium', 'leading-none'];\r\n\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-100 text-primary-700',\r\n neutral: 'bg-surface-100 text-surface-700',\r\n success: 'bg-success-100 text-success-700',\r\n warning: 'bg-warning-100 text-warning-800',\r\n danger: 'bg-danger-100 text-danger-700',\r\n info: 'bg-info-100 text-info-700'\r\n };\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-[10px] px-1.5 py-0.5',\r\n sm: 'text-xs px-2 py-0.5',\r\n md: 'text-xs px-2.5 py-1',\r\n lg: 'text-sm px-3 py-1',\r\n xl: 'text-sm px-3.5 py-1.5'\r\n };\r\n\r\n const shape = this.rounded() ? 'rounded-full' : 'rounded-md';\r\n\r\n return [...base, variantMap[this.variant()] ?? variantMap['primary'], sizeMap[this.size()], shape].join(' ');\r\n });\r\n}\r\n","<span [class]=\"computedClasses()\" [attr.aria-label]=\"ariaLabel()\">\n @if (dot()) {\n <span class=\"w-1.5 h-1.5 rounded-full bg-current\"></span>\n }\n <ng-content />\n</span>\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, computed, input } from '@angular/core';\r\nimport type { TailwindSolarIcon, TailwindTitleTag } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindIcon } from '../icon/icon.component';\r\n\r\n@Component({\r\n selector: 'tailwind-title',\r\n imports: [NgTemplateOutlet, TailwindIcon],\r\n templateUrl: './title.component.html',\r\n styleUrl: './title.component.css'\r\n})\r\nexport class TailwindTitle extends TailwindComponent {\r\n /** Visible title text */\r\n readonly text = input.required<string>();\r\n\r\n /** Optional Solar Line Duotone icon name (shown before `text`) */\r\n readonly icon = input<TailwindSolarIcon | undefined>();\r\n\r\n /** HTML heading element */\r\n readonly titleTag = input<TailwindTitleTag>('h2');\r\n\r\n readonly headingClasses = computed(() => {\r\n const tag = this.titleTag();\r\n const scale: Record<TailwindTitleTag, string> = {\r\n h1: 'text-3xl font-bold tracking-tight text-surface-900',\r\n h2: 'text-2xl font-semibold tracking-tight text-surface-900',\r\n h3: 'text-xl font-semibold tracking-tight text-surface-900',\r\n h4: 'text-lg font-normal text-surface-900',\r\n h5: 'text-base font-normal text-surface-900',\r\n h6: 'text-sm font-normal text-surface-800 uppercase tracking-wide'\r\n };\r\n const layout = 'inline-flex items-center gap-2 min-w-0';\r\n const extra = this.class();\r\n const base = `${scale[tag]} ${layout}`.trim();\r\n return extra ? `${base} ${extra}`.trim() : base;\r\n });\r\n\r\n readonly iconSize = computed(() => {\r\n const tag = this.titleTag();\r\n const size: Record<TailwindTitleTag, number> = {\r\n h1: 32,\r\n h2: 24,\r\n h3: 20,\r\n h4: 18,\r\n h5: 16,\r\n h6: 14\r\n };\r\n return size[tag];\r\n });\r\n}\r\n","@switch (titleTag()) {\r\n @case ('h1') {\r\n <h1 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h1>\r\n }\r\n @case ('h2') {\r\n <h2 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h2>\r\n }\r\n @case ('h3') {\r\n <h3 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h3>\r\n }\r\n @case ('h4') {\r\n <h4 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h4>\r\n }\r\n @case ('h5') {\r\n <h5 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h5>\r\n }\r\n @case ('h6') {\r\n <h6 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h6>\r\n }\r\n}\r\n\r\n<ng-template #titleBody>\r\n @if (icon()) {\r\n <tailwind-icon [icon]=\"icon()!\" [size]=\"iconSize()\" />\r\n }\r\n <span class=\"min-w-0\">{{ text() }}</span>\r\n</ng-template>\r\n","import { Component, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-card',\r\n templateUrl: './card.component.html',\r\n styleUrl: './card.component.css'\r\n})\r\nexport class TailwindCard extends TailwindComponent {\r\n /** Whether the card has elevated shadow */\r\n readonly elevated = input<boolean>(false);\r\n /** Whether to show hover shadow effect */\r\n readonly hoverable = input<boolean>(false);\r\n /** Whether to show header background */\r\n readonly headerBg = input<boolean>(false);\r\n /** Whether the card has a header */\r\n readonly hasHeader = input<boolean>(true);\r\n /** Whether the card has a footer */\r\n readonly hasFooter = input<boolean>(true);\r\n}\r\n","<div\n class=\"bg-white rounded-xl border border-surface-200 overflow-hidden transition-shadow duration-200\"\n [class.shadow-sm]=\"!elevated()\"\n [class.shadow-lg]=\"elevated()\"\n [class.hover:shadow-md]=\"hoverable() && !elevated()\"\n [class.hover:shadow-xl]=\"hoverable() && elevated()\">\n @if (hasHeader()) {\n <!-- Header slot (always rendered; only visible when content is projected) -->\n <div class=\"px-6 pt-4 border-b border-surface-100\" [class.bg-surface-50]=\"headerBg()\">\n <ng-content select=\"[tailwind-card-header]\" />\n </div>\n }\n\n <!-- Image slot -->\n <ng-content select=\"[tailwind-card-image]\" />\n\n <!-- Body -->\n <div class=\"p-6\">\n <ng-content />\n </div>\n\n @if (hasFooter()) {\n <!-- Footer slot -->\n <div class=\"px-6 py-4 border-t border-surface-100 bg-surface-50/50\">\n <ng-content select=\"[tailwind-card-footer]\" />\n </div>\n }\n</div>\n","import { Component, computed, input, output, signal } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-alert',\r\n templateUrl: './alert.component.html',\r\n styleUrl: './alert.component.css'\r\n})\r\nexport class TailwindAlert extends TailwindComponent {\r\n /** Severity / color variant */\r\n readonly severity = input<TailwindSeverity>('info');\r\n /** Alert title */\r\n readonly title = input<string>('');\r\n /** Whether the alert can be dismissed */\r\n readonly dismissible = input<boolean>(false);\r\n /** Whether to show a border on the left */\r\n readonly bordered = input<boolean>(true);\r\n\r\n /** Emitted when the alert is dismissed */\r\n readonly onDismiss = output<void>();\r\n\r\n /** Internal dismissed state */\r\n readonly dismissed = signal(false);\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = 'flex gap-3 p-4 rounded-lg';\r\n\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 text-success-800 border-success-200',\r\n warning: 'bg-warning-50 text-warning-800 border-warning-200',\r\n danger: 'bg-danger-50 text-danger-800 border-danger-200',\r\n info: 'bg-info-50 text-info-800 border-info-200'\r\n };\r\n\r\n const borderClass = this.bordered() ? 'border-l-4' : 'border';\r\n\r\n return `${base} ${variantMap[this.severity()]} ${borderClass}`;\r\n });\r\n\r\n dismiss(): void {\r\n this.dismissed.set(true);\r\n this.onDismiss.emit();\r\n }\r\n}\r\n","@if (!dismissed()) {\r\n <div [class]=\"computedClasses()\" role=\"alert\" [attr.aria-live]=\"severity() === 'danger' ? 'assertive' : 'polite'\">\r\n <!-- Icon -->\r\n <div class=\"shrink-0 mt-0.5\">\r\n @switch (severity()) {\r\n @case ('success') {\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n }\r\n @case ('warning') {\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 6a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 6zm0 9a1 1 0 100-2 1 1 0 000 2z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n }\r\n @case ('danger') {\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n }\r\n @case ('info') {\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Content -->\r\n <div class=\"flex-1 min-w-0\">\r\n @if (title()) {\r\n <h3 class=\"text-sm font-semibold mb-0.5\">{{ title() }}</h3>\r\n }\r\n <div class=\"text-sm\">\r\n <ng-content />\r\n </div>\r\n </div>\r\n\r\n <!-- Dismiss button -->\r\n @if (dismissible()) {\r\n <button\r\n type=\"button\"\r\n class=\"shrink-0 -m-1 p-1 rounded-md opacity-70 hover:opacity-100 transition-opacity focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 cursor-pointer\"\r\n [attr.aria-label]=\"'Dismiss alert'\"\r\n (click)=\"dismiss()\">\r\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n}\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindColor, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrl: './spinner.component.css'\r\n})\r\nexport class TailwindSpinner extends TailwindComponent {\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Color uses Tailwind text color class */\r\n readonly color = input<TailwindColor>('primary');\r\n /** Optional label text */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('Loading');\r\n /** Layout orientation */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n\r\n readonly containerClasses = computed(() => {\r\n const base = 'inline-flex items-center gap-2';\r\n const orient = this.orientation() === 'vertical' ? 'flex-col' : '';\r\n return `${base} ${orient}`;\r\n });\r\n\r\n readonly spinnerClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3 h-3',\r\n sm: 'w-4 h-4',\r\n md: 'w-6 h-6',\r\n lg: 'w-8 h-8',\r\n xl: 'w-12 h-12'\r\n };\r\n\r\n const colorMap: Record<TailwindColor, string> = {\r\n primary: 'text-primary-600',\r\n secondary: 'text-secondary-600',\r\n success: 'text-success-600',\r\n warning: 'text-warning-600',\r\n danger: 'text-danger-600',\r\n info: 'text-info-600'\r\n };\r\n\r\n return `tailwind-spinner-svg ${sizeMap[this.size()]} ${colorMap[this.color()]}`;\r\n });\r\n\r\n readonly labelClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs',\r\n sm: 'text-xs',\r\n md: 'text-sm',\r\n lg: 'text-base',\r\n xl: 'text-lg'\r\n };\r\n\r\n return `${sizeMap[this.size()]} ${this.color()} font-medium`;\r\n });\r\n}\r\n","<div [class]=\"containerClasses()\" role=\"status\" [attr.aria-label]=\"ariaLabel()\">\n <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-20\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-80\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n\n @if (label()) {\n <span [class]=\"labelClasses()\">{{ label() }}</span>\n }\n</div>\n","import { Component, computed, effect, ElementRef, input, output, signal, viewChild } from '@angular/core';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.css'\r\n})\r\nexport class TailwindModal extends TailwindComponent {\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether to show close button in header */\r\n readonly showCloseButton = input<boolean>(true);\r\n /** Whether clicking backdrop closes the modal */\r\n readonly closeOnBackdrop = input<boolean>(true);\r\n /** Whether pressing Escape closes the modal */\r\n readonly closeOnEscape = input<boolean>(true);\r\n\r\n /** Open/close state */\r\n readonly isOpen = signal(false);\r\n /** Visibility for animation */\r\n readonly isVisible = signal(false);\r\n\r\n /** Emitted when the modal is fully closed (after exit animation) */\r\n readonly onClose = output<void>();\r\n\r\n private readonly modalPanel = viewChild<ElementRef>('modalPanel');\r\n\r\n readonly panelClasses = computed(() => {\r\n const base = ['relative bg-white rounded-xl shadow-2xl', 'w-full transform transition-all duration-200'];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'max-w-sm',\r\n sm: 'max-w-md',\r\n md: 'max-w-lg',\r\n lg: 'max-w-2xl',\r\n xl: 'max-w-4xl'\r\n };\r\n\r\n const animation = this.isVisible() ? 'opacity-100 scale-100' : 'opacity-0 scale-95';\r\n\r\n return [...base, sizeMap[this.size()], animation].join(' ');\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.isOpen()) {\r\n requestAnimationFrame(() => {\r\n this.isVisible.set(true);\r\n this.modalPanel()?.nativeElement?.focus();\r\n });\r\n }\r\n });\r\n }\r\n\r\n /** Open the modal */\r\n open(): void {\r\n this.isOpen.set(true);\r\n }\r\n\r\n /** Close the modal (plays exit animation then emits onClose) */\r\n close(): void {\r\n this.isVisible.set(false);\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.onClose.emit();\r\n }, 200);\r\n }\r\n}\r\n","@if (isOpen()) {\r\n <!-- Backdrop -->\r\n <div\r\n class=\"fixed inset-0 bg-black/50 backdrop-blur-sm z-1040 transition-opacity duration-200\"\r\n [class.opacity-100]=\"isVisible()\"\r\n [class.opacity-0]=\"!isVisible()\"\r\n (click)=\"closeOnBackdrop() && close()\"\r\n aria-hidden=\"true\"></div>\r\n\r\n <!-- Modal -->\r\n <div\r\n role=\"dialog\"\r\n class=\"fixed inset-0 z-1050 overflow-y-auto\"\r\n [attr.aria-modal]=\"true\"\r\n (keydown.escape)=\"closeOnEscape() && close()\">\r\n <div class=\"flex min-h-full items-center justify-center p-4\">\r\n <div #modalPanel [class]=\"panelClasses()\" tabindex=\"-1\">\r\n <!-- Header -->\r\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-surface-200\">\r\n <h2 class=\"text-lg font-semibold text-surface-900 pr-2\">\r\n <ng-content />\r\n </h2>\r\n @if (showCloseButton()) {\r\n <button\r\n type=\"button\"\r\n class=\"p-1.5 -m-1.5 shrink-0 rounded-lg text-surface-400 hover:text-surface-600 hover:bg-surface-100 transition-colors cursor-pointer\"\r\n aria-label=\"Close\"\r\n (click)=\"close()\">\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"px-6 py-5\">\r\n <ng-content select=\"[tailwind-modal-content]\" />\r\n </div>\r\n\r\n <!-- Footer -->\r\n <div class=\"border-t border-surface-200 px-6 py-4\">\r\n <ng-content select=\"[tailwind-modal-footer]\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { Component, input, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrl: './tab.component.css'\r\n})\r\nexport class TailwindTab extends TailwindComponent {\r\n /** Tab label */\r\n readonly label = input.required<string>();\r\n /** Tab icon (optional, CSS class or content) */\r\n readonly icon = input<string>('');\r\n /** Whether the tab is disabled */\r\n readonly disabled = input<boolean>(false);\r\n /** Whether this tab is the currently active one (set by parent) */\r\n readonly isActive = signal(false);\r\n}\r\n","@if (isActive()) {\n <div role=\"tabpanel\" [attr.aria-labelledby]=\"id() ? 'tab-' + id() : null\">\n <ng-content />\n </div>\n}\n","import { Component, contentChildren, input, model, effect } from '@angular/core';\r\nimport { TailwindTab } from './tab.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tab-group',\r\n templateUrl: './tab-group.component.html',\r\n styleUrl: './tab-group.component.css'\r\n})\r\nexport class TailwindTabGroup extends TailwindComponent {\r\n /** Accessible label for the tab list */\r\n readonly ariaLabel = input<string>('');\r\n /** Whether tabs can scroll horizontally */\r\n readonly scrollable = input<boolean>(false);\r\n\r\n /** Currently active tab index (two-way) */\r\n readonly activeIndex = model<number>(0);\r\n\r\n /** Query all child TailwindTab components */\r\n readonly tabs = contentChildren(TailwindTab);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const allTabs = this.tabs();\r\n const idx = this.activeIndex();\r\n allTabs.forEach((tab, i) => tab.isActive.set(i === idx));\r\n });\r\n }\r\n\r\n selectTab(index: number): void {\r\n this.activeIndex.set(index);\r\n }\r\n}\r\n","<!-- Tab Headers -->\n<div class=\"border-b border-surface-200\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\">\n <nav class=\"flex -mb-px gap-1\" [class.overflow-x-auto]=\"scrollable()\">\n @for (tab of tabs(); track $index; let i = $index) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.id]=\"tab.id() ? 'tab-' + tab.id() : null\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-controls]=\"tab.id() ? tab.id() : null\"\n [disabled]=\"tab.disabled()\"\n class=\"group relative px-4 py-2.5 text-sm font-medium whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 focus-visible:rounded-t-lg\"\n [class.text-primary-600]=\"activeIndex() === i\"\n [class.text-surface-500]=\"activeIndex() !== i\"\n [class.hover:text-surface-700]=\"activeIndex() !== i && !tab.disabled()\"\n [class.opacity-50]=\"tab.disabled()\"\n [class.cursor-not-allowed]=\"tab.disabled()\"\n (click)=\"!tab.disabled() && selectTab(i)\">\n {{ tab.label() }}\n <!-- Active indicator -->\n <span\n class=\"absolute bottom-0 left-0 right-0 h-0.5 rounded-full transition-all duration-200\"\n [class.bg-primary-600]=\"activeIndex() === i\"\n [class.scale-x-100]=\"activeIndex() === i\"\n [class.scale-x-0]=\"activeIndex() !== i\"></span>\n </button>\n }\n </nav>\n</div>\n\n<!-- Tab Content -->\n<div class=\"pt-4\">\n <ng-content />\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrl: './progress-bar.component.css'\r\n})\r\nexport class TailwindProgressBar extends TailwindComponent {\r\n /** Current value (0-100) */\r\n readonly value = input<number>(0);\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Show the label row */\r\n readonly showLabel = input<boolean>(true);\r\n /** Show percentage value */\r\n readonly showValue = input<boolean>(true);\r\n /** Color variant */\r\n readonly variant = input<TailwindSeverity | 'primary'>('primary');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Indeterminate mode (animated) */\r\n readonly indeterminate = input<boolean>(false);\r\n /** Whether to use striped pattern */\r\n readonly striped = input<boolean>(false);\r\n\r\n readonly clampedValue = computed(() => Math.max(0, Math.min(100, this.value())));\r\n\r\n readonly trackClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'h-1',\r\n sm: 'h-1.5',\r\n md: 'h-2.5',\r\n lg: 'h-4',\r\n xl: 'h-5'\r\n };\r\n\r\n return `w-full bg-surface-200 rounded-full overflow-hidden ${sizeMap[this.size()]}`;\r\n });\r\n\r\n readonly barClasses = computed(() => {\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-600',\r\n success: 'bg-success-600',\r\n warning: 'bg-warning-500',\r\n danger: 'bg-danger-600',\r\n info: 'bg-info-600'\r\n };\r\n\r\n const base = [\r\n 'h-full rounded-full transition-all duration-300 ease-out',\r\n variantMap[this.variant()] ?? variantMap['primary']\r\n ];\r\n\r\n if (this.indeterminate()) {\r\n base.push('tailwind-progress-indeterminate');\r\n }\r\n\r\n if (this.striped()) {\r\n base.push('bg-gradient-to-r from-transparent via-white/20 to-transparent bg-[length:1rem_100%]');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n}\r\n","<div class=\"w-full\">\n @if (showLabel()) {\n <div class=\"flex justify-between items-center mb-1.5\">\n @if (label()) {\n <span class=\"text-sm font-medium text-surface-700\">{{ label() }}</span>\n }\n @if (showValue()) {\n <span class=\"text-sm font-medium text-surface-600\">{{ clampedValue() }}%</span>\n }\n </div>\n }\n\n <div\n [class]=\"trackClasses()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"clampedValue()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-label]=\"label() || 'Progress'\">\n <div [class]=\"barClasses()\" [style.width.%]=\"indeterminate() ? 100 : clampedValue()\"></div>\n </div>\n</div>\n","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n OnDestroy,\r\n OnInit,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindMenuItem } from '../../models';\r\n\r\n/** Matches previous `min-w-48` floor when the anchor is narrower. */\r\nconst MIN_PANEL_WIDTH_PX = 192;\r\n\r\n@Component({\r\n selector: 'tailwind-menu',\r\n templateUrl: './menu.component.html',\r\n styleUrl: './menu.component.css'\r\n})\r\nexport class TailwindMenu extends TailwindComponent implements OnDestroy, OnInit {\r\n private openScheduleId: ReturnType<typeof setTimeout> | undefined;\r\n private anchorEl: HTMLElement | null = null;\r\n\r\n private readonly onScrollReposition = (): void => {\r\n if (this.isOpen()) {\r\n this.updatePanelPosition();\r\n }\r\n };\r\n\r\n readonly items = input<TailwindMenuItem[]>([]);\r\n readonly align = input<'left' | 'right'>('left');\r\n\r\n readonly onSelect = output<TailwindMenuItem>();\r\n\r\n readonly isOpen = signal(false);\r\n\r\n /** Popover box in coordinates relative to the `position: fixed` containing block (often viewport, not under transformed Docs wrappers). */\r\n readonly panelLayout = signal<{\r\n top: number;\r\n left?: number;\r\n right?: number;\r\n minWidth: number;\r\n } | null>(null);\r\n\r\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\r\n\r\n ngOnInit(): void {\r\n document.addEventListener('scroll', this.onScrollReposition, true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n document.removeEventListener('scroll', this.onScrollReposition, true);\r\n if (this.openScheduleId != null) {\r\n clearTimeout(this.openScheduleId);\r\n }\r\n }\r\n\r\n /**\r\n * Opens the menu under `anchor` (toggle element).\r\n * Pass the click event from the button, e.g. `(click)=\"menu.open($event)\"`, or an `HTMLElement`.\r\n * After the first open with an anchor, `open()` without arguments reuses the last anchor.\r\n *\r\n * Opening is deferred one macrotask so the same `click` is not closed immediately by `document:click`.\r\n */\r\n open(anchor?: Event | HTMLElement): void {\r\n if (anchor !== undefined) {\r\n this.storeAnchor(anchor);\r\n }\r\n if (!this.anchorEl) {\r\n return;\r\n }\r\n if (this.isOpen()) {\r\n return;\r\n }\r\n this.scheduleOpen();\r\n }\r\n\r\n close(): void {\r\n this.isOpen.set(false);\r\n this.panelLayout.set(null);\r\n }\r\n\r\n toggle(anchor?: Event | HTMLElement): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n if (anchor !== undefined) {\r\n this.storeAnchor(anchor);\r\n }\r\n if (!this.anchorEl) {\r\n return;\r\n }\r\n this.scheduleOpen();\r\n }\r\n\r\n private storeAnchor(anchor: Event | HTMLElement): void {\r\n if (anchor instanceof HTMLElement) {\r\n this.anchorEl = anchor;\r\n return;\r\n }\r\n const target = anchor.currentTarget;\r\n if (target instanceof HTMLElement) {\r\n this.anchorEl = target;\r\n }\r\n }\r\n\r\n private scheduleOpen(): void {\r\n if (this.openScheduleId != null) {\r\n clearTimeout(this.openScheduleId);\r\n }\r\n this.openScheduleId = setTimeout(() => {\r\n this.openScheduleId = undefined;\r\n this.isOpen.set(true);\r\n this.updatePanelPosition();\r\n requestAnimationFrame(() => this.updatePanelPosition());\r\n }, 0);\r\n }\r\n\r\n private updatePanelPosition(): void {\r\n const anchor = this.anchorEl;\r\n if (!anchor) {\r\n this.panelLayout.set(null);\r\n return;\r\n }\r\n const panelEl = this.panelRef()?.nativeElement;\r\n const cbRoot = panelEl\r\n ? this.getFixedPositioningContainingBlock(panelEl)\r\n : this.getFixedPositioningContainingBlock(anchor);\r\n const cbRect = cbRoot.getBoundingClientRect();\r\n const rect = anchor.getBoundingClientRect();\r\n const minWidth = Math.max(rect.width, MIN_PANEL_WIDTH_PX);\r\n const top = rect.bottom - cbRect.top;\r\n if (this.align() === 'right') {\r\n this.panelLayout.set({\r\n top,\r\n right: cbRect.right - rect.right,\r\n minWidth\r\n });\r\n } else {\r\n this.panelLayout.set({\r\n top,\r\n left: rect.left - cbRect.left,\r\n minWidth\r\n });\r\n }\r\n }\r\n\r\n selectItem(item: TailwindMenuItem): void {\r\n if (!item.disabled) {\r\n this.onSelect.emit(item);\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onDocumentEscape(): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n this.close();\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: Event): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n const target = event.target as Node | null;\r\n if (!target) {\r\n return;\r\n }\r\n const panelEl = this.panelRef()?.nativeElement;\r\n const inPanel = panelEl?.contains(target) ?? false;\r\n const inAnchor = this.anchorEl?.contains(target) ?? false;\r\n if (!inPanel && !inAnchor) {\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n if (this.isOpen()) {\r\n this.updatePanelPosition();\r\n }\r\n }\r\n\r\n /** Ancestor that becomes the containing block for `position: fixed` (e.g. Storybook Docs wrappers with `transform`). */\r\n private createsFixedContainingBlock(el: HTMLElement): boolean {\r\n const s = getComputedStyle(el);\r\n if (s.transform && s.transform !== 'none') {\r\n return true;\r\n }\r\n if (s.perspective && s.perspective !== 'none') {\r\n return true;\r\n }\r\n if (s.filter && s.filter !== 'none') {\r\n return true;\r\n }\r\n const contain = s.contain;\r\n if (contain && contain !== 'none' && contain.split(/\\s+/).includes('paint')) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private getFixedPositioningContainingBlock(from: HTMLElement): HTMLElement {\r\n for (let p = from.parentElement; p; p = p.parentElement) {\r\n if (this.createsFixedContainingBlock(p)) {\r\n return p;\r\n }\r\n }\r\n return document.documentElement;\r\n }\r\n}\r\n","@if (isOpen() && panelLayout(); as layout) {\n <div\n #panel\n role=\"menu\"\n class=\"fixed z-1000 bg-white rounded-xl border border-surface-200 shadow-lg py-1 animate-in fade-in slide-in-from-top-1\"\n [style.top.px]=\"layout.top\"\n [style.left.px]=\"layout.left ?? null\"\n [style.right.px]=\"layout.right ?? null\"\n [style.minWidth.px]=\"layout.minWidth\">\n @for (item of items(); track $index) {\n @if (item.divider) {\n <hr class=\"my-1 border-surface-100\" />\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [disabled]=\"!!item.disabled\"\n class=\"w-full text-left px-4 py-2 text-sm text-surface-700 hover:bg-surface-50 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer\"\n (click)=\"selectItem(item)\">\n {{ item.label }}\n </button>\n }\n }\n </div>\n}\n","import { Component, computed, input, output, signal } from '@angular/core';\r\nimport { TailwindPosition } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-drawer',\r\n templateUrl: './drawer.component.html',\r\n styleUrl: './drawer.component.css'\r\n})\r\nexport class TailwindDrawer extends TailwindComponent {\r\n /** Drawer title */\r\n readonly title = input<string>('');\r\n /** Position (left or right) */\r\n readonly position = input<'left' | 'right'>('right');\r\n /** Width class */\r\n readonly width = input<string>('max-w-md');\r\n /** Whether clicking backdrop closes */\r\n readonly closeOnBackdrop = input<boolean>(true);\r\n\r\n /** Open/close state */\r\n readonly isOpen = signal(false);\r\n /** Visibility for animation */\r\n readonly isVisible = signal(false);\r\n\r\n /** Emitted when closed */\r\n readonly onClose = output<void>();\r\n\r\n readonly panelClasses = computed(() => {\r\n const base = [\r\n 'fixed top-0 bottom-0 z-[1050]',\r\n 'flex flex-col w-full bg-white shadow-2xl',\r\n 'transition-transform duration-300 ease-in-out',\r\n this.width()\r\n ];\r\n\r\n const pos = this.position();\r\n\r\n if (pos === 'right') {\r\n base.push('right-0');\r\n base.push(this.isVisible() ? 'translate-x-0' : 'translate-x-full');\r\n } else {\r\n base.push('left-0');\r\n base.push(this.isVisible() ? 'translate-x-0' : '-translate-x-full');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n\r\n open(): void {\r\n this.isOpen.set(true);\r\n requestAnimationFrame(() => {\r\n this.isVisible.set(true);\r\n });\r\n }\r\n\r\n close(): void {\r\n this.isVisible.set(false);\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.onClose.emit();\r\n }, 300);\r\n }\r\n}\r\n","@if (isOpen()) {\n <!-- Backdrop -->\n <div\n class=\"fixed inset-0 bg-black/40 backdrop-blur-sm z-1040 transition-opacity duration-300\"\n [class.opacity-100]=\"isVisible()\"\n [class.opacity-0]=\"!isVisible()\"\n (click)=\"closeOnBackdrop() && close()\"\n aria-hidden=\"true\"></div>\n\n <!-- Drawer Panel -->\n <div [class]=\"panelClasses()\" role=\"dialog\" [attr.aria-modal]=\"true\" [attr.aria-label]=\"title()\">\n <!-- Header -->\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-surface-200\">\n @if (title()) {\n <h2 class=\"text-lg font-semibold text-surface-900\">{{ title() }}</h2>\n }\n <button\n type=\"button\"\n class=\"p-1.5 -m-1.5 rounded-lg text-surface-400 hover:text-surface-600 hover:bg-surface-100 transition-colors ml-auto cursor-pointer\"\n aria-label=\"Close\"\n (click)=\"close()\">\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"flex-1 overflow-y-auto px-6 py-5\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n <ng-content select=\"[tailwind-drawer-footer]\" />\n </div>\n}\n","import { Component, input } from '@angular/core';\r\nimport { TailwindBreadcrumbItem } from './interfaces/breadcrumb-item.interface';\r\nimport { TailwindIcon } from '../icon/icon.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { RouterLink } from '@angular/router';\r\n\r\nexport type { TailwindBreadcrumbItem };\r\n\r\n@Component({\r\n imports: [RouterLink, TailwindIcon],\r\n selector: 'tailwind-breadcrumb',\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.css'\r\n})\r\nexport class TailwindBreadcrumb extends TailwindComponent {\r\n readonly items = input<TailwindBreadcrumbItem[]>([]);\r\n readonly separator = input<string>('>');\r\n readonly ariaLabel = input<string>('Breadcrumb');\r\n}\r\n","<nav [attr.aria-label]=\"ariaLabel()\" class=\"flex\">\r\n <ol class=\"inline-flex items-center text-sm\">\r\n @for (item of items(); track item.label; let last = $last; let first = $first) {\r\n <li class=\"inline-flex items-center\">\r\n @if (!first) {\r\n <span class=\"mx-2 text-surface-400\" aria-hidden=\"true\">\r\n {{ separator() }}\r\n </span>\r\n }\r\n @if (item.link && !last) {\r\n <a\r\n [routerLink]=\"item.link\"\r\n class=\"inline-flex items-center gap-1 text-surface-500 hover:text-primary-600 transition-colors font-medium\">\r\n @if (item.icon) {\r\n <tailwind-icon [icon]=\"item.icon\" [size]=\"16\" />\r\n }\r\n {{ item.label }}\r\n </a>\r\n } @else {\r\n <span\r\n class=\"inline-flex items-center gap-1 font-medium\"\r\n [class.text-surface-900]=\"last\"\r\n [class.text-surface-500]=\"!last\"\r\n [attr.aria-current]=\"last ? 'page' : null\">\r\n @if (item.icon) {\r\n <tailwind-icon [icon]=\"item.icon\" [size]=\"16\" />\r\n }\r\n {{ item.label }}\r\n </span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n</nav>\r\n","import { Component, computed, input, model, output } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { Pagination } from './interfaces/pagination.interface';\r\nexport type { Pagination };\r\n\r\n@Component({\r\n selector: 'tailwind-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrl: './pagination.component.css'\r\n})\r\nexport class TailwindPagination extends TailwindComponent {\r\n readonly totalItems = input.required<Pagination['totalItems']>();\r\n readonly pageSize = input<Pagination['pageSize']>(10);\r\n readonly currentPage = model<Pagination['currentPage']>(1);\r\n readonly ariaLabel = input<Pagination['ariaLabel']>('Pagination');\r\n readonly summary = input<Pagination['summary']>('Showing {start}-{end} of {total}');\r\n\r\n readonly onPageChange = output<number>();\r\n\r\n readonly totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\r\n\r\n readonly visiblePages = computed(() => {\r\n const total = this.totalPages();\r\n return Array.from({ length: total }, (_, i) => i + 1);\r\n });\r\n\r\n readonly summaryText = computed(() => {\r\n const total = this.totalItems();\r\n if (total === 0) return this.summary().replace('{start}', '0').replace('{end}', '0').replace('{total}', '0');\r\n const start = (this.currentPage() - 1) * this.pageSize() + 1;\r\n const end = Math.min(this.currentPage() * this.pageSize(), total);\r\n return this.summary()\r\n .replace('{start}', start.toString())\r\n .replace('{end}', end.toString())\r\n .replace('{total}', total.toString());\r\n });\r\n\r\n goToPage(page: number): void {\r\n if (page >= 1 && page <= this.totalPages()) {\r\n this.currentPage.set(page);\r\n this.onPageChange.emit(page);\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-wrap items-center justify-between gap-4 w-full\">\n @if (summary()) {\n <span class=\"text-sm text-surface-700 dark:text-surface-300\">\n {{ summaryText() }}\n </span>\n }\n\n <nav [attr.aria-label]=\"ariaLabel()\" class=\"flex items-center gap-1\">\n <!-- Previous -->\n <button\n type=\"button\"\n [disabled]=\"currentPage() <= 1\"\n (click)=\"goToPage(currentPage() - 1)\"\n class=\"p-2 rounded-lg text-surface-500 hover:bg-surface-100 disabled:opacity-40 disabled:cursor-not-allowed transition-colors cursor-pointer\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n\n @for (page of visiblePages(); track page) {\n <button\n type=\"button\"\n (click)=\"goToPage(page)\"\n class=\"min-w-8 h-8 px-2 rounded-lg text-sm font-medium transition-colors cursor-pointer\"\n [class.bg-primary-600]=\"page === currentPage()\"\n [class.text-white]=\"page === currentPage()\"\n [class.text-surface-600]=\"page !== currentPage()\"\n [class.hover:bg-surface-100]=\"page !== currentPage()\">\n {{ page }}\n </button>\n }\n\n <!-- Next -->\n <button\n type=\"button\"\n [disabled]=\"currentPage() >= totalPages()\"\n (click)=\"goToPage(currentPage() + 1)\"\n class=\"p-2 rounded-lg text-surface-500 hover:bg-surface-100 disabled:opacity-40 disabled:cursor-not-allowed transition-colors cursor-pointer\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </nav>\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tag',\r\n templateUrl: './tag.component.html',\r\n styleUrl: './tag.component.css'\r\n})\r\nexport class TailwindTag extends TailwindComponent {\r\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('neutral');\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-600 text-white',\r\n neutral: 'bg-surface-600 text-white',\r\n success: 'bg-success-600 text-white',\r\n warning: 'bg-warning-500 text-surface-900',\r\n danger: 'bg-danger-600 text-white',\r\n info: 'bg-info-600 text-white'\r\n };\r\n return `inline-flex items-center text-[11px] font-semibold uppercase tracking-wider px-2 py-0.5 rounded ${variantMap[this.variant()]}`;\r\n });\r\n}\r\n","<span [class]=\"computedClasses()\"><ng-content /></span>\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, HostListener, computed, contentChild, effect, input, output, signal } from '@angular/core';\r\nimport { Pagination, TailwindPagination } from '../pagination/pagination.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindTableSortHost } from './interfaces/tailwind-table-sort-host';\r\nimport { TailwindTableRowDirective } from '../../directives/table/tailwind-table-row.directive';\r\nexport type { TailwindTableSortHost };\r\n\r\n@Component({\r\n selector: 'tailwind-table',\r\n imports: [NgTemplateOutlet, TailwindPagination],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.css',\r\n host: {\r\n '[attr.data-tw-sort-key]': 'sortKey()',\r\n '[attr.data-tw-sort-dir]': 'sortDir()'\r\n }\r\n})\r\nexport class TailwindTable extends TailwindComponent implements TailwindTableSortHost {\r\n readonly data = input<Record<string, unknown>[]>([]);\r\n readonly selectable = input<boolean>(false);\r\n readonly striped = input<boolean>(false);\r\n readonly loading = input<boolean>(false);\r\n readonly emptyMessage = input<string>('No data available');\r\n /** Match your column count so the empty state spans the full table width. */\r\n readonly emptyColspan = input<number>(1);\r\n\r\n readonly paginated = input<boolean>(true);\r\n readonly pagination = input<Pagination>();\r\n\r\n readonly onSortChange = output<{ key: string; direction: 'asc' | 'desc' }>();\r\n readonly onSelectionChange = output<Set<number>>();\r\n\r\n readonly rowTemplate = contentChild.required(TailwindTableRowDirective);\r\n\r\n rowContext(row: Record<string, unknown>, index: number): Record<string, unknown> {\r\n return {\r\n $implicit: row,\r\n index,\r\n stripedRow: this.striped() && index % 2 === 1,\r\n selected: this.selectedRows().has(index),\r\n selectable: this.selectable(),\r\n toggleRow: () => {\r\n if (!this.selectable()) return;\r\n this.toggleSelection(index);\r\n }\r\n };\r\n }\r\n\r\n readonly sortKey = signal<string>('');\r\n readonly sortDir = signal<'asc' | 'desc'>('asc');\r\n readonly selectedRows = signal<Set<number>>(new Set());\r\n readonly currentPage = signal<number>(1);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const fromInput = this.pagination()?.currentPage;\r\n if (fromInput != null && fromInput >= 1) {\r\n this.currentPage.set(fromInput);\r\n }\r\n });\r\n }\r\n\r\n readonly sortedData = computed(() => {\r\n let rows = [...this.data()];\r\n const key = this.sortKey();\r\n if (key) {\r\n const dir = this.sortDir() === 'asc' ? 1 : -1;\r\n rows.sort((a, b) => {\r\n const va = a[key],\r\n vb = b[key];\r\n const sa = va == null ? '' : String(va);\r\n const sb = vb == null ? '' : String(vb);\r\n const cmp = sa.localeCompare(sb, undefined, { numeric: true, sensitivity: 'base' });\r\n return dir * cmp;\r\n });\r\n }\r\n return rows;\r\n });\r\n\r\n readonly displayedData = computed(() => {\r\n const rows = this.sortedData();\r\n if (!this.paginated()) return rows;\r\n const size = this.pagination()?.pageSize ?? 10;\r\n const page = this.currentPage();\r\n return rows.slice((page - 1) * size, page * size);\r\n });\r\n\r\n sort(key: string): void {\r\n if (this.sortKey() === key) {\r\n this.sortDir.update(d => (d === 'asc' ? 'desc' : 'asc'));\r\n } else {\r\n this.sortKey.set(key);\r\n this.sortDir.set('asc');\r\n }\r\n this.currentPage.set(1);\r\n this.onSortChange.emit({ key: this.sortKey(), direction: this.sortDir() });\r\n }\r\n\r\n toggleSelection(index: number): void {\r\n this.selectedRows.update(s => {\r\n const next = new Set(s);\r\n if (next.has(index)) next.delete(index);\r\n else next.add(index);\r\n return next;\r\n });\r\n this.onSelectionChange.emit(this.selectedRows());\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n protected onSortZoneClick(ev: Event): void {\r\n this.delegateSortFromEvent(ev);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n protected onSortZoneKeydown(ev: KeyboardEvent): void {\r\n if (ev.key !== 'Enter' && ev.key !== ' ') return;\r\n const target = ev.target as HTMLElement | null;\r\n if (!target?.closest?.('[tailwindSortHeader]')) return;\r\n if (ev.key === ' ') ev.preventDefault();\r\n this.delegateSortFromEvent(ev);\r\n }\r\n\r\n private delegateSortFromEvent(ev: Event): void {\r\n const host = ev.currentTarget as HTMLElement;\r\n const target = ev.target as HTMLElement | null;\r\n const header = target?.closest?.('[tailwindSortHeader]') as HTMLElement | null;\r\n if (!header || !host.contains(header)) return;\r\n if (header.closest('tailwind-table') !== host) return;\r\n const key = header.getAttribute('data-sort-key');\r\n if (key) this.sort(key);\r\n }\r\n}\r\n","<div class=\"w-full overflow-x-auto rounded-lg border border-surface-200\">\n @if (loading()) {\n <div class=\"flex items-center justify-center py-16 text-surface-400\">\n <svg class=\"animate-spin w-6 h-6 mr-2\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8z\" />\n </svg>\n Loading...\n </div>\n } @else {\n <table class=\"w-full text-sm text-left divide-y divide-surface-100\">\n <ng-content select=\"thead\" />\n @for (row of displayedData(); track row; let i = $index) {\n <ng-container\n *ngTemplateOutlet=\"rowTemplate().templateRef; context: rowContext(row, i)\" />\n } @empty {\n <tbody>\n <tr>\n <td [attr.colspan]=\"emptyColspan()\">\n {{ emptyMessage() }}\n </td>\n </tr>\n </tbody>\n }\n </table>\n\n @if (paginated() && data().length > 0) {\n <div class=\"px-4 py-3 border-t border-surface-200 bg-white\">\n <tailwind-pagination\n [totalItems]=\"pagination()?.totalItems ?? data().length\"\n [pageSize]=\"pagination()?.pageSize ?? 10\"\n [currentPage]=\"currentPage()\"\n (onPageChange)=\"currentPage.set($event)\"\n [ariaLabel]=\"pagination()?.ariaLabel ?? 'Pagination'\"\n [summary]=\"pagination()?.summary ?? 'Showing {start}-{end} of {total}'\">\n </tailwind-pagination>\n </div>\n }\n }\n</div>\n","import { Component, computed, ElementRef, forwardRef, HostListener, inject, input, model, signal } from '@angular/core';\r\nimport { formatDate } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\n\r\nconst I18N: Record<Lang, { months: string[]; weekDays: string[]; today: string; confirm: string; placeholder: string }> = {\r\n it: {\r\n months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],\r\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\r\n today: 'Oggi',\r\n confirm: 'Applica',\r\n placeholder: 'Seleziona data'\r\n },\r\n en: {\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n today: 'Today',\r\n confirm: 'Apply',\r\n placeholder: 'Select date'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-date-picker',\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDatePicker), multi: true }],\r\n templateUrl: './date-picker.component.html',\r\n styleUrl: './date-picker.component.css'\r\n})\r\nexport class TailwindDatePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly weekDays = this.i18n.weekDays;\r\n\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string | undefined>(undefined);\r\n readonly format = input<string>('dd/MM/yyyy');\r\n\r\n readonly value = model<Date | null>(null);\r\n /** Working selection while the panel is open; committed on Apply. */\r\n readonly draft = signal<Date | null>(null);\r\n\r\n readonly isDisabled = signal(false);\r\n readonly showCalendar = signal(false);\r\n readonly viewMonth = signal(new Date().getMonth());\r\n readonly viewYear = signal(new Date().getFullYear());\r\n\r\n readonly effectivePlaceholder = computed(() => {\r\n const p = this.placeholder();\r\n return p?.trim() ? p : this.i18n.placeholder;\r\n });\r\n\r\n readonly displayValue = computed(() => {\r\n const d = this.value();\r\n if (!d) return '';\r\n const fmt = this.format();\r\n try {\r\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\r\n } catch {\r\n return formatDate(d, fmt, 'en-US');\r\n }\r\n });\r\n\r\n readonly monthYearLabel = computed(() =>\r\n `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`\r\n );\r\n\r\n readonly calendarDays = computed(() => {\r\n const y = this.viewYear(), m = this.viewMonth();\r\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\r\n const total = new Date(y, m + 1, 0).getDate();\r\n const days: number[] = Array(offset).fill(0);\r\n for (let i = 1; i <= total; i++) days.push(i);\r\n return days;\r\n });\r\n\r\n private onChange: (v: Date | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: Date | null): void {\r\n this.value.set(v ?? null);\r\n if (v && !isNaN(v.getTime())) {\r\n this.viewMonth.set(v.getMonth());\r\n this.viewYear.set(v.getFullYear());\r\n }\r\n }\r\n\r\n registerOnChange(fn: (v: Date | null) => void): void { this.onChange = fn; }\r\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n setDisabledState(d: boolean): void { this.isDisabled.set(d); }\r\n\r\n toggleCalendar(): void {\r\n if (this.isDisabled()) return;\r\n if (!this.showCalendar()) {\r\n this.draft.set(this.value());\r\n const ref = this.value() ?? new Date();\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n this.showCalendar.update(v => !v);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n this.value.set(d);\r\n this.onChange(d);\r\n this.onTouched();\r\n this.showCalendar.set(false);\r\n }\r\n\r\n prevMonth(): void {\r\n if (this.viewMonth() === 0) { this.viewMonth.set(11); this.viewYear.update(y => y - 1); }\r\n else { this.viewMonth.update(m => m - 1); }\r\n }\r\n\r\n nextMonth(): void {\r\n if (this.viewMonth() === 11) { this.viewMonth.set(0); this.viewYear.update(y => y + 1); }\r\n else { this.viewMonth.update(m => m + 1); }\r\n }\r\n\r\n selectDay(day: number): void {\r\n this.draft.set(new Date(this.viewYear(), this.viewMonth(), day));\r\n }\r\n\r\n isSelected(day: number): boolean {\r\n const d = this.draft();\r\n if (!d) return false;\r\n return d.getFullYear() === this.viewYear() && d.getMonth() === this.viewMonth() && d.getDate() === day;\r\n }\r\n\r\n isToday(day: number): boolean {\r\n const t = new Date();\r\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\r\n }\r\n\r\n goToToday(): void {\r\n const t = new Date();\r\n this.viewMonth.set(t.getMonth());\r\n this.viewYear.set(t.getFullYear());\r\n this.selectDay(t.getDate());\r\n }\r\n\r\n @HostListener('document:pointerdown', ['$event'])\r\n onDocumentPointerDown(event: PointerEvent): void {\r\n if (!this.showCalendar()) return;\r\n const t = event.target;\r\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\r\n this.showCalendar.set(false);\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n onDocumentKeydown(event: KeyboardEvent): void {\r\n if (event.key !== 'Escape' || !this.showCalendar()) return;\r\n event.stopPropagation();\r\n this.showCalendar.set(false);\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggleCalendar()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z\"\n clip-rule=\"evenodd\" />\n </svg>\n </div>\n\n @if (showCalendar()) {\n <div class=\"absolute z-popover mt-1 bg-white rounded-xl border border-surface-200 shadow-xl p-4 w-72\">\n <!-- Month/Year nav -->\n <div class=\"flex items-center justify-between mb-3\">\n <button\n type=\"button\"\n (click)=\"prevMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n <span class=\"text-sm font-semibold text-surface-800\">{{ monthYearLabel() }}</span>\n <button\n type=\"button\"\n (click)=\"nextMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n <!-- Weekdays -->\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track $index) {\n <div class=\"text-center text-xs font-medium text-surface-400 py-1\">{{ day }}</div>\n }\n </div>\n <!-- Days -->\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-surface-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-surface-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToToday()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.today }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled() || !draft()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.confirm }}\n </button>\n </div>\n </div>\n }\n</div>\n","import { Component, computed, ElementRef, forwardRef, HostListener, inject, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\ntype TimeDraft = { h: number; m: number };\r\n\r\nconst I18N: Record<Lang, { placeholder: string; now: string; apply: string }> = {\r\n it: { placeholder: 'Seleziona ora', now: 'Adesso', apply: 'Applica' },\r\n en: { placeholder: 'Select time', now: 'Now', apply: 'Apply' }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-time-picker',\r\n imports: [],\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindTimePicker), multi: true }],\r\n templateUrl: './time-picker.component.html',\r\n styleUrl: './time-picker.component.css'\r\n})\r\nexport class TailwindTimePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\r\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\r\n\r\n readonly label = input<string>('');\r\n readonly value = model<string>('');\r\n readonly isDisabled = signal(false);\r\n readonly showPanel = signal(false);\r\n readonly draft = signal<TimeDraft | null>(null);\r\n\r\n readonly displayValue = computed(() => this.value());\r\n\r\n private onChange: (v: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: string): void {\r\n this.value.set(v ?? '');\r\n }\r\n registerOnChange(fn: (v: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(d: boolean): void {\r\n this.isDisabled.set(d);\r\n }\r\n\r\n togglePanel(): void {\r\n if (this.isDisabled()) return;\r\n const opening = !this.showPanel();\r\n if (opening) {\r\n const v = this.value();\r\n const parts = v ? v.split(':') : null;\r\n const now = new Date();\r\n this.draft.set({\r\n h: parts ? parseInt(parts[0], 10) || 0 : now.getHours(),\r\n m: parts ? parseInt(parts[1], 10) || 0 : now.getMinutes()\r\n });\r\n }\r\n this.showPanel.set(opening);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n if (!d) return;\r\n const val = `${d.h.toString().padStart(2, '0')}:${d.m.toString().padStart(2, '0')}`;\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n this.showPanel.set(false);\r\n }\r\n\r\n goToNow(): void {\r\n const now = new Date();\r\n this.draft.set({ h: now.getHours(), m: now.getMinutes() });\r\n }\r\n\r\n onHourChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n this.draft.set({ ...cur, h: Number((e.target as HTMLSelectElement).value) });\r\n }\r\n\r\n onMinuteChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n this.draft.set({ ...cur, m: Number((e.target as HTMLSelectElement).value) });\r\n }\r\n\r\n @HostListener('document:pointerdown', ['$event'])\r\n onDocumentPointerDown(event: PointerEvent): void {\r\n if (!this.showPanel()) return;\r\n const t = event.target;\r\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\r\n this.showPanel.set(false);\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n onDocumentKeydown(event: KeyboardEvent): void {\r\n if (event.key !== 'Escape' || !this.showPanel()) return;\r\n event.stopPropagation();\r\n this.showPanel.set(false);\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"i18n.placeholder\"\n [disabled]=\"isDisabled()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n (click)=\"togglePanel()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z\"\n clip-rule=\"evenodd\" />\n </svg>\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-52 rounded-xl border border-surface-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center gap-2\">\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.h ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-surface-400 text-sm shrink-0\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.m ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToNow()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.now }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.apply }}\n </button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { formatDate } from '@angular/common';\r\nimport { Component, computed, ElementRef, forwardRef, HostListener, inject, input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\n\r\nconst I18N: Record<Lang, { months: string[]; weekDays: string[]; time: string; today: string; confirm: string; placeholder: string }> = {\r\n it: {\r\n months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],\r\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\r\n time: 'Ora',\r\n today: 'Oggi',\r\n confirm: 'Applica',\r\n placeholder: 'Seleziona data e ora'\r\n },\r\n en: {\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n time: 'Time',\r\n today: 'Today',\r\n confirm: 'Apply',\r\n placeholder: 'Select date and time'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-datetime-picker',\r\n imports: [],\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDateTimePicker), multi: true }],\r\n templateUrl: './datetime-picker.component.html',\r\n styleUrl: './datetime-picker.component.css'\r\n})\r\nexport class TailwindDateTimePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly weekDays = this.i18n.weekDays;\r\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\r\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\r\n\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string | undefined>(undefined);\r\n /** Angular [DatePipe](https://angular.dev/api/common/DatePipe) format string. */\r\n readonly format = input<string>('dd/MM/yyyy HH:mm');\r\n\r\n readonly selected = signal<Date | null>(null);\r\n readonly draft = signal<Date | null>(null);\r\n readonly isDisabled = signal(false);\r\n readonly showPanel = signal(false);\r\n readonly viewMonth = signal(new Date().getMonth());\r\n readonly viewYear = signal(new Date().getFullYear());\r\n\r\n readonly effectivePlaceholder = computed(() => {\r\n const p = this.placeholder();\r\n return p?.trim() ? p : this.i18n.placeholder;\r\n });\r\n\r\n readonly displayValue = computed(() => {\r\n const d = this.selected();\r\n if (!d) return '';\r\n // formatDate richiede registerLocaleData per locale non-EN: leggiamo format fuori dal try\r\n // per non richiamare signal dentro il catch (contesto reattivo non garantito dopo un throw).\r\n // Per i formati numerici (default dd/MM/yyyy HH:mm) il risultato è identico in ogni locale.\r\n const fmt = this.format();\r\n try {\r\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\r\n } catch {\r\n return formatDate(d, fmt, 'en-US');\r\n }\r\n });\r\n\r\n readonly monthYearLabel = computed(() =>\r\n `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`\r\n );\r\n\r\n readonly calendarDays = computed(() => {\r\n const y = this.viewYear(), m = this.viewMonth();\r\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\r\n const total = new Date(y, m + 1, 0).getDate();\r\n const days: number[] = Array(offset).fill(0);\r\n for (let i = 1; i <= total; i++) days.push(i);\r\n return days;\r\n });\r\n\r\n private onChange: (v: Date | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: Date | null | undefined): void {\r\n const d = v ? new Date(v.getTime()) : null;\r\n this.selected.set(d);\r\n if (this.showPanel()) this.draft.set(d ? new Date(d.getTime()) : null);\r\n const ref = d ?? new Date();\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n\r\n registerOnChange(fn: (v: Date | null) => void): void { this.onChange = fn; }\r\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n setDisabledState(disabled: boolean): void { this.isDisabled.set(disabled); }\r\n\r\n togglePanel(): void {\r\n if (this.isDisabled()) return;\r\n const opening = !this.showPanel();\r\n if (opening) {\r\n const s = this.selected();\r\n const ref = s ? new Date(s.getTime()) : this.todayNow();\r\n this.draft.set(ref);\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n this.showPanel.set(opening);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n this.selected.set(d ? new Date(d.getTime()) : null);\r\n this.emitValue(this.selected());\r\n this.showPanel.set(false);\r\n }\r\n\r\n prevMonth(): void {\r\n if (this.viewMonth() === 0) { this.viewMonth.set(11); this.viewYear.update(y => y - 1); }\r\n else { this.viewMonth.update(m => m - 1); }\r\n }\r\n\r\n nextMonth(): void {\r\n if (this.viewMonth() === 11) { this.viewMonth.set(0); this.viewYear.update(y => y + 1); }\r\n else { this.viewMonth.update(m => m + 1); }\r\n }\r\n\r\n selectDay(day: number): void {\r\n const cur = this.draft();\r\n this.draft.set(new Date(this.viewYear(), this.viewMonth(), day, cur?.getHours() ?? 0, cur?.getMinutes() ?? 0, 0, 0));\r\n }\r\n\r\n isSelected(day: number): boolean {\r\n const v = this.draft();\r\n return !!v && v.getFullYear() === this.viewYear() && v.getMonth() === this.viewMonth() && v.getDate() === day;\r\n }\r\n\r\n isToday(day: number): boolean {\r\n const t = new Date();\r\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\r\n }\r\n\r\n goToToday(): void {\r\n const t = this.todayNow();\r\n this.viewMonth.set(t.getMonth());\r\n this.viewYear.set(t.getFullYear());\r\n this.draft.set(t);\r\n }\r\n\r\n onHourChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n const h = Number((e.target as HTMLSelectElement).value);\r\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), h, cur.getMinutes(), 0, 0));\r\n }\r\n\r\n onMinuteChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n const min = Number((e.target as HTMLSelectElement).value);\r\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), cur.getHours(), min, 0, 0));\r\n }\r\n\r\n private todayNow(): Date {\r\n const t = new Date();\r\n return new Date(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), 0, 0);\r\n }\r\n\r\n private emitValue(d: Date | null): void {\r\n this.onChange(d ? new Date(d.getTime()) : null);\r\n this.onTouched();\r\n }\r\n\r\n @HostListener('document:pointerdown', ['$event'])\r\n onDocumentPointerDown(event: PointerEvent): void {\r\n if (!this.showPanel()) return;\r\n const t = event.target;\r\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\r\n this.showPanel.set(false);\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n onDocumentKeydown(event: KeyboardEvent): void {\r\n if (event.key !== 'Escape' || !this.showPanel()) return;\r\n event.stopPropagation();\r\n this.showPanel.set(false);\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"togglePanel()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z\"\n clip-rule=\"evenodd\" />\n </svg>\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-80 max-w-full rounded-xl border border-surface-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center justify-between mb-3\">\n <button\n type=\"button\"\n (click)=\"prevMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n <span class=\"text-sm font-semibold text-surface-800\">{{ monthYearLabel() }}</span>\n <button\n type=\"button\"\n (click)=\"nextMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track day) {\n <div class=\"text-center text-xs font-medium text-surface-400 py-1\">{{ day }}</div>\n }\n </div>\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-surface-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-surface-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-3 pt-3 border-t border-surface-100 flex items-center gap-2\">\n <span class=\"text-xs font-medium text-surface-600 shrink-0\">{{ i18n.time }}</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.getHours() ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-surface-400 text-sm\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.getMinutes() ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToToday()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.today }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled() || !draft()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.confirm }}\n </button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { Component, input, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-step',\r\n templateUrl: './step.component.html',\r\n styleUrl: './step.component.css'\r\n})\r\nexport class TailwindStep extends TailwindComponent {\r\n readonly label = input.required<string>();\r\n readonly description = input<string>('');\r\n readonly optional = input<boolean>(false);\r\n readonly completed = signal(false);\r\n readonly isActive = signal(false);\r\n}\r\n","@if (isActive()) {\n <div class=\"py-4\"><ng-content /></div>\n}\n","import { Component, contentChildren, input, model, effect } from '@angular/core';\r\nimport { TailwindStep } from './step.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-stepper',\r\n templateUrl: './stepper.component.html',\r\n styleUrl: './stepper.component.css'\r\n})\r\nexport class TailwindStepper extends TailwindComponent {\r\n readonly activeIndex = model<number>(0);\r\n readonly linear = input<boolean>(false);\r\n\r\n readonly steps = contentChildren(TailwindStep);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const allSteps = this.steps();\r\n const idx = this.activeIndex();\r\n allSteps.forEach((s, i) => s.isActive.set(i === idx));\r\n });\r\n }\r\n\r\n goToStep(index: number): void {\r\n if (!this.linear() || index <= this.activeIndex()) {\r\n this.activeIndex.set(index);\r\n }\r\n }\r\n\r\n next(): void {\r\n const s = this.steps();\r\n if (this.activeIndex() < s.length - 1) {\r\n s[this.activeIndex()].completed.set(true);\r\n this.activeIndex.update(v => v + 1);\r\n }\r\n }\r\n\r\n previous(): void {\r\n if (this.activeIndex() > 0) this.activeIndex.update(v => v - 1);\r\n }\r\n}\r\n","<!-- Step indicators -->\n<div class=\"flex items-center mb-6\">\n @for (step of steps(); track step.label(); let i = $index; let last = $last) {\n <div class=\"flex items-center\" [class.flex-1]=\"!last\">\n <button\n type=\"button\"\n (click)=\"goToStep(i)\"\n class=\"flex items-center gap-2 cursor-pointer group\"\n [attr.aria-current]=\"activeIndex() === i ? 'step' : null\">\n <div\n class=\"w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold border-2 transition-all duration-200\"\n [class.bg-primary-600]=\"i <= activeIndex()\"\n [class.border-primary-600]=\"i <= activeIndex()\"\n [class.text-white]=\"i <= activeIndex()\"\n [class.border-surface-300]=\"i > activeIndex()\"\n [class.text-surface-500]=\"i > activeIndex()\">\n @if (step.completed()) {\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\"\n clip-rule=\"evenodd\" />\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"hidden sm:block\">\n <p\n class=\"text-sm font-medium\"\n [class.text-primary-600]=\"i <= activeIndex()\"\n [class.text-surface-500]=\"i > activeIndex()\">\n {{ step.label() }}\n </p>\n @if (step.description()) {\n <p class=\"text-xs text-surface-400\">{{ step.description() }}</p>\n }\n </div>\n </button>\n @if (!last) {\n <div\n class=\"flex-1 h-0.5 mx-3 rounded-full transition-colors duration-200\"\n [class.bg-primary-600]=\"i < activeIndex()\"\n [class.bg-surface-200]=\"i >= activeIndex()\"></div>\n }\n </div>\n }\n</div>\n<!-- Step content -->\n<ng-content />\n","import { Component, input, output, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'tailwind-accordion-item',\r\n templateUrl: './accordion-item.component.html',\r\n styleUrl: './accordion-item.component.css'\r\n})\r\nexport class TailwindAccordionItem extends TailwindComponent {\r\n readonly title = input.required<string>();\r\n readonly disabled = input<boolean>(false);\r\n readonly isExpanded = signal(false);\r\n\r\n readonly onToggle = output<void>();\r\n\r\n toggle(): void {\r\n if (!this.disabled()) {\r\n this.isExpanded.update(v => !v);\r\n this.onToggle.emit();\r\n }\r\n }\r\n}\r\n","<div [id]=\"id()\" [ngClass]=\"class()\" class=\"border-b border-surface-200 last:border-b-0\">\r\n <button\r\n type=\"button\"\r\n (click)=\"toggle()\"\r\n class=\"flex items-center justify-between w-full px-5 py-4 text-left text-sm font-medium text-surface-800 hover:bg-surface-50 transition-colors cursor-pointer\"\r\n [attr.aria-expanded]=\"isExpanded()\">\r\n <span>{{ title() }}</span>\r\n <svg\r\n class=\"w-4 h-4 text-surface-400 transition-transform duration-200\"\r\n [class.rotate-180]=\"isExpanded()\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n @if (isExpanded()) {\r\n <div class=\"px-5 py-4 text-sm text-surface-600\">\r\n <ng-content />\r\n </div>\r\n }\r\n</div>\r\n","import { Component, contentChildren } from '@angular/core';\r\nimport { TailwindAccordionItem } from './accordion-item.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'tailwind-accordion',\r\n templateUrl: './accordion.component.html',\r\n styleUrl: './accordion.component.css'\r\n})\r\nexport class TailwindAccordion extends TailwindComponent {\r\n readonly items = contentChildren(TailwindAccordionItem);\r\n}\r\n","<div\r\n [id]=\"id()\"\r\n [ngClass]=\"class()\"\r\n class=\"border border-surface-200 rounded-md overflow-hidden divide-y divide-surface-200\">\r\n <ng-content />\r\n</div>\r\n","export class TailwindModalRef<R = any> {\r\n private _closeFn!: () => void;\r\n private _result: R | undefined;\r\n\r\n /** @internal called by the service after component creation */\r\n _init(closeFn: () => void): void {\r\n this._closeFn = closeFn;\r\n }\r\n\r\n /** Close the modal resolving with the given result */\r\n close(result?: R): void {\r\n this._result = result;\r\n this._closeFn();\r\n }\r\n\r\n /** @internal read by the service after the close animation */\r\n _getResult(): R | undefined {\r\n return this._result;\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n inject,\r\n Injectable,\r\n Injector,\r\n Type\r\n} from '@angular/core';\r\nimport { TailwindModal } from '../../components/modal/modal.component';\r\nimport { TailwindModalConfig } from '../../components/modal/interfaces/modal-config.interface';\r\nimport { TailwindModalRef } from '../../ref/modal/modal.ref';\r\nimport { TAILWIND_MODAL_DATA } from '../../tokens/tokens';\r\n\r\nexport type { TailwindModalConfig };\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TailwindModalService {\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly environmentInjector = inject(EnvironmentInjector);\r\n\r\n /**\r\n * Open a modal programmatically.\r\n *\r\n * The `component` is instantiated and its slot elements are projected into\r\n * TailwindModal's ng-content slots (attribute selectors on direct children):\r\n * - `[tailwind-modal-title]` → header title area\r\n * - `[tailwind-modal-content]` → body area\r\n * - `[tailwind-modal-footer]` → footer area\r\n *\r\n * The component can inject `TailwindModalRef<R>` to close with a typed result\r\n * and `TAILWIND_MODAL_DATA` to receive the `config.data` payload.\r\n *\r\n * @returns Promise that resolves with `R` on `close(result)` or `undefined` on dismiss.\r\n */\r\n open<R = any, D = any>(component: Type<unknown>, config: TailwindModalConfig<D> = {}): Promise<R | undefined> {\r\n return new Promise<R | undefined>(resolve => {\r\n const modalRef = new TailwindModalRef<R>();\r\n\r\n const injector = Injector.create({\r\n providers: [\r\n { provide: TailwindModalRef, useValue: modalRef },\r\n { provide: TAILWIND_MODAL_DATA, useValue: config.data ?? null }\r\n ],\r\n parent: this.environmentInjector\r\n });\r\n\r\n // ── Step 1: create and render the user component ─────────────────────\r\n const userComp = createComponent(component, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: injector\r\n });\r\n this.appRef.attachView(userComp.hostView);\r\n userComp.changeDetectorRef.detectChanges();\r\n\r\n // ── Step 2: extract slot elements from the rendered host ──────────────\r\n const host = userComp.location.nativeElement as HTMLElement;\r\n const nodes = (sel: string) => Array.from(host.querySelectorAll(`:scope > ${sel}`));\r\n\r\n // ── Step 3: create TailwindModal projecting the slot nodes ────────────\r\n // projectableNodes[0] → <ng-content /> (title / catch-all)\r\n // projectableNodes[1] → <ng-content select=\"[tailwind-modal-content]\" />\r\n // projectableNodes[2] → <ng-content select=\"[tailwind-modal-footer]\" />\r\n const modalComp = createComponent(TailwindModal, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: injector,\r\n projectableNodes: [\r\n nodes('[tailwind-modal-title]'),\r\n nodes('[tailwind-modal-content]'),\r\n nodes('[tailwind-modal-footer]')\r\n ]\r\n });\r\n\r\n modalComp.setInput('size', config.size ?? 'md');\r\n modalComp.setInput('showCloseButton', config.showCloseButton ?? true);\r\n modalComp.setInput('closeOnBackdrop', config.closeOnBackdrop ?? true);\r\n modalComp.setInput('closeOnEscape', config.closeOnEscape ?? true);\r\n\r\n this.appRef.attachView(modalComp.hostView);\r\n document.body.appendChild(modalComp.location.nativeElement);\r\n\r\n // ── Step 4: wire close ────────────────────────────────────────────────\r\n modalRef._init(() => modalComp.instance.close());\r\n\r\n const sub = modalComp.instance.onClose.subscribe(() => {\r\n sub.unsubscribe();\r\n resolve(modalRef._getResult());\r\n modalComp.location.nativeElement.remove();\r\n this.appRef.detachView(modalComp.hostView);\r\n this.appRef.detachView(userComp.hostView);\r\n modalComp.destroy();\r\n userComp.destroy();\r\n });\r\n\r\n modalComp.instance.open();\r\n });\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\nimport { TailwindToastItem } from '../../components/toast/interfaces/toast-item.interface';\nimport { TailwindToastConfig } from '../../components/toast/interfaces/toast-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class TailwindToastService {\n private nextId = 0;\n readonly toasts = signal<TailwindToastItem[]>([]);\n\n show(config: TailwindToastConfig): number {\n const id = this.nextId++;\n const toast: TailwindToastItem = { id, severity: 'info', duration: 4000, dismissible: true, ...config };\n this.toasts.update(list => [...list, toast]);\n if (toast.duration && toast.duration > 0) {\n setTimeout(() => this.dismiss(id), toast.duration);\n }\n return id;\n }\n\n success(message: string, title?: string): number {\n return this.show({ message, title, severity: 'success' });\n }\n warning(message: string, title?: string): number {\n return this.show({ message, title, severity: 'warning' });\n }\n danger(message: string, title?: string): number {\n return this.show({ message, title, severity: 'danger' });\n }\n info(message: string, title?: string): number {\n return this.show({ message, title, severity: 'info' });\n }\n\n dismiss(id: number): void {\n this.toasts.update(list => list.filter(t => t.id !== id));\n }\n clear(): void {\n this.toasts.set([]);\n }\n}\n","import { Component, inject } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\nimport { TailwindToastConfig } from './interfaces/toast-config.interface';\r\nimport { TailwindToastItem } from './interfaces/toast-item.interface';\r\nimport { TailwindToastService } from '../../services';\r\nexport type { TailwindToastConfig, TailwindToastItem };\r\n\r\n@Component({\r\n selector: 'tailwind-toast',\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.css'\r\n})\r\nexport class TailwindToast extends TailwindComponent {\r\n readonly toastService = inject(TailwindToastService);\r\n}\r\n","<div class=\"fixed bottom-4 right-4 z-1080 flex flex-col gap-2 max-w-sm w-full pointer-events-none\">\r\n @for (toast of toastService.toasts(); track toast.id) {\r\n <div\r\n class=\"pointer-events-auto rounded-xl border shadow-lg p-4 flex gap-3 animate-in slide-in-from-right-full duration-300\"\r\n [class.bg-success-50]=\"toast.severity === 'success'\"\r\n [class.border-success-200]=\"toast.severity === 'success'\"\r\n [class.bg-warning-50]=\"toast.severity === 'warning'\"\r\n [class.border-warning-200]=\"toast.severity === 'warning'\"\r\n [class.bg-danger-50]=\"toast.severity === 'danger'\"\r\n [class.border-danger-200]=\"toast.severity === 'danger'\"\r\n [class.bg-info-50]=\"toast.severity === 'info'\"\r\n [class.border-info-200]=\"toast.severity === 'info'\"\r\n role=\"alert\">\r\n <div class=\"flex-1 min-w-0\">\r\n @if (toast.title) {\r\n <p class=\"text-sm font-semibold mb-0.5\">{{ toast.title }}</p>\r\n }\r\n <p class=\"text-sm\">{{ toast.message }}</p>\r\n </div>\r\n @if (toast.dismissible) {\r\n <button\r\n type=\"button\"\r\n (click)=\"toastService.dismiss(toast.id)\"\r\n class=\"shrink-0 p-1 rounded-lg opacity-60 hover:opacity-100 transition-opacity cursor-pointer\"\r\n aria-label=\"Dismiss\">\r\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-notification',\r\n templateUrl: './notification.component.html',\r\n styleUrl: './notification.component.css'\r\n})\r\nexport class TailwindNotification extends TailwindComponent {\r\n readonly title = input<string>('');\r\n readonly severity = input<TailwindSeverity>('info');\r\n readonly dismissible = input<boolean>(true);\r\n readonly showActions = input<boolean>(false);\r\n\r\n readonly onDismiss = output<void>();\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 border-success-200 text-success-800',\r\n warning: 'bg-warning-50 border-warning-200 text-warning-800',\r\n danger: 'bg-danger-50 border-danger-200 text-danger-800',\r\n info: 'bg-info-50 border-info-200 text-info-800'\r\n };\r\n return `flex items-start rounded-xl border p-4 ${variantMap[this.severity()]}`;\r\n });\r\n}\r\n","<div [class]=\"computedClasses()\" role=\"alert\">\n <div class=\"flex-1 min-w-0\">\n @if (title()) {\n <p class=\"text-sm font-semibold mb-0.5\">{{ title() }}</p>\n }\n <p class=\"text-sm\"><ng-content /></p>\n @if (showActions()) {\n <div class=\"pt-3\">\n <ng-content select=\"[tailwind-notification-actions]\" />\n </div>\n }\n </div>\n @if (dismissible()) {\n <button\n type=\"button\"\n (click)=\"onDismiss.emit()\"\n class=\"shrink-0 p-1 -m-1 rounded-lg opacity-60 hover:opacity-100 transition-opacity cursor-pointer\"\n aria-label=\"Dismiss\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n }\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-message',\r\n templateUrl: './message.component.html',\r\n styleUrl: './message.component.css'\r\n})\r\nexport class TailwindMessage extends TailwindComponent {\r\n readonly severity = input<TailwindSeverity>('info');\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 text-success-700 border-success-200',\r\n warning: 'bg-warning-50 text-warning-700 border-warning-200',\r\n danger: 'bg-danger-50 text-danger-700 border-danger-200',\r\n info: 'bg-info-50 text-info-700 border-info-200'\r\n };\r\n return `text-sm px-3 py-2 rounded-lg border ${variantMap[this.severity()]}`;\r\n });\r\n}\r\n","<div [class]=\"computedClasses()\" role=\"status\">\n <ng-content />\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-skeleton',\r\n templateUrl: './skeleton.component.html',\r\n styleUrl: './skeleton.component.css'\r\n})\r\nexport class TailwindSkeleton extends TailwindComponent {\r\n readonly variant = input<'text' | 'circle' | 'rect' | 'rounded'>('text');\r\n readonly width = input<string>('100%');\r\n readonly height = input<string>('');\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = 'tailwind-skeleton-pulse';\r\n const variantMap: Record<string, string> = {\r\n text: 'h-4 rounded',\r\n circle: 'rounded-full',\r\n rect: 'rounded-none',\r\n rounded: 'rounded-xl'\r\n };\r\n return `${base} ${variantMap[this.variant()]}`;\r\n });\r\n}\r\n","<div\n [style.width]=\"width()\"\n [style.height]=\"height() || (variant() === 'circle' ? width() : '1.5rem')\"\n [class]=\"computedClasses()\"\n aria-hidden=\"true\"></div>\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { TailwindMenuItem } from '../../models';\r\nimport { TailwindIcon } from '../icon/icon.component';\r\nimport { TailwindMenu } from '../menu/menu.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n imports: [TailwindIcon, TailwindMenu],\r\n selector: 'tailwind-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n styleUrl: './toolbar.component.css'\r\n})\r\nexport class TailwindToolbar extends TailwindComponent {\r\n /** When true, uses rounded corners (`rounded-xl`). */\r\n readonly rounded = input<boolean>(true);\r\n /**\r\n * Orizzontale: `full` = `w-full`; `container` = larghezza responsiva (95% / 85% / 75%) centrata.\r\n * Verticale: ignorato per l’altezza — il rail è sempre `h-full w-full` nella colonna.\r\n */\r\n readonly width = input<'full' | 'container'>('full');\r\n /** Applies a stronger drop shadow. */\r\n readonly elevated = input<boolean>(false);\r\n /** `horizontal` for a top app bar; `vertical` for a side rail (logo → menu → end). */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n\r\n /** Navigation / actions rendered between logo and end slots. */\r\n readonly menu = input<TailwindMenuItem[]>([]);\r\n\r\n /** Emitted when a non-disabled, non-divider menu entry is activated. */\r\n readonly onMenuSelect = output<TailwindMenuItem>();\r\n\r\n readonly menuContainerClasses = computed(() =>\r\n this.orientation() === 'horizontal'\r\n ? 'min-w-0 flex-1 flex flex-row flex-wrap items-center gap-1'\r\n : 'min-w-0 flex-1 flex flex-col gap-1.5 overflow-y-auto min-h-0'\r\n );\r\n\r\n readonly menuItemButtonClasses = computed(() =>\r\n this.orientation() === 'horizontal'\r\n ? 'inline-flex shrink-0 items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent'\r\n : 'inline-flex w-full items-center gap-2 rounded-md px-3 py-3 text-left text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent'\r\n );\r\n\r\n readonly rootClasses = computed(() => {\r\n const horizontal = this.orientation() === 'horizontal';\r\n const sizeClasses = horizontal\r\n ? this.width() === 'full'\r\n ? 'w-full h-16'\r\n : 'container mx-auto h-16'\r\n : 'h-full w-full';\r\n\r\n const base = [\r\n 'bg-white border border-surface-200',\r\n 'flex',\r\n sizeClasses,\r\n this.rounded() ? 'rounded-xl' : 'rounded-none',\r\n this.elevated() ? 'shadow-lg' : 'shadow-sm'\r\n ];\r\n\r\n if (horizontal) {\r\n base.push('flex-row items-center gap-3 px-4 py-3');\r\n } else {\r\n base.push('flex-col items-stretch gap-3 px-3 py-4 min-h-0');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n\r\n selectMenuItem(item: TailwindMenuItem): void {\r\n if (item.divider || item.disabled) {\r\n return;\r\n }\r\n this.onMenuSelect.emit(item);\r\n }\r\n\r\n /** True when `label` is a non-empty string after trim (icon-only entries omit or blank `label`). */\r\n menuItemHasVisibleLabel(item: TailwindMenuItem): boolean {\r\n const label = item.label;\r\n return typeof label === 'string' && label.trim().length > 0;\r\n }\r\n\r\n /** Accessible name when there is no visible label (`value`, trimmed). */\r\n menuItemAriaLabel(item: TailwindMenuItem): string | null {\r\n if (this.menuItemHasVisibleLabel(item)) {\r\n return null;\r\n }\r\n const v = item.value;\r\n return v != null && String(v).trim().length > 0 ? String(v).trim() : null;\r\n }\r\n\r\n menuTrackKey(index: number, item: TailwindMenuItem): string {\r\n return item.value ?? item.label ?? String(index);\r\n }\r\n}\r\n","<div [class]=\"rootClasses()\">\r\n <div class=\"shrink-0\">\r\n <ng-content select=\"[tailwind-toolbar-logo]\" />\r\n </div>\r\n @if (orientation() === 'horizontal') {\r\n <nav class=\"min-w-0 flex flex-1 flex-row flex-wrap items-center gap-1\" [attr.aria-label]=\"'Toolbar menu'\">\r\n @if (menu().length) {\r\n <div class=\"flex shrink-0 items-center md:hidden\">\r\n <button\r\n type=\"button\"\r\n class=\"inline-flex shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-2 text-surface-700 transition-colors hover:bg-surface-100 hover:text-surface-900\"\r\n [attr.aria-expanded]=\"mobileToolbarMenu.isOpen()\"\r\n aria-haspopup=\"menu\"\r\n aria-label=\"Open navigation menu\"\r\n (click)=\"mobileToolbarMenu.toggle($event)\">\r\n <tailwind-icon icon=\"hamburger-menu\" [size]=\"22\" />\r\n </button>\r\n <tailwind-menu\r\n #mobileToolbarMenu\r\n [items]=\"menu()\"\r\n align=\"left\"\r\n (onSelect)=\"selectMenuItem($event)\" />\r\n </div>\r\n }\r\n <div class=\"hidden min-w-0 flex-1 flex-row flex-wrap items-center gap-1 md:flex\">\r\n @for (item of menu(); track menuTrackKey($index, item)) {\r\n @if (item.divider) {\r\n <span class=\"mx-0.5 h-5 w-px shrink-0 self-center bg-surface-200\" aria-hidden=\"true\"></span>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"!!item.disabled\"\r\n [class]=\"menuItemButtonClasses()\"\r\n [class.px-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\r\n [class.py-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\r\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\r\n (click)=\"selectMenuItem(item)\">\r\n @if (item.icon) {\r\n <tailwind-icon [icon]=\"item.icon\" [size]=\"20\" />\r\n }\r\n @if (menuItemHasVisibleLabel(item)) {\r\n {{ item.label }}\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n </nav>\r\n } @else {\r\n <nav [class]=\"menuContainerClasses()\" [attr.aria-label]=\"'Toolbar menu'\">\r\n @for (item of menu(); track menuTrackKey($index, item)) {\r\n @if (item.divider) {\r\n <hr class=\"my-1 w-full border-0 border-t border-surface-100\" />\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"!!item.disabled\"\r\n [class]=\"menuItemButtonClasses()\"\r\n [class.justify-center]=\"!menuItemHasVisibleLabel(item)\"\r\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\r\n (click)=\"selectMenuItem(item)\">\r\n @if (item.icon) {\r\n <tailwind-icon [icon]=\"item.icon\" [size]=\"22\" />\r\n }\r\n @if (menuItemHasVisibleLabel(item)) {\r\n {{ item.label }}\r\n }\r\n </button>\r\n }\r\n }\r\n </nav>\r\n }\r\n <div\r\n class=\"flex flex-wrap items-center gap-2 shrink-0\"\r\n [class.justify-end]=\"orientation() === 'horizontal'\"\r\n [class.mt-auto]=\"orientation() === 'vertical'\">\r\n <ng-content select=\"[tailwind-toolbar-end]\" />\r\n </div>\r\n</div>\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-divider',\r\n templateUrl: './divider.component.html',\r\n styleUrl: './divider.component.css'\r\n})\r\nexport class TailwindDivider extends TailwindComponent {\r\n /** Rule direction */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n /** Adds horizontal margin to the rule (horizontal orientation only). */\r\n readonly inset = input<boolean>(false);\r\n /** Border style for the rule */\r\n readonly variant = input<'solid' | 'dashed'>('solid');\r\n /** Centered text between two lines (horizontal only; ignored when empty). */\r\n readonly label = input<string>('');\r\n\r\n readonly isLabeledHorizontal = computed(\r\n () => this.orientation() === 'horizontal' && !!this.label()?.trim()\r\n );\r\n\r\n readonly ruleClasses = computed(() => {\r\n const inset = this.inset() && this.orientation() === 'horizontal' ? 'mx-4' : '';\r\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\r\n\r\n if (this.orientation() === 'vertical') {\r\n return ['self-stretch shrink-0 w-px min-h-full border-0 border-l', variant, 'border-surface-200']\r\n .join(' ');\r\n }\r\n\r\n return ['w-full border-0 border-t', variant, 'border-surface-200', inset].filter(Boolean).join(' ');\r\n });\r\n\r\n /** Top rule for labeled horizontal layout */\r\n readonly ruleLineClass = computed(() => {\r\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\r\n return ['border-surface-200', variant].join(' ');\r\n });\r\n\r\n readonly labeledRowClass = computed(() =>\r\n this.inset() ? 'flex items-center gap-3 w-full mx-4' : 'flex items-center gap-3 w-full'\r\n );\r\n}\r\n","@if (isLabeledHorizontal()) {\r\n <div [class]=\"labeledRowClass()\" role=\"separator\" [attr.aria-label]=\"label()\">\r\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\r\n <span class=\"text-xs font-medium text-surface-500 shrink-0\">{{ label() }}</span>\r\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\r\n </div>\r\n} @else {\r\n <div [class]=\"ruleClasses()\" role=\"separator\"></div>\r\n}\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSize, TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindMeterSegment } from './interfaces/meter-segment.interface';\r\n\r\n@Component({\r\n selector: 'tailwind-meter',\r\n templateUrl: './meter.component.html',\r\n styleUrl: './meter.component.css'\r\n})\r\nexport class TailwindMeter extends TailwindComponent {\r\n /** Segments rendered as proportional blocks in the bar. */\r\n readonly segments = input<TailwindMeterSegment[]>([]);\r\n /**\r\n * Scale maximum. Each segment `value` is shown as `value / max` of the bar width.\r\n * Default 100 (percent-style values).\r\n */\r\n readonly max = input<number>(100);\r\n /** Show a simple legend under the bar */\r\n readonly showLabels = input<boolean>(true);\r\n /** Track height */\r\n readonly size = input<TailwindSize>('md');\r\n\r\n readonly trackHeightClass = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'h-1.5',\r\n sm: 'h-2',\r\n md: 'h-2.5',\r\n lg: 'h-3.5',\r\n xl: 'h-4'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly totalValue = computed(() => this.segments().reduce((s, x) => s + Math.max(0, x.value), 0));\r\n\r\n readonly scaleMax = computed(() => {\r\n const m = this.max();\r\n if (m > 0) {\r\n return m;\r\n }\r\n const t = this.totalValue();\r\n return t > 0 ? t : 1;\r\n });\r\n\r\n readonly segmentLayouts = computed(() => {\r\n const cap = this.scaleMax();\r\n return this.segments().map(seg => {\r\n const pct = cap > 0 ? (Math.max(0, seg.value) / cap) * 100 : 0;\r\n const variant = seg.variant ?? 'primary';\r\n return { ...seg, widthPct: pct, barClass: this.variantToBarClass(variant) };\r\n });\r\n });\r\n\r\n readonly trackContainerClasses = computed(\r\n () => `flex w-full overflow-hidden rounded-full bg-surface-200 ${this.trackHeightClass()}`\r\n );\r\n\r\n legendSwatchClass(variant?: TailwindSeverity | 'primary'): string {\r\n return this.variantToBarClass(variant ?? 'primary');\r\n }\r\n\r\n private variantToBarClass(variant: TailwindSeverity | 'primary'): string {\r\n const map: Record<string, string> = {\r\n primary: 'bg-primary-600',\r\n success: 'bg-success-600',\r\n warning: 'bg-warning-500',\r\n danger: 'bg-danger-600',\r\n info: 'bg-info-600'\r\n };\r\n return map[variant] ?? map['primary'];\r\n }\r\n}\r\n","<div class=\"w-full space-y-2\">\r\n <div\r\n [class]=\"trackContainerClasses()\"\r\n role=\"meter\"\r\n [attr.aria-valuemin]=\"0\"\r\n [attr.aria-valuemax]=\"scaleMax()\"\r\n [attr.aria-valuenow]=\"totalValue()\"\r\n [attr.aria-label]=\"'Meter'\">\r\n @for (seg of segmentLayouts(); track $index) {\r\n @if (seg.widthPct > 0) {\r\n <div\r\n class=\"h-full min-w-0 transition-all duration-300 ease-out\"\r\n [class]=\"seg.barClass\"\r\n [style.width.%]=\"seg.widthPct\"\r\n [attr.title]=\"seg.label + ': ' + seg.value\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (showLabels()) {\r\n <div class=\"flex flex-wrap gap-x-4 gap-y-1 text-xs text-surface-600\">\r\n @for (seg of segments(); track $index) {\r\n <span class=\"inline-flex items-center gap-1.5\">\r\n <span class=\"inline-block size-2 rounded-sm shrink-0\" [class]=\"legendSwatchClass(seg.variant)\"></span>\r\n <span>{{ seg.label }}</span>\r\n <span class=\"text-surface-400\">({{ seg.value }})</span>\r\n </span>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { booleanAttribute, Component, computed, ElementRef, forwardRef, input, signal, viewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSeverity, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n/** Value model: single number or sorted pair when `range` is true */\r\nexport type TailwindSliderValue = number | [number, number];\r\n\r\n@Component({\r\n selector: 'tailwind-slider',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindSlider),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './slider.component.html',\r\n styleUrl: './slider.component.css'\r\n})\r\nexport class TailwindSlider extends TailwindComponent implements ControlValueAccessor {\r\n /** Minimum bound */\r\n readonly min = input<number>(0);\r\n /** Maximum bound */\r\n readonly max = input<number>(100);\r\n /** Step increment */\r\n readonly step = input<number>(1);\r\n /** Two-thumb range mode */\r\n readonly range = input<boolean>(false);\r\n /** Layout */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n /** Tick marks at each step */\r\n readonly showTicks = input<boolean>(false);\r\n /** Control size */\r\n readonly size = input<TailwindSize>('md');\r\n /** Track fill / thumb color */\r\n readonly variant = input<TailwindSeverity | 'primary'>('primary');\r\n\r\n readonly trackRef = viewChild<ElementRef<HTMLElement>>('track');\r\n\r\n /** Single-thumb value */\r\n readonly singleValue = signal(0);\r\n /** Range: lower value */\r\n readonly rangeLow = signal(0);\r\n /** Range: upper value */\r\n readonly rangeHigh = signal(100);\r\n\r\n /** Disabled via template (combined with form `setDisabledState`) */\r\n readonly hostDisabled = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n\r\n readonly isDisabled = signal(false);\r\n\r\n readonly isEffectivelyDisabled = computed(() => this.isDisabled() || this.hostDisabled());\r\n\r\n private onChange: (v: TailwindSliderValue) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n readonly activeThumb = signal<null | 0 | 1>(null);\r\n\r\n readonly thumbSizeClass = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'size-3',\r\n sm: 'size-3.5',\r\n md: 'size-4',\r\n lg: 'size-5',\r\n xl: 'size-6'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly trackThickness = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'h-1',\r\n sm: 'h-1.5',\r\n md: 'h-2',\r\n lg: 'h-2.5',\r\n xl: 'h-3'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly verticalTrackThickness = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'w-1',\r\n sm: 'w-1.5',\r\n md: 'w-2',\r\n lg: 'w-2.5',\r\n xl: 'w-3'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n /**\r\n * Uses theme CSS variables (`--color-*`) so accent colors work even when dynamic\r\n * `bg-*` utilities are not present in the compiled stylesheet (Tailwind content scan).\r\n */\r\n readonly accentVars = computed(() => {\r\n const name = this.variant();\r\n return {\r\n fill: `var(--color-${name}-500)`,\r\n thumb: `var(--color-${name}-600)`,\r\n ring: `var(--color-${name}-500)`\r\n };\r\n });\r\n\r\n readonly singlePct = computed(() => this.valueToPct(this.singleValue()));\r\n\r\n readonly lowPct = computed(() => this.valueToPct(this.rangeLow()));\r\n readonly highPct = computed(() => this.valueToPct(this.rangeHigh()));\r\n\r\n readonly fillStartPct = computed(() => (this.range() ? Math.min(this.lowPct(), this.highPct()) : 0));\r\n\r\n readonly fillWidthPct = computed(() =>\r\n this.range() ? Math.abs(this.highPct() - this.lowPct()) : this.singlePct()\r\n );\r\n\r\n readonly tickPositions = computed(() => {\r\n if (!this.showTicks()) {\r\n return [] as number[];\r\n }\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n if (st <= 0 || hi < lo) {\r\n return [];\r\n }\r\n const steps = Math.round((hi - lo) / st);\r\n const out: number[] = [];\r\n for (let i = 0; i <= steps; i++) {\r\n out.push(this.valueToPct(lo + i * st));\r\n }\r\n return out;\r\n });\r\n\r\n writeValue(value: TailwindSliderValue | null): void {\r\n const lo = this.min();\r\n const hi = this.max();\r\n if (this.range()) {\r\n const pair = Array.isArray(value) ? value : [lo, hi];\r\n const a = this.snap(Math.min(pair[0] ?? lo, pair[1] ?? hi));\r\n const b = this.snap(Math.max(pair[0] ?? lo, pair[1] ?? hi));\r\n this.rangeLow.set(Math.min(a, b));\r\n this.rangeHigh.set(Math.max(a, b));\r\n } else {\r\n const n = Array.isArray(value) ? value[0] : value;\r\n const num = typeof n === 'number' && !Number.isNaN(n) ? n : lo;\r\n this.singleValue.set(this.snap(num));\r\n }\r\n }\r\n\r\n registerOnChange(fn: (v: TailwindSliderValue) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n valueToPct(v: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n if (hi === lo) {\r\n return 0;\r\n }\r\n return ((this.snap(v) - lo) / (hi - lo)) * 100;\r\n }\r\n\r\n snap(raw: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n if (st <= 0) {\r\n return Math.min(hi, Math.max(lo, raw));\r\n }\r\n const stepped = Math.round((raw - lo) / st) * st + lo;\r\n const rounded = Math.round(stepped * 1e6) / 1e6;\r\n return Math.min(hi, Math.max(lo, rounded));\r\n }\r\n\r\n pctToValue(pct: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n const v = lo + (pct / 100) * (hi - lo);\r\n return this.snap(v);\r\n }\r\n\r\n onThumbPointerDown(event: PointerEvent, thumbIndex: 0 | 1): void {\r\n event.stopPropagation();\r\n this.onTrackPointerDown(event, thumbIndex);\r\n }\r\n\r\n onTrackPointerDown(event: PointerEvent, thumbIndex: 0 | 1 | null): void {\r\n if (this.isEffectivelyDisabled()) {\r\n return;\r\n }\r\n event.preventDefault();\r\n const track = this.trackRef()?.nativeElement;\r\n if (!track) {\r\n return;\r\n }\r\n\r\n let thumb: 0 | 1 | null = thumbIndex;\r\n if (!this.range()) {\r\n thumb = null;\r\n } else if (thumb === null) {\r\n const v = this.readValueFromPointer(event, track);\r\n const low = this.rangeLow();\r\n const high = this.rangeHigh();\r\n const d0 = Math.abs(v - low);\r\n const d1 = Math.abs(v - high);\r\n thumb = d0 <= d1 ? 0 : 1;\r\n }\r\n\r\n this.activeThumb.set(thumb);\r\n this.applyPointer(event, track, thumb);\r\n\r\n if (typeof track.setPointerCapture === 'function') {\r\n track.setPointerCapture(event.pointerId);\r\n }\r\n\r\n const move = (ev: PointerEvent) => this.applyPointer(ev, track, thumb);\r\n const up = (ev: PointerEvent) => {\r\n document.removeEventListener('pointermove', move);\r\n document.removeEventListener('pointerup', up);\r\n document.removeEventListener('pointercancel', up);\r\n try {\r\n track.releasePointerCapture(ev.pointerId);\r\n } catch {\r\n /* ignore */\r\n }\r\n this.activeThumb.set(null);\r\n this.onTouched();\r\n };\r\n document.addEventListener('pointermove', move);\r\n document.addEventListener('pointerup', up);\r\n document.addEventListener('pointercancel', up);\r\n }\r\n\r\n private readValueFromPointer(event: PointerEvent, track: HTMLElement): number {\r\n const rect = track.getBoundingClientRect();\r\n const horizontal = this.orientation() === 'horizontal';\r\n let ratio: number;\r\n if (horizontal) {\r\n ratio = (event.clientX - rect.left) / rect.width;\r\n } else {\r\n ratio = 1 - (event.clientY - rect.top) / rect.height;\r\n }\r\n ratio = Math.min(1, Math.max(0, ratio));\r\n return this.pctToValue(ratio * 100);\r\n }\r\n\r\n private applyPointer(event: PointerEvent, track: HTMLElement, thumbIndex: 0 | 1 | null): void {\r\n const next = this.readValueFromPointer(event, track);\r\n if (this.range()) {\r\n const idx = thumbIndex ?? 0;\r\n if (idx === 0) {\r\n const hi = this.rangeHigh();\r\n this.rangeLow.set(this.snap(Math.min(next, hi)));\r\n } else {\r\n const lo = this.rangeLow();\r\n this.rangeHigh.set(this.snap(Math.max(next, lo)));\r\n }\r\n this.onChange([this.rangeLow(), this.rangeHigh()]);\r\n } else {\r\n this.singleValue.set(next);\r\n this.onChange(this.singleValue());\r\n }\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent, thumbIndex: 0 | 1): void {\r\n if (this.isEffectivelyDisabled()) {\r\n return;\r\n }\r\n const keys = ['ArrowLeft', 'ArrowRight', 'ArrowDown', 'ArrowUp', 'Home', 'End'];\r\n if (!keys.includes(event.key)) {\r\n return;\r\n }\r\n event.preventDefault();\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n const horizontal = this.orientation() === 'horizontal';\r\n const decKey = horizontal ? 'ArrowLeft' : 'ArrowDown';\r\n const incKey = horizontal ? 'ArrowRight' : 'ArrowUp';\r\n\r\n const delta = (key: string) => {\r\n if (key === 'Home') {\r\n return lo - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\r\n }\r\n if (key === 'End') {\r\n return hi - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\r\n }\r\n if (key === decKey) {\r\n return -st;\r\n }\r\n if (key === incKey) {\r\n return st;\r\n }\r\n return 0;\r\n };\r\n\r\n const d = delta(event.key);\r\n if (d === 0) {\r\n return;\r\n }\r\n\r\n if (this.range()) {\r\n if (thumbIndex === 0) {\r\n const next = this.snap(this.rangeLow() + d);\r\n this.rangeLow.set(Math.min(next, this.rangeHigh()));\r\n } else {\r\n const next = this.snap(this.rangeHigh() + d);\r\n this.rangeHigh.set(Math.max(next, this.rangeLow()));\r\n }\r\n this.onChange([this.rangeLow(), this.rangeHigh()]);\r\n } else {\r\n this.singleValue.set(this.snap(this.singleValue() + d));\r\n this.onChange(this.singleValue());\r\n }\r\n }\r\n}\r\n","@if (orientation() === 'horizontal') {\r\n <div\r\n #track\r\n class=\"relative w-full touch-none select-none py-3\"\r\n [class.opacity-50]=\"isEffectivelyDisabled()\"\r\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\r\n <div class=\"relative h-6 w-full\">\r\n <!-- rail -->\r\n <div\r\n class=\"pointer-events-none absolute left-0 right-0 top-1/2 -translate-y-1/2 rounded-full bg-surface-200\"\r\n [class]=\"trackThickness()\"></div>\r\n\r\n @if (showTicks()) {\r\n @for (p of tickPositions(); track $index) {\r\n <div\r\n class=\"pointer-events-none absolute top-1/2 h-2 w-px -translate-x-1/2 -translate-y-1/2 bg-surface-300\"\r\n [style.left.%]=\"p\"></div>\r\n }\r\n }\r\n\r\n <!-- fill -->\r\n <div\r\n class=\"pointer-events-none absolute top-1/2 z-1 -translate-y-1/2 rounded-full\"\r\n [class]=\"trackThickness()\"\r\n [style.background-color]=\"accentVars().fill\"\r\n [style.left.%]=\"fillStartPct()\"\r\n [style.width.%]=\"fillWidthPct()\"></div>\r\n\r\n @if (range()) {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.left.%]=\"lowPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeLow()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.left.%]=\"highPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeHigh()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\r\n (keydown)=\"onKeyDown($event, 1)\"></button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.left.%]=\"singlePct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"singleValue()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <div\r\n #track\r\n class=\"relative mx-auto h-52 w-10 touch-none select-none\"\r\n [class.opacity-50]=\"isEffectivelyDisabled()\"\r\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\r\n <div class=\"relative h-full w-full\">\r\n <div\r\n class=\"pointer-events-none absolute bottom-0 left-1/2 top-0 -translate-x-1/2 rounded-full bg-surface-200\"\r\n [class]=\"verticalTrackThickness()\"></div>\r\n\r\n @if (showTicks()) {\r\n @for (p of tickPositions(); track $index) {\r\n <div\r\n class=\"pointer-events-none absolute left-1/2 w-2 h-px -translate-x-1/2 translate-y-1/2 bg-surface-300\"\r\n [style.bottom.%]=\"p\"></div>\r\n }\r\n }\r\n\r\n <div\r\n class=\"pointer-events-none absolute bottom-0 left-1/2 z-1 -translate-x-1/2 rounded-full\"\r\n [class]=\"verticalTrackThickness()\"\r\n [style.background-color]=\"accentVars().fill\"\r\n [style.bottom.%]=\"fillStartPct()\"\r\n [style.height.%]=\"fillWidthPct()\"></div>\r\n\r\n @if (range()) {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.bottom.%]=\"lowPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeLow()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.bottom.%]=\"highPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeHigh()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\r\n (keydown)=\"onKeyDown($event, 1)\"></button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.bottom.%]=\"singlePct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"singleValue()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","// Batch 1 — Foundation\nexport * from './button/button.component';\nexport * from './icon/icon.component';\nexport * from './input/input.component';\nexport * from './textarea/textarea.component';\nexport * from './upload/upload.component';\nexport * from './input-otp/input-otp.component';\nexport * from './checkbox/checkbox.component';\nexport * from './radio/radio-group.component';\nexport * from './select/select.component';\nexport * from './toggle/toggle.component';\nexport * from './badge/badge.component';\nexport * from './title/title.component';\nexport * from './card/card.component';\nexport * from './alert/alert.component';\nexport * from './spinner/spinner.component';\n\n// Batch 2 — Intermediate\nexport * from './modal/modal.component';\nexport * from './tabs/tab.component';\nexport * from './tabs/tab-group.component';\nexport * from './tooltip/tooltip.component';\nexport * from '../directives/tooltip/tooltip.directive';\nexport * from './progress-bar/progress-bar.component';\nexport * from './menu/menu.component';\nexport * from './drawer/drawer.component';\nexport * from './breadcrumb/breadcrumb.component';\nexport * from './pagination/pagination.component';\nexport * from './tag/tag.component';\n\n// Batch 3 — Advanced\nexport * from './table/table.component';\nexport * from './date-picker/date-picker.component';\nexport * from './time-picker/time-picker.component';\nexport * from './datetime-picker/datetime-picker.component';\nexport * from './stepper/step.component';\nexport * from './stepper/stepper.component';\nexport * from './accordion/accordion-item.component';\nexport * from './accordion/accordion.component';\nexport * from './toast/toast.component';\nexport * from './notification/notification.component';\nexport * from './message/message.component';\nexport * from './skeleton/skeleton.component';\nexport * from './toolbar/toolbar.component';\nexport * from './divider/divider.component';\nexport * from './meter/interfaces/meter-segment.interface';\nexport * from './meter/meter.component';\nexport * from './slider/slider.component';\n","/*\r\n * Public API Surface of angular-tailwind-components\r\n */\r\n\r\n// Models & Types\r\nexport * from './lib/models';\r\n\r\n// Directives\r\nexport * from './lib/directives';\r\n\r\n// Components\r\nexport * from './lib/components';\r\n\r\n// Services\r\nexport * from './lib/services';\r\n\r\n// Tokens\r\nexport * from './lib/tokens';\r\n\r\n// Refs\r\nexport * from './lib/ref';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["I18N"],"mappings":"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"}
1
+ {"version":3,"file":"angular-tailwind-components.mjs","sources":["../../../projects/angular-tailwind-components/src/lib/models/types.ts","../../../projects/angular-tailwind-components/src/lib/models/icons.ts","../../../projects/angular-tailwind-components/src/lib/components/tailwind.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.html","../../../projects/angular-tailwind-components/src/lib/directives/tooltip/tooltip.directive.ts","../../../projects/angular-tailwind-components/src/lib/directives/table/tailwind-table-row.directive.ts","../../../projects/angular-tailwind-components/src/lib/tokens/tokens.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.html","../../../projects/angular-tailwind-components/src/lib/directives/table/tailwind-sort-header.directive.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.html","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.ts","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.html","../../../projects/angular-tailwind-components/src/lib/components/textarea/textarea.component.ts","../../../projects/angular-tailwind-components/src/lib/components/textarea/textarea.component.html","../../../projects/angular-tailwind-components/src/lib/components/upload/upload.component.ts","../../../projects/angular-tailwind-components/src/lib/components/upload/upload.component.html","../../../projects/angular-tailwind-components/src/lib/components/input-otp/input-otp.component.ts","../../../projects/angular-tailwind-components/src/lib/components/input-otp/input-otp.component.html","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.ts","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.html","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.html","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.ts","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.html","../../../projects/angular-tailwind-components/src/lib/components/title/title.component.ts","../../../projects/angular-tailwind-components/src/lib/components/title/title.component.html","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.ts","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.html","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.ts","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.html","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.ts","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.html","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.ts","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.html","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.html","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.ts","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.html","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.ts","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.html","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.ts","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.html","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.html","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.ts","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.html","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.html","../../../projects/angular-tailwind-components/src/lib/ref/modal/modal.ref.ts","../../../projects/angular-tailwind-components/src/lib/services/modal/modal.service.ts","../../../projects/angular-tailwind-components/src/lib/services/toast/toast.service.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.html","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.ts","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.html","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.ts","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.html","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.ts","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.html","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.html","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.html","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.ts","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.html","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.html","../../../projects/angular-tailwind-components/src/lib/components/index.ts","../../../projects/angular-tailwind-components/src/lib/providers/tailwind-components-config.ts","../../../projects/angular-tailwind-components/src/public-api.ts","../../../projects/angular-tailwind-components/src/angular-tailwind-components.ts"],"sourcesContent":["/** Common types used across all components */\n\n/** Size variants for components */\nexport type TailwindSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Color variants for buttons and interactive elements */\nexport type TailwindColor = 'primary' | 'secondary' | 'danger' | 'success' | 'warning' | 'info';\n\n/** Button kinds */\nexport type TailwindButtonKind = 'solid' | 'outlined' | 'ghost' | 'text';\n\n/** Alert/feedback color variants */\nexport type TailwindSeverity = 'success' | 'warning' | 'danger' | 'info';\n\n/** Position variants for overlays */\nexport type TailwindPosition = 'top' | 'bottom' | 'left' | 'right';\n\n/** Shape variants */\nexport type TailwindShape = 'rounded' | 'pill' | 'square';\n\n/** Semantic heading level for `TailwindTitle` */\nexport type TailwindTitleTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n/**\n * Pixel width and height for `TailwindIcon`. Intended range **16–64**; values outside it are clamped at runtime.\n */\nexport type TailwindIconSize = number;\n\n/** Option interface for select/radio/checkbox groups */\nexport interface TailwindOption<T = unknown> {\n value: T;\n label: string;\n disabled?: boolean;\n}\n\nexport interface TailwindOptionGroup<T = unknown> extends TailwindOption<T> {\n description?: string;\n}\n\nexport interface TailwindMenuItem {\n label?: string;\n icon?: string;\n disabled?: boolean;\n divider?: boolean;\n value?: string;\n}\n","/**\n * Heroicons outline icon names (kebab-case). SVG assets in `public/tailwind-icons/`.\n * Generated by scripts/copy-icons.js sync — do not edit manually.\n *\n * Icons: Heroicons (Tailwind Labs), MIT — https://heroicons.com/\n */\nexport const TAILWIND_HEROICON_NAMES = [\n 'academic-cap',\n 'adjustments-horizontal',\n 'adjustments-vertical',\n 'archive-box',\n 'archive-box-arrow-down',\n 'archive-box-x-mark',\n 'arrow-down',\n 'arrow-down-circle',\n 'arrow-down-left',\n 'arrow-down-on-square',\n 'arrow-down-on-square-stack',\n 'arrow-down-right',\n 'arrow-down-tray',\n 'arrow-left',\n 'arrow-left-circle',\n 'arrow-left-end-on-rectangle',\n 'arrow-left-on-rectangle',\n 'arrow-left-start-on-rectangle',\n 'arrow-long-down',\n 'arrow-long-left',\n 'arrow-long-right',\n 'arrow-long-up',\n 'arrow-path',\n 'arrow-path-rounded-square',\n 'arrow-right',\n 'arrow-right-circle',\n 'arrow-right-end-on-rectangle',\n 'arrow-right-on-rectangle',\n 'arrow-right-start-on-rectangle',\n 'arrow-small-down',\n 'arrow-small-left',\n 'arrow-small-right',\n 'arrow-small-up',\n 'arrow-top-right-on-square',\n 'arrow-trending-down',\n 'arrow-trending-up',\n 'arrow-turn-down-left',\n 'arrow-turn-down-right',\n 'arrow-turn-left-down',\n 'arrow-turn-left-up',\n 'arrow-turn-right-down',\n 'arrow-turn-right-up',\n 'arrow-turn-up-left',\n 'arrow-turn-up-right',\n 'arrow-up',\n 'arrow-up-circle',\n 'arrow-up-left',\n 'arrow-up-on-square',\n 'arrow-up-on-square-stack',\n 'arrow-up-right',\n 'arrow-up-tray',\n 'arrow-uturn-down',\n 'arrow-uturn-left',\n 'arrow-uturn-right',\n 'arrow-uturn-up',\n 'arrows-pointing-in',\n 'arrows-pointing-out',\n 'arrows-right-left',\n 'arrows-up-down',\n 'at-symbol',\n 'backspace',\n 'backward',\n 'banknotes',\n 'bars-2',\n 'bars-3',\n 'bars-3-bottom-left',\n 'bars-3-bottom-right',\n 'bars-3-center-left',\n 'bars-4',\n 'bars-arrow-down',\n 'bars-arrow-up',\n 'battery-0',\n 'battery-100',\n 'battery-50',\n 'beaker',\n 'bell',\n 'bell-alert',\n 'bell-slash',\n 'bell-snooze',\n 'bold',\n 'bolt',\n 'bolt-slash',\n 'book-open',\n 'bookmark',\n 'bookmark-slash',\n 'bookmark-square',\n 'briefcase',\n 'bug-ant',\n 'building-library',\n 'building-office',\n 'building-office-2',\n 'building-storefront',\n 'cake',\n 'calculator',\n 'calendar',\n 'calendar-date-range',\n 'calendar-days',\n 'camera',\n 'chart-bar',\n 'chart-bar-square',\n 'chart-pie',\n 'chat-bubble-bottom-center',\n 'chat-bubble-bottom-center-text',\n 'chat-bubble-left',\n 'chat-bubble-left-ellipsis',\n 'chat-bubble-left-right',\n 'chat-bubble-oval-left',\n 'chat-bubble-oval-left-ellipsis',\n 'check',\n 'check-badge',\n 'check-circle',\n 'chevron-double-down',\n 'chevron-double-left',\n 'chevron-double-right',\n 'chevron-double-up',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'chevron-up-down',\n 'circle-stack',\n 'clipboard',\n 'clipboard-document',\n 'clipboard-document-check',\n 'clipboard-document-list',\n 'clock',\n 'cloud',\n 'cloud-arrow-down',\n 'cloud-arrow-up',\n 'code-bracket',\n 'code-bracket-square',\n 'cog',\n 'cog-6-tooth',\n 'cog-8-tooth',\n 'command-line',\n 'computer-desktop',\n 'cpu-chip',\n 'credit-card',\n 'cube',\n 'cube-transparent',\n 'currency-bangladeshi',\n 'currency-dollar',\n 'currency-euro',\n 'currency-pound',\n 'currency-rupee',\n 'currency-yen',\n 'cursor-arrow-rays',\n 'cursor-arrow-ripple',\n 'device-phone-mobile',\n 'device-tablet',\n 'divide',\n 'document',\n 'document-arrow-down',\n 'document-arrow-up',\n 'document-chart-bar',\n 'document-check',\n 'document-currency-bangladeshi',\n 'document-currency-dollar',\n 'document-currency-euro',\n 'document-currency-pound',\n 'document-currency-rupee',\n 'document-currency-yen',\n 'document-duplicate',\n 'document-magnifying-glass',\n 'document-minus',\n 'document-plus',\n 'document-text',\n 'ellipsis-horizontal',\n 'ellipsis-horizontal-circle',\n 'ellipsis-vertical',\n 'envelope',\n 'envelope-open',\n 'equals',\n 'exclamation-circle',\n 'exclamation-triangle',\n 'eye',\n 'eye-dropper',\n 'eye-slash',\n 'face-frown',\n 'face-smile',\n 'film',\n 'finger-print',\n 'fire',\n 'flag',\n 'folder',\n 'folder-arrow-down',\n 'folder-minus',\n 'folder-open',\n 'folder-plus',\n 'forward',\n 'funnel',\n 'gif',\n 'gift',\n 'gift-top',\n 'globe-alt',\n 'globe-americas',\n 'globe-asia-australia',\n 'globe-europe-africa',\n 'h1',\n 'h2',\n 'h3',\n 'hand-raised',\n 'hand-thumb-down',\n 'hand-thumb-up',\n 'hashtag',\n 'heart',\n 'home',\n 'home-modern',\n 'identification',\n 'inbox',\n 'inbox-arrow-down',\n 'inbox-stack',\n 'information-circle',\n 'italic',\n 'key',\n 'language',\n 'lifebuoy',\n 'light-bulb',\n 'link',\n 'link-slash',\n 'list-bullet',\n 'lock-closed',\n 'lock-open',\n 'magnifying-glass',\n 'magnifying-glass-circle',\n 'magnifying-glass-minus',\n 'magnifying-glass-plus',\n 'map',\n 'map-pin',\n 'megaphone',\n 'microphone',\n 'minus',\n 'minus-circle',\n 'minus-small',\n 'moon',\n 'musical-note',\n 'newspaper',\n 'no-symbol',\n 'numbered-list',\n 'paint-brush',\n 'paper-airplane',\n 'paper-clip',\n 'pause',\n 'pause-circle',\n 'pencil',\n 'pencil-square',\n 'percent-badge',\n 'phone',\n 'phone-arrow-down-left',\n 'phone-arrow-up-right',\n 'phone-x-mark',\n 'photo',\n 'play',\n 'play-circle',\n 'play-pause',\n 'plus',\n 'plus-circle',\n 'plus-small',\n 'power',\n 'presentation-chart-bar',\n 'presentation-chart-line',\n 'printer',\n 'puzzle-piece',\n 'qr-code',\n 'question-mark-circle',\n 'queue-list',\n 'radio',\n 'receipt-percent',\n 'receipt-refund',\n 'rectangle-group',\n 'rectangle-stack',\n 'rocket-launch',\n 'rss',\n 'scale',\n 'scissors',\n 'server',\n 'server-stack',\n 'share',\n 'shield-check',\n 'shield-exclamation',\n 'shopping-bag',\n 'shopping-cart',\n 'signal',\n 'signal-slash',\n 'slash',\n 'sparkles',\n 'speaker-wave',\n 'speaker-x-mark',\n 'square-2-stack',\n 'square-3-stack-3d',\n 'squares-2x2',\n 'squares-plus',\n 'star',\n 'stop',\n 'stop-circle',\n 'strikethrough',\n 'sun',\n 'swatch',\n 'table-cells',\n 'tag',\n 'ticket',\n 'trash',\n 'trophy',\n 'truck',\n 'tv',\n 'underline',\n 'user',\n 'user-circle',\n 'user-group',\n 'user-minus',\n 'user-plus',\n 'users',\n 'variable',\n 'video-camera',\n 'video-camera-slash',\n 'view-columns',\n 'viewfinder-circle',\n 'wallet',\n 'wifi',\n 'window',\n 'wrench',\n 'wrench-screwdriver',\n 'x-circle',\n 'x-mark',\n] as const;\n\n/** Use names listed in {@link TAILWIND_HEROICON_NAMES} (compile-time union omitted — large sets break Angular template inference). */\nexport type TailwindHeroicon = string;\n","import { Directive, input } from '@angular/core';\r\n\r\n@Directive({\r\n host: {\r\n '[attr.id]': 'id() || null',\r\n '[class]': 'class() || null'\r\n }\r\n})\r\nexport abstract class TailwindComponent {\r\n /** Optional ID for the component */\r\n readonly id = input<string>();\r\n\r\n /** Custom CSS classes to append */\r\n readonly class = input<string>(undefined, { alias: 'class' });\r\n}\r\n","import { Component, computed, inject, input, signal, OnDestroy, AfterViewInit, NgZone, ElementRef, viewChild } from '@angular/core';\r\nimport { TailwindPosition } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'tailwind-tooltip',\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.css'\r\n})\r\nexport class TailwindTooltip extends TailwindComponent implements AfterViewInit, OnDestroy {\r\n /** Tooltip text */\r\n readonly text = input.required<string>();\r\n /** Position relative to trigger */\r\n readonly position = input<TailwindPosition>('top');\r\n\r\n readonly isVisible = signal(false);\r\n readonly topPos = signal<number>(0);\r\n readonly leftPos = signal<number>(0);\r\n\r\n private targetElement: HTMLElement | null = null;\r\n\r\n private document = inject(DOCUMENT);\r\n private ngZone = inject(NgZone);\r\n private el = inject(ElementRef);\r\n \r\n readonly tooltipEl = viewChild.required<ElementRef<HTMLDivElement>>('tooltipEl');\r\n\r\n private scrollListener = () => this.updatePosition();\r\n\r\n readonly tooltipClasses = computed(() => {\r\n const base = [\r\n 'fixed z-[1070] px-3 py-1.5',\r\n 'text-xs font-medium text-white bg-surface-900 rounded-lg',\r\n 'shadow-lg whitespace-nowrap pointer-events-none',\r\n 'transition-opacity duration-150',\r\n this.isVisible() ? 'opacity-100' : 'opacity-0'\r\n ];\r\n return base.join(' ');\r\n });\r\n\r\n readonly arrowClasses = computed(() => {\r\n const base = 'absolute w-2 h-2 bg-surface-900 rotate-45';\r\n\r\n const posMap: Record<TailwindPosition, string> = {\r\n top: 'top-full left-1/2 -translate-x-1/2 -mt-1',\r\n bottom: 'bottom-full left-1/2 -translate-x-1/2 -mb-1',\r\n left: 'left-full top-1/2 -translate-y-1/2 -ml-1',\r\n right: 'right-full top-1/2 -translate-y-1/2 -mr-1'\r\n };\r\n\r\n return `${base} ${posMap[this.position()]}`;\r\n });\r\n\r\n ngAfterViewInit() {\r\n this.updatePosition();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.hide();\r\n }\r\n\r\n setTarget(el: HTMLElement) {\r\n this.targetElement = el;\r\n this.updatePosition();\r\n }\r\n\r\n private getFixedOrigin(): { top: number; left: number } {\r\n const dummy = this.document.createElement('div');\r\n dummy.style.position = 'fixed';\r\n dummy.style.top = '0';\r\n dummy.style.left = '0';\r\n this.el.nativeElement.appendChild(dummy);\r\n const rect = dummy.getBoundingClientRect();\r\n this.el.nativeElement.removeChild(dummy);\r\n return { top: rect.top, left: rect.left };\r\n }\r\n\r\n updatePosition(): void {\r\n if (!this.targetElement) return;\r\n \r\n const origin = this.getFixedOrigin();\r\n const targetRect = this.targetElement.getBoundingClientRect();\r\n const tooltipRect = this.tooltipEl().nativeElement.getBoundingClientRect();\r\n\r\n let top = 0;\r\n let left = 0;\r\n\r\n switch (this.position()) {\r\n case 'top':\r\n top = targetRect.top - tooltipRect.height - 8;\r\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\r\n break;\r\n case 'bottom':\r\n top = targetRect.bottom + 8;\r\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\r\n break;\r\n case 'left':\r\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\r\n left = targetRect.left - tooltipRect.width - 8;\r\n break;\r\n case 'right':\r\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\r\n left = targetRect.right + 8;\r\n break;\r\n }\r\n\r\n this.ngZone.run(() => {\r\n this.topPos.set(top - origin.top);\r\n this.leftPos.set(left - origin.left);\r\n });\r\n }\r\n\r\n show(): void {\r\n this.updatePosition();\r\n this.ngZone.run(() => {\r\n this.isVisible.set(true);\r\n });\r\n this.ngZone.runOutsideAngular(() => {\r\n window.addEventListener('scroll', this.scrollListener, true);\r\n window.addEventListener('resize', this.scrollListener, true);\r\n });\r\n }\r\n\r\n hide(): void {\r\n this.ngZone.run(() => {\r\n this.isVisible.set(false);\r\n });\r\n window.removeEventListener('scroll', this.scrollListener, true);\r\n window.removeEventListener('resize', this.scrollListener, true);\r\n }\r\n}\r\n","<div #tooltipEl role=\"tooltip\" [class]=\"tooltipClasses()\" \n [style.top.px]=\"topPos()\" \n [style.left.px]=\"leftPos()\">\n {{ text() }}\n <!-- Arrow -->\n <div [class]=\"arrowClasses()\"></div>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n ViewContainerRef,\n ComponentRef,\n inject\n} from '@angular/core';\nimport { TailwindTooltip } from '../../components/tooltip/tooltip.component';\nimport { TailwindPosition } from '../../models';\n\n@Directive({\n selector: '[tooltip]'\n})\nexport class TailwindTooltipDirective implements OnDestroy {\n @Input('tooltip') text!: string;\n @Input() tooltipPosition: TailwindPosition = 'top';\n\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n private componentRef: ComponentRef<TailwindTooltip> | null = null;\n\n private viewContainerRef = inject(ViewContainerRef);\n private el = inject(ElementRef);\n\n @HostListener('mouseenter')\n @HostListener('focusin')\n show() {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n\n if (this.componentRef) {\n return;\n }\n\n this.showTimeout = setTimeout(() => {\n this.createComponent();\n }, 200);\n }\n\n @HostListener('mouseleave')\n @HostListener('focusout')\n hide() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n\n if (!this.componentRef) {\n return;\n }\n\n this.componentRef.instance.hide();\n\n this.hideTimeout = setTimeout(() => {\n this.destroyComponent();\n }, 150);\n }\n\n private createComponent() {\n this.componentRef = this.viewContainerRef.createComponent(TailwindTooltip);\n this.componentRef.setInput('text', this.text);\n this.componentRef.setInput('position', this.tooltipPosition);\n this.componentRef.instance.setTarget(this.el.nativeElement);\n\n setTimeout(() => {\n if (this.componentRef) {\n this.componentRef.instance.show();\n }\n });\n }\n\n private destroyComponent() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n ngOnDestroy() {\n if (this.showTimeout) clearTimeout(this.showTimeout);\n if (this.hideTimeout) clearTimeout(this.hideTimeout);\n this.destroyComponent();\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\r\n\r\n/**\r\n * Row definition for `TailwindTable`. Prefer structural syntax on `<tbody>`:\r\n * `<tbody *tailwindTableRow=\"let row\">...</tbody>` — each rendered fragment is one `<tbody>` per data row.\r\n *\r\n * Legacy: `<ng-template tailwindTableRow let-row>` with only `<td>` cells still works.\r\n */\r\n@Directive({\r\n selector: '[tailwindTableRow]',\r\n standalone: true\r\n})\r\nexport class TailwindTableRowDirective {\r\n readonly templateRef = inject(TemplateRef<{ $implicit: any; index: number }>);\r\n}\r\n\r\n/** @deprecated Use TailwindTableRowDirective instead. */\r\nexport { TailwindTableRowDirective as TailwindTableRowTemplateDirective };\r\n","import { InjectionToken } from '@angular/core';\r\nimport { TailwindSize } from '../models';\r\n\r\nexport const TAILWIND_MODAL_DATA = new InjectionToken<unknown>('TAILWIND_MODAL_DATA');\r\n\r\n/** Default pixel size for `tailwind-icon` when `size` is omitted (typically 16–64). */\r\nexport const TAILWIND_ICON_SIZE = new InjectionToken<number>('TAILWIND_ICON_SIZE');\r\n\r\nexport const TAILWIND_DATETIME_LANGUAGE = new InjectionToken<'it' | 'en'>('TAILWIND_DATETIME_LANGUAGE');\r\n\r\nexport const TAILWIND_COMPONENTS_SIZE = new InjectionToken<TailwindSize>('TAILWIND_COMPONENTS_SIZE');\r\n\r\n/**\r\n * Default template for `tailwind-pagination` **summary** when the `summary` input is omitted.\r\n * Use placeholders `{start}`, `{end}`, `{total}` (same rules as the `summary` input).\r\n */\r\nexport const TAILWIND_PAGINATION_SUMMARY = new InjectionToken<string>('TAILWIND_PAGINATION_SUMMARY');\r\n","import { Component, computed, inject, input } from '@angular/core';\r\nimport type { TailwindHeroicon, TailwindIconSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TAILWIND_ICON_SIZE } from '../../tokens';\r\n\r\nconst clampIconSize = (value: number): number => {\r\n if (!Number.isFinite(value)) return 24;\r\n const rounded = Math.round(value);\r\n return Math.min(64, Math.max(16, rounded));\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-icon',\r\n host: {\r\n class: 'inline-flex shrink-0 items-center justify-center'\r\n },\r\n templateUrl: './icon.component.html'\r\n})\r\nexport class TailwindIcon extends TailwindComponent {\r\n private readonly iconSize = inject(TAILWIND_ICON_SIZE, { optional: true });\r\n\r\n /** Heroicons outline icon name; SVG path `/tailwind-icons/<name>.svg` */\r\n readonly icon = input.required<TailwindHeroicon>();\r\n /** Width and height in px (16–64, clamped); default from `TAILWIND_ICON_SIZE` or **24** */\r\n readonly size = input<TailwindIconSize>(clampIconSize(this.iconSize ?? 24));\r\n\r\n readonly src = computed(() => `/tailwind-icons/${this.icon()}.svg`);\r\n\r\n readonly pixelSize = computed(() => clampIconSize(this.size()));\r\n}\r\n","<img\r\n class=\"block shrink-0\"\r\n [src]=\"src()\"\r\n [attr.width]=\"pixelSize()\"\r\n [attr.height]=\"pixelSize()\"\r\n [attr.alt]=\"icon()\"\r\n [attr.aria-hidden]=\"true\"\r\n decoding=\"async\" />\r\n","import {\r\n ApplicationRef,\r\n afterNextRender,\r\n ComponentRef,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n EnvironmentInjector,\r\n Injector,\r\n Renderer2,\r\n createComponent,\r\n inject,\r\n input\r\n} from '@angular/core';\r\nimport { TailwindIcon } from '../../components/icon/icon.component';\r\n/** Host attributes on `<tailwind-table>`; kept in sync for sort-header observers. */\r\nexport const TW_TABLE_SORT_KEY_ATTR = 'data-tw-sort-key';\r\nexport const TW_TABLE_SORT_DIR_ATTR = 'data-tw-sort-dir';\r\n\r\nconst MAX_TABLE_RESOLVE_ATTEMPTS = 24;\r\n\r\n/**\r\n * Sortable column header: put on `<th>` (plain header text + directive). Not sortable columns omit this directive.\r\n * Sorting is handled by the nearest `tailwind-table` host (event delegation); do not pass a table reference.\r\n */\r\n@Directive({\r\n selector: '[tailwindSortHeader]',\r\n standalone: true,\r\n host: {\r\n class:\r\n 'flex cursor-pointer items-center gap-1.5 justify-start whitespace-nowrap text-left select-none hover:text-surface-900',\r\n '[attr.tabindex]': '0',\r\n '[attr.data-sort-key]': 'sortKey()'\r\n }\r\n})\r\nexport class TailwindSortHeaderDirective {\r\n /** Property key on each row used for sorting. */\r\n readonly sortKey = input.required<string>();\r\n\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n private readonly renderer = inject(Renderer2);\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly environmentInjector = inject(EnvironmentInjector);\r\n private readonly injector = inject(Injector);\r\n\r\n private iconRef?: ComponentRef<TailwindIcon>;\r\n private mo?: MutationObserver;\r\n private destroyed = false;\r\n\r\n constructor() {\r\n inject(DestroyRef).onDestroy(() => {\r\n this.destroyed = true;\r\n this.mo?.disconnect();\r\n this.mo = undefined;\r\n this.iconRef?.destroy();\r\n this.iconRef = undefined;\r\n });\r\n\r\n afterNextRender(\r\n () => {\r\n if (!this.destroyed) {\r\n this.resolveTableAndAttach(0);\r\n }\r\n },\r\n { injector: this.injector }\r\n );\r\n }\r\n\r\n /**\r\n * After first render the projected `<th>` may still not be under `<tailwind-table>` in the DOM\r\n * for one frame; retry with `requestAnimationFrame` until `closest` succeeds.\r\n */\r\n private resolveTableAndAttach(attempt: number): void {\r\n if (this.destroyed || this.mo) return;\r\n\r\n const tableEl = this.host.nativeElement.closest('tailwind-table');\r\n if (!tableEl) {\r\n if (attempt < MAX_TABLE_RESOLVE_ATTEMPTS) {\r\n requestAnimationFrame(() => this.resolveTableAndAttach(attempt + 1));\r\n }\r\n return;\r\n }\r\n\r\n const sync = (): void => {\r\n if (this.destroyed || !this.iconRef) return;\r\n\r\n const columnKey = this.sortKey();\r\n const activeKey = tableEl.getAttribute(TW_TABLE_SORT_KEY_ATTR) ?? '';\r\n const dirRaw = tableEl.getAttribute(TW_TABLE_SORT_DIR_ATTR) ?? 'asc';\r\n const asc = dirRaw === 'asc';\r\n const active = activeKey === columnKey;\r\n\r\n const icon = active ? (asc ? 'chevron-up' : 'chevron-down') : 'chevron-up-down';\r\n this.iconRef.setInput('icon', icon);\r\n this.iconRef.setInput('size', 14);\r\n this.iconRef.setInput(\r\n 'class',\r\n active ? 'shrink-0 text-primary-600' : 'shrink-0 text-surface-400'\r\n );\r\n\r\n this.renderer.setAttribute(\r\n this.host.nativeElement,\r\n 'aria-label',\r\n active ? `Sorted ${asc ? 'ascending' : 'descending'}, activate to reverse` : `Sort by ${columnKey}`\r\n );\r\n\r\n this.iconRef.changeDetectorRef.detectChanges();\r\n };\r\n\r\n if (!this.iconRef) {\r\n this.iconRef = createComponent(TailwindIcon, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: this.injector\r\n });\r\n this.renderer.appendChild(this.host.nativeElement, this.iconRef.location.nativeElement);\r\n this.appRef.attachView(this.iconRef.hostView);\r\n }\r\n\r\n sync();\r\n\r\n this.mo = new MutationObserver(() => sync());\r\n this.mo.observe(tableEl, {\r\n attributes: true,\r\n attributeFilter: [TW_TABLE_SORT_KEY_ATTR, TW_TABLE_SORT_DIR_ATTR]\r\n });\r\n }\r\n}\r\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { TailwindSize, TailwindColor, TailwindButtonKind } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-button',\r\n imports: [NgClass],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.css'\r\n})\r\nexport class TailwindButton extends TailwindComponent {\r\n /** Visual color */\r\n readonly color = input<TailwindColor>('primary');\r\n /** Visual kind: `ghost` = transparent with hover tint; `text` = text color only, no hover background */\r\n readonly kind = input<TailwindButtonKind>('solid');\r\n /** Size of the button */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether the button is disabled */\r\n readonly disabled = input<boolean>(false);\r\n /** HTML button type attribute */\r\n readonly type = input<'button' | 'submit' | 'reset'>('button');\r\n\r\n /** Emitted when the button is clicked (not disabled/loading) */\r\n readonly onClick = output<MouseEvent>();\r\n\r\n /** Computed Tailwind classes based on color, kind, size, and state */\r\n readonly computedClasses = computed(() => {\r\n const base = [\r\n 'inline-flex items-center justify-center gap-2',\r\n 'font-medium',\r\n 'transition-all duration-150 ease-in-out',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2',\r\n 'disabled:cursor-not-allowed disabled:opacity-50',\r\n 'cursor-pointer',\r\n 'border'\r\n ];\r\n\r\n const solidMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 border-transparent focus-visible:outline-primary-600 shadow-sm',\r\n secondary:\r\n 'bg-surface-100 text-surface-800 hover:bg-surface-200 active:bg-surface-300 border-surface-300 focus-visible:outline-surface-500 shadow-sm',\r\n danger:\r\n 'bg-danger-600 text-white hover:bg-danger-700 active:bg-danger-800 border-transparent focus-visible:outline-danger-600 shadow-sm',\r\n success:\r\n 'bg-success-600 text-white hover:bg-success-700 active:bg-success-800 border-transparent focus-visible:outline-success-600 shadow-sm',\r\n warning:\r\n 'bg-warning-500 text-surface-900 hover:bg-warning-600 active:bg-warning-700 border-transparent focus-visible:outline-warning-500 shadow-sm',\r\n info: 'bg-info-600 text-white hover:bg-info-700 active:bg-info-800 border-transparent focus-visible:outline-info-600 shadow-sm'\r\n };\r\n\r\n const outlinedMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-transparent text-primary-600 border-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\r\n secondary:\r\n 'bg-transparent text-surface-700 border-surface-300 hover:bg-surface-50 active:bg-surface-100 focus-visible:outline-surface-500',\r\n danger:\r\n 'bg-transparent text-danger-600 border-danger-600 hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\r\n success:\r\n 'bg-transparent text-success-600 border-success-600 hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\r\n warning:\r\n 'bg-transparent text-warning-600 border-warning-500 hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-info-600 hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600'\r\n };\r\n\r\n /** Transparent + hover/active background tint (former `text` look). */\r\n const ghostMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-transparent text-primary-600 border-transparent hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\r\n secondary:\r\n 'bg-transparent text-surface-700 border-transparent hover:bg-surface-100 active:bg-surface-200 focus-visible:outline-surface-500',\r\n danger:\r\n 'bg-transparent text-danger-600 border-transparent hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\r\n success:\r\n 'bg-transparent text-success-600 border-transparent hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\r\n warning:\r\n 'bg-transparent text-warning-600 border-transparent hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-transparent hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600'\r\n };\r\n\r\n /** Text color from severity only; background stays transparent on hover/active. */\r\n const textMap: Record<TailwindColor, string> = {\r\n primary: 'bg-transparent text-primary-600 border-transparent focus-visible:outline-primary-600',\r\n secondary: 'bg-transparent text-surface-700 border-transparent focus-visible:outline-surface-500',\r\n danger: 'bg-transparent text-danger-600 border-transparent focus-visible:outline-danger-600',\r\n success: 'bg-transparent text-success-600 border-transparent focus-visible:outline-success-600',\r\n warning: 'bg-transparent text-warning-600 border-transparent focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-transparent focus-visible:outline-info-600'\r\n };\r\n\r\n const styleMap = {\r\n solid: solidMap,\r\n outlined: outlinedMap,\r\n ghost: ghostMap,\r\n text: textMap\r\n };\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-3 py-1.5 rounded-md',\r\n md: 'text-sm px-4 py-2 rounded-md',\r\n lg: 'text-base px-5 py-2.5 rounded-lg',\r\n xl: 'text-base px-6 py-3 rounded-lg'\r\n };\r\n\r\n const iconSizeMap: Record<TailwindSize, string> = {\r\n xs: 'p-1 rounded-sm',\r\n sm: 'p-1.5 rounded-md',\r\n md: 'p-2 rounded-md',\r\n lg: 'p-2.5 rounded-lg',\r\n xl: 'p-3 rounded-lg'\r\n };\r\n\r\n return [...base, styleMap[this.kind()][this.color()] || styleMap['solid']['primary'], sizeMap[this.size()]].join(\r\n ' '\r\n );\r\n });\r\n\r\n handleClick(event: MouseEvent): void {\r\n if (!this.disabled()) {\r\n this.onClick.emit(event);\r\n }\r\n }\r\n}\r\n","<button\n [ngClass]=\"computedClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"handleClick($event)\">\n <ng-content />\n</button>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-input',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindInput),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './input.component.html',\r\n styleUrl: './input.component.css'\r\n})\r\nexport class TailwindInput extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Input type */\r\n readonly type = input<'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'>('text');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether the input is readonly */\r\n readonly readonly = input<boolean>(false);\r\n /** Helper text shown below input */\r\n readonly helperText = input<string>('');\r\n /** Error text shown when hasError is true */\r\n readonly errorText = input<string>('');\r\n /** Whether the input is in error state */\r\n readonly hasError = input<boolean>(false);\r\n\r\n /** Two-way bound value */\r\n readonly value = model<string>('');\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Computed input classes */\r\n readonly inputClasses = computed(() => {\r\n const base = [\r\n 'block w-full bg-white',\r\n 'border transition-colors duration-150',\r\n 'placeholder:text-surface-400',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed'\r\n ];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\r\n md: 'text-sm px-3 py-2 rounded-md',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\r\n xl: 'text-base px-4 py-3 rounded-lg'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500 text-surface-900';\r\n\r\n return [...base, sizeMap[this.size()], stateClass].join(' ');\r\n });\r\n\r\n // CVA\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value.set(value ?? '');\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onInputChange(event: Event): void {\r\n const val = (event.target as HTMLInputElement).value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"tailwind-input-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-surface-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [value]=\"value()\"\n [class]=\"inputClasses()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\" />\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-textarea',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindTextarea),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './textarea.component.html',\r\n styleUrl: './textarea.component.css'\r\n})\r\nexport class TailwindTextarea extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Visible row count */\r\n readonly rows = input<number>(4);\r\n /** Optional maximum width in columns */\r\n readonly cols = input<number | undefined>(undefined);\r\n /** Maximum character length (HTML maxlength) */\r\n readonly maxlength = input<number | undefined>(undefined);\r\n /** Resize behavior */\r\n readonly resize = input<'vertical' | 'none' | 'both' | 'horizontal'>('vertical');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether the textarea is readonly */\r\n readonly readonly = input<boolean>(false);\r\n /** Helper text shown below field */\r\n readonly helperText = input<string>('');\r\n /** Error text shown when hasError is true */\r\n readonly errorText = input<string>('');\r\n /** Whether the textarea is in error state */\r\n readonly hasError = input<boolean>(false);\r\n\r\n /** Two-way bound value */\r\n readonly value = model<string>('');\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Computed textarea classes */\r\n readonly textareaClasses = computed(() => {\r\n const base = [\r\n 'block w-full bg-white',\r\n 'border transition-colors duration-150',\r\n 'placeholder:text-surface-400',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed'\r\n ];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm min-h-[4.5rem]',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md min-h-[5rem]',\r\n md: 'text-sm px-3 py-2 rounded-md min-h-[5.5rem]',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg min-h-[6.5rem]',\r\n xl: 'text-base px-4 py-3 rounded-lg min-h-[7.5rem]'\r\n };\r\n\r\n const resizeMap: Record<'vertical' | 'none' | 'both' | 'horizontal', string> = {\r\n vertical: 'resize-y',\r\n none: 'resize-none',\r\n both: 'resize',\r\n horizontal: 'resize-x'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500 text-surface-900';\r\n\r\n return [...base, sizeMap[this.size()], resizeMap[this.resize()], stateClass].join(' ');\r\n });\r\n\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value.set(value ?? '');\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onInputChange(event: Event): void {\r\n const val = (event.target as HTMLTextAreaElement).value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"tailwind-textarea-wrapper flex flex-col gap-1.5\">\r\n @if (label()) {\r\n <label\r\n [attr.for]=\"id() ? id() + '-inner' : null\"\r\n class=\"text-sm font-medium text-surface-700\"\r\n [class.text-danger-600]=\"hasError()\">\r\n {{ label() }}\r\n </label>\r\n }\r\n\r\n <textarea\r\n [attr.id]=\"id() ? id() + '-inner' : null\"\r\n [placeholder]=\"placeholder()\"\r\n [rows]=\"rows()\"\r\n [attr.cols]=\"cols() ?? null\"\r\n [attr.maxlength]=\"maxlength() ?? null\"\r\n [disabled]=\"isDisabled()\"\r\n [readonly]=\"readonly()\"\r\n [attr.aria-invalid]=\"hasError() || null\"\r\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\r\n [value]=\"value()\"\r\n [class]=\"textareaClasses()\"\r\n (input)=\"onInputChange($event)\"\r\n (blur)=\"onBlur()\"></textarea>\r\n\r\n @if (helperText() && !hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">\r\n {{ helperText() }}\r\n </p>\r\n }\r\n @if (errorText() && hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\r\n {{ errorText() }}\r\n </p>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n computed,\r\n ElementRef,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindIcon } from '../icon/icon.component';\r\nimport { TailwindButton } from '../button/button.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-upload',\r\n imports: [TailwindIcon, TailwindButton],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindUpload),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './upload.component.html',\r\n styleUrl: './upload.component.css'\r\n})\r\nexport class TailwindUpload extends TailwindComponent implements ControlValueAccessor {\r\n private static nextId = 0;\r\n private readonly fallbackFileId = `tw-upload-${TailwindUpload.nextId++}`;\r\n\r\n readonly fileInput = viewChild.required<ElementRef<HTMLInputElement>>('fileInput');\r\n\r\n /** Visual layout: compact button or drop zone */\r\n readonly variant = input<'button' | 'area'>('area');\r\n /** Field label */\r\n readonly label = input<string>('');\r\n /** Button label when `variant` is `button` */\r\n readonly buttonLabel = input<string>('Choose file');\r\n /** Drop zone title when `variant` is `area` */\r\n readonly areaTitle = input<string>('Drag and drop a file');\r\n /** Drop zone hint when `variant` is `area` */\r\n readonly areaHint = input<string>('or click to browse');\r\n /** Accepted MIME types / extensions (native `accept`) */\r\n readonly accept = input<string | undefined>(undefined);\r\n /** Allow multiple files */\r\n readonly multiple = input<boolean>(false);\r\n /** Max size per file (bytes); if any file exceeds it, selection is rejected */\r\n readonly maxFileSizeBytes = input<number | undefined>(undefined);\r\n /** Button / control size */\r\n readonly size = input<TailwindSize>('md');\r\n /** Show a clear control when there is a value */\r\n readonly showClear = input<boolean>(true);\r\n /** Label for the clear action (i18n) */\r\n readonly clearText = input<string>('clear');\r\n readonly helperText = input<string>('');\r\n readonly errorText = input<string>('');\r\n readonly hasError = input<boolean>(false);\r\n\r\n /** Data URL (`data:<mime>;base64,...`) — forms / `[(value)]`; with `multiple`, only the first file is stored here */\r\n readonly value = model<string>('');\r\n\r\n /** Raw files after a successful selection */\r\n readonly filesSelected = output<File[]>();\r\n /** Human-readable validation message when selection is rejected */\r\n readonly validationError = output<string>();\r\n\r\n readonly isDisabled = signal(false);\r\n readonly isDragOver = signal(false);\r\n readonly selectedNames = signal<string[]>([]);\r\n\r\n private dragDepth = 0;\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n readonly fileInputId = computed(() => this.id() ?? this.fallbackFileId);\r\n\r\n readonly areaClasses = computed(() => {\r\n const base = [\r\n 'flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed px-6 py-10 text-center',\r\n 'transition-colors duration-150 outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2'\r\n ];\r\n\r\n if (this.isDisabled()) {\r\n return [...base, 'cursor-not-allowed opacity-50 bg-surface-50 border-surface-200 text-surface-500'].join(' ');\r\n }\r\n if (this.isDragOver()) {\r\n return [...base, 'cursor-pointer border-primary-500 bg-primary-50/60 text-surface-800 focus-visible:outline-primary-500'].join(\r\n ' '\r\n );\r\n }\r\n if (this.hasError()) {\r\n return [\r\n ...base,\r\n 'cursor-pointer border-danger-400 bg-danger-50/40 text-danger-900 focus-visible:outline-danger-500 hover:border-danger-500'\r\n ].join(' ');\r\n }\r\n return [\r\n ...base,\r\n 'cursor-pointer border-surface-300 bg-surface-50/50 text-surface-800 focus-visible:outline-primary-500',\r\n 'hover:border-primary-400 hover:bg-primary-50/30'\r\n ].join(' ');\r\n });\r\n\r\n writeValue(obj: string | null): void {\r\n this.value.set(obj ?? '');\r\n if (!obj) {\r\n this.selectedNames.set([]);\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n triggerPicker(event?: Event): void {\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n if (this.isDisabled()) return;\r\n this.fileInput().nativeElement.click();\r\n }\r\n\r\n onKeydownArea(event: KeyboardEvent): void {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this.triggerPicker();\r\n }\r\n }\r\n\r\n onDragEnter(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.isDisabled()) return;\r\n this.dragDepth++;\r\n this.isDragOver.set(true);\r\n }\r\n\r\n onDragLeave(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.dragDepth = Math.max(0, this.dragDepth - 1);\r\n if (this.dragDepth === 0) {\r\n this.isDragOver.set(false);\r\n }\r\n }\r\n\r\n onDragOver(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n onDrop(event: DragEvent): void {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.dragDepth = 0;\r\n this.isDragOver.set(false);\r\n if (this.isDisabled()) return;\r\n const files = event.dataTransfer?.files;\r\n if (files?.length) {\r\n void this.handleFiles(files);\r\n }\r\n }\r\n\r\n onNativeChange(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n const files = input.files;\r\n if (files?.length) {\r\n void this.handleFiles(files);\r\n }\r\n input.value = '';\r\n }\r\n\r\n clear(event?: Event): void {\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n if (this.isDisabled()) return;\r\n this.selectedNames.set([]);\r\n this.value.set('');\r\n this.onChange('');\r\n this.fileInput().nativeElement.value = '';\r\n }\r\n\r\n blurHost(): void {\r\n this.onTouched();\r\n }\r\n\r\n private validate(files: File[]): string | null {\r\n const max = this.maxFileSizeBytes();\r\n if (max == null) return null;\r\n const tooLarge = files.filter((f) => f.size > max);\r\n if (tooLarge.length === 0) return null;\r\n const maxLabel =\r\n max >= 1024 * 1024\r\n ? `${(max / (1024 * 1024)).toFixed(1)} MB`\r\n : max >= 1024\r\n ? `${Math.round(max / 1024)} KB`\r\n : `${max} bytes`;\r\n return tooLarge.length === 1\r\n ? `File exceeds maximum size (${maxLabel}).`\r\n : `${tooLarge.length} files exceed maximum size (${maxLabel}).`;\r\n }\r\n\r\n private async handleFiles(fileList: FileList): Promise<void> {\r\n let files = Array.from(fileList);\r\n if (!this.multiple() && files.length > 1) {\r\n files = [files[0]];\r\n }\r\n\r\n const err = this.validate(files);\r\n if (err) {\r\n this.validationError.emit(err);\r\n return;\r\n }\r\n\r\n this.selectedNames.set(files.map((f) => f.name));\r\n\r\n try {\r\n const dataUrls = await Promise.all(files.map((f) => this.readAsDataUrl(f)));\r\n this.filesSelected.emit(files);\r\n\r\n const primary = dataUrls[0] ?? '';\r\n this.value.set(primary);\r\n this.onChange(primary);\r\n } catch {\r\n this.validationError.emit('Could not read file.');\r\n }\r\n }\r\n\r\n private readAsDataUrl(file: File): Promise<string> {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const result = reader.result;\r\n if (typeof result === 'string') {\r\n resolve(result);\r\n } else {\r\n reject(new Error('Unexpected read result'));\r\n }\r\n };\r\n reader.onerror = () => reject(reader.error ?? new Error('read error'));\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n}\r\n","<div class=\"tailwind-upload-wrapper flex flex-col gap-1.5\">\r\n @if (label()) {\r\n <label\r\n [attr.for]=\"fileInputId()\"\r\n class=\"text-sm font-medium text-surface-700\"\r\n [class.text-danger-600]=\"hasError()\">\r\n {{ label() }}\r\n </label>\r\n }\r\n\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n class=\"sr-only\"\r\n [attr.id]=\"fileInputId()\"\r\n [accept]=\"accept() ?? null\"\r\n [attr.multiple]=\"multiple() ? '' : null\"\r\n [disabled]=\"isDisabled()\"\r\n [attr.aria-invalid]=\"hasError() || null\"\r\n [attr.aria-describedby]=\"helperText() || errorText() ? fileInputId() + '-helper' : null\"\r\n (change)=\"onNativeChange($event)\"\r\n (blur)=\"blurHost()\" />\r\n\r\n @if (variant() === 'button') {\r\n <div class=\"flex flex-wrap items-center gap-2\">\r\n <tailwind-button\r\n type=\"button\"\r\n color=\"primary\"\r\n kind=\"solid\"\r\n [size]=\"size()\"\r\n [disabled]=\"isDisabled()\"\r\n (onClick)=\"triggerPicker($event)\">\r\n {{ buttonLabel() }}\r\n </tailwind-button>\r\n @if (showClear() && value()) {\r\n <button\r\n type=\"button\"\r\n class=\"text-sm font-medium text-primary-600 underline-offset-2 hover:underline disabled:cursor-not-allowed disabled:opacity-50\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"clear($event)\">\r\n {{ clearText() }}\r\n </button>\r\n }\r\n </div>\r\n } @else {\r\n <div class=\"flex flex-col gap-2\">\r\n <div\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [class]=\"areaClasses()\"\r\n [attr.aria-disabled]=\"isDisabled() || null\"\r\n (click)=\"triggerPicker($event)\"\r\n (keydown)=\"onKeydownArea($event)\"\r\n (dragenter)=\"onDragEnter($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (dragover)=\"onDragOver($event)\"\r\n (drop)=\"onDrop($event)\">\r\n <tailwind-icon icon=\"cloud-arrow-up\" [size]=\"40\" />\r\n <span class=\"text-sm font-medium\">{{ areaTitle() }}</span>\r\n <span class=\"text-xs text-surface-500\">{{ areaHint() }}</span>\r\n </div>\r\n @if (showClear() && value()) {\r\n <button\r\n type=\"button\"\r\n class=\"self-start text-sm font-medium text-primary-600 underline-offset-2 hover:underline disabled:cursor-not-allowed disabled:opacity-50\"\r\n [disabled]=\"isDisabled()\"\r\n (click)=\"clear($event)\">\r\n {{ clearText() }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n\r\n @if (selectedNames().length) {\r\n <p class=\"truncate text-xs text-surface-600\" [attr.title]=\"selectedNames().join(', ')\">\r\n {{ selectedNames().join(', ') }}\r\n </p>\r\n }\r\n\r\n @if (helperText() && !hasError()) {\r\n <p [attr.id]=\"fileInputId() + '-helper'\" class=\"text-xs text-surface-500\">\r\n {{ helperText() }}\r\n </p>\r\n }\r\n @if (errorText() && hasError()) {\r\n <p [attr.id]=\"fileInputId() + '-helper'\" class=\"text-xs text-danger-600\">\r\n {{ errorText() }}\r\n </p>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n computed,\r\n forwardRef,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n viewChildren,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-input-otp',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindInputOtp),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './input-otp.component.html',\r\n styleUrl: './input-otp.component.css'\r\n})\r\nexport class TailwindInputOtp extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Number of character slots */\r\n readonly length = input<number>(6);\r\n /** Allow only digits */\r\n readonly integerOnly = input<boolean>(true);\r\n /** Mask digits (password bullets) */\r\n readonly mask = input<boolean>(false);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Slots are read-only (navigation still allowed) */\r\n readonly readonly = input<boolean>(false);\r\n /** Helper text shown below */\r\n readonly helperText = input<string>('');\r\n /** Error text when hasError is true */\r\n readonly errorText = input<string>('');\r\n /** Error state styling */\r\n readonly hasError = input<boolean>(false);\r\n /** Accessible label for the group (used when label is empty) */\r\n readonly ariaLabel = input<string>('Verification code');\r\n /** Separator string; empty hides */\r\n readonly separator = input<string>('');\r\n /** 0-based slot index after which the separator is rendered */\r\n readonly separatorAfterIndex = input<number | null>(null);\r\n /** Hint for browsers / SMS autofill (first slot only) */\r\n readonly autocomplete = input<string>('one-time-code');\r\n\r\n /** Two-way bound full code string */\r\n readonly value = model<string>('');\r\n\r\n /** Emitted when all slots are filled */\r\n readonly completed = output<string>();\r\n\r\n readonly isDisabled = signal(false);\r\n\r\n readonly slotIndexes = computed(() => {\r\n const n = Math.max(1, Math.min(32, Math.floor(this.length())));\r\n return Array.from({ length: n }, (_, i) => i);\r\n });\r\n\r\n readonly otpInputs = viewChildren<ElementRef<HTMLInputElement>>('otpDigit');\r\n\r\n readonly cellClasses = computed(() => {\r\n const base = [\r\n 'block w-10 text-center font-mono tabular-nums bg-white',\r\n 'border transition-colors duration-150',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed'\r\n ];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-1 py-1 rounded-sm min-w-7',\r\n sm: 'text-sm px-1.5 py-1.5 rounded-md min-w-8',\r\n md: 'text-sm px-2 py-2 rounded-md min-w-10',\r\n lg: 'text-base px-2.5 py-2.5 rounded-lg min-w-11',\r\n xl: 'text-base px-3 py-3 rounded-lg min-w-12'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500 text-surface-900';\r\n\r\n return [...base, sizeMap[this.size()], stateClass].join(' ');\r\n });\r\n\r\n readonly groupAriaLabel = computed(() => this.label() || this.ariaLabel());\r\n\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value.set(this.normalizeIncoming(value ?? ''));\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n maxSlots(): number {\r\n return this.slotIndexes().length;\r\n }\r\n\r\n digitAt(index: number): string {\r\n return this.value()[index] ?? '';\r\n }\r\n\r\n showSeparatorAfter(index: number): boolean {\r\n const sep = this.separator();\r\n const pos = this.separatorAfterIndex();\r\n return !!sep && pos !== null && pos === index;\r\n }\r\n\r\n inputType(): string {\r\n return this.mask() ? 'password' : 'text';\r\n }\r\n\r\n inputMode(): 'numeric' | 'text' {\r\n return this.integerOnly() ? 'numeric' : 'text';\r\n }\r\n\r\n autocompleteForSlot(index: number): string | null {\r\n return index === 0 ? this.autocomplete() : null;\r\n }\r\n\r\n cellId(index: number): string {\r\n const base = this.id() ?? 'tailwind-input-otp';\r\n return `${base}-digit-${index}`;\r\n }\r\n\r\n onSlotFocus(index: number): void {\r\n this.onTouched();\r\n const len = this.value().length;\r\n if (index > len) {\r\n queueMicrotask(() => this.focusSlot(Math.min(len, this.maxSlots() - 1)));\r\n }\r\n }\r\n\r\n onInput(event: Event, index: number): void {\r\n if (this.readonly()) {\r\n return;\r\n }\r\n const inputEl = event.target as HTMLInputElement;\r\n let raw = inputEl.value;\r\n if (this.integerOnly()) {\r\n raw = raw.replace(/\\D/g, '');\r\n }\r\n const char = raw.slice(-1);\r\n\r\n let v = this.value();\r\n const max = this.maxSlots();\r\n\r\n if (char && index > v.length) {\r\n queueMicrotask(() => this.focusSlot(v.length));\r\n inputEl.value = this.digitAt(index);\r\n return;\r\n }\r\n\r\n if (!char) {\r\n if (index < v.length) {\r\n v = v.slice(0, index) + v.slice(index + 1);\r\n }\r\n } else {\r\n if (index < v.length) {\r\n v = v.slice(0, index) + char + v.slice(index + 1);\r\n } else if (index === v.length) {\r\n v = v + char;\r\n }\r\n v = v.slice(0, max);\r\n }\r\n\r\n v = this.normalizeIncoming(v);\r\n this.commit(v);\r\n\r\n queueMicrotask(() => {\r\n inputEl.value = this.digitAt(index);\r\n if (char && index < max - 1) {\r\n this.focusSlot(index + 1);\r\n }\r\n });\r\n }\r\n\r\n onPaste(event: ClipboardEvent, index: number): void {\r\n if (this.readonly() || this.isDisabled()) {\r\n return;\r\n }\r\n event.preventDefault();\r\n const text = event.clipboardData?.getData('text') ?? '';\r\n let cleaned = this.integerOnly() ? text.replace(/\\D/g, '') : text.replace(/\\s/g, '');\r\n const max = this.maxSlots();\r\n cleaned = cleaned.slice(0, max - index);\r\n const merged = this.normalizeIncoming(this.value().slice(0, index) + cleaned);\r\n this.commit(merged);\r\n\r\n queueMicrotask(() =>\r\n this.focusSlot(cleaned.length ? Math.min(index + cleaned.length - 1, max - 1) : index)\r\n );\r\n }\r\n\r\n onKeydown(event: KeyboardEvent, index: number): void {\r\n const max = this.maxSlots();\r\n const v = this.value();\r\n\r\n if (event.key === 'Backspace') {\r\n const cur = this.digitAt(index);\r\n if (!cur && index > 0) {\r\n event.preventDefault();\r\n const nextVal = this.normalizeIncoming(v.slice(0, index - 1) + v.slice(index));\r\n this.commit(nextVal);\r\n queueMicrotask(() => this.focusSlot(index - 1));\r\n } else if (cur) {\r\n event.preventDefault();\r\n const nextVal = this.normalizeIncoming(v.slice(0, index) + v.slice(index + 1));\r\n this.commit(nextVal);\r\n queueMicrotask(() => {\r\n const el = this.otpInputs()[index]?.nativeElement;\r\n if (el) {\r\n el.value = this.digitAt(index);\r\n }\r\n });\r\n }\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowLeft' && index > 0) {\r\n event.preventDefault();\r\n this.focusSlot(index - 1);\r\n } else if (event.key === 'ArrowRight' && index < max - 1) {\r\n event.preventDefault();\r\n this.focusSlot(index + 1);\r\n }\r\n }\r\n\r\n private commit(joined: string): void {\r\n const prev = this.value();\r\n this.value.set(joined);\r\n this.onChange(joined);\r\n const max = this.maxSlots();\r\n if (joined.length === max && prev.length !== max) {\r\n this.completed.emit(joined);\r\n }\r\n }\r\n\r\n private normalizeIncoming(v: string): string {\r\n const max = Math.max(1, Math.min(32, Math.floor(this.length())));\r\n let s = v ?? '';\r\n if (this.integerOnly()) {\r\n s = s.replace(/\\D/g, '');\r\n }\r\n return s.slice(0, max);\r\n }\r\n\r\n private focusSlot(index: number): void {\r\n queueMicrotask(() => {\r\n const list = this.otpInputs();\r\n const el = list[index]?.nativeElement;\r\n el?.focus();\r\n el?.select();\r\n });\r\n }\r\n}\r\n","<div class=\"tailwind-input-otp-wrapper flex flex-col gap-1.5\">\r\n @if (label()) {\r\n <label\r\n [attr.for]=\"cellId(0)\"\r\n class=\"text-sm font-medium text-surface-700\"\r\n [class.text-danger-600]=\"hasError()\">\r\n {{ label() }}\r\n </label>\r\n }\r\n\r\n <div role=\"group\" [attr.aria-label]=\"groupAriaLabel()\" class=\"flex flex-wrap items-center gap-2\">\r\n @for (idx of slotIndexes(); track idx) {\r\n <input\r\n #otpDigit\r\n [attr.id]=\"cellId(idx)\"\r\n [type]=\"inputType()\"\r\n [attr.inputmode]=\"inputMode()\"\r\n [attr.autocomplete]=\"autocompleteForSlot(idx)\"\r\n [attr.aria-label]=\"'Digit ' + (idx + 1) + ' of ' + slotIndexes().length\"\r\n [disabled]=\"isDisabled()\"\r\n [readonly]=\"readonly()\"\r\n [attr.aria-invalid]=\"hasError() || null\"\r\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\r\n maxlength=\"1\"\r\n spellcheck=\"false\"\r\n [class]=\"cellClasses()\"\r\n [value]=\"digitAt(idx)\"\r\n (input)=\"onInput($event, idx)\"\r\n (keydown)=\"onKeydown($event, idx)\"\r\n (paste)=\"onPaste($event, idx)\"\r\n (focus)=\"onSlotFocus(idx)\" />\r\n @if (showSeparatorAfter(idx)) {\r\n <span class=\"select-none text-surface-500\" aria-hidden=\"true\">{{ separator() }}</span>\r\n }\r\n }\r\n </div>\r\n\r\n @if (helperText() && !hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">\r\n {{ helperText() }}\r\n </p>\r\n }\r\n @if (errorText() && hasError()) {\r\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\r\n {{ errorText() }}\r\n </p>\r\n }\r\n</div>\r\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-checkbox',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindCheckbox),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './checkbox.component.html',\r\n styleUrl: './checkbox.component.css'\r\n})\r\nexport class TailwindCheckbox extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Description text */\r\n readonly description = input<string>('');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Unique ID */\r\n \r\n /** Two-way bound checked state */\r\n readonly checked = model<boolean>(false);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Box size class based on size input */\r\n readonly boxSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3.5 h-3.5',\r\n sm: 'w-4 h-4',\r\n md: 'w-5 h-5',\r\n lg: 'w-6 h-6',\r\n xl: 'w-7 h-7'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n // CVA\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.checked.set(!!value);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onCheckboxChange(event: Event): void {\r\n const val = (event.target as HTMLInputElement).checked;\r\n this.checked.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n}\r\n\r\n","<div\n class=\"inline-flex items-center gap-2.5 select-none\"\n [class.opacity-50]=\"isDisabled()\">\n <label\n class=\"relative flex items-center justify-center shrink-0\"\n [class.cursor-pointer]=\"!isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n [attr.for]=\"id() ? id() + '-inner' : null\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"checkbox\"\n class=\"peer sr-only\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-describedby]=\"description() && id() ? id() + '-desc' : null\"\n [attr.aria-labelledby]=\"label() && id() ? id() + '-label' : null\"\n (change)=\"onCheckboxChange($event)\" />\n <div\n class=\"w-full h-full border-2 transition-all duration-150 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1\"\n [class.rounded-sm]=\"size() === 'xs' || size() === 'sm'\"\n [class.rounded-md]=\"size() !== 'xs' && size() !== 'sm'\"\n [class.border-surface-300]=\"!checked()\"\n [class.bg-white]=\"!checked()\"\n [class.border-primary-600]=\"checked()\"\n [class.bg-primary-600]=\"checked()\">\n @if (checked()) {\n <svg class=\"w-full h-full text-white p-0.5\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M13.5 4.5L6.5 11.5L3 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n </div>\n </label>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n @if (label()) {\n <span [attr.id]=\"id() ? id() + '-label' : null\" class=\"text-sm font-medium text-surface-800 leading-tight\">{{\n label()\n }}</span>\n }\n @if (description()) {\n <span [attr.id]=\"id() ? id() + '-desc' : null\" class=\"text-xs text-surface-500 leading-snug\">\n {{ description() }}\n </span>\n }\n </div>\n</div>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindOptionGroup, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-radio-group',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindRadioGroup),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './radio-group.component.html',\r\n styleUrl: './radio-group.component.css'\r\n})\r\nexport class TailwindRadioGroup<T = unknown> extends TailwindComponent implements ControlValueAccessor {\r\n /** Label for the radio group */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('');\r\n /** Name for the radio group (used for native radio grouping) */\r\n readonly name = input<string>();\r\n /** Available options */\r\n readonly options = input<TailwindOptionGroup<T>[]>([]);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Layout orientation */\r\n readonly orientation = input<'horizontal' | 'vertical'>('vertical');\r\n\r\n /** Currently selected value */\r\n readonly value = model<T | null>(null);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Radio button outer ring size */\r\n readonly radioSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3.5 h-3.5',\r\n sm: 'w-4 h-4',\r\n md: 'w-5 h-5',\r\n lg: 'w-6 h-6',\r\n xl: 'w-7 h-7'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n /** Inner dot size */\r\n readonly dotSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-1.5 h-1.5',\r\n sm: 'w-2 h-2',\r\n md: 'w-2.5 h-2.5',\r\n lg: 'w-3 h-3',\r\n xl: 'w-3.5 h-3.5'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n // CVA\r\n private onChange: (value: T) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: T): void {\r\n this.value.set(value ?? null);\r\n }\r\n\r\n registerOnChange(fn: (value: T) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onRadioChange(optionValue: T): void {\r\n this.value.set(optionValue);\r\n this.onChange(optionValue);\r\n this.onTouched();\r\n }\r\n}\r\n","<fieldset\n class=\"flex gap-3\"\n [class.flex-col]=\"orientation() === 'vertical'\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"radiogroup\">\n @if (label()) {\n <legend class=\"text-sm font-medium text-surface-700 mb-2\">{{ label() }}</legend>\n }\n\n @for (option of options(); track option.value) {\n <label\n class=\"inline-flex items-start gap-2.5 cursor-pointer select-none\"\n [class.cursor-not-allowed]=\"isDisabled() || option.disabled\"\n [class.opacity-50]=\"isDisabled() || option.disabled\">\n <div class=\"relative flex items-center justify-center shrink-0\" [class]=\"radioSizeClass()\">\n <input\n type=\"radio\"\n class=\"peer sr-only\"\n [name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"value() === option.value\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n (change)=\"onRadioChange(option.value)\" />\n <div\n class=\"w-full h-full rounded-full border-2 transition-all duration-150 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1 flex items-center justify-center\"\n [class.border-surface-300]=\"value() !== option.value\"\n [class.border-primary-600]=\"value() === option.value\">\n @if (value() === option.value) {\n <div\n class=\"rounded-full bg-primary-600 transition-transform duration-150 scale-100\"\n [class]=\"dotSizeClass()\"></div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n <span class=\"text-sm font-medium text-surface-800 leading-tight\">{{ option.label }}</span>\n @if (option.description) {\n <span class=\"text-xs text-surface-500 leading-snug\">{{ option.description }}</span>\n }\n </div>\n </label>\n }\n</fieldset>\n","import {\r\n Component,\r\n computed,\r\n ElementRef,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n OnDestroy,\r\n signal,\r\n TemplateRef,\r\n ViewContainerRef,\r\n viewChild\r\n} from '@angular/core';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindOption, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-select',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindSelect),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.css'\r\n})\r\nexport class TailwindSelect<T = unknown> extends TailwindComponent implements ControlValueAccessor, OnDestroy {\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly elRef = inject(ElementRef<HTMLElement>);\r\n private readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n private outsideSub: Subscription | null = null;\r\n\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Available options */\r\n readonly options = input<TailwindOption<T>[]>([]);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Helper text */\r\n readonly helperText = input<string>('');\r\n /** Error text */\r\n readonly errorText = input<string>('');\r\n /** Whether in error state */\r\n readonly hasError = input<boolean>(false);\r\n /** When true, value is `T[]` and several options can be selected */\r\n readonly multiple = input(false);\r\n\r\n /** Selected value: `T | null` when single, `T[]` when `multiple` */\r\n readonly value = model<T | T[] | null>(null);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Whether the dropdown panel is open */\r\n readonly isOpen = signal(false);\r\n\r\n /** Keyboard-highlighted option index (-1 = none) */\r\n readonly activeIndex = signal(-1);\r\n\r\n /** The currently selected option object (single mode only) */\r\n readonly selectedOption = computed(() => {\r\n if (this.multiple()) return null;\r\n const v = this.value();\r\n if (v == null || Array.isArray(v)) return null;\r\n return this.options().find(o => this.optionValueEquals(o.value, v)) ?? null;\r\n });\r\n\r\n /** Selected option objects in `options()` order (multiple mode only) */\r\n readonly selectedOptions = computed(() => {\r\n if (!this.multiple()) return [];\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n return this.options().filter(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\r\n });\r\n\r\n /** Classes for the trigger button */\r\n readonly triggerClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\r\n md: 'text-sm px-3 py-2 rounded-md',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\r\n xl: 'text-base px-4 py-3 rounded-lg'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500';\r\n\r\n const layout = this.multiple() ? 'items-start' : 'items-center';\r\n\r\n return [\r\n 'flex justify-between w-full bg-white border transition-colors duration-150',\r\n layout,\r\n 'pr-3 cursor-pointer text-left',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed',\r\n sizeMap[this.size()],\r\n stateClass\r\n ].join(' ');\r\n });\r\n\r\n private optionValueEquals(a: unknown, b: unknown): boolean {\r\n return Object.is(a, b);\r\n }\r\n\r\n /** Used in the template to compare option values */\r\n isOptionSelected(option: TailwindOption<T>): boolean {\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n return arr.some(sv => this.optionValueEquals(option.value, sv));\r\n }\r\n const v = this.value();\r\n if (v == null || Array.isArray(v)) return false;\r\n return this.optionValueEquals(option.value, v);\r\n }\r\n\r\n /** Classes for a single option row */\r\n optionClasses(index: number, option: TailwindOption<T>): string {\r\n const isSelected = this.isOptionSelected(option);\r\n const isActive = this.activeIndex() === index;\r\n const isDisabled = !!option.disabled;\r\n\r\n return [\r\n 'flex items-center justify-between px-3 py-2 text-sm cursor-pointer select-none',\r\n isDisabled\r\n ? 'text-surface-400 cursor-not-allowed'\r\n : isSelected\r\n ? 'bg-primary-50 text-primary-700 font-medium'\r\n : isActive\r\n ? 'bg-surface-100 text-surface-900'\r\n : 'text-surface-800 hover:bg-surface-50'\r\n ].join(' ');\r\n }\r\n\r\n // CVA\r\n private onChange: (value: T | T[] | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: T | T[] | null | undefined): void {\r\n if (this.multiple()) {\r\n if (value == null) this.value.set([]);\r\n else this.value.set(Array.isArray(value) ? [...value] : []);\r\n } else {\r\n if (Array.isArray(value)) this.value.set(null);\r\n else this.value.set(value ?? null);\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: T | T[] | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeDropdown();\r\n }\r\n\r\n private openDropdown(): void {\r\n if (this.overlayRef) return;\r\n\r\n const trigger =\r\n (this.elRef.nativeElement.querySelector('button[role=\"combobox\"]') as HTMLElement) ?? this.elRef.nativeElement;\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(trigger)\r\n .withPositions([\r\n // Preferred: open downward\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n // Fallback: open upward\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.close(),\r\n width: trigger.offsetWidth,\r\n minWidth: 'w-full'\r\n });\r\n\r\n const portal = new TemplatePortal(this.panelTemplate(), this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n const pane = this.overlayRef.overlayElement;\r\n this.outsideSub = new Subscription();\r\n\r\n // Close on outside click (capture: trigger + panel are excluded; avoids CDK edge cases)\r\n this.outsideSub.add(\r\n fromEvent<PointerEvent>(document, 'pointerdown', { capture: true }).subscribe(ev => {\r\n const t = ev.target as Node;\r\n if (this.elRef.nativeElement.contains(t) || pane.contains(t)) return;\r\n this.closeDropdown();\r\n })\r\n );\r\n\r\n this.outsideSub.add(\r\n fromEvent<KeyboardEvent>(document, 'keydown').subscribe(ev => {\r\n if (ev.key === 'Escape') {\r\n ev.preventDefault();\r\n this.closeDropdown();\r\n }\r\n })\r\n );\r\n\r\n this.isOpen.set(true);\r\n\r\n const opts = this.options();\r\n let initial = -1;\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n initial = opts.findIndex(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\r\n } else {\r\n const v = this.value();\r\n if (v != null && !Array.isArray(v)) {\r\n initial = opts.findIndex(o => this.optionValueEquals(o.value, v));\r\n }\r\n }\r\n this.activeIndex.set(initial >= 0 ? initial : -1);\r\n }\r\n\r\n private closeDropdown(): void {\r\n this.overlayRef?.detach();\r\n this.overlayRef?.dispose();\r\n this.overlayRef = null;\r\n this.outsideSub?.unsubscribe();\r\n this.outsideSub = null;\r\n this.isOpen.set(false);\r\n this.activeIndex.set(-1);\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (this.isDisabled()) return;\r\n if (this.isOpen()) {\r\n this.closeDropdown();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n selectOption(option: TailwindOption<T>): void {\r\n if (option.disabled) return;\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const current = Array.isArray(v) ? [...v] : [];\r\n const idx = current.findIndex(sv => this.optionValueEquals(sv, option.value));\r\n if (idx >= 0) current.splice(idx, 1);\r\n else current.push(option.value);\r\n this.value.set(current);\r\n this.onChange(current);\r\n this.onTouched();\r\n return;\r\n }\r\n const val = option.value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n this.closeDropdown();\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n if (this.isDisabled()) return;\r\n const opts = this.options();\r\n\r\n switch (event.key) {\r\n case 'ArrowDown': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n let next = this.activeIndex() + 1;\r\n while (next < opts.length && opts[next].disabled) next++;\r\n if (next < opts.length) this.activeIndex.set(next);\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n let prev = this.activeIndex() - 1;\r\n while (prev >= 0 && opts[prev].disabled) prev--;\r\n if (prev >= 0) this.activeIndex.set(prev);\r\n break;\r\n }\r\n case 'Enter':\r\n case ' ': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n const active = this.activeIndex();\r\n if (active >= 0 && active < opts.length) {\r\n this.selectOption(opts[active]);\r\n }\r\n break;\r\n }\r\n case 'Escape':\r\n case 'Tab': {\r\n this.closeDropdown();\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-surface-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <!-- Trigger button -->\n <button\n type=\"button\"\n [attr.id]=\"id() ? id() + '-inner' : null\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [disabled]=\"isDisabled()\"\n [class]=\"triggerClasses()\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeydown($event)\">\n @if (multiple()) {\n <span class=\"flex flex-wrap gap-1 flex-1 min-w-0 mr-2\" [class.text-surface-400]=\"selectedOptions().length === 0\">\n @if (selectedOptions().length === 0) {\n {{ placeholder() }}\n } @else {\n @for (opt of selectedOptions(); track opt) {\n <span class=\"rounded-md bg-surface-100 px-2 py-0.5 text-sm text-surface-800\">{{ opt.label }}</span>\n }\n }\n </span>\n } @else {\n <span [class.text-surface-400]=\"!selectedOption()\">\n {{ selectedOption()?.label ?? placeholder() }}\n </span>\n }\n\n <svg\n class=\"shrink-0 ml-2 w-4 h-4 text-surface-400 transition-transform duration-150\"\n [class.rotate-180]=\"isOpen()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">{{ helperText() }}</p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">{{ errorText() }}</p>\n }\n</div>\n\n<!-- Dropdown panel — rendered via CDK Overlay outside the component DOM -->\n<ng-template #panelTemplate>\n <ul\n role=\"listbox\"\n [attr.aria-multiselectable]=\"multiple() ? true : null\"\n class=\"w-full bg-white border border-surface-200 rounded-md shadow-lg py-1 max-h-60 overflow-auto\">\n @if (placeholder()) {\n <li role=\"option\" aria-disabled=\"true\" class=\"px-3 py-2 text-sm text-surface-400 cursor-default select-none\">\n {{ placeholder() }}\n </li>\n }\n @for (option of options(); track option.value; let i = $index) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [class]=\"optionClasses(i, option)\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"!option.disabled && activeIndex.set(i)\">\n <span>{{ option.label }}</span>\n\n @if (isOptionSelected(option)) {\n <svg\n class=\"w-4 h-4 text-primary-600 shrink-0\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\">\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n </li>\n }\n </ul>\n</ng-template>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-toggle',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindToggle),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.css'\r\n})\r\nexport class TailwindToggle extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n\r\n /** Two-way bound checked state */\r\n readonly checked = model<boolean>(false);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Track (background) classes */\r\n readonly trackClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-7 h-4',\r\n sm: 'w-8 h-5',\r\n md: 'w-11 h-6',\r\n lg: 'w-14 h-7',\r\n xl: 'w-16 h-8'\r\n };\r\n\r\n const base = [\r\n 'relative inline-flex shrink-0 rounded-full',\r\n 'border-2 border-transparent',\r\n 'transition-colors duration-200 ease-in-out',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600',\r\n 'cursor-pointer disabled:cursor-not-allowed'\r\n ];\r\n\r\n const stateClass = this.checked() ? 'bg-primary-600' : 'bg-surface-300';\r\n\r\n return [...base, sizeMap[this.size()], stateClass].join(' ');\r\n });\r\n\r\n /** `aria-label` / `aria-labelledby` for the switch (label text is not a hit target) */\r\n readonly switchAria = computed(() => {\r\n const al = this.ariaLabel();\r\n if (al) {\r\n return { label: al, labelledBy: null as string | null };\r\n }\r\n const lb = this.label();\r\n const sid = this.id();\r\n if (lb && sid) {\r\n return { label: null, labelledBy: `${sid}-label` };\r\n }\r\n if (lb) {\r\n return { label: lb, labelledBy: null };\r\n }\r\n return { label: 'Toggle', labelledBy: null };\r\n });\r\n\r\n /** Thumb (knob) classes */\r\n readonly thumbClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, { thumb: string; translateOn: string }> = {\r\n xs: { thumb: 'w-3 h-3', translateOn: 'translate-x-3' },\r\n sm: { thumb: 'w-4 h-4', translateOn: 'translate-x-3' },\r\n md: { thumb: 'w-5 h-5', translateOn: 'translate-x-5' },\r\n lg: { thumb: 'w-6 h-6', translateOn: 'translate-x-7' },\r\n xl: { thumb: 'w-7 h-7', translateOn: 'translate-x-8' }\r\n };\r\n\r\n const config = sizeMap[this.size()];\r\n\r\n const base = [\r\n 'pointer-events-none inline-block rounded-full',\r\n 'bg-white shadow-md',\r\n 'transform transition-transform duration-200 ease-in-out'\r\n ];\r\n\r\n const translateClass = this.checked() ? config.translateOn : 'translate-x-0';\r\n\r\n return [...base, config.thumb, translateClass].join(' ');\r\n });\r\n\r\n // CVA\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.checked.set(!!value);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n toggle(): void {\r\n if (this.isDisabled()) return;\r\n const newValue = !this.checked();\r\n this.checked.set(newValue);\r\n this.onChange(newValue);\r\n this.onTouched();\r\n }\r\n}\r\n","<div\n class=\"inline-flex items-center gap-3 select-none\"\n [class.opacity-50]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-label]=\"switchAria().label\"\n [attr.aria-labelledby]=\"switchAria().labelledBy\"\n [disabled]=\"isDisabled()\"\n [class]=\"trackClasses()\"\n (click)=\"toggle()\">\n <span [class]=\"thumbClasses()\" aria-hidden=\"true\"></span>\n </button>\n\n @if (label()) {\n <span [attr.id]=\"id() ? id() + '-label' : null\" class=\"text-sm font-medium text-surface-800\">{{ label() }}</span>\n }\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-badge',\r\n templateUrl: './badge.component.html',\r\n styleUrl: './badge.component.css'\r\n})\r\nexport class TailwindBadge extends TailwindComponent {\r\n /** Color variant */\r\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('primary');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Show a dot indicator */\r\n readonly dot = input<boolean>(false);\r\n /** Shape variant */\r\n readonly rounded = input<boolean>(false);\r\n /** Accessible label */\r\n readonly ariaLabel = input<string>('');\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = ['inline-flex items-center gap-1 font-medium', 'leading-none'];\r\n\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-100 text-primary-700',\r\n neutral: 'bg-surface-100 text-surface-700',\r\n success: 'bg-success-100 text-success-700',\r\n warning: 'bg-warning-100 text-warning-800',\r\n danger: 'bg-danger-100 text-danger-700',\r\n info: 'bg-info-100 text-info-700'\r\n };\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-[10px] px-1.5 py-0.5',\r\n sm: 'text-xs px-2 py-0.5',\r\n md: 'text-xs px-2.5 py-1',\r\n lg: 'text-sm px-3 py-1',\r\n xl: 'text-sm px-3.5 py-1.5'\r\n };\r\n\r\n const shape = this.rounded() ? 'rounded-full' : 'rounded-md';\r\n\r\n return [...base, variantMap[this.variant()] ?? variantMap['primary'], sizeMap[this.size()], shape].join(' ');\r\n });\r\n}\r\n","<span [class]=\"computedClasses()\" [attr.aria-label]=\"ariaLabel()\">\n @if (dot()) {\n <span class=\"w-1.5 h-1.5 rounded-full bg-current\"></span>\n }\n <ng-content />\n</span>\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, computed, input } from '@angular/core';\r\nimport type { TailwindHeroicon, TailwindTitleTag } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindIcon } from '../icon/icon.component';\r\n\r\n@Component({\r\n selector: 'tailwind-title',\r\n imports: [NgTemplateOutlet, TailwindIcon],\r\n templateUrl: './title.component.html',\r\n styleUrl: './title.component.css'\r\n})\r\nexport class TailwindTitle extends TailwindComponent {\r\n /** Visible title text */\r\n readonly text = input.required<string>();\r\n\r\n /** Optional Heroicons outline icon name (shown before `text`) */\r\n readonly icon = input<TailwindHeroicon | undefined>();\r\n\r\n /** HTML heading element */\r\n readonly titleTag = input<TailwindTitleTag>('h2');\r\n\r\n readonly headingClasses = computed(() => {\r\n const tag = this.titleTag();\r\n const scale: Record<TailwindTitleTag, string> = {\r\n h1: 'text-3xl font-bold tracking-tight text-surface-900',\r\n h2: 'text-2xl font-semibold tracking-tight text-surface-900',\r\n h3: 'text-xl font-semibold tracking-tight text-surface-900',\r\n h4: 'text-lg font-normal text-surface-900',\r\n h5: 'text-base font-normal text-surface-900',\r\n h6: 'text-sm font-normal text-surface-800 uppercase tracking-wide'\r\n };\r\n const layout = 'inline-flex items-center gap-2 min-w-0';\r\n const extra = this.class();\r\n const base = `${scale[tag]} ${layout}`.trim();\r\n return extra ? `${base} ${extra}`.trim() : base;\r\n });\r\n\r\n readonly iconSize = computed(() => {\r\n const tag = this.titleTag();\r\n const size: Record<TailwindTitleTag, number> = {\r\n h1: 32,\r\n h2: 24,\r\n h3: 20,\r\n h4: 18,\r\n h5: 16,\r\n h6: 14\r\n };\r\n return size[tag];\r\n });\r\n}\r\n","@switch (titleTag()) {\r\n @case ('h1') {\r\n <h1 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h1>\r\n }\r\n @case ('h2') {\r\n <h2 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h2>\r\n }\r\n @case ('h3') {\r\n <h3 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h3>\r\n }\r\n @case ('h4') {\r\n <h4 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h4>\r\n }\r\n @case ('h5') {\r\n <h5 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h5>\r\n }\r\n @case ('h6') {\r\n <h6 [class]=\"headingClasses()\">\r\n <ng-container [ngTemplateOutlet]=\"titleBody\" />\r\n </h6>\r\n }\r\n}\r\n\r\n<ng-template #titleBody>\r\n @if (icon()) {\r\n <tailwind-icon [icon]=\"icon()!\" [size]=\"iconSize()\" />\r\n }\r\n <span class=\"min-w-0\">{{ text() }}</span>\r\n</ng-template>\r\n","import { Component, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-card',\r\n templateUrl: './card.component.html',\r\n styleUrl: './card.component.css'\r\n})\r\nexport class TailwindCard extends TailwindComponent {\r\n /** Whether the card has elevated shadow */\r\n readonly elevated = input<boolean>(false);\r\n /** Whether to show hover shadow effect */\r\n readonly hoverable = input<boolean>(false);\r\n /** Whether to show header background */\r\n readonly headerBg = input<boolean>(false);\r\n /** Whether the card has a header */\r\n readonly hasHeader = input<boolean>(true);\r\n /** Whether the card has a footer */\r\n readonly hasFooter = input<boolean>(true);\r\n}\r\n","<div\n class=\"bg-white rounded-xl border border-surface-200 overflow-hidden transition-shadow duration-200\"\n [class.shadow-sm]=\"!elevated()\"\n [class.shadow-lg]=\"elevated()\"\n [class.hover:shadow-md]=\"hoverable() && !elevated()\"\n [class.hover:shadow-xl]=\"hoverable() && elevated()\">\n @if (hasHeader()) {\n <!-- Header slot (always rendered; only visible when content is projected) -->\n <div class=\"px-6 pt-4 pb-2 border-b border-surface-100\" [class.bg-surface-50]=\"headerBg()\">\n <ng-content select=\"[tailwind-card-header]\" />\n </div>\n }\n\n <!-- Image slot -->\n <ng-content select=\"[tailwind-card-image]\" />\n\n <!-- Body -->\n <div class=\"p-6\">\n <ng-content />\n </div>\n\n @if (hasFooter()) {\n <!-- Footer slot -->\n <div class=\"px-6 py-4 border-t border-surface-100 bg-surface-50/50\">\n <ng-content select=\"[tailwind-card-footer]\" />\n </div>\n }\n</div>\n","import { Component, computed, input, output, signal } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-alert',\r\n templateUrl: './alert.component.html',\r\n styleUrl: './alert.component.css'\r\n})\r\nexport class TailwindAlert extends TailwindComponent {\r\n /** Severity / color variant */\r\n readonly severity = input<TailwindSeverity>('info');\r\n /** Alert title */\r\n readonly title = input<string>('');\r\n /** Whether the alert can be dismissed */\r\n readonly dismissible = input<boolean>(false);\r\n /** Whether to show a border on the left */\r\n readonly bordered = input<boolean>(true);\r\n\r\n /** Emitted when the alert is dismissed */\r\n readonly onDismiss = output<void>();\r\n\r\n /** Internal dismissed state */\r\n readonly dismissed = signal(false);\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = 'flex gap-3 p-4 rounded-lg';\r\n\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 text-success-800 border-success-200',\r\n warning: 'bg-warning-50 text-warning-800 border-warning-200',\r\n danger: 'bg-danger-50 text-danger-800 border-danger-200',\r\n info: 'bg-info-50 text-info-800 border-info-200'\r\n };\r\n\r\n const borderClass = this.bordered() ? 'border-l-4' : 'border';\r\n\r\n return `${base} ${variantMap[this.severity()]} ${borderClass}`;\r\n });\r\n\r\n dismiss(): void {\r\n this.dismissed.set(true);\r\n this.onDismiss.emit();\r\n }\r\n}\r\n","@if (!dismissed()) {\r\n <div [class]=\"computedClasses()\" role=\"alert\" [attr.aria-live]=\"severity() === 'danger' ? 'assertive' : 'polite'\">\r\n <!-- Icon -->\r\n <div class=\"shrink-0 mt-0.5\">\r\n @switch (severity()) {\r\n @case ('success') {\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n }\r\n @case ('warning') {\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 6a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 6zm0 9a1 1 0 100-2 1 1 0 000 2z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n }\r\n @case ('danger') {\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n }\r\n @case ('info') {\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Content -->\r\n <div class=\"flex-1 min-w-0\">\r\n @if (title()) {\r\n <h3 class=\"text-sm font-semibold mb-0.5\">{{ title() }}</h3>\r\n }\r\n <div class=\"text-sm\">\r\n <ng-content />\r\n </div>\r\n </div>\r\n\r\n <!-- Dismiss button -->\r\n @if (dismissible()) {\r\n <button\r\n type=\"button\"\r\n class=\"shrink-0 -m-1 p-1 rounded-md opacity-70 hover:opacity-100 transition-opacity focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 cursor-pointer\"\r\n [attr.aria-label]=\"'Dismiss alert'\"\r\n (click)=\"dismiss()\">\r\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n}\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindColor, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrl: './spinner.component.css'\r\n})\r\nexport class TailwindSpinner extends TailwindComponent {\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Color uses Tailwind text color class */\r\n readonly color = input<TailwindColor>('primary');\r\n /** Optional label text */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('Loading');\r\n /** Layout orientation */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n\r\n readonly containerClasses = computed(() => {\r\n const base = 'inline-flex items-center gap-2';\r\n const orient = this.orientation() === 'vertical' ? 'flex-col' : '';\r\n return `${base} ${orient}`;\r\n });\r\n\r\n readonly spinnerClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3 h-3',\r\n sm: 'w-4 h-4',\r\n md: 'w-6 h-6',\r\n lg: 'w-8 h-8',\r\n xl: 'w-12 h-12'\r\n };\r\n\r\n const colorMap: Record<TailwindColor, string> = {\r\n primary: 'text-primary-600',\r\n secondary: 'text-secondary-600',\r\n success: 'text-success-600',\r\n warning: 'text-warning-600',\r\n danger: 'text-danger-600',\r\n info: 'text-info-600'\r\n };\r\n\r\n return `tailwind-spinner-svg ${sizeMap[this.size()]} ${colorMap[this.color()]}`;\r\n });\r\n\r\n readonly labelClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs',\r\n sm: 'text-xs',\r\n md: 'text-sm',\r\n lg: 'text-base',\r\n xl: 'text-lg'\r\n };\r\n\r\n return `${sizeMap[this.size()]} ${this.color()} font-medium`;\r\n });\r\n}\r\n","<div [class]=\"containerClasses()\" role=\"status\" [attr.aria-label]=\"ariaLabel()\">\n <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-20\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-80\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n\n @if (label()) {\n <span [class]=\"labelClasses()\">{{ label() }}</span>\n }\n</div>\n","import { Component, computed, effect, ElementRef, input, output, signal, viewChild } from '@angular/core';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.css'\r\n})\r\nexport class TailwindModal extends TailwindComponent {\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether to show close button in header */\r\n readonly showCloseButton = input<boolean>(true);\r\n /** Whether clicking backdrop closes the modal */\r\n readonly closeOnBackdrop = input<boolean>(true);\r\n /** Whether pressing Escape closes the modal */\r\n readonly closeOnEscape = input<boolean>(true);\r\n\r\n /** Open/close state */\r\n readonly isOpen = signal(false);\r\n /** Visibility for animation */\r\n readonly isVisible = signal(false);\r\n\r\n /** Emitted when the modal is fully closed (after exit animation) */\r\n readonly onClose = output<void>();\r\n\r\n private readonly modalPanel = viewChild<ElementRef>('modalPanel');\r\n\r\n readonly panelClasses = computed(() => {\r\n const base = ['relative bg-white rounded-xl shadow-2xl', 'w-full transform transition-all duration-200'];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'max-w-sm',\r\n sm: 'max-w-md',\r\n md: 'max-w-lg',\r\n lg: 'max-w-2xl',\r\n xl: 'max-w-4xl'\r\n };\r\n\r\n const animation = this.isVisible() ? 'opacity-100 scale-100' : 'opacity-0 scale-95';\r\n\r\n return [...base, sizeMap[this.size()], animation].join(' ');\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.isOpen()) {\r\n requestAnimationFrame(() => {\r\n this.isVisible.set(true);\r\n this.modalPanel()?.nativeElement?.focus();\r\n });\r\n }\r\n });\r\n }\r\n\r\n /** Open the modal */\r\n open(): void {\r\n this.isOpen.set(true);\r\n }\r\n\r\n /** Close the modal (plays exit animation then emits onClose) */\r\n close(): void {\r\n this.isVisible.set(false);\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.onClose.emit();\r\n }, 200);\r\n }\r\n}\r\n","@if (isOpen()) {\r\n <!-- Backdrop -->\r\n <div\r\n class=\"fixed inset-0 bg-black/50 backdrop-blur-sm z-1040 transition-opacity duration-200\"\r\n [class.opacity-100]=\"isVisible()\"\r\n [class.opacity-0]=\"!isVisible()\"\r\n (click)=\"closeOnBackdrop() && close()\"\r\n aria-hidden=\"true\"></div>\r\n\r\n <!-- Modal -->\r\n <div\r\n role=\"dialog\"\r\n class=\"fixed inset-0 z-1050 overflow-y-auto\"\r\n [attr.aria-modal]=\"true\"\r\n (keydown.escape)=\"closeOnEscape() && close()\">\r\n <div class=\"flex min-h-full items-center justify-center p-4\">\r\n <div #modalPanel [class]=\"panelClasses()\" tabindex=\"-1\">\r\n <!-- Header -->\r\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-surface-200\">\r\n <h2 class=\"text-lg font-semibold text-surface-900 pr-2\">\r\n <ng-content />\r\n </h2>\r\n @if (showCloseButton()) {\r\n <button\r\n type=\"button\"\r\n class=\"p-1.5 -m-1.5 shrink-0 rounded-lg text-surface-400 hover:text-surface-600 hover:bg-surface-100 transition-colors cursor-pointer\"\r\n aria-label=\"Close\"\r\n (click)=\"close()\">\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"px-6 py-5\">\r\n <ng-content select=\"[tailwind-modal-content]\" />\r\n </div>\r\n\r\n <!-- Footer -->\r\n <div class=\"border-t border-surface-200 px-6 py-4\">\r\n <ng-content select=\"[tailwind-modal-footer]\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { Component, input, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrl: './tab.component.css'\r\n})\r\nexport class TailwindTab extends TailwindComponent {\r\n /** Tab label */\r\n readonly label = input.required<string>();\r\n /** Tab icon (optional, CSS class or content) */\r\n readonly icon = input<string>('');\r\n /** Whether the tab is disabled */\r\n readonly disabled = input<boolean>(false);\r\n /** Whether this tab is the currently active one (set by parent) */\r\n readonly isActive = signal(false);\r\n}\r\n","@if (isActive()) {\n <div role=\"tabpanel\" [attr.aria-labelledby]=\"id() ? 'tab-' + id() : null\">\n <ng-content />\n </div>\n}\n","import { Component, contentChildren, input, model, effect } from '@angular/core';\r\nimport { TailwindTab } from './tab.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tab-group',\r\n templateUrl: './tab-group.component.html',\r\n styleUrl: './tab-group.component.css'\r\n})\r\nexport class TailwindTabGroup extends TailwindComponent {\r\n /** Accessible label for the tab list */\r\n readonly ariaLabel = input<string>('');\r\n /** Whether tabs can scroll horizontally */\r\n readonly scrollable = input<boolean>(false);\r\n\r\n /** Currently active tab index (two-way) */\r\n readonly activeIndex = model<number>(0);\r\n\r\n /** Query all child TailwindTab components */\r\n readonly tabs = contentChildren(TailwindTab);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const allTabs = this.tabs();\r\n const idx = this.activeIndex();\r\n allTabs.forEach((tab, i) => tab.isActive.set(i === idx));\r\n });\r\n }\r\n\r\n selectTab(index: number): void {\r\n this.activeIndex.set(index);\r\n }\r\n}\r\n","<!-- Tab Headers -->\n<div class=\"border-b border-surface-200\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\">\n <nav class=\"flex -mb-px gap-1\" [class.overflow-x-auto]=\"scrollable()\">\n @for (tab of tabs(); track $index; let i = $index) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.id]=\"tab.id() ? 'tab-' + tab.id() : null\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-controls]=\"tab.id() ? tab.id() : null\"\n [disabled]=\"tab.disabled()\"\n class=\"group relative px-4 py-2.5 text-sm font-medium whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 focus-visible:rounded-t-lg\"\n [class.text-primary-600]=\"activeIndex() === i\"\n [class.text-surface-500]=\"activeIndex() !== i\"\n [class.hover:text-surface-700]=\"activeIndex() !== i && !tab.disabled()\"\n [class.opacity-50]=\"tab.disabled()\"\n [class.cursor-not-allowed]=\"tab.disabled()\"\n (click)=\"!tab.disabled() && selectTab(i)\">\n {{ tab.label() }}\n <!-- Active indicator -->\n <span\n class=\"absolute bottom-0 left-0 right-0 h-0.5 rounded-full transition-all duration-200\"\n [class.bg-primary-600]=\"activeIndex() === i\"\n [class.scale-x-100]=\"activeIndex() === i\"\n [class.scale-x-0]=\"activeIndex() !== i\"></span>\n </button>\n }\n </nav>\n</div>\n\n<!-- Tab Content -->\n<div class=\"pt-4\">\n <ng-content />\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrl: './progress-bar.component.css'\r\n})\r\nexport class TailwindProgressBar extends TailwindComponent {\r\n /** Current value (0-100) */\r\n readonly value = input<number>(0);\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Show the label row */\r\n readonly showLabel = input<boolean>(true);\r\n /** Show percentage value */\r\n readonly showValue = input<boolean>(true);\r\n /** Color variant */\r\n readonly variant = input<TailwindSeverity | 'primary'>('primary');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Indeterminate mode (animated) */\r\n readonly indeterminate = input<boolean>(false);\r\n /** Whether to use striped pattern */\r\n readonly striped = input<boolean>(false);\r\n\r\n readonly clampedValue = computed(() => Math.max(0, Math.min(100, this.value())));\r\n\r\n readonly trackClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'h-1',\r\n sm: 'h-1.5',\r\n md: 'h-2.5',\r\n lg: 'h-4',\r\n xl: 'h-5'\r\n };\r\n\r\n return `w-full bg-surface-200 rounded-full overflow-hidden ${sizeMap[this.size()]}`;\r\n });\r\n\r\n readonly barClasses = computed(() => {\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-600',\r\n success: 'bg-success-600',\r\n warning: 'bg-warning-500',\r\n danger: 'bg-danger-600',\r\n info: 'bg-info-600'\r\n };\r\n\r\n const base = [\r\n 'h-full rounded-full transition-all duration-300 ease-out',\r\n variantMap[this.variant()] ?? variantMap['primary']\r\n ];\r\n\r\n if (this.indeterminate()) {\r\n base.push('tailwind-progress-indeterminate');\r\n }\r\n\r\n if (this.striped()) {\r\n base.push('bg-gradient-to-r from-transparent via-white/20 to-transparent bg-[length:1rem_100%]');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n}\r\n","<div class=\"w-full\">\n @if (showLabel()) {\n <div class=\"flex justify-between items-center mb-1.5\">\n @if (label()) {\n <span class=\"text-sm font-medium text-surface-700\">{{ label() }}</span>\n }\n @if (showValue()) {\n <span class=\"text-sm font-medium text-surface-600\">{{ clampedValue() }}%</span>\n }\n </div>\n }\n\n <div\n [class]=\"trackClasses()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"clampedValue()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-label]=\"label() || 'Progress'\">\n <div [class]=\"barClasses()\" [style.width.%]=\"indeterminate() ? 100 : clampedValue()\"></div>\n </div>\n</div>\n","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n OnDestroy,\r\n OnInit,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindMenuItem } from '../../models';\r\n\r\n/** Matches previous `min-w-48` floor when the anchor is narrower. */\r\nconst MIN_PANEL_WIDTH_PX = 192;\r\n\r\n@Component({\r\n selector: 'tailwind-menu',\r\n templateUrl: './menu.component.html',\r\n styleUrl: './menu.component.css'\r\n})\r\nexport class TailwindMenu extends TailwindComponent implements OnDestroy, OnInit {\r\n private openScheduleId: ReturnType<typeof setTimeout> | undefined;\r\n private anchorEl: HTMLElement | null = null;\r\n\r\n private readonly onScrollReposition = (): void => {\r\n if (this.isOpen()) {\r\n this.updatePanelPosition();\r\n }\r\n };\r\n\r\n readonly items = input<TailwindMenuItem[]>([]);\r\n readonly align = input<'left' | 'right'>('left');\r\n\r\n readonly onSelect = output<TailwindMenuItem>();\r\n\r\n readonly isOpen = signal(false);\r\n\r\n /** Popover box in coordinates relative to the `position: fixed` containing block (often viewport, not under transformed Docs wrappers). */\r\n readonly panelLayout = signal<{\r\n top: number;\r\n left?: number;\r\n right?: number;\r\n minWidth: number;\r\n } | null>(null);\r\n\r\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\r\n\r\n ngOnInit(): void {\r\n document.addEventListener('scroll', this.onScrollReposition, true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n document.removeEventListener('scroll', this.onScrollReposition, true);\r\n if (this.openScheduleId != null) {\r\n clearTimeout(this.openScheduleId);\r\n }\r\n }\r\n\r\n /**\r\n * Opens the menu under `anchor` (toggle element).\r\n * Pass the click event from the button, e.g. `(click)=\"menu.open($event)\"`, or an `HTMLElement`.\r\n * After the first open with an anchor, `open()` without arguments reuses the last anchor.\r\n *\r\n * Opening is deferred one macrotask so the same `click` is not closed immediately by `document:click`.\r\n */\r\n open(anchor?: Event | HTMLElement): void {\r\n if (anchor !== undefined) {\r\n this.storeAnchor(anchor);\r\n }\r\n if (!this.anchorEl) {\r\n return;\r\n }\r\n if (this.isOpen()) {\r\n return;\r\n }\r\n this.scheduleOpen();\r\n }\r\n\r\n close(): void {\r\n this.isOpen.set(false);\r\n this.panelLayout.set(null);\r\n }\r\n\r\n toggle(anchor?: Event | HTMLElement): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n if (anchor !== undefined) {\r\n this.storeAnchor(anchor);\r\n }\r\n if (!this.anchorEl) {\r\n return;\r\n }\r\n this.scheduleOpen();\r\n }\r\n\r\n private storeAnchor(anchor: Event | HTMLElement): void {\r\n if (anchor instanceof HTMLElement) {\r\n this.anchorEl = anchor;\r\n return;\r\n }\r\n const target = anchor.currentTarget;\r\n if (target instanceof HTMLElement) {\r\n this.anchorEl = target;\r\n }\r\n }\r\n\r\n private scheduleOpen(): void {\r\n if (this.openScheduleId != null) {\r\n clearTimeout(this.openScheduleId);\r\n }\r\n this.openScheduleId = setTimeout(() => {\r\n this.openScheduleId = undefined;\r\n this.isOpen.set(true);\r\n this.updatePanelPosition();\r\n requestAnimationFrame(() => this.updatePanelPosition());\r\n }, 0);\r\n }\r\n\r\n private updatePanelPosition(): void {\r\n const anchor = this.anchorEl;\r\n if (!anchor) {\r\n this.panelLayout.set(null);\r\n return;\r\n }\r\n const panelEl = this.panelRef()?.nativeElement;\r\n const cbRoot = panelEl\r\n ? this.getFixedPositioningContainingBlock(panelEl)\r\n : this.getFixedPositioningContainingBlock(anchor);\r\n const cbRect = cbRoot.getBoundingClientRect();\r\n const rect = anchor.getBoundingClientRect();\r\n const minWidth = Math.max(rect.width, MIN_PANEL_WIDTH_PX);\r\n const top = rect.bottom - cbRect.top;\r\n if (this.align() === 'right') {\r\n this.panelLayout.set({\r\n top,\r\n right: cbRect.right - rect.right,\r\n minWidth\r\n });\r\n } else {\r\n this.panelLayout.set({\r\n top,\r\n left: rect.left - cbRect.left,\r\n minWidth\r\n });\r\n }\r\n }\r\n\r\n selectItem(item: TailwindMenuItem): void {\r\n if (!item.disabled) {\r\n this.onSelect.emit(item);\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onDocumentEscape(): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n this.close();\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: Event): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n const target = event.target as Node | null;\r\n if (!target) {\r\n return;\r\n }\r\n const panelEl = this.panelRef()?.nativeElement;\r\n const inPanel = panelEl?.contains(target) ?? false;\r\n const inAnchor = this.anchorEl?.contains(target) ?? false;\r\n if (!inPanel && !inAnchor) {\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n if (this.isOpen()) {\r\n this.updatePanelPosition();\r\n }\r\n }\r\n\r\n /** Ancestor that becomes the containing block for `position: fixed` (e.g. Storybook Docs wrappers with `transform`). */\r\n private createsFixedContainingBlock(el: HTMLElement): boolean {\r\n const s = getComputedStyle(el);\r\n if (s.transform && s.transform !== 'none') {\r\n return true;\r\n }\r\n if (s.perspective && s.perspective !== 'none') {\r\n return true;\r\n }\r\n if (s.filter && s.filter !== 'none') {\r\n return true;\r\n }\r\n const contain = s.contain;\r\n if (contain && contain !== 'none' && contain.split(/\\s+/).includes('paint')) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private getFixedPositioningContainingBlock(from: HTMLElement): HTMLElement {\r\n for (let p = from.parentElement; p; p = p.parentElement) {\r\n if (this.createsFixedContainingBlock(p)) {\r\n return p;\r\n }\r\n }\r\n return document.documentElement;\r\n }\r\n}\r\n","@if (isOpen() && panelLayout(); as layout) {\n <div\n #panel\n role=\"menu\"\n class=\"fixed z-1000 bg-white rounded-xl border border-surface-200 shadow-lg py-1 animate-in fade-in slide-in-from-top-1\"\n [style.top.px]=\"layout.top\"\n [style.left.px]=\"layout.left ?? null\"\n [style.right.px]=\"layout.right ?? null\"\n [style.minWidth.px]=\"layout.minWidth\">\n @for (item of items(); track $index) {\n @if (item.divider) {\n <hr class=\"my-1 border-surface-100\" />\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [disabled]=\"!!item.disabled\"\n class=\"w-full text-left px-4 py-2 text-sm text-surface-700 hover:bg-surface-50 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer\"\n (click)=\"selectItem(item)\">\n {{ item.label }}\n </button>\n }\n }\n </div>\n}\n","import { Component, computed, input, output, signal } from '@angular/core';\r\nimport { TailwindPosition } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-drawer',\r\n templateUrl: './drawer.component.html',\r\n styleUrl: './drawer.component.css'\r\n})\r\nexport class TailwindDrawer extends TailwindComponent {\r\n /** Drawer title */\r\n readonly title = input<string>('');\r\n /** Position (left or right) */\r\n readonly position = input<'left' | 'right'>('right');\r\n /** Width class */\r\n readonly width = input<string>('max-w-md');\r\n /** Whether clicking backdrop closes */\r\n readonly closeOnBackdrop = input<boolean>(true);\r\n\r\n /** Open/close state */\r\n readonly isOpen = signal(false);\r\n /** Visibility for animation */\r\n readonly isVisible = signal(false);\r\n\r\n /** Emitted when closed */\r\n readonly onClose = output<void>();\r\n\r\n readonly panelClasses = computed(() => {\r\n const base = [\r\n 'fixed top-0 bottom-0 z-[1050]',\r\n 'flex flex-col w-full bg-white shadow-2xl',\r\n 'transition-transform duration-300 ease-in-out',\r\n this.width()\r\n ];\r\n\r\n const pos = this.position();\r\n\r\n if (pos === 'right') {\r\n base.push('right-0');\r\n base.push(this.isVisible() ? 'translate-x-0' : 'translate-x-full');\r\n } else {\r\n base.push('left-0');\r\n base.push(this.isVisible() ? 'translate-x-0' : '-translate-x-full');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n\r\n open(): void {\r\n this.isOpen.set(true);\r\n requestAnimationFrame(() => {\r\n this.isVisible.set(true);\r\n });\r\n }\r\n\r\n close(): void {\r\n this.isVisible.set(false);\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.onClose.emit();\r\n }, 300);\r\n }\r\n}\r\n","@if (isOpen()) {\n <!-- Backdrop -->\n <div\n class=\"fixed inset-0 bg-black/40 backdrop-blur-sm z-1040 transition-opacity duration-300\"\n [class.opacity-100]=\"isVisible()\"\n [class.opacity-0]=\"!isVisible()\"\n (click)=\"closeOnBackdrop() && close()\"\n aria-hidden=\"true\"></div>\n\n <!-- Drawer Panel -->\n <div [class]=\"panelClasses()\" role=\"dialog\" [attr.aria-modal]=\"true\" [attr.aria-label]=\"title()\">\n <!-- Header -->\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-surface-200\">\n @if (title()) {\n <h2 class=\"text-lg font-semibold text-surface-900\">{{ title() }}</h2>\n }\n <button\n type=\"button\"\n class=\"p-1.5 -m-1.5 rounded-lg text-surface-400 hover:text-surface-600 hover:bg-surface-100 transition-colors ml-auto cursor-pointer\"\n aria-label=\"Close\"\n (click)=\"close()\">\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"flex-1 overflow-y-auto px-6 py-5\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n <ng-content select=\"[tailwind-drawer-footer]\" />\n </div>\n}\n","import { Component, input } from '@angular/core';\r\nimport { TailwindBreadcrumbItem } from './interfaces/breadcrumb-item.interface';\r\nimport { TailwindIcon } from '../icon/icon.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { RouterLink } from '@angular/router';\r\n\r\nexport type { TailwindBreadcrumbItem };\r\n\r\n@Component({\r\n imports: [RouterLink, TailwindIcon],\r\n selector: 'tailwind-breadcrumb',\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.css'\r\n})\r\nexport class TailwindBreadcrumb extends TailwindComponent {\r\n readonly items = input<TailwindBreadcrumbItem[]>([]);\r\n readonly separator = input<string>('>');\r\n readonly ariaLabel = input<string>('Breadcrumb');\r\n}\r\n","<nav [attr.aria-label]=\"ariaLabel()\" class=\"flex\">\r\n <ol class=\"inline-flex items-center text-sm\">\r\n @for (item of items(); track item.label; let last = $last; let first = $first) {\r\n <li class=\"inline-flex items-center\">\r\n @if (!first) {\r\n <span class=\"mx-2 text-surface-400\" aria-hidden=\"true\">\r\n {{ separator() }}\r\n </span>\r\n }\r\n @if (item.link && !last) {\r\n <a\r\n [routerLink]=\"item.link\"\r\n class=\"inline-flex items-center gap-1 text-surface-500 hover:text-primary-600 transition-colors font-medium\">\r\n @if (item.icon) {\r\n <tailwind-icon [icon]=\"item.icon\" [size]=\"16\" />\r\n }\r\n {{ item.label }}\r\n </a>\r\n } @else {\r\n <span\r\n class=\"inline-flex items-center gap-1 font-medium\"\r\n [class.text-surface-900]=\"last\"\r\n [class.text-surface-500]=\"!last\"\r\n [attr.aria-current]=\"last ? 'page' : null\">\r\n @if (item.icon) {\r\n <tailwind-icon [icon]=\"item.icon\" [size]=\"16\" />\r\n }\r\n {{ item.label }}\r\n </span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n</nav>\r\n","import { Component, computed, inject, input, model, output } from '@angular/core';\r\nimport { TAILWIND_PAGINATION_SUMMARY } from '../../tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { Pagination } from './interfaces/pagination.interface';\r\nexport type { Pagination };\r\n\r\n@Component({\r\n selector: 'tailwind-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrl: './pagination.component.css'\r\n})\r\nexport class TailwindPagination extends TailwindComponent {\r\n private readonly tailwindPaginationSummary = inject(TAILWIND_PAGINATION_SUMMARY, { optional: true });\r\n\r\n readonly totalItems = input.required<Pagination['totalItems']>();\r\n readonly pageSize = input<Pagination['pageSize']>(10);\r\n readonly currentPage = model<Pagination['currentPage']>(1);\r\n readonly ariaLabel = input<Pagination['ariaLabel']>('Pagination');\r\n /** Placeholders `{start}`, `{end}`, `{total}`; default from `TAILWIND_PAGINATION_SUMMARY` or English copy. */\r\n readonly summary = input<Pagination['summary']>(this.tailwindPaginationSummary ?? 'Showing {start}-{end} of {total}');\r\n\r\n readonly onPageChange = output<number>();\r\n\r\n readonly totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\r\n\r\n readonly visiblePages = computed(() => {\r\n const total = this.totalPages();\r\n return Array.from({ length: total }, (_, i) => i + 1);\r\n });\r\n\r\n readonly summaryText = computed(() => {\r\n const total = this.totalItems();\r\n if (total === 0) return this.summary().replace('{start}', '0').replace('{end}', '0').replace('{total}', '0');\r\n const start = (this.currentPage() - 1) * this.pageSize() + 1;\r\n const end = Math.min(this.currentPage() * this.pageSize(), total);\r\n return this.summary()\r\n .replace('{start}', start.toString())\r\n .replace('{end}', end.toString())\r\n .replace('{total}', total.toString());\r\n });\r\n\r\n goToPage(page: number): void {\r\n if (page >= 1 && page <= this.totalPages()) {\r\n this.currentPage.set(page);\r\n this.onPageChange.emit(page);\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-wrap items-center justify-between gap-4 w-full\">\n @if (summary()) {\n <span class=\"text-sm text-surface-700 dark:text-surface-300\">\n {{ summaryText() }}\n </span>\n }\n\n <nav [attr.aria-label]=\"ariaLabel()\" class=\"flex items-center gap-1\">\n <!-- Previous -->\n <button\n type=\"button\"\n [disabled]=\"currentPage() <= 1\"\n (click)=\"goToPage(currentPage() - 1)\"\n class=\"p-2 rounded-lg text-surface-500 hover:bg-surface-100 disabled:opacity-40 disabled:cursor-not-allowed transition-colors cursor-pointer\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n\n @for (page of visiblePages(); track page) {\n <button\n type=\"button\"\n (click)=\"goToPage(page)\"\n class=\"min-w-8 h-8 px-2 rounded-lg text-sm font-medium transition-colors cursor-pointer\"\n [class.bg-primary-600]=\"page === currentPage()\"\n [class.text-white]=\"page === currentPage()\"\n [class.text-surface-600]=\"page !== currentPage()\"\n [class.hover:bg-surface-100]=\"page !== currentPage()\">\n {{ page }}\n </button>\n }\n\n <!-- Next -->\n <button\n type=\"button\"\n [disabled]=\"currentPage() >= totalPages()\"\n (click)=\"goToPage(currentPage() + 1)\"\n class=\"p-2 rounded-lg text-surface-500 hover:bg-surface-100 disabled:opacity-40 disabled:cursor-not-allowed transition-colors cursor-pointer\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </nav>\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tag',\r\n templateUrl: './tag.component.html',\r\n styleUrl: './tag.component.css'\r\n})\r\nexport class TailwindTag extends TailwindComponent {\r\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('neutral');\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-600 text-white',\r\n neutral: 'bg-surface-600 text-white',\r\n success: 'bg-success-600 text-white',\r\n warning: 'bg-warning-500 text-surface-900',\r\n danger: 'bg-danger-600 text-white',\r\n info: 'bg-info-600 text-white'\r\n };\r\n return `inline-flex items-center text-[11px] font-semibold uppercase tracking-wider px-2 py-0.5 rounded ${variantMap[this.variant()]}`;\r\n });\r\n}\r\n","<span [class]=\"computedClasses()\"><ng-content /></span>\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, HostListener, computed, contentChild, effect, inject, input, output, signal } from '@angular/core';\r\nimport { Pagination, TailwindPagination } from '../pagination/pagination.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindTableSortHost } from './interfaces/tailwind-table-sort-host';\r\nimport { TailwindTableRowDirective } from '../../directives/table/tailwind-table-row.directive';\r\nimport { TAILWIND_PAGINATION_SUMMARY } from '../../tokens';\r\nexport type { TailwindTableSortHost };\r\n\r\n@Component({\r\n selector: 'tailwind-table',\r\n imports: [NgTemplateOutlet, TailwindPagination],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.css',\r\n host: {\r\n '[attr.data-tw-sort-key]': 'sortKey()',\r\n '[attr.data-tw-sort-dir]': 'sortDir()'\r\n }\r\n})\r\nexport class TailwindTable extends TailwindComponent implements TailwindTableSortHost {\r\n private readonly tailwindPaginationSummary = inject(TAILWIND_PAGINATION_SUMMARY, { optional: true });\r\n\r\n readonly data = input<any[]>([]);\r\n readonly selectable = input<boolean>(false);\r\n readonly striped = input<boolean>(false);\r\n readonly loading = input<boolean>(false);\r\n readonly emptyMessage = input<string>('No data available');\r\n /** Match your column count so the empty state spans the full table width. */\r\n readonly emptyColspan = input<number>(1);\r\n\r\n readonly paginated = input<boolean>(true);\r\n readonly pagination = input<Pagination>();\r\n readonly paginationSummary = computed(\r\n () => this.pagination()?.summary ?? this.tailwindPaginationSummary ?? 'Showing {start}-{end} of {total}'\r\n );\r\n\r\n readonly onSortChange = output<{ key: string; direction: 'asc' | 'desc' }>();\r\n readonly onSelectionChange = output<Set<number>>();\r\n\r\n readonly rowTemplate = contentChild.required(TailwindTableRowDirective);\r\n\r\n rowContext(row: Record<string, unknown>, index: number): Record<string, unknown> {\r\n return {\r\n $implicit: row,\r\n index,\r\n stripedRow: this.striped() && index % 2 === 1,\r\n selected: this.selectedRows().has(index),\r\n selectable: this.selectable(),\r\n toggleRow: () => {\r\n if (!this.selectable()) return;\r\n this.toggleSelection(index);\r\n }\r\n };\r\n }\r\n\r\n readonly sortKey = signal<string>('');\r\n readonly sortDir = signal<'asc' | 'desc'>('asc');\r\n readonly selectedRows = signal<Set<number>>(new Set());\r\n readonly currentPage = signal<number>(1);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const fromInput = this.pagination()?.currentPage;\r\n if (fromInput != null && fromInput >= 1) {\r\n this.currentPage.set(fromInput);\r\n }\r\n });\r\n }\r\n\r\n readonly sortedData = computed(() => {\r\n let rows = [...this.data()];\r\n const key = this.sortKey();\r\n if (key) {\r\n const dir = this.sortDir() === 'asc' ? 1 : -1;\r\n rows.sort((a, b) => {\r\n const va = a[key],\r\n vb = b[key];\r\n const sa = va == null ? '' : String(va);\r\n const sb = vb == null ? '' : String(vb);\r\n const cmp = sa.localeCompare(sb, undefined, { numeric: true, sensitivity: 'base' });\r\n return dir * cmp;\r\n });\r\n }\r\n return rows;\r\n });\r\n\r\n readonly displayedData = computed(() => {\r\n const rows = this.sortedData();\r\n if (!this.paginated()) return rows;\r\n const size = this.pagination()?.pageSize ?? 10;\r\n const page = this.currentPage();\r\n return rows.slice((page - 1) * size, page * size);\r\n });\r\n\r\n sort(key: string): void {\r\n if (this.sortKey() === key) {\r\n this.sortDir.update(d => (d === 'asc' ? 'desc' : 'asc'));\r\n } else {\r\n this.sortKey.set(key);\r\n this.sortDir.set('asc');\r\n }\r\n this.currentPage.set(1);\r\n this.onSortChange.emit({ key: this.sortKey(), direction: this.sortDir() });\r\n }\r\n\r\n toggleSelection(index: number): void {\r\n this.selectedRows.update(s => {\r\n const next = new Set(s);\r\n if (next.has(index)) next.delete(index);\r\n else next.add(index);\r\n return next;\r\n });\r\n this.onSelectionChange.emit(this.selectedRows());\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n protected onSortZoneClick(ev: Event): void {\r\n this.delegateSortFromEvent(ev);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n protected onSortZoneKeydown(ev: KeyboardEvent): void {\r\n if (ev.key !== 'Enter' && ev.key !== ' ') return;\r\n const target = ev.target as HTMLElement | null;\r\n if (!target?.closest?.('[tailwindSortHeader]')) return;\r\n if (ev.key === ' ') ev.preventDefault();\r\n this.delegateSortFromEvent(ev);\r\n }\r\n\r\n private delegateSortFromEvent(ev: Event): void {\r\n const host = ev.currentTarget as HTMLElement;\r\n const target = ev.target as HTMLElement | null;\r\n const header = target?.closest?.('[tailwindSortHeader]') as HTMLElement | null;\r\n if (!header || !host.contains(header)) return;\r\n if (header.closest('tailwind-table') !== host) return;\r\n const key = header.getAttribute('data-sort-key');\r\n if (key) this.sort(key);\r\n }\r\n}\r\n","<div class=\"w-full overflow-x-auto rounded-lg border border-surface-200\">\n @if (loading()) {\n <div class=\"flex items-center justify-center py-16 text-surface-400\">\n <svg class=\"animate-spin w-6 h-6 mr-2\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8z\" />\n </svg>\n Loading...\n </div>\n } @else {\n <!-- `table-fixed`: consente `w-*` / `min-w-*` / `max-w-*` sulle celle e sugli `th` proiettati. -->\n <table class=\"w-full min-w-0 table-fixed text-sm text-left divide-y divide-surface-100\">\n <ng-content select=\"thead\" />\n @for (row of displayedData(); track row; let i = $index) {\n <ng-container *ngTemplateOutlet=\"rowTemplate().templateRef; context: rowContext(row, i)\" />\n } @empty {\n <tbody>\n <tr>\n <td [attr.colspan]=\"emptyColspan()\">\n {{ emptyMessage() }}\n </td>\n </tr>\n </tbody>\n }\n </table>\n\n @if (paginated() && data().length > 0) {\n <div class=\"px-4 py-3 border-t border-surface-200 bg-white\">\n <tailwind-pagination\n [totalItems]=\"pagination()?.totalItems ?? data().length\"\n [pageSize]=\"pagination()?.pageSize ?? 10\"\n [currentPage]=\"currentPage()\"\n (onPageChange)=\"currentPage.set($event)\"\n [ariaLabel]=\"pagination()?.ariaLabel ?? 'Pagination'\"\n [summary]=\"paginationSummary()\">\n </tailwind-pagination>\n </div>\n }\n }\n</div>\n","import { Component, computed, ElementRef, forwardRef, HostListener, inject, input, model, signal } from '@angular/core';\r\nimport { formatDate } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\n\r\nconst I18N: Record<Lang, { months: string[]; weekDays: string[]; today: string; confirm: string; placeholder: string }> = {\r\n it: {\r\n months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],\r\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\r\n today: 'Oggi',\r\n confirm: 'Applica',\r\n placeholder: 'Seleziona data'\r\n },\r\n en: {\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n today: 'Today',\r\n confirm: 'Apply',\r\n placeholder: 'Select date'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-date-picker',\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDatePicker), multi: true }],\r\n templateUrl: './date-picker.component.html',\r\n styleUrl: './date-picker.component.css'\r\n})\r\nexport class TailwindDatePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly weekDays = this.i18n.weekDays;\r\n\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string | undefined>(undefined);\r\n readonly format = input<string>('dd/MM/yyyy');\r\n\r\n readonly value = model<Date | null>(null);\r\n /** Working selection while the panel is open; committed on Apply. */\r\n readonly draft = signal<Date | null>(null);\r\n\r\n readonly isDisabled = signal(false);\r\n readonly showCalendar = signal(false);\r\n readonly viewMonth = signal(new Date().getMonth());\r\n readonly viewYear = signal(new Date().getFullYear());\r\n\r\n readonly effectivePlaceholder = computed(() => {\r\n const p = this.placeholder();\r\n return p?.trim() ? p : this.i18n.placeholder;\r\n });\r\n\r\n readonly displayValue = computed(() => {\r\n const d = this.value();\r\n if (!d) return '';\r\n const fmt = this.format();\r\n try {\r\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\r\n } catch {\r\n return formatDate(d, fmt, 'en-US');\r\n }\r\n });\r\n\r\n readonly monthYearLabel = computed(() =>\r\n `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`\r\n );\r\n\r\n readonly calendarDays = computed(() => {\r\n const y = this.viewYear(), m = this.viewMonth();\r\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\r\n const total = new Date(y, m + 1, 0).getDate();\r\n const days: number[] = Array(offset).fill(0);\r\n for (let i = 1; i <= total; i++) days.push(i);\r\n return days;\r\n });\r\n\r\n private onChange: (v: Date | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: Date | null): void {\r\n this.value.set(v ?? null);\r\n if (v && !isNaN(v.getTime())) {\r\n this.viewMonth.set(v.getMonth());\r\n this.viewYear.set(v.getFullYear());\r\n }\r\n }\r\n\r\n registerOnChange(fn: (v: Date | null) => void): void { this.onChange = fn; }\r\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n setDisabledState(d: boolean): void { this.isDisabled.set(d); }\r\n\r\n toggleCalendar(): void {\r\n if (this.isDisabled()) return;\r\n if (!this.showCalendar()) {\r\n this.draft.set(this.value());\r\n const ref = this.value() ?? new Date();\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n this.showCalendar.update(v => !v);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n this.value.set(d);\r\n this.onChange(d);\r\n this.onTouched();\r\n this.showCalendar.set(false);\r\n }\r\n\r\n prevMonth(): void {\r\n if (this.viewMonth() === 0) { this.viewMonth.set(11); this.viewYear.update(y => y - 1); }\r\n else { this.viewMonth.update(m => m - 1); }\r\n }\r\n\r\n nextMonth(): void {\r\n if (this.viewMonth() === 11) { this.viewMonth.set(0); this.viewYear.update(y => y + 1); }\r\n else { this.viewMonth.update(m => m + 1); }\r\n }\r\n\r\n selectDay(day: number): void {\r\n this.draft.set(new Date(this.viewYear(), this.viewMonth(), day));\r\n }\r\n\r\n isSelected(day: number): boolean {\r\n const d = this.draft();\r\n if (!d) return false;\r\n return d.getFullYear() === this.viewYear() && d.getMonth() === this.viewMonth() && d.getDate() === day;\r\n }\r\n\r\n isToday(day: number): boolean {\r\n const t = new Date();\r\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\r\n }\r\n\r\n goToToday(): void {\r\n const t = new Date();\r\n this.viewMonth.set(t.getMonth());\r\n this.viewYear.set(t.getFullYear());\r\n this.selectDay(t.getDate());\r\n }\r\n\r\n @HostListener('document:pointerdown', ['$event'])\r\n onDocumentPointerDown(event: PointerEvent): void {\r\n if (!this.showCalendar()) return;\r\n const t = event.target;\r\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\r\n this.showCalendar.set(false);\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n onDocumentKeydown(event: KeyboardEvent): void {\r\n if (event.key !== 'Escape' || !this.showCalendar()) return;\r\n event.stopPropagation();\r\n this.showCalendar.set(false);\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggleCalendar()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z\"\n clip-rule=\"evenodd\" />\n </svg>\n </div>\n\n @if (showCalendar()) {\n <div class=\"absolute z-popover mt-1 bg-white rounded-xl border border-surface-200 shadow-xl p-4 w-72\">\n <!-- Month/Year nav -->\n <div class=\"flex items-center justify-between mb-3\">\n <button\n type=\"button\"\n (click)=\"prevMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n <span class=\"text-sm font-semibold text-surface-800\">{{ monthYearLabel() }}</span>\n <button\n type=\"button\"\n (click)=\"nextMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n <!-- Weekdays -->\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track $index) {\n <div class=\"text-center text-xs font-medium text-surface-400 py-1\">{{ day }}</div>\n }\n </div>\n <!-- Days -->\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-surface-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-surface-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToToday()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.today }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled() || !draft()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.confirm }}\n </button>\n </div>\n </div>\n }\n</div>\n","import { Component, computed, ElementRef, forwardRef, HostListener, inject, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\ntype TimeDraft = { h: number; m: number };\r\n\r\nconst I18N: Record<Lang, { placeholder: string; now: string; apply: string }> = {\r\n it: { placeholder: 'Seleziona ora', now: 'Adesso', apply: 'Applica' },\r\n en: { placeholder: 'Select time', now: 'Now', apply: 'Apply' }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-time-picker',\r\n imports: [],\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindTimePicker), multi: true }],\r\n templateUrl: './time-picker.component.html',\r\n styleUrl: './time-picker.component.css'\r\n})\r\nexport class TailwindTimePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\r\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\r\n\r\n readonly label = input<string>('');\r\n readonly value = model<string>('');\r\n readonly isDisabled = signal(false);\r\n readonly showPanel = signal(false);\r\n readonly draft = signal<TimeDraft | null>(null);\r\n\r\n readonly displayValue = computed(() => this.value());\r\n\r\n private onChange: (v: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: string): void {\r\n this.value.set(v ?? '');\r\n }\r\n registerOnChange(fn: (v: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(d: boolean): void {\r\n this.isDisabled.set(d);\r\n }\r\n\r\n togglePanel(): void {\r\n if (this.isDisabled()) return;\r\n const opening = !this.showPanel();\r\n if (opening) {\r\n const v = this.value();\r\n const parts = v ? v.split(':') : null;\r\n const now = new Date();\r\n this.draft.set({\r\n h: parts ? parseInt(parts[0], 10) || 0 : now.getHours(),\r\n m: parts ? parseInt(parts[1], 10) || 0 : now.getMinutes()\r\n });\r\n }\r\n this.showPanel.set(opening);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n if (!d) return;\r\n const val = `${d.h.toString().padStart(2, '0')}:${d.m.toString().padStart(2, '0')}`;\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n this.showPanel.set(false);\r\n }\r\n\r\n goToNow(): void {\r\n const now = new Date();\r\n this.draft.set({ h: now.getHours(), m: now.getMinutes() });\r\n }\r\n\r\n onHourChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n this.draft.set({ ...cur, h: Number((e.target as HTMLSelectElement).value) });\r\n }\r\n\r\n onMinuteChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n this.draft.set({ ...cur, m: Number((e.target as HTMLSelectElement).value) });\r\n }\r\n\r\n @HostListener('document:pointerdown', ['$event'])\r\n onDocumentPointerDown(event: PointerEvent): void {\r\n if (!this.showPanel()) return;\r\n const t = event.target;\r\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\r\n this.showPanel.set(false);\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n onDocumentKeydown(event: KeyboardEvent): void {\r\n if (event.key !== 'Escape' || !this.showPanel()) return;\r\n event.stopPropagation();\r\n this.showPanel.set(false);\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"i18n.placeholder\"\n [disabled]=\"isDisabled()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n (click)=\"togglePanel()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z\"\n clip-rule=\"evenodd\" />\n </svg>\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-52 rounded-xl border border-surface-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center gap-2\">\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.h ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-surface-400 text-sm shrink-0\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.m ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToNow()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.now }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.apply }}\n </button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { formatDate } from '@angular/common';\r\nimport { Component, computed, ElementRef, forwardRef, HostListener, inject, input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\n\r\nconst I18N: Record<Lang, { months: string[]; weekDays: string[]; time: string; today: string; confirm: string; placeholder: string }> = {\r\n it: {\r\n months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],\r\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\r\n time: 'Ora',\r\n today: 'Oggi',\r\n confirm: 'Applica',\r\n placeholder: 'Seleziona data e ora'\r\n },\r\n en: {\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n time: 'Time',\r\n today: 'Today',\r\n confirm: 'Apply',\r\n placeholder: 'Select date and time'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-datetime-picker',\r\n imports: [],\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDateTimePicker), multi: true }],\r\n templateUrl: './datetime-picker.component.html',\r\n styleUrl: './datetime-picker.component.css'\r\n})\r\nexport class TailwindDateTimePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly weekDays = this.i18n.weekDays;\r\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\r\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\r\n\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string | undefined>(undefined);\r\n /** Angular [DatePipe](https://angular.dev/api/common/DatePipe) format string. */\r\n readonly format = input<string>('dd/MM/yyyy HH:mm');\r\n\r\n readonly selected = signal<Date | null>(null);\r\n readonly draft = signal<Date | null>(null);\r\n readonly isDisabled = signal(false);\r\n readonly showPanel = signal(false);\r\n readonly viewMonth = signal(new Date().getMonth());\r\n readonly viewYear = signal(new Date().getFullYear());\r\n\r\n readonly effectivePlaceholder = computed(() => {\r\n const p = this.placeholder();\r\n return p?.trim() ? p : this.i18n.placeholder;\r\n });\r\n\r\n readonly displayValue = computed(() => {\r\n const d = this.selected();\r\n if (!d) return '';\r\n // formatDate richiede registerLocaleData per locale non-EN: leggiamo format fuori dal try\r\n // per non richiamare signal dentro il catch (contesto reattivo non garantito dopo un throw).\r\n // Per i formati numerici (default dd/MM/yyyy HH:mm) il risultato è identico in ogni locale.\r\n const fmt = this.format();\r\n try {\r\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\r\n } catch {\r\n return formatDate(d, fmt, 'en-US');\r\n }\r\n });\r\n\r\n readonly monthYearLabel = computed(() =>\r\n `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`\r\n );\r\n\r\n readonly calendarDays = computed(() => {\r\n const y = this.viewYear(), m = this.viewMonth();\r\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\r\n const total = new Date(y, m + 1, 0).getDate();\r\n const days: number[] = Array(offset).fill(0);\r\n for (let i = 1; i <= total; i++) days.push(i);\r\n return days;\r\n });\r\n\r\n private onChange: (v: Date | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: Date | null | undefined): void {\r\n const d = v ? new Date(v.getTime()) : null;\r\n this.selected.set(d);\r\n if (this.showPanel()) this.draft.set(d ? new Date(d.getTime()) : null);\r\n const ref = d ?? new Date();\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n\r\n registerOnChange(fn: (v: Date | null) => void): void { this.onChange = fn; }\r\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n setDisabledState(disabled: boolean): void { this.isDisabled.set(disabled); }\r\n\r\n togglePanel(): void {\r\n if (this.isDisabled()) return;\r\n const opening = !this.showPanel();\r\n if (opening) {\r\n const s = this.selected();\r\n const ref = s ? new Date(s.getTime()) : this.todayNow();\r\n this.draft.set(ref);\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n this.showPanel.set(opening);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n this.selected.set(d ? new Date(d.getTime()) : null);\r\n this.emitValue(this.selected());\r\n this.showPanel.set(false);\r\n }\r\n\r\n prevMonth(): void {\r\n if (this.viewMonth() === 0) { this.viewMonth.set(11); this.viewYear.update(y => y - 1); }\r\n else { this.viewMonth.update(m => m - 1); }\r\n }\r\n\r\n nextMonth(): void {\r\n if (this.viewMonth() === 11) { this.viewMonth.set(0); this.viewYear.update(y => y + 1); }\r\n else { this.viewMonth.update(m => m + 1); }\r\n }\r\n\r\n selectDay(day: number): void {\r\n const cur = this.draft();\r\n this.draft.set(new Date(this.viewYear(), this.viewMonth(), day, cur?.getHours() ?? 0, cur?.getMinutes() ?? 0, 0, 0));\r\n }\r\n\r\n isSelected(day: number): boolean {\r\n const v = this.draft();\r\n return !!v && v.getFullYear() === this.viewYear() && v.getMonth() === this.viewMonth() && v.getDate() === day;\r\n }\r\n\r\n isToday(day: number): boolean {\r\n const t = new Date();\r\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\r\n }\r\n\r\n goToToday(): void {\r\n const t = this.todayNow();\r\n this.viewMonth.set(t.getMonth());\r\n this.viewYear.set(t.getFullYear());\r\n this.draft.set(t);\r\n }\r\n\r\n onHourChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n const h = Number((e.target as HTMLSelectElement).value);\r\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), h, cur.getMinutes(), 0, 0));\r\n }\r\n\r\n onMinuteChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n const min = Number((e.target as HTMLSelectElement).value);\r\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), cur.getHours(), min, 0, 0));\r\n }\r\n\r\n private todayNow(): Date {\r\n const t = new Date();\r\n return new Date(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), 0, 0);\r\n }\r\n\r\n private emitValue(d: Date | null): void {\r\n this.onChange(d ? new Date(d.getTime()) : null);\r\n this.onTouched();\r\n }\r\n\r\n @HostListener('document:pointerdown', ['$event'])\r\n onDocumentPointerDown(event: PointerEvent): void {\r\n if (!this.showPanel()) return;\r\n const t = event.target;\r\n if (t instanceof Node && this.host.nativeElement.contains(t)) return;\r\n this.showPanel.set(false);\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n onDocumentKeydown(event: KeyboardEvent): void {\r\n if (event.key !== 'Escape' || !this.showPanel()) return;\r\n event.stopPropagation();\r\n this.showPanel.set(false);\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"togglePanel()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z\"\n clip-rule=\"evenodd\" />\n </svg>\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-80 max-w-full rounded-xl border border-surface-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center justify-between mb-3\">\n <button\n type=\"button\"\n (click)=\"prevMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n <span class=\"text-sm font-semibold text-surface-800\">{{ monthYearLabel() }}</span>\n <button\n type=\"button\"\n (click)=\"nextMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track day) {\n <div class=\"text-center text-xs font-medium text-surface-400 py-1\">{{ day }}</div>\n }\n </div>\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-surface-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-surface-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-3 pt-3 border-t border-surface-100 flex items-center gap-2\">\n <span class=\"text-xs font-medium text-surface-600 shrink-0\">{{ i18n.time }}</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.getHours() ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-surface-400 text-sm\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.getMinutes() ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToToday()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.today }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled() || !draft()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.confirm }}\n </button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { Component, input, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-step',\r\n templateUrl: './step.component.html',\r\n styleUrl: './step.component.css'\r\n})\r\nexport class TailwindStep extends TailwindComponent {\r\n readonly label = input.required<string>();\r\n readonly description = input<string>('');\r\n readonly optional = input<boolean>(false);\r\n readonly completed = signal(false);\r\n readonly isActive = signal(false);\r\n}\r\n","@if (isActive()) {\n <div class=\"py-4\"><ng-content /></div>\n}\n","import { Component, contentChildren, input, model, effect } from '@angular/core';\r\nimport { TailwindStep } from './step.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-stepper',\r\n templateUrl: './stepper.component.html',\r\n styleUrl: './stepper.component.css'\r\n})\r\nexport class TailwindStepper extends TailwindComponent {\r\n readonly activeIndex = model<number>(0);\r\n readonly linear = input<boolean>(false);\r\n\r\n readonly steps = contentChildren(TailwindStep);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const allSteps = this.steps();\r\n const idx = this.activeIndex();\r\n allSteps.forEach((s, i) => s.isActive.set(i === idx));\r\n });\r\n }\r\n\r\n goToStep(index: number): void {\r\n if (!this.linear() || index <= this.activeIndex()) {\r\n this.activeIndex.set(index);\r\n }\r\n }\r\n\r\n next(): void {\r\n const s = this.steps();\r\n if (this.activeIndex() < s.length - 1) {\r\n s[this.activeIndex()].completed.set(true);\r\n this.activeIndex.update(v => v + 1);\r\n }\r\n }\r\n\r\n previous(): void {\r\n if (this.activeIndex() > 0) this.activeIndex.update(v => v - 1);\r\n }\r\n}\r\n","<!-- Step indicators -->\n<div class=\"flex items-center mb-6\">\n @for (step of steps(); track step.label(); let i = $index; let last = $last) {\n <div class=\"flex items-center\" [class.flex-1]=\"!last\">\n <button\n type=\"button\"\n (click)=\"goToStep(i)\"\n class=\"flex items-center gap-2 cursor-pointer group\"\n [attr.aria-current]=\"activeIndex() === i ? 'step' : null\">\n <div\n class=\"w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold border-2 transition-all duration-200\"\n [class.bg-primary-600]=\"i <= activeIndex()\"\n [class.border-primary-600]=\"i <= activeIndex()\"\n [class.text-white]=\"i <= activeIndex()\"\n [class.border-surface-300]=\"i > activeIndex()\"\n [class.text-surface-500]=\"i > activeIndex()\">\n @if (step.completed()) {\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\"\n clip-rule=\"evenodd\" />\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"hidden sm:block\">\n <p\n class=\"text-sm font-medium\"\n [class.text-primary-600]=\"i <= activeIndex()\"\n [class.text-surface-500]=\"i > activeIndex()\">\n {{ step.label() }}\n </p>\n @if (step.description()) {\n <p class=\"text-xs text-surface-400\">{{ step.description() }}</p>\n }\n </div>\n </button>\n @if (!last) {\n <div\n class=\"flex-1 h-0.5 mx-3 rounded-full transition-colors duration-200\"\n [class.bg-primary-600]=\"i < activeIndex()\"\n [class.bg-surface-200]=\"i >= activeIndex()\"></div>\n }\n </div>\n }\n</div>\n<!-- Step content -->\n<ng-content />\n","import { Component, input, output, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'tailwind-accordion-item',\r\n templateUrl: './accordion-item.component.html',\r\n styleUrl: './accordion-item.component.css'\r\n})\r\nexport class TailwindAccordionItem extends TailwindComponent {\r\n readonly title = input.required<string>();\r\n readonly disabled = input<boolean>(false);\r\n readonly isExpanded = signal(false);\r\n\r\n readonly onToggle = output<void>();\r\n\r\n toggle(): void {\r\n if (!this.disabled()) {\r\n this.isExpanded.update(v => !v);\r\n this.onToggle.emit();\r\n }\r\n }\r\n}\r\n","<div [id]=\"id()\" [ngClass]=\"class()\" class=\"border-b border-surface-200 last:border-b-0\">\r\n <button\r\n type=\"button\"\r\n (click)=\"toggle()\"\r\n class=\"flex items-center justify-between w-full px-5 py-4 text-left text-sm font-medium text-surface-800 hover:bg-surface-50 transition-colors cursor-pointer\"\r\n [attr.aria-expanded]=\"isExpanded()\">\r\n <span>{{ title() }}</span>\r\n <svg\r\n class=\"w-4 h-4 text-surface-400 transition-transform duration-200\"\r\n [class.rotate-180]=\"isExpanded()\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n @if (isExpanded()) {\r\n <div class=\"px-5 py-4 text-sm text-surface-600\">\r\n <ng-content />\r\n </div>\r\n }\r\n</div>\r\n","import { Component, contentChildren } from '@angular/core';\r\nimport { TailwindAccordionItem } from './accordion-item.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'tailwind-accordion',\r\n templateUrl: './accordion.component.html',\r\n styleUrl: './accordion.component.css'\r\n})\r\nexport class TailwindAccordion extends TailwindComponent {\r\n readonly items = contentChildren(TailwindAccordionItem);\r\n}\r\n","<div\r\n [id]=\"id()\"\r\n [ngClass]=\"class()\"\r\n class=\"border border-surface-200 rounded-md overflow-hidden divide-y divide-surface-200\">\r\n <ng-content />\r\n</div>\r\n","export class TailwindModalRef<R = any> {\r\n private _closeFn!: () => void;\r\n private _result: R | undefined;\r\n\r\n /** @internal called by the service after component creation */\r\n _init(closeFn: () => void): void {\r\n this._closeFn = closeFn;\r\n }\r\n\r\n /** Close the modal resolving with the given result */\r\n close(result?: R): void {\r\n this._result = result;\r\n this._closeFn();\r\n }\r\n\r\n /** @internal read by the service after the close animation */\r\n _getResult(): R | undefined {\r\n return this._result;\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n inject,\r\n Injectable,\r\n Injector,\r\n Type\r\n} from '@angular/core';\r\nimport { TailwindModal } from '../../components/modal/modal.component';\r\nimport { TailwindModalConfig } from '../../components/modal/interfaces/modal-config.interface';\r\nimport { TailwindModalRef } from '../../ref/modal/modal.ref';\r\nimport { TAILWIND_MODAL_DATA } from '../../tokens/tokens';\r\n\r\nexport type { TailwindModalConfig };\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TailwindModalService {\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly environmentInjector = inject(EnvironmentInjector);\r\n\r\n /**\r\n * Open a modal programmatically.\r\n *\r\n * The `component` is instantiated and its slot elements are projected into\r\n * TailwindModal's ng-content slots (attribute selectors on direct children):\r\n * - `[tailwind-modal-title]` → header title area\r\n * - `[tailwind-modal-content]` → body area\r\n * - `[tailwind-modal-footer]` → footer area\r\n *\r\n * The component can inject `TailwindModalRef<R>` to close with a typed result\r\n * and `TAILWIND_MODAL_DATA` to receive the `config.data` payload.\r\n *\r\n * @returns Promise that resolves with `R` on `close(result)` or `undefined` on dismiss.\r\n */\r\n open<R = any, D = any>(component: Type<unknown>, config: TailwindModalConfig<D> = {}): Promise<R | undefined> {\r\n return new Promise<R | undefined>(resolve => {\r\n const modalRef = new TailwindModalRef<R>();\r\n\r\n const injector = Injector.create({\r\n providers: [\r\n { provide: TailwindModalRef, useValue: modalRef },\r\n { provide: TAILWIND_MODAL_DATA, useValue: config.data ?? null }\r\n ],\r\n parent: this.environmentInjector\r\n });\r\n\r\n // ── Step 1: create and render the user component ─────────────────────\r\n const userComp = createComponent(component, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: injector\r\n });\r\n this.appRef.attachView(userComp.hostView);\r\n userComp.changeDetectorRef.detectChanges();\r\n\r\n // ── Step 2: extract slot elements from the rendered host ──────────────\r\n const host = userComp.location.nativeElement as HTMLElement;\r\n const nodes = (sel: string) => Array.from(host.querySelectorAll(`:scope > ${sel}`));\r\n\r\n // ── Step 3: create TailwindModal projecting the slot nodes ────────────\r\n // projectableNodes[0] → <ng-content /> (title / catch-all)\r\n // projectableNodes[1] → <ng-content select=\"[tailwind-modal-content]\" />\r\n // projectableNodes[2] → <ng-content select=\"[tailwind-modal-footer]\" />\r\n const modalComp = createComponent(TailwindModal, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: injector,\r\n projectableNodes: [\r\n nodes('[tailwind-modal-title]'),\r\n nodes('[tailwind-modal-content]'),\r\n nodes('[tailwind-modal-footer]')\r\n ]\r\n });\r\n\r\n modalComp.setInput('size', config.size ?? 'md');\r\n modalComp.setInput('showCloseButton', config.showCloseButton ?? true);\r\n modalComp.setInput('closeOnBackdrop', config.closeOnBackdrop ?? true);\r\n modalComp.setInput('closeOnEscape', config.closeOnEscape ?? true);\r\n\r\n this.appRef.attachView(modalComp.hostView);\r\n document.body.appendChild(modalComp.location.nativeElement);\r\n\r\n // ── Step 4: wire close ────────────────────────────────────────────────\r\n modalRef._init(() => modalComp.instance.close());\r\n\r\n const sub = modalComp.instance.onClose.subscribe(() => {\r\n sub.unsubscribe();\r\n resolve(modalRef._getResult());\r\n modalComp.location.nativeElement.remove();\r\n this.appRef.detachView(modalComp.hostView);\r\n this.appRef.detachView(userComp.hostView);\r\n modalComp.destroy();\r\n userComp.destroy();\r\n });\r\n\r\n modalComp.instance.open();\r\n });\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\nimport { TailwindToastItem } from '../../components/toast/interfaces/toast-item.interface';\nimport { TailwindToastConfig } from '../../components/toast/interfaces/toast-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class TailwindToastService {\n private nextId = 0;\n readonly toasts = signal<TailwindToastItem[]>([]);\n\n show(config: TailwindToastConfig): number {\n const id = this.nextId++;\n const toast: TailwindToastItem = { id, severity: 'info', duration: 4000, dismissible: true, ...config };\n this.toasts.update(list => [...list, toast]);\n if (toast.duration && toast.duration > 0) {\n setTimeout(() => this.dismiss(id), toast.duration);\n }\n return id;\n }\n\n success(message: string, title?: string): number {\n return this.show({ message, title, severity: 'success' });\n }\n warning(message: string, title?: string): number {\n return this.show({ message, title, severity: 'warning' });\n }\n danger(message: string, title?: string): number {\n return this.show({ message, title, severity: 'danger' });\n }\n info(message: string, title?: string): number {\n return this.show({ message, title, severity: 'info' });\n }\n\n dismiss(id: number): void {\n this.toasts.update(list => list.filter(t => t.id !== id));\n }\n clear(): void {\n this.toasts.set([]);\n }\n}\n","import { Component, inject } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\nimport { TailwindToastConfig } from './interfaces/toast-config.interface';\r\nimport { TailwindToastItem } from './interfaces/toast-item.interface';\r\nimport { TailwindToastService } from '../../services';\r\nexport type { TailwindToastConfig, TailwindToastItem };\r\n\r\n@Component({\r\n selector: 'tailwind-toast',\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.css'\r\n})\r\nexport class TailwindToast extends TailwindComponent {\r\n readonly toastService = inject(TailwindToastService);\r\n}\r\n","<div class=\"fixed bottom-4 right-4 z-1080 flex flex-col gap-2 max-w-sm w-full pointer-events-none\">\r\n @for (toast of toastService.toasts(); track toast.id) {\r\n <div\r\n class=\"pointer-events-auto rounded-xl border shadow-lg p-4 flex gap-3 animate-in slide-in-from-right-full duration-300\"\r\n [class.bg-success-50]=\"toast.severity === 'success'\"\r\n [class.border-success-200]=\"toast.severity === 'success'\"\r\n [class.bg-warning-50]=\"toast.severity === 'warning'\"\r\n [class.border-warning-200]=\"toast.severity === 'warning'\"\r\n [class.bg-danger-50]=\"toast.severity === 'danger'\"\r\n [class.border-danger-200]=\"toast.severity === 'danger'\"\r\n [class.bg-info-50]=\"toast.severity === 'info'\"\r\n [class.border-info-200]=\"toast.severity === 'info'\"\r\n role=\"alert\">\r\n <div class=\"flex-1 min-w-0\">\r\n @if (toast.title) {\r\n <p class=\"text-sm font-semibold mb-0.5\">{{ toast.title }}</p>\r\n }\r\n <p class=\"text-sm\">{{ toast.message }}</p>\r\n </div>\r\n @if (toast.dismissible) {\r\n <button\r\n type=\"button\"\r\n (click)=\"toastService.dismiss(toast.id)\"\r\n class=\"shrink-0 p-1 rounded-lg opacity-60 hover:opacity-100 transition-opacity cursor-pointer\"\r\n aria-label=\"Dismiss\">\r\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-notification',\r\n templateUrl: './notification.component.html',\r\n styleUrl: './notification.component.css'\r\n})\r\nexport class TailwindNotification extends TailwindComponent {\r\n readonly title = input<string>('');\r\n readonly severity = input<TailwindSeverity>('info');\r\n readonly dismissible = input<boolean>(true);\r\n readonly showActions = input<boolean>(false);\r\n\r\n readonly onDismiss = output<void>();\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 border-success-200 text-success-800',\r\n warning: 'bg-warning-50 border-warning-200 text-warning-800',\r\n danger: 'bg-danger-50 border-danger-200 text-danger-800',\r\n info: 'bg-info-50 border-info-200 text-info-800'\r\n };\r\n return `flex items-start rounded-xl border p-4 ${variantMap[this.severity()]}`;\r\n });\r\n}\r\n","<div [class]=\"computedClasses()\" role=\"alert\">\n <div class=\"flex-1 min-w-0\">\n @if (title()) {\n <p class=\"text-sm font-semibold mb-0.5\">{{ title() }}</p>\n }\n <p class=\"text-sm\"><ng-content /></p>\n @if (showActions()) {\n <div class=\"pt-3\">\n <ng-content select=\"[tailwind-notification-actions]\" />\n </div>\n }\n </div>\n @if (dismissible()) {\n <button\n type=\"button\"\n (click)=\"onDismiss.emit()\"\n class=\"shrink-0 p-1 -m-1 rounded-lg opacity-60 hover:opacity-100 transition-opacity cursor-pointer\"\n aria-label=\"Dismiss\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n }\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-message',\r\n templateUrl: './message.component.html',\r\n styleUrl: './message.component.css'\r\n})\r\nexport class TailwindMessage extends TailwindComponent {\r\n readonly severity = input<TailwindSeverity>('info');\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 text-success-700 border-success-200',\r\n warning: 'bg-warning-50 text-warning-700 border-warning-200',\r\n danger: 'bg-danger-50 text-danger-700 border-danger-200',\r\n info: 'bg-info-50 text-info-700 border-info-200'\r\n };\r\n return `text-sm px-3 py-2 rounded-lg border ${variantMap[this.severity()]}`;\r\n });\r\n}\r\n","<div [class]=\"computedClasses()\" role=\"status\">\n <ng-content />\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-skeleton',\r\n templateUrl: './skeleton.component.html',\r\n styleUrl: './skeleton.component.css'\r\n})\r\nexport class TailwindSkeleton extends TailwindComponent {\r\n readonly variant = input<'text' | 'circle' | 'rect' | 'rounded'>('text');\r\n readonly width = input<string>('100%');\r\n readonly height = input<string>('');\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = 'tailwind-skeleton-pulse';\r\n const variantMap: Record<string, string> = {\r\n text: 'h-4 rounded',\r\n circle: 'rounded-full',\r\n rect: 'rounded-none',\r\n rounded: 'rounded-xl'\r\n };\r\n return `${base} ${variantMap[this.variant()]}`;\r\n });\r\n}\r\n","<div\n [style.width]=\"width()\"\n [style.height]=\"height() || (variant() === 'circle' ? width() : '1.5rem')\"\n [class]=\"computedClasses()\"\n aria-hidden=\"true\"></div>\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { TailwindMenuItem } from '../../models';\r\nimport { TailwindIcon } from '../icon/icon.component';\r\nimport { TailwindMenu } from '../menu/menu.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n imports: [TailwindIcon, TailwindMenu],\r\n selector: 'tailwind-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n styleUrl: './toolbar.component.css'\r\n})\r\nexport class TailwindToolbar extends TailwindComponent {\r\n /** When true, uses rounded corners (`rounded-xl`). */\r\n readonly rounded = input<boolean>(true);\r\n /**\r\n * Orizzontale: `full` = `w-full`; `container` = larghezza responsiva (95% / 85% / 75%) centrata.\r\n * Verticale: ignorato per l’altezza — il rail è sempre `h-full w-full` nella colonna.\r\n */\r\n readonly width = input<'full' | 'container'>('full');\r\n /** Applies a stronger drop shadow. */\r\n readonly elevated = input<boolean>(false);\r\n /** `horizontal` for a top app bar; `vertical` for a side rail (logo → menu → end). */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n\r\n /** Navigation / actions rendered between logo and end slots. */\r\n readonly menu = input<TailwindMenuItem[]>([]);\r\n\r\n /** Emitted when a non-disabled, non-divider menu entry is activated. */\r\n readonly onMenuSelect = output<TailwindMenuItem>();\r\n\r\n readonly menuContainerClasses = computed(() =>\r\n this.orientation() === 'horizontal'\r\n ? 'min-w-0 flex-1 flex flex-row flex-wrap items-center gap-1'\r\n : 'min-w-0 flex-1 flex flex-col gap-1.5 overflow-y-auto min-h-0'\r\n );\r\n\r\n readonly menuItemButtonClasses = computed(() =>\r\n this.orientation() === 'horizontal'\r\n ? 'inline-flex shrink-0 items-center justify-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent'\r\n : 'inline-flex w-full items-center gap-2 rounded-md px-3 py-3 text-left text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent'\r\n );\r\n\r\n readonly rootClasses = computed(() => {\r\n const horizontal = this.orientation() === 'horizontal';\r\n const sizeClasses = horizontal\r\n ? this.width() === 'full'\r\n ? 'w-full h-16'\r\n : 'container mx-auto h-16'\r\n : 'h-full w-full';\r\n\r\n const base = [\r\n 'bg-white border border-surface-200',\r\n 'flex',\r\n sizeClasses,\r\n this.rounded() ? 'rounded-xl' : 'rounded-none',\r\n this.elevated() ? 'shadow-lg' : 'shadow-sm'\r\n ];\r\n\r\n if (horizontal) {\r\n base.push('flex-row items-center gap-3 px-4 py-3');\r\n } else {\r\n base.push('flex-col items-stretch gap-3 px-3 py-4 min-h-0');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n\r\n selectMenuItem(item: TailwindMenuItem): void {\r\n if (item.divider || item.disabled) {\r\n return;\r\n }\r\n this.onMenuSelect.emit(item);\r\n }\r\n\r\n /** True when `label` is a non-empty string after trim (icon-only entries omit or blank `label`). */\r\n menuItemHasVisibleLabel(item: TailwindMenuItem): boolean {\r\n const label = item.label;\r\n return typeof label === 'string' && label.trim().length > 0;\r\n }\r\n\r\n /** Accessible name when there is no visible label (`value`, trimmed). */\r\n menuItemAriaLabel(item: TailwindMenuItem): string | null {\r\n if (this.menuItemHasVisibleLabel(item)) {\r\n return null;\r\n }\r\n const v = item.value;\r\n return v != null && String(v).trim().length > 0 ? String(v).trim() : null;\r\n }\r\n\r\n menuTrackKey(index: number, item: TailwindMenuItem): string {\r\n return item.value ?? item.label ?? String(index);\r\n }\r\n}\r\n","<div [class]=\"rootClasses()\">\r\n <div class=\"shrink-0\">\r\n <ng-content select=\"[tailwind-toolbar-logo]\" />\r\n </div>\r\n @if (orientation() === 'horizontal') {\r\n <nav class=\"min-w-0 flex flex-1 flex-row flex-wrap items-center gap-1\" [attr.aria-label]=\"'Toolbar menu'\">\r\n @if (menu().length) {\r\n <div class=\"flex shrink-0 items-center md:hidden\">\r\n <button\r\n type=\"button\"\r\n class=\"inline-flex shrink-0 cursor-pointer items-center justify-center rounded-md border-0 bg-transparent p-2 text-surface-700 transition-colors hover:bg-surface-100 hover:text-surface-900\"\r\n [attr.aria-expanded]=\"mobileToolbarMenu.isOpen()\"\r\n aria-haspopup=\"menu\"\r\n aria-label=\"Open navigation menu\"\r\n (click)=\"mobileToolbarMenu.toggle($event)\">\r\n <tailwind-icon icon=\"bars-3\" [size]=\"22\" />\r\n </button>\r\n <tailwind-menu\r\n #mobileToolbarMenu\r\n [items]=\"menu()\"\r\n align=\"left\"\r\n (onSelect)=\"selectMenuItem($event)\" />\r\n </div>\r\n }\r\n <div class=\"hidden min-w-0 flex-1 flex-row flex-wrap items-center gap-1 md:flex\">\r\n @for (item of menu(); track menuTrackKey($index, item)) {\r\n @if (item.divider) {\r\n <span class=\"mx-0.5 h-5 w-px shrink-0 self-center bg-surface-200\" aria-hidden=\"true\"></span>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"!!item.disabled\"\r\n [class]=\"menuItemButtonClasses()\"\r\n [class.px-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\r\n [class.py-2]=\"!!item.icon && !menuItemHasVisibleLabel(item)\"\r\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\r\n (click)=\"selectMenuItem(item)\">\r\n @if (item.icon) {\r\n <tailwind-icon [icon]=\"item.icon\" [size]=\"20\" />\r\n }\r\n @if (menuItemHasVisibleLabel(item)) {\r\n {{ item.label }}\r\n }\r\n </button>\r\n }\r\n }\r\n </div>\r\n </nav>\r\n } @else {\r\n <nav [class]=\"menuContainerClasses()\" [attr.aria-label]=\"'Toolbar menu'\">\r\n @for (item of menu(); track menuTrackKey($index, item)) {\r\n @if (item.divider) {\r\n <hr class=\"my-1 w-full border-0 border-t border-surface-100\" />\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"!!item.disabled\"\r\n [class]=\"menuItemButtonClasses()\"\r\n [class.justify-center]=\"!menuItemHasVisibleLabel(item)\"\r\n [attr.aria-label]=\"menuItemAriaLabel(item)\"\r\n (click)=\"selectMenuItem(item)\">\r\n @if (item.icon) {\r\n <tailwind-icon [icon]=\"item.icon\" [size]=\"22\" />\r\n }\r\n @if (menuItemHasVisibleLabel(item)) {\r\n {{ item.label }}\r\n }\r\n </button>\r\n }\r\n }\r\n </nav>\r\n }\r\n <div\r\n class=\"flex flex-wrap items-center gap-2 shrink-0\"\r\n [class.justify-end]=\"orientation() === 'horizontal'\"\r\n [class.mt-auto]=\"orientation() === 'vertical'\">\r\n <ng-content select=\"[tailwind-toolbar-end]\" />\r\n </div>\r\n</div>\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-divider',\r\n templateUrl: './divider.component.html',\r\n styleUrl: './divider.component.css'\r\n})\r\nexport class TailwindDivider extends TailwindComponent {\r\n /** Rule direction */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n /** Adds horizontal margin to the rule (horizontal orientation only). */\r\n readonly inset = input<boolean>(false);\r\n /** Border style for the rule */\r\n readonly variant = input<'solid' | 'dashed'>('solid');\r\n /** Centered text between two lines (horizontal only; ignored when empty). */\r\n readonly label = input<string>('');\r\n\r\n readonly isLabeledHorizontal = computed(\r\n () => this.orientation() === 'horizontal' && !!this.label()?.trim()\r\n );\r\n\r\n readonly ruleClasses = computed(() => {\r\n const inset = this.inset() && this.orientation() === 'horizontal' ? 'mx-4' : '';\r\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\r\n\r\n if (this.orientation() === 'vertical') {\r\n return ['self-stretch shrink-0 w-px min-h-full border-0 border-l', variant, 'border-surface-200']\r\n .join(' ');\r\n }\r\n\r\n return ['w-full border-0 border-t', variant, 'border-surface-200', 'my-4', inset]\r\n .filter(Boolean)\r\n .join(' ');\r\n });\r\n\r\n /** Top rule for labeled horizontal layout */\r\n readonly ruleLineClass = computed(() => {\r\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\r\n return ['border-surface-200', variant].join(' ');\r\n });\r\n\r\n readonly labeledRowClass = computed(() =>\r\n ['flex items-center gap-3 w-full my-4', this.inset() ? 'mx-4' : ''].filter(Boolean).join(' ')\r\n );\r\n}\r\n","@if (isLabeledHorizontal()) {\r\n <div [class]=\"labeledRowClass()\" role=\"separator\" [attr.aria-label]=\"label()\">\r\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\r\n <span class=\"text-xs font-medium text-surface-500 shrink-0\">{{ label() }}</span>\r\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\r\n </div>\r\n} @else {\r\n <div [class]=\"ruleClasses()\" role=\"separator\"></div>\r\n}\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSize, TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindMeterSegment } from './interfaces/meter-segment.interface';\r\n\r\n@Component({\r\n selector: 'tailwind-meter',\r\n templateUrl: './meter.component.html',\r\n styleUrl: './meter.component.css'\r\n})\r\nexport class TailwindMeter extends TailwindComponent {\r\n /** Segments rendered as proportional blocks in the bar. */\r\n readonly segments = input<TailwindMeterSegment[]>([]);\r\n /**\r\n * Scale maximum. Each segment `value` is shown as `value / max` of the bar width.\r\n * Default 100 (percent-style values).\r\n */\r\n readonly max = input<number>(100);\r\n /** Show a simple legend under the bar */\r\n readonly showLabels = input<boolean>(true);\r\n /** Track height */\r\n readonly size = input<TailwindSize>('md');\r\n\r\n readonly trackHeightClass = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'h-1.5',\r\n sm: 'h-2',\r\n md: 'h-2.5',\r\n lg: 'h-3.5',\r\n xl: 'h-4'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly totalValue = computed(() => this.segments().reduce((s, x) => s + Math.max(0, x.value), 0));\r\n\r\n readonly scaleMax = computed(() => {\r\n const m = this.max();\r\n if (m > 0) {\r\n return m;\r\n }\r\n const t = this.totalValue();\r\n return t > 0 ? t : 1;\r\n });\r\n\r\n readonly segmentLayouts = computed(() => {\r\n const cap = this.scaleMax();\r\n return this.segments().map(seg => {\r\n const pct = cap > 0 ? (Math.max(0, seg.value) / cap) * 100 : 0;\r\n const variant = seg.variant ?? 'primary';\r\n return { ...seg, widthPct: pct, barClass: this.variantToBarClass(variant) };\r\n });\r\n });\r\n\r\n readonly trackContainerClasses = computed(\r\n () => `flex w-full overflow-hidden rounded-full bg-surface-200 ${this.trackHeightClass()}`\r\n );\r\n\r\n legendSwatchClass(variant?: TailwindSeverity | 'primary'): string {\r\n return this.variantToBarClass(variant ?? 'primary');\r\n }\r\n\r\n private variantToBarClass(variant: TailwindSeverity | 'primary'): string {\r\n const map: Record<string, string> = {\r\n primary: 'bg-primary-600',\r\n success: 'bg-success-600',\r\n warning: 'bg-warning-500',\r\n danger: 'bg-danger-600',\r\n info: 'bg-info-600'\r\n };\r\n return map[variant] ?? map['primary'];\r\n }\r\n}\r\n","<div class=\"w-full space-y-2\">\r\n <div\r\n [class]=\"trackContainerClasses()\"\r\n role=\"meter\"\r\n [attr.aria-valuemin]=\"0\"\r\n [attr.aria-valuemax]=\"scaleMax()\"\r\n [attr.aria-valuenow]=\"totalValue()\"\r\n [attr.aria-label]=\"'Meter'\">\r\n @for (seg of segmentLayouts(); track $index) {\r\n @if (seg.widthPct > 0) {\r\n <div\r\n class=\"h-full min-w-0 transition-all duration-300 ease-out\"\r\n [class]=\"seg.barClass\"\r\n [style.width.%]=\"seg.widthPct\"\r\n [attr.title]=\"seg.label + ': ' + seg.value\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (showLabels()) {\r\n <div class=\"flex flex-wrap gap-x-4 gap-y-1 text-xs text-surface-600\">\r\n @for (seg of segments(); track $index) {\r\n <span class=\"inline-flex items-center gap-1.5\">\r\n <span class=\"inline-block size-2 rounded-sm shrink-0\" [class]=\"legendSwatchClass(seg.variant)\"></span>\r\n <span>{{ seg.label }}</span>\r\n <span class=\"text-surface-400\">({{ seg.value }})</span>\r\n </span>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { booleanAttribute, Component, computed, ElementRef, forwardRef, input, signal, viewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSeverity, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n/** Value model: single number or sorted pair when `range` is true */\r\nexport type TailwindSliderValue = number | [number, number];\r\n\r\n@Component({\r\n selector: 'tailwind-slider',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindSlider),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './slider.component.html',\r\n styleUrl: './slider.component.css'\r\n})\r\nexport class TailwindSlider extends TailwindComponent implements ControlValueAccessor {\r\n /** Minimum bound */\r\n readonly min = input<number>(0);\r\n /** Maximum bound */\r\n readonly max = input<number>(100);\r\n /** Step increment */\r\n readonly step = input<number>(1);\r\n /** Two-thumb range mode */\r\n readonly range = input<boolean>(false);\r\n /** Layout */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n /** Tick marks at each step */\r\n readonly showTicks = input<boolean>(false);\r\n /** Control size */\r\n readonly size = input<TailwindSize>('md');\r\n /** Track fill / thumb color */\r\n readonly variant = input<TailwindSeverity | 'primary'>('primary');\r\n\r\n readonly trackRef = viewChild<ElementRef<HTMLElement>>('track');\r\n\r\n /** Single-thumb value */\r\n readonly singleValue = signal(0);\r\n /** Range: lower value */\r\n readonly rangeLow = signal(0);\r\n /** Range: upper value */\r\n readonly rangeHigh = signal(100);\r\n\r\n /** Disabled via template (combined with form `setDisabledState`) */\r\n readonly hostDisabled = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n\r\n readonly isDisabled = signal(false);\r\n\r\n readonly isEffectivelyDisabled = computed(() => this.isDisabled() || this.hostDisabled());\r\n\r\n private onChange: (v: TailwindSliderValue) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n readonly activeThumb = signal<null | 0 | 1>(null);\r\n\r\n readonly thumbSizeClass = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'size-3',\r\n sm: 'size-3.5',\r\n md: 'size-4',\r\n lg: 'size-5',\r\n xl: 'size-6'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly trackThickness = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'h-1',\r\n sm: 'h-1.5',\r\n md: 'h-2',\r\n lg: 'h-2.5',\r\n xl: 'h-3'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly verticalTrackThickness = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'w-1',\r\n sm: 'w-1.5',\r\n md: 'w-2',\r\n lg: 'w-2.5',\r\n xl: 'w-3'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n /**\r\n * Uses theme CSS variables (`--color-*`) so accent colors work even when dynamic\r\n * `bg-*` utilities are not present in the compiled stylesheet (Tailwind content scan).\r\n */\r\n readonly accentVars = computed(() => {\r\n const name = this.variant();\r\n return {\r\n fill: `var(--color-${name}-500)`,\r\n thumb: `var(--color-${name}-600)`,\r\n ring: `var(--color-${name}-500)`\r\n };\r\n });\r\n\r\n readonly singlePct = computed(() => this.valueToPct(this.singleValue()));\r\n\r\n readonly lowPct = computed(() => this.valueToPct(this.rangeLow()));\r\n readonly highPct = computed(() => this.valueToPct(this.rangeHigh()));\r\n\r\n readonly fillStartPct = computed(() => (this.range() ? Math.min(this.lowPct(), this.highPct()) : 0));\r\n\r\n readonly fillWidthPct = computed(() =>\r\n this.range() ? Math.abs(this.highPct() - this.lowPct()) : this.singlePct()\r\n );\r\n\r\n readonly tickPositions = computed(() => {\r\n if (!this.showTicks()) {\r\n return [] as number[];\r\n }\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n if (st <= 0 || hi < lo) {\r\n return [];\r\n }\r\n const steps = Math.round((hi - lo) / st);\r\n const out: number[] = [];\r\n for (let i = 0; i <= steps; i++) {\r\n out.push(this.valueToPct(lo + i * st));\r\n }\r\n return out;\r\n });\r\n\r\n writeValue(value: TailwindSliderValue | null): void {\r\n const lo = this.min();\r\n const hi = this.max();\r\n if (this.range()) {\r\n const pair = Array.isArray(value) ? value : [lo, hi];\r\n const a = this.snap(Math.min(pair[0] ?? lo, pair[1] ?? hi));\r\n const b = this.snap(Math.max(pair[0] ?? lo, pair[1] ?? hi));\r\n this.rangeLow.set(Math.min(a, b));\r\n this.rangeHigh.set(Math.max(a, b));\r\n } else {\r\n const n = Array.isArray(value) ? value[0] : value;\r\n const num = typeof n === 'number' && !Number.isNaN(n) ? n : lo;\r\n this.singleValue.set(this.snap(num));\r\n }\r\n }\r\n\r\n registerOnChange(fn: (v: TailwindSliderValue) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n valueToPct(v: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n if (hi === lo) {\r\n return 0;\r\n }\r\n return ((this.snap(v) - lo) / (hi - lo)) * 100;\r\n }\r\n\r\n snap(raw: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n if (st <= 0) {\r\n return Math.min(hi, Math.max(lo, raw));\r\n }\r\n const stepped = Math.round((raw - lo) / st) * st + lo;\r\n const rounded = Math.round(stepped * 1e6) / 1e6;\r\n return Math.min(hi, Math.max(lo, rounded));\r\n }\r\n\r\n pctToValue(pct: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n const v = lo + (pct / 100) * (hi - lo);\r\n return this.snap(v);\r\n }\r\n\r\n onThumbPointerDown(event: PointerEvent, thumbIndex: 0 | 1): void {\r\n event.stopPropagation();\r\n this.onTrackPointerDown(event, thumbIndex);\r\n }\r\n\r\n onTrackPointerDown(event: PointerEvent, thumbIndex: 0 | 1 | null): void {\r\n if (this.isEffectivelyDisabled()) {\r\n return;\r\n }\r\n event.preventDefault();\r\n const track = this.trackRef()?.nativeElement;\r\n if (!track) {\r\n return;\r\n }\r\n\r\n let thumb: 0 | 1 | null = thumbIndex;\r\n if (!this.range()) {\r\n thumb = null;\r\n } else if (thumb === null) {\r\n const v = this.readValueFromPointer(event, track);\r\n const low = this.rangeLow();\r\n const high = this.rangeHigh();\r\n const d0 = Math.abs(v - low);\r\n const d1 = Math.abs(v - high);\r\n thumb = d0 <= d1 ? 0 : 1;\r\n }\r\n\r\n this.activeThumb.set(thumb);\r\n this.applyPointer(event, track, thumb);\r\n\r\n if (typeof track.setPointerCapture === 'function') {\r\n track.setPointerCapture(event.pointerId);\r\n }\r\n\r\n const move = (ev: PointerEvent) => this.applyPointer(ev, track, thumb);\r\n const up = (ev: PointerEvent) => {\r\n document.removeEventListener('pointermove', move);\r\n document.removeEventListener('pointerup', up);\r\n document.removeEventListener('pointercancel', up);\r\n try {\r\n track.releasePointerCapture(ev.pointerId);\r\n } catch {\r\n /* ignore */\r\n }\r\n this.activeThumb.set(null);\r\n this.onTouched();\r\n };\r\n document.addEventListener('pointermove', move);\r\n document.addEventListener('pointerup', up);\r\n document.addEventListener('pointercancel', up);\r\n }\r\n\r\n private readValueFromPointer(event: PointerEvent, track: HTMLElement): number {\r\n const rect = track.getBoundingClientRect();\r\n const horizontal = this.orientation() === 'horizontal';\r\n let ratio: number;\r\n if (horizontal) {\r\n ratio = (event.clientX - rect.left) / rect.width;\r\n } else {\r\n ratio = 1 - (event.clientY - rect.top) / rect.height;\r\n }\r\n ratio = Math.min(1, Math.max(0, ratio));\r\n return this.pctToValue(ratio * 100);\r\n }\r\n\r\n private applyPointer(event: PointerEvent, track: HTMLElement, thumbIndex: 0 | 1 | null): void {\r\n const next = this.readValueFromPointer(event, track);\r\n if (this.range()) {\r\n const idx = thumbIndex ?? 0;\r\n if (idx === 0) {\r\n const hi = this.rangeHigh();\r\n this.rangeLow.set(this.snap(Math.min(next, hi)));\r\n } else {\r\n const lo = this.rangeLow();\r\n this.rangeHigh.set(this.snap(Math.max(next, lo)));\r\n }\r\n this.onChange([this.rangeLow(), this.rangeHigh()]);\r\n } else {\r\n this.singleValue.set(next);\r\n this.onChange(this.singleValue());\r\n }\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent, thumbIndex: 0 | 1): void {\r\n if (this.isEffectivelyDisabled()) {\r\n return;\r\n }\r\n const keys = ['ArrowLeft', 'ArrowRight', 'ArrowDown', 'ArrowUp', 'Home', 'End'];\r\n if (!keys.includes(event.key)) {\r\n return;\r\n }\r\n event.preventDefault();\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n const horizontal = this.orientation() === 'horizontal';\r\n const decKey = horizontal ? 'ArrowLeft' : 'ArrowDown';\r\n const incKey = horizontal ? 'ArrowRight' : 'ArrowUp';\r\n\r\n const delta = (key: string) => {\r\n if (key === 'Home') {\r\n return lo - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\r\n }\r\n if (key === 'End') {\r\n return hi - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\r\n }\r\n if (key === decKey) {\r\n return -st;\r\n }\r\n if (key === incKey) {\r\n return st;\r\n }\r\n return 0;\r\n };\r\n\r\n const d = delta(event.key);\r\n if (d === 0) {\r\n return;\r\n }\r\n\r\n if (this.range()) {\r\n if (thumbIndex === 0) {\r\n const next = this.snap(this.rangeLow() + d);\r\n this.rangeLow.set(Math.min(next, this.rangeHigh()));\r\n } else {\r\n const next = this.snap(this.rangeHigh() + d);\r\n this.rangeHigh.set(Math.max(next, this.rangeLow()));\r\n }\r\n this.onChange([this.rangeLow(), this.rangeHigh()]);\r\n } else {\r\n this.singleValue.set(this.snap(this.singleValue() + d));\r\n this.onChange(this.singleValue());\r\n }\r\n }\r\n}\r\n","@if (orientation() === 'horizontal') {\r\n <div\r\n #track\r\n class=\"relative w-full touch-none select-none py-3\"\r\n [class.opacity-50]=\"isEffectivelyDisabled()\"\r\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\r\n <div class=\"relative h-6 w-full\">\r\n <!-- rail -->\r\n <div\r\n class=\"pointer-events-none absolute left-0 right-0 top-1/2 -translate-y-1/2 rounded-full bg-surface-200\"\r\n [class]=\"trackThickness()\"></div>\r\n\r\n @if (showTicks()) {\r\n @for (p of tickPositions(); track $index) {\r\n <div\r\n class=\"pointer-events-none absolute top-1/2 h-2 w-px -translate-x-1/2 -translate-y-1/2 bg-surface-300\"\r\n [style.left.%]=\"p\"></div>\r\n }\r\n }\r\n\r\n <!-- fill -->\r\n <div\r\n class=\"pointer-events-none absolute top-1/2 z-1 -translate-y-1/2 rounded-full\"\r\n [class]=\"trackThickness()\"\r\n [style.background-color]=\"accentVars().fill\"\r\n [style.left.%]=\"fillStartPct()\"\r\n [style.width.%]=\"fillWidthPct()\"></div>\r\n\r\n @if (range()) {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.left.%]=\"lowPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeLow()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.left.%]=\"highPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeHigh()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\r\n (keydown)=\"onKeyDown($event, 1)\"></button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.left.%]=\"singlePct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"singleValue()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <div\r\n #track\r\n class=\"relative mx-auto h-52 w-10 touch-none select-none\"\r\n [class.opacity-50]=\"isEffectivelyDisabled()\"\r\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\r\n <div class=\"relative h-full w-full\">\r\n <div\r\n class=\"pointer-events-none absolute bottom-0 left-1/2 top-0 -translate-x-1/2 rounded-full bg-surface-200\"\r\n [class]=\"verticalTrackThickness()\"></div>\r\n\r\n @if (showTicks()) {\r\n @for (p of tickPositions(); track $index) {\r\n <div\r\n class=\"pointer-events-none absolute left-1/2 w-2 h-px -translate-x-1/2 translate-y-1/2 bg-surface-300\"\r\n [style.bottom.%]=\"p\"></div>\r\n }\r\n }\r\n\r\n <div\r\n class=\"pointer-events-none absolute bottom-0 left-1/2 z-1 -translate-x-1/2 rounded-full\"\r\n [class]=\"verticalTrackThickness()\"\r\n [style.background-color]=\"accentVars().fill\"\r\n [style.bottom.%]=\"fillStartPct()\"\r\n [style.height.%]=\"fillWidthPct()\"></div>\r\n\r\n @if (range()) {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.bottom.%]=\"lowPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeLow()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.bottom.%]=\"highPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeHigh()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\r\n (keydown)=\"onKeyDown($event, 1)\"></button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white shadow focus:outline-none\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.background-color]=\"accentVars().thumb\"\r\n [style.--slider-ring]=\"accentVars().ring\"\r\n [style.bottom.%]=\"singlePct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"singleValue()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","// Batch 1 — Foundation\nexport * from './button/button.component';\nexport * from './icon/icon.component';\nexport * from './input/input.component';\nexport * from './textarea/textarea.component';\nexport * from './upload/upload.component';\nexport * from './input-otp/input-otp.component';\nexport * from './checkbox/checkbox.component';\nexport * from './radio/radio-group.component';\nexport * from './select/select.component';\nexport * from './toggle/toggle.component';\nexport * from './badge/badge.component';\nexport * from './title/title.component';\nexport * from './card/card.component';\nexport * from './alert/alert.component';\nexport * from './spinner/spinner.component';\n\n// Batch 2 — Intermediate\nexport * from './modal/modal.component';\nexport * from './tabs/tab.component';\nexport * from './tabs/tab-group.component';\nexport * from './tooltip/tooltip.component';\nexport * from '../directives/tooltip/tooltip.directive';\nexport * from './progress-bar/progress-bar.component';\nexport * from './menu/menu.component';\nexport * from './drawer/drawer.component';\nexport * from './breadcrumb/breadcrumb.component';\nexport * from './pagination/pagination.component';\nexport * from './tag/tag.component';\n\n// Batch 3 — Advanced\nexport * from './table/table.component';\nexport * from './date-picker/date-picker.component';\nexport * from './time-picker/time-picker.component';\nexport * from './datetime-picker/datetime-picker.component';\nexport * from './stepper/step.component';\nexport * from './stepper/stepper.component';\nexport * from './accordion/accordion-item.component';\nexport * from './accordion/accordion.component';\nexport * from './toast/toast.component';\nexport * from './notification/notification.component';\nexport * from './message/message.component';\nexport * from './skeleton/skeleton.component';\nexport * from './toolbar/toolbar.component';\nexport * from './divider/divider.component';\nexport * from './meter/interfaces/meter-segment.interface';\nexport * from './meter/meter.component';\nexport * from './slider/slider.component';\n","import { makeEnvironmentProviders, type EnvironmentProviders, type Provider } from '@angular/core';\r\nimport type { TailwindSize } from '../models';\r\nimport {\r\n TAILWIND_COMPONENTS_SIZE,\r\n TAILWIND_DATETIME_LANGUAGE,\r\n TAILWIND_ICON_SIZE,\r\n TAILWIND_MODAL_DATA,\r\n TAILWIND_PAGINATION_SUMMARY\r\n} from '../tokens';\r\n\r\n/**\r\n * Optional app-wide values for library `InjectionToken`s.\r\n * Pass only the keys you need; {@link provideTailwindComponents} registers matching `Provider`s.\r\n */\r\nexport interface TailwindComponentsConfig {\r\n /** Maps to {@link TAILWIND_ICON_SIZE} (default icon pixel size when omitted). */\r\n iconSize?: number;\r\n /** Maps to {@link TAILWIND_DATETIME_LANGUAGE}. */\r\n datetimeLanguage?: 'it' | 'en';\r\n /** Maps to {@link TAILWIND_COMPONENTS_SIZE}. */\r\n componentsSize?: TailwindSize;\r\n /** Maps to {@link TAILWIND_PAGINATION_SUMMARY}. */\r\n paginationSummary?: string;\r\n /**\r\n * Maps to {@link TAILWIND_MODAL_DATA}.\r\n * Normally each `ModalService.open()` supplies this per dialog; use at app scope only if you need a global fallback (modal `open` still overrides in the dialog injector when data is passed).\r\n */\r\n modalData?: unknown;\r\n}\r\n\r\n/**\r\n * Registers environment-scoped providers for the tokens corresponding to each set field on `config`.\r\n * Add the result to `bootstrapApplication(..., { providers: [...] })` or `ApplicationConfig.providers` without spreading.\r\n */\r\nexport function provideTailwindComponents(config: TailwindComponentsConfig): EnvironmentProviders {\r\n const providers: Provider[] = [];\r\n\r\n if (config.iconSize !== undefined) {\r\n providers.push({ provide: TAILWIND_ICON_SIZE, useValue: config.iconSize });\r\n }\r\n if (config.datetimeLanguage !== undefined) {\r\n providers.push({ provide: TAILWIND_DATETIME_LANGUAGE, useValue: config.datetimeLanguage });\r\n }\r\n if (config.componentsSize !== undefined) {\r\n providers.push({ provide: TAILWIND_COMPONENTS_SIZE, useValue: config.componentsSize });\r\n }\r\n if (config.paginationSummary !== undefined) {\r\n providers.push({ provide: TAILWIND_PAGINATION_SUMMARY, useValue: config.paginationSummary });\r\n }\r\n if (config.modalData !== undefined) {\r\n providers.push({ provide: TAILWIND_MODAL_DATA, useValue: config.modalData });\r\n }\r\n\r\n return makeEnvironmentProviders(providers);\r\n}\r\n","/*\r\n * Public API Surface of angular-tailwind-components\r\n */\r\n\r\n// Models & Types\r\nexport * from './lib/models';\r\n\r\n// Directives\r\nexport * from './lib/directives';\r\n\r\n// Components\r\nexport * from './lib/components';\r\n\r\n// Services\r\nexport * from './lib/services';\r\n\r\n// Tokens\r\nexport * from './lib/tokens';\r\n\r\n// App-level providers\r\nexport * from './lib/providers';\r\n\r\n// Refs\r\nexport * from './lib/ref';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["I18N"],"mappings":";;;;;;;;;;AAAA;;ACAA;;;;;AAKG;AACI,MAAM,uBAAuB,GAAG;IACrC,cAAc;IACd,wBAAwB;IACxB,sBAAsB;IACtB,aAAa;IACb,wBAAwB;IACxB,oBAAoB;IACpB,YAAY;IACZ,mBAAmB;IACnB,iBAAiB;IACjB,sBAAsB;IACtB,4BAA4B;IAC5B,kBAAkB;IAClB,iBAAiB;IACjB,YAAY;IACZ,mBAAmB;IACnB,6BAA6B;IAC7B,yBAAyB;IACzB,+BAA+B;IAC/B,iBAAiB;IACjB,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,YAAY;IACZ,2BAA2B;IAC3B,aAAa;IACb,oBAAoB;IACpB,8BAA8B;IAC9B,0BAA0B;IAC1B,gCAAgC;IAChC,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,gBAAgB;IAChB,2BAA2B;IAC3B,qBAAqB;IACrB,mBAAmB;IACnB,sBAAsB;IACtB,uBAAuB;IACvB,sBAAsB;IACtB,oBAAoB;IACpB,uBAAuB;IACvB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,UAAU;IACV,iBAAiB;IACjB,eAAe;IACf,oBAAoB;IACpB,0BAA0B;IAC1B,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,gBAAgB;IAChB,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;IACnB,gBAAgB;IAChB,WAAW;IACX,WAAW;IACX,UAAU;IACV,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,oBAAoB;IACpB,qBAAqB;IACrB,oBAAoB;IACpB,QAAQ;IACR,iBAAiB;IACjB,eAAe;IACf,WAAW;IACX,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,MAAM;IACN,MAAM;IACN,YAAY;IACZ,WAAW;IACX,UAAU;IACV,gBAAgB;IAChB,iBAAiB;IACjB,WAAW;IACX,SAAS;IACT,kBAAkB;IAClB,iBAAiB;IACjB,mBAAmB;IACnB,qBAAqB;IACrB,MAAM;IACN,YAAY;IACZ,UAAU;IACV,qBAAqB;IACrB,eAAe;IACf,QAAQ;IACR,WAAW;IACX,kBAAkB;IAClB,WAAW;IACX,2BAA2B;IAC3B,gCAAgC;IAChC,kBAAkB;IAClB,2BAA2B;IAC3B,wBAAwB;IACxB,uBAAuB;IACvB,gCAAgC;IAChC,OAAO;IACP,aAAa;IACb,cAAc;IACd,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,mBAAmB;IACnB,cAAc;IACd,cAAc;IACd,eAAe;IACf,YAAY;IACZ,iBAAiB;IACjB,cAAc;IACd,WAAW;IACX,oBAAoB;IACpB,0BAA0B;IAC1B,yBAAyB;IACzB,OAAO;IACP,OAAO;IACP,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,qBAAqB;IACrB,KAAK;IACL,aAAa;IACb,aAAa;IACb,cAAc;IACd,kBAAkB;IAClB,UAAU;IACV,aAAa;IACb,MAAM;IACN,kBAAkB;IAClB,sBAAsB;IACtB,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,eAAe;IACf,QAAQ;IACR,UAAU;IACV,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,gBAAgB;IAChB,+BAA+B;IAC/B,0BAA0B;IAC1B,wBAAwB;IACxB,yBAAyB;IACzB,yBAAyB;IACzB,uBAAuB;IACvB,oBAAoB;IACpB,2BAA2B;IAC3B,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,qBAAqB;IACrB,4BAA4B;IAC5B,mBAAmB;IACnB,UAAU;IACV,eAAe;IACf,QAAQ;IACR,oBAAoB;IACpB,sBAAsB;IACtB,KAAK;IACL,aAAa;IACb,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,MAAM;IACN,cAAc;IACd,MAAM;IACN,MAAM;IACN,QAAQ;IACR,mBAAmB;IACnB,cAAc;IACd,aAAa;IACb,aAAa;IACb,SAAS;IACT,QAAQ;IACR,KAAK;IACL,MAAM;IACN,UAAU;IACV,WAAW;IACX,gBAAgB;IAChB,sBAAsB;IACtB,qBAAqB;IACrB,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,OAAO;IACP,MAAM;IACN,aAAa;IACb,gBAAgB;IAChB,OAAO;IACP,kBAAkB;IAClB,aAAa;IACb,oBAAoB;IACpB,QAAQ;IACR,KAAK;IACL,UAAU;IACV,UAAU;IACV,YAAY;IACZ,MAAM;IACN,YAAY;IACZ,aAAa;IACb,aAAa;IACb,WAAW;IACX,kBAAkB;IAClB,yBAAyB;IACzB,wBAAwB;IACxB,uBAAuB;IACvB,KAAK;IACL,SAAS;IACT,WAAW;IACX,YAAY;IACZ,OAAO;IACP,cAAc;IACd,aAAa;IACb,MAAM;IACN,cAAc;IACd,WAAW;IACX,WAAW;IACX,eAAe;IACf,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,OAAO;IACP,cAAc;IACd,QAAQ;IACR,eAAe;IACf,eAAe;IACf,OAAO;IACP,uBAAuB;IACvB,sBAAsB;IACtB,cAAc;IACd,OAAO;IACP,MAAM;IACN,aAAa;IACb,YAAY;IACZ,MAAM;IACN,aAAa;IACb,YAAY;IACZ,OAAO;IACP,wBAAwB;IACxB,yBAAyB;IACzB,SAAS;IACT,cAAc;IACd,SAAS;IACT,sBAAsB;IACtB,YAAY;IACZ,OAAO;IACP,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,KAAK;IACL,OAAO;IACP,UAAU;IACV,QAAQ;IACR,cAAc;IACd,OAAO;IACP,cAAc;IACd,oBAAoB;IACpB,cAAc;IACd,eAAe;IACf,QAAQ;IACR,cAAc;IACd,OAAO;IACP,UAAU;IACV,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,mBAAmB;IACnB,aAAa;IACb,cAAc;IACd,MAAM;IACN,MAAM;IACN,aAAa;IACb,eAAe;IACf,KAAK;IACL,QAAQ;IACR,aAAa;IACb,KAAK;IACL,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,IAAI;IACJ,WAAW;IACX,MAAM;IACN,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,OAAO;IACP,UAAU;IACV,cAAc;IACd,oBAAoB;IACpB,cAAc;IACd,mBAAmB;IACnB,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,oBAAoB;IACpB,UAAU;IACV,QAAQ;;;MClUY,iBAAiB,CAAA;;IAE5B,EAAE,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;IAGpB,KAAK,GAAG,KAAK,CAAS,SAAS,6EAAI,KAAK,EAAE,OAAO,EAAA,CAAG;wGALzC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,cAAc;AAC3B,wBAAA,SAAS,EAAE;AACZ;AACF,iBAAA;;;ACGK,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;;AAE3C,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;;AAE/B,IAAA,QAAQ,GAAG,KAAK,CAAmB,KAAK,+EAAC;AAEzC,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AACzB,IAAA,MAAM,GAAG,MAAM,CAAS,CAAC,6EAAC;AAC1B,IAAA,OAAO,GAAG,MAAM,CAAS,CAAC,8EAAC;IAE5B,aAAa,GAAuB,IAAI;AAExC,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AAEtB,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA6B,WAAW,CAAC;IAExE,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE;AAE3C,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,IAAI,GAAG;YACX,4BAA4B;YAC5B,0DAA0D;YAC1D,iDAAiD;YACjD,iCAAiC;YACjC,IAAI,CAAC,SAAS,EAAE,GAAG,aAAa,GAAG;SACpC;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,IAAA,CAAC,qFAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QACpC,MAAM,IAAI,GAAG,2CAA2C;AAExD,QAAA,MAAM,MAAM,GAAqC;AAC/C,YAAA,GAAG,EAAE,0CAA0C;AAC/C,YAAA,MAAM,EAAE,6CAA6C;AACrD,YAAA,IAAI,EAAE,0CAA0C;AAChD,YAAA,KAAK,EAAE;SACR;QAED,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAE;AAC7C,IAAA,CAAC,mFAAC;IAEF,eAAe,GAAA;QACb,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,EAAE;IACb;AAEA,IAAA,SAAS,CAAC,EAAe,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,cAAc,EAAE;IACvB;IAEQ,cAAc,GAAA;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAChD,QAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AAC9B,QAAA,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG;AACrB,QAAA,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;QACtB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;AACxC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE;QAC1C,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC;AACxC,QAAA,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;IAC3C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAE1E,IAAI,GAAG,GAAG,CAAC;QACX,IAAI,IAAI,GAAG,CAAC;AAEZ,QAAA,QAAQ,IAAI,CAAC,QAAQ,EAAE;AACrB,YAAA,KAAK,KAAK;gBACR,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;AAC7C,gBAAA,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC;gBACnE;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;AAC3B,gBAAA,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC;gBACnE;AACF,YAAA,KAAK,MAAM;AACT,gBAAA,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;gBACnE,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC;gBAC9C;AACF,YAAA,KAAK,OAAO;AACV,gBAAA,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC;AACnE,gBAAA,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC;gBAC3B;;AAGJ,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;YACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACtC,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;YAC5D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;AAC9D,QAAA,CAAC,CAAC;IACJ;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;QAC/D,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;IACjE;wGAxHW,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,4dCV5B,8NAOA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,CAAA;;4FDGa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,8NAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA;8PAoBwC,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEVpE,wBAAwB,CAAA;AACjB,IAAA,IAAI;IACb,eAAe,GAAqB,KAAK;IAE1C,WAAW,GAAyC,IAAI;IACxD,WAAW,GAAyC,IAAI;IACxD,YAAY,GAAyC,IAAI;AAEzD,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;IAI/B,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;YACjC,IAAI,CAAC,eAAe,EAAE;QACxB,CAAC,EAAE,GAAG,CAAC;IACT;IAIA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE;AAEjC,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,MAAK;YACjC,IAAI,CAAC,gBAAgB,EAAE;QACzB,CAAC,EAAE,GAAG,CAAC;IACT;IAEQ,eAAe,GAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,eAAe,CAAC;QAC1E,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC;AAC5D,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QAE3D,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE;YACnC;AACF,QAAA,CAAC,CAAC;IACJ;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAC1B;IACF;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QACpD,IAAI,IAAI,CAAC,WAAW;AAAE,YAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;QACpD,IAAI,CAAC,gBAAgB,EAAE;IACzB;wGAvEW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAEE,KAAK;uBAAC,SAAS;;sBACf;;sBASA,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,SAAS;;sBAgBtB,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,UAAU;;;AC3C1B;;;;;AAKG;MAKU,yBAAyB,CAAA;AAC3B,IAAA,WAAW,GAAG,MAAM,EAAC,WAA8C,EAAC;wGADlE,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCRY,mBAAmB,GAAG,IAAI,cAAc,CAAU,qBAAqB;AAEpF;MACa,kBAAkB,GAAG,IAAI,cAAc,CAAS,oBAAoB;MAEpE,0BAA0B,GAAG,IAAI,cAAc,CAAc,4BAA4B;MAEzF,wBAAwB,GAAG,IAAI,cAAc,CAAe,0BAA0B;AAEnG;;;AAGG;MACU,2BAA2B,GAAG,IAAI,cAAc,CAAS,6BAA6B;;ACXnG,MAAM,aAAa,GAAG,CAAC,KAAa,KAAY;AAC9C,IAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,EAAE;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACjC,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AASK,MAAO,YAAa,SAAQ,iBAAiB,CAAA;IAChC,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGjE,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAoB;;AAEzC,IAAA,IAAI,GAAG,KAAK,CAAmB,aAAa,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAElE,IAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAA,gBAAA,EAAmB,IAAI,CAAC,IAAI,EAAE,CAAA,IAAA,CAAM,0EAAC;AAE1D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gFAAC;wGAVpD,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,maClBzB,yNAQA,EAAA,CAAA;;4FDUa,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,IAAA,EACnB;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,QAAA,EAAA,yNAAA,EAAA;;;AEAH;AACO,MAAM,sBAAsB,GAAG;AAC/B,MAAM,sBAAsB,GAAG;AAEtC,MAAM,0BAA0B,GAAG,EAAE;AAErC;;;AAGG;MAWU,2BAA2B,CAAA;;AAE7B,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAU;AAE1B,IAAA,IAAI,GAAG,MAAM,EAAC,UAAuB,EAAC;AACtC,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEpC,IAAA,OAAO;AACP,IAAA,EAAE;IACF,SAAS,GAAG,KAAK;AAEzB,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE;AACrB,YAAA,IAAI,CAAC,EAAE,GAAG,SAAS;AACnB,YAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AAC1B,QAAA,CAAC,CAAC;QAEF,eAAe,CACb,MAAK;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC/B;QACF,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;IACH;AAEA;;;AAGG;AACK,IAAA,qBAAqB,CAAC,OAAe,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE;YAAE;AAE/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,IAAI,OAAO,GAAG,0BAA0B,EAAE;AACxC,gBAAA,qBAAqB,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YACtE;YACA;QACF;QAEA,MAAM,IAAI,GAAG,MAAW;AACtB,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE;AAErC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE;YAChC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,EAAE;YACpE,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,KAAK;AACpE,YAAA,MAAM,GAAG,GAAG,MAAM,KAAK,KAAK;AAC5B,YAAA,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS;YAEtC,MAAM,IAAI,GAAG,MAAM,IAAI,GAAG,GAAG,YAAY,GAAG,cAAc,IAAI,iBAAiB;YAC/E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CACnB,OAAO,EACP,MAAM,GAAG,2BAA2B,GAAG,2BAA2B,CACnE;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,IAAI,CAAC,aAAa,EACvB,YAAY,EACZ,MAAM,GAAG,CAAA,OAAA,EAAU,GAAG,GAAG,WAAW,GAAG,YAAY,CAAA,qBAAA,CAAuB,GAAG,CAAA,QAAA,EAAW,SAAS,CAAA,CAAE,CACpG;AAED,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAChD,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,YAAY,EAAE;gBAC3C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;gBAC7C,eAAe,EAAE,IAAI,CAAC;AACvB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YACvF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC/C;AAEA,QAAA,IAAI,EAAE;AAEN,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;AACvB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,eAAe,EAAE,CAAC,sBAAsB,EAAE,sBAAsB;AACjE,SAAA,CAAC;IACJ;wGA1FW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,GAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,EAAA,cAAA,EAAA,uHAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAVvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EACH,uHAAuH;AACzH,wBAAA,iBAAiB,EAAE,GAAG;AACtB,wBAAA,sBAAsB,EAAE;AACzB;AACF,iBAAA;;;ACvBK,MAAO,cAAe,SAAQ,iBAAiB,CAAA;;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAgB,SAAS,4EAAC;;AAEvC,IAAA,IAAI,GAAG,KAAK,CAAqB,OAAO,2EAAC;;AAEzC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,IAAI,GAAG,KAAK,CAAgC,QAAQ,2EAAC;;IAGrD,OAAO,GAAG,MAAM,EAAc;;AAG9B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,IAAI,GAAG;YACX,+CAA+C;YAC/C,aAAa;YACb,yCAAyC;YACzC,wDAAwD;YACxD,iDAAiD;YACjD,gBAAgB;YAChB;SACD;AAED,QAAA,MAAM,QAAQ,GAAkC;AAC9C,YAAA,OAAO,EACL,qIAAqI;AACvI,YAAA,SAAS,EACP,2IAA2I;AAC7I,YAAA,MAAM,EACJ,iIAAiI;AACnI,YAAA,OAAO,EACL,qIAAqI;AACvI,YAAA,OAAO,EACL,2IAA2I;AAC7I,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,WAAW,GAAkC;AACjD,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,SAAS,EACP,gIAAgI;AAClI,YAAA,MAAM,EACJ,2HAA2H;AAC7H,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,IAAI,EAAE;SACP;;AAGD,QAAA,MAAM,QAAQ,GAAkC;AAC9C,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,SAAS,EACP,iIAAiI;AACnI,YAAA,MAAM,EACJ,4HAA4H;AAC9H,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,OAAO,EACL,gIAAgI;AAClI,YAAA,IAAI,EAAE;SACP;;AAGD,QAAA,MAAM,OAAO,GAAkC;AAC7C,YAAA,OAAO,EAAE,sFAAsF;AAC/F,YAAA,SAAS,EAAE,sFAAsF;AACjG,YAAA,MAAM,EAAE,oFAAoF;AAC5F,YAAA,OAAO,EAAE,sFAAsF;AAC/F,YAAA,OAAO,EAAE,sFAAsF;AAC/F,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,gCAAgC;AACpC,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,kCAAkC;AACtC,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,WAAW,GAAiC;AAChD,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,EAAE,EAAE,gBAAgB;AACpB,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,EAAE,EAAE;SACL;AAED,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAC9G,GAAG,CACJ;AACH,IAAA,CAAC,sFAAC;AAEF,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;wGAhHW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX3B,gNAQA,EAAA,MAAA,EAAA,CAAA,kMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,iBAAiB,EAAA,OAAA,EAClB,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,kMAAA,CAAA,EAAA;;;AEUd,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;;AAE/B,IAAA,IAAI,GAAG,KAAK,CAAsE,MAAM,2EAAC;;AAEzF,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;;AAE9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAGzB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,IAAI,GAAG;YACX,uBAAuB;YACvB,uCAAuC;YACvC,8BAA8B;YAC9B,mEAAmE;YACnE;SACD;AAED,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,kCAAkC;AACtC,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,oCAAoC;AACxC,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC9B,cAAE;cACA,+DAA+D;AAEnE,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,IAAA,CAAC,mFAAC;;AAGM,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK;AACpD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IACpB;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;wGA7EW,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAVb;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,aAAa,CAAC;AAC5C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbH,8jCAkCA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDjBa,aAAa,EAAA,UAAA,EAAA,CAAA;kBAZzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,SAAA,EACf;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,mBAAmB,CAAC;AAC5C,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,8jCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEIG,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;;AAE5C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;;AAE/B,IAAA,IAAI,GAAG,KAAK,CAAS,CAAC,2EAAC;;AAEvB,IAAA,IAAI,GAAG,KAAK,CAAqB,SAAS,2EAAC;;AAE3C,IAAA,SAAS,GAAG,KAAK,CAAqB,SAAS,gFAAC;;AAEhD,IAAA,MAAM,GAAG,KAAK,CAA8C,UAAU,6EAAC;;AAEvE,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;;AAE9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAGzB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,IAAI,GAAG;YACX,uBAAuB;YACvB,uCAAuC;YACvC,8BAA8B;YAC9B,mEAAmE;YACnE;SACD;AAED,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,6CAA6C;AACjD,YAAA,EAAE,EAAE,+CAA+C;AACnD,YAAA,EAAE,EAAE,6CAA6C;AACjD,YAAA,EAAE,EAAE,mDAAmD;AACvD,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,SAAS,GAAgE;AAC7E,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,UAAU,EAAE;SACb;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC9B,cAAE;cACA,+DAA+D;QAEnE,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACxF,IAAA,CAAC,sFAAC;AAEM,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7B;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA8B,CAAC,KAAK;AACvD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IACpB;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE;IAClB;wGAzFW,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAVhB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbH,0uCAoCA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDnBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,SAAA,EAClB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,0uCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEiBG,MAAO,cAAe,SAAQ,iBAAiB,CAAA;AAC3C,IAAA,OAAO,MAAM,GAAG,CAAC;AACR,IAAA,cAAc,GAAG,CAAA,UAAA,EAAa,cAAc,CAAC,MAAM,EAAE,EAAE;AAE/D,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA+B,WAAW,CAAC;;AAGzE,IAAA,OAAO,GAAG,KAAK,CAAoB,MAAM,8EAAC;;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAS,aAAa,kFAAC;;AAE1C,IAAA,SAAS,GAAG,KAAK,CAAS,sBAAsB,gFAAC;;AAEjD,IAAA,QAAQ,GAAG,KAAK,CAAS,oBAAoB,+EAAC;;AAE9C,IAAA,MAAM,GAAG,KAAK,CAAqB,SAAS,6EAAC;;AAE7C,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,gBAAgB,GAAG,KAAK,CAAqB,SAAS,uFAAC;;AAEvD,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAS,OAAO,gFAAC;AAClC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;AAC9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAGhC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;IAGzB,aAAa,GAAG,MAAM,EAAU;;IAEhC,eAAe,GAAG,MAAM,EAAU;AAElC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,aAAa,GAAG,MAAM,CAAW,EAAE,oFAAC;IAErC,SAAS,GAAG,CAAC;AACb,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAE/B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,cAAc,kFAAC;AAE9D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,IAAI,GAAG;YACX,0GAA0G;YAC1G;SACD;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,OAAO,CAAC,GAAG,IAAI,EAAE,iFAAiF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/G;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,OAAO,CAAC,GAAG,IAAI,EAAE,uGAAuG,CAAC,CAAC,IAAI,CAC5H,GAAG,CACJ;QACH;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,OAAO;AACL,gBAAA,GAAG,IAAI;gBACP;AACD,aAAA,CAAC,IAAI,CAAC,GAAG,CAAC;QACb;QACA,OAAO;AACL,YAAA,GAAG,IAAI;YACP,uGAAuG;YACvG;AACD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AACb,IAAA,CAAC,kFAAC;AAEF,IAAA,UAAU,CAAC,GAAkB,EAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B;IACF;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;QACzB,KAAK,EAAE,cAAc,EAAE;QACvB,KAAK,EAAE,eAAe,EAAE;QACxB,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;IACxC;AAEA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;QACvB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AAChD,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B;IACF;AAEA,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;IACzB;AAEA,IAAA,MAAM,CAAC,KAAgB,EAAA;QACrB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK;AACvC,QAAA,IAAI,KAAK,EAAE,MAAM,EAAE;AACjB,YAAA,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9B;IACF;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AACzB,QAAA,IAAI,KAAK,EAAE,MAAM,EAAE;AACjB,YAAA,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAC9B;AACA,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE;IAClB;AAEA,IAAA,KAAK,CAAC,KAAa,EAAA;QACjB,KAAK,EAAE,cAAc,EAAE;QACvB,KAAK,EAAE,eAAe,EAAE;QACxB,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;IAC3C;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,EAAE;IAClB;AAEQ,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACnC,IAAI,GAAG,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI;AAC5B,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AAClD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;AACtC,QAAA,MAAM,QAAQ,GACZ,GAAG,IAAI,IAAI,GAAG;AACZ,cAAE,CAAA,EAAG,CAAC,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA,GAAA;cACnC,GAAG,IAAI;kBACL,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA,GAAA;AAC3B,kBAAE,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ;AACtB,QAAA,OAAO,QAAQ,CAAC,MAAM,KAAK;cACvB,CAAA,2BAAA,EAA8B,QAAQ,CAAA,EAAA;cACtC,GAAG,QAAQ,CAAC,MAAM,CAAA,4BAAA,EAA+B,QAAQ,IAAI;IACnE;IAEQ,MAAM,WAAW,CAAC,QAAkB,EAAA;QAC1C,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACxC,YAAA,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB;QAEA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChC,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;YAC9B;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;AAEhD,QAAA,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;YAE9B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxB;AAAE,QAAA,MAAM;AACN,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACnD;IACF;AAEQ,IAAA,aAAa,CAAC,IAAU,EAAA;QAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,CAAC,MAAM,GAAG,MAAK;AACnB,gBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,gBAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;oBAC9B,OAAO,CAAC,MAAM,CAAC;gBACjB;qBAAO;AACL,oBAAA,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC7C;AACF,YAAA,CAAC;AACD,YAAA,MAAM,CAAC,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AACtE,YAAA,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5B,QAAA,CAAC,CAAC;IACJ;wGA/NW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EAVd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BH,ooGA0FA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvEY,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAW3B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAb1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,SAAA,EAC5B;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,ooGAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;uEAQqE,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEP7E,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;;AAE5C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,MAAM,GAAG,KAAK,CAAS,CAAC,6EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,kFAAC;;AAElC,IAAA,IAAI,GAAG,KAAK,CAAU,KAAK,2EAAC;;AAE5B,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;;AAE9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAS,mBAAmB,gFAAC;;AAE9C,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,mBAAmB,GAAG,KAAK,CAAgB,IAAI,0FAAC;;AAEhD,IAAA,YAAY,GAAG,KAAK,CAAS,eAAe,mFAAC;;AAG7C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;IAGzB,SAAS,GAAG,MAAM,EAAU;AAE5B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAE1B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9D,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAA,CAAC,kFAAC;AAEO,IAAA,SAAS,GAAG,YAAY,CAA+B,UAAU,gFAAC;AAElE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,IAAI,GAAG;YACX,wDAAwD;YACxD,uCAAuC;YACvC,mEAAmE;YACnE;SACD;AAED,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,sCAAsC;AAC1C,YAAA,EAAE,EAAE,0CAA0C;AAC9C,YAAA,EAAE,EAAE,uCAAuC;AAC3C,YAAA,EAAE,EAAE,6CAA6C;AACjD,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC9B,cAAE;cACA,+DAA+D;AAEnE,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,IAAA,CAAC,kFAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,qFAAC;AAElE,IAAA,QAAQ,GAA4B,MAAK,EAAE,CAAC;AAC5C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACrD;AAEA,IAAA,gBAAgB,CAAC,EAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;IAClC;AAEA,IAAA,OAAO,CAAC,KAAa,EAAA;QACnB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE;IAClC;AAEA,IAAA,kBAAkB,CAAC,KAAa,EAAA;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,EAAE;QACtC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK;IAC/C;IAEA,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,GAAG,MAAM;IAC1C;IAEA,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,GAAG,MAAM;IAChD;AAEA,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAC/B,QAAA,OAAO,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI;IACjD;AAEA,IAAA,MAAM,CAAC,KAAa,EAAA;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,oBAAoB;AAC9C,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,OAAA,EAAU,KAAK,EAAE;IACjC;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,IAAI,CAAC,SAAS,EAAE;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM;AAC/B,QAAA,IAAI,KAAK,GAAG,GAAG,EAAE;YACf,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1E;IACF;IAEA,OAAO,CAAC,KAAY,EAAE,KAAa,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;AACA,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAA0B;AAChD,QAAA,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC9B;QACA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE1B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAE3B,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE;AAC5B,YAAA,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9C,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC;QACF;QAEA,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE;AACpB,gBAAA,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;YAC5C;QACF;aAAO;AACL,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE;gBACpB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;YACnD;AAAO,iBAAA,IAAI,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE;AAC7B,gBAAA,CAAC,GAAG,CAAC,GAAG,IAAI;YACd;YACA,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QACrB;AAEA,QAAA,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAEd,cAAc,CAAC,MAAK;YAClB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACnC,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;AAC3B,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;YAC3B;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO,CAAC,KAAqB,EAAE,KAAa,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACxC;QACF;QACA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;AACvD,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACpF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC3B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;AAC7E,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAEnB,QAAA,cAAc,CAAC,MACb,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CACvF;IACH;IAEA,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AAEtB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE;gBACrB,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9E,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACpB,gBAAA,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACjD;iBAAO,IAAI,GAAG,EAAE;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC9E,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;gBACpB,cAAc,CAAC,MAAK;oBAClB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,aAAa;oBACjD,IAAI,EAAE,EAAE;wBACN,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;oBAChC;AACF,gBAAA,CAAC,CAAC;YACJ;YACA;QACF;QAEA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,GAAG,CAAC,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3B;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE;YACxD,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QAC3B;IACF;AAEQ,IAAA,MAAM,CAAC,MAAc,EAAA;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;AAChD,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7B;IACF;AAEQ,IAAA,iBAAiB,CAAC,CAAS,EAAA;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AACf,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC1B;QACA,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;IACxB;AAEQ,IAAA,SAAS,CAAC,KAAa,EAAA;QAC7B,cAAc,CAAC,MAAK;AAClB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa;YACrC,EAAE,EAAE,KAAK,EAAE;YACX,EAAE,EAAE,MAAM,EAAE;AACd,QAAA,CAAC,CAAC;IACJ;wGAvPW,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAVhB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvBH,4yDAgDA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDrBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,SAAA,EACnB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,4yDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;2/CA6C+D,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnDtE,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;;AAE5C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;;AAE/B,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;;AAIhC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;;AAG/B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,mFAAC;;AAGM,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO;AACtD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE;IAClB;wGApDW,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAVhB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbH,29DAmDA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;4FDlCa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,SAAA,EAClB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,29DAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;AEIG,MAAO,kBAAgC,SAAQ,iBAAiB,CAAA;;AAE3D,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;IAE7B,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;;AAEtB,IAAA,OAAO,GAAG,KAAK,CAA2B,EAAE,8EAAC;;AAE7C,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,WAAW,GAAG,KAAK,CAA4B,UAAU,kFAAC;;AAG1D,IAAA,KAAK,GAAG,KAAK,CAAW,IAAI,4EAAC;;AAG7B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,qFAAC;;AAGO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,aAAa;AACjB,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC7B,IAAA,CAAC,mFAAC;;AAGM,IAAA,QAAQ,GAAuB,MAAK,EAAE,CAAC;AACvC,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAQ,EAAA;QACjB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;IAC/B;AAEA,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,aAAa,CAAC,WAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1B,IAAI,CAAC,SAAS,EAAE;IAClB;wGApEW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAVlB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC;AACjD,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbH,q3DA4CA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FD3Ba,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,SAAA,EACrB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC;AACjD,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,q3DAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEoBG,MAAO,cAA4B,SAAQ,iBAAiB,CAAA;AAC/C,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC9B,IAAA,KAAK,GAAG,MAAM,EAAC,UAAuB,EAAC;AACvC,IAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAuB,eAAe,CAAC;IAElF,UAAU,GAAsB,IAAI;IACpC,UAAU,GAAwB,IAAI;;AAGrC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;;AAE/B,IAAA,OAAO,GAAG,KAAK,CAAsB,EAAE,8EAAC;;AAExC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,iFAAC;;AAE9B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,+EAAC;;AAGvB,IAAA,KAAK,GAAG,KAAK,CAAiB,IAAI,4EAAC;;AAGnC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;;AAGtB,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,kFAAC;;AAGxB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,IAAI;AAChC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,IAAI;QAC9C,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;AAC7E,IAAA,CAAC,qFAAC;;AAGO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,OAAO,EAAE;AAC/B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACrC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;AACxF,IAAA,CAAC,sFAAC;;AAGO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,kCAAkC;AACtC,YAAA,EAAE,EAAE,8BAA8B;AAClC,YAAA,EAAE,EAAE,oCAAoC;AACxC,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;AAC9B,cAAE;cACA,8CAA8C;AAElD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,GAAG,cAAc;QAE/D,OAAO;YACL,4EAA4E;YAC5E,MAAM;YACN,+BAA+B;YAC/B,mEAAmE;YACnE,8EAA8E;AAC9E,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB;AACD,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AACb,IAAA,CAAC,qFAAC;IAEM,iBAAiB,CAAC,CAAU,EAAE,CAAU,EAAA;QAC9C,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB;;AAGA,IAAA,gBAAgB,CAAC,MAAyB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACrC,YAAA,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACjE;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;QAC/C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD;;IAGA,aAAa,CAAC,KAAa,EAAE,MAAyB,EAAA;QACpD,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK;AAC7C,QAAA,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ;QAEpC,OAAO;YACL,gFAAgF;YAChF;AACE,kBAAE;AACF,kBAAE;AACA,sBAAE;AACF,sBAAE;AACA,0BAAE;AACF,0BAAE;AACT,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;IACb;;AAGQ,IAAA,QAAQ,GAAoC,MAAK,EAAE,CAAC;AACpD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAiC,EAAA;AAC1C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,KAAK,IAAI,IAAI;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;;gBAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7D;aAAO;AACL,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;gBACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;QACpC;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAmC,EAAA;AAClD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,EAAE;IACtB;IAEQ,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,UAAU;YAAE;AAErB,QAAA,MAAM,OAAO,GACV,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,yBAAyB,CAAiB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;AAEhH,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,QAAQ;aACR,mBAAmB,CAAC,OAAO;AAC3B,aAAA,aAAa,CAAC;;AAEb,YAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;;AAE3E,YAAA,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;SAC1E;aACA,sBAAsB,CAAC,KAAK;aAC5B,QAAQ,CAAC,KAAK,CAAC;QAElB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACrD,KAAK,EAAE,OAAO,CAAC,WAAW;AAC1B,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;AACjE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAE9B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,YAAY,EAAE;;QAGpC,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,SAAS,CAAe,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,IAAG;AACjF,YAAA,MAAM,CAAC,GAAG,EAAE,CAAC,MAAc;AAC3B,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE;YAC9D,IAAI,CAAC,aAAa,EAAE;QACtB,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,SAAS,CAAgB,QAAQ,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,IAAG;AAC3D,YAAA,IAAI,EAAE,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACvB,EAAE,CAAC,cAAc,EAAE;gBACnB,IAAI,CAAC,aAAa,EAAE;YACtB;QACF,CAAC,CAAC,CACH;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAErB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAC3B,QAAA,IAAI,OAAO,GAAG,CAAC,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACrC,YAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACpF;aAAO;AACL,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAClC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnE;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;IACnD;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1B;IAEA,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,aAAa,EAAE;QACtB;aAAO;YACL,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;AAEA,IAAA,YAAY,CAAC,MAAyB,EAAA;QACpC,IAAI,MAAM,CAAC,QAAQ;YAAE;AACrB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;YAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7E,IAAI,GAAG,IAAI,CAAC;AAAE,gBAAA,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;;AAC/B,gBAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACtB,IAAI,CAAC,SAAS,EAAE;YAChB;QACF;AACA,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;AAE3B,QAAA,QAAQ,KAAK,CAAC,GAAG;YACf,KAAK,WAAW,EAAE;gBAChB,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,YAAY,EAAE;oBACnB;gBACF;gBACA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;gBACjC,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ;AAAE,oBAAA,IAAI,EAAE;AACxD,gBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;AAAE,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBAClD;YACF;YACA,KAAK,SAAS,EAAE;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,YAAY,EAAE;oBACnB;gBACF;gBACA,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;gBACjC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ;AAAE,oBAAA,IAAI,EAAE;gBAC/C,IAAI,IAAI,IAAI,CAAC;AAAE,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;gBACzC;YACF;AACA,YAAA,KAAK,OAAO;YACZ,KAAK,GAAG,EAAE;gBACR,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;oBAClB,IAAI,CAAC,YAAY,EAAE;oBACnB;gBACF;AACA,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;gBACjC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;oBACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC;gBACA;YACF;AACA,YAAA,KAAK,QAAQ;YACb,KAAK,KAAK,EAAE;gBACV,IAAI,CAAC,aAAa,EAAE;gBACpB;YACF;;IAEJ;wGAxSW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAVd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7BH,upHAmGA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDlEa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,SAAA,EAChB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,upHAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;2EAQyE,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEpBrF,MAAO,cAAe,SAAQ,iBAAiB,CAAA;;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAGhC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;;AAG/B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;;AAG1B,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,IAAI,GAAG;YACX,4CAA4C;YAC5C,6BAA6B;YAC7B,4CAA4C;YAC5C,0FAA0F;YAC1F;SACD;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,gBAAgB,GAAG,gBAAgB;AAEvE,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9D,IAAA,CAAC,mFAAC;;AAGO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;QAC3B,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAqB,EAAE;QACzD;AACA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE;AACrB,QAAA,IAAI,EAAE,IAAI,GAAG,EAAE;YACb,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA,EAAG,GAAG,CAAA,MAAA,CAAQ,EAAE;QACpD;QACA,IAAI,EAAE,EAAE;YACN,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;QACxC;QACA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE;AAC9C,IAAA,CAAC,iFAAC;;AAGO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiE;YAC5E,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE;YACtD,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE;YACtD,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE;YACtD,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE;YACtD,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe;SACrD;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAEnC,QAAA,MAAM,IAAI,GAAG;YACX,+CAA+C;YAC/C,oBAAoB;YACpB;SACD;AAED,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,WAAW,GAAG,eAAe;AAE5E,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1D,IAAA,CAAC,mFAAC;;AAGM,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;IAEA,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE;IAClB;wGAvGW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAVd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbH,mnBAmBA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;4FDFa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,SAAA,EAChB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,mnBAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;AEJG,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,OAAO,GAAG,KAAK,CAA2C,SAAS,8EAAC;;AAEpE,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,GAAG,GAAG,KAAK,CAAU,KAAK,0EAAC;;AAE3B,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;;AAE/B,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAE7B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,IAAI,GAAG,CAAC,4CAA4C,EAAE,cAAc,CAAC;AAE3E,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,MAAM,EAAE,+BAA+B;AACvC,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,2BAA2B;AAC/B,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,EAAE,EAAE,qBAAqB;AACzB,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,YAAY;AAE5D,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9G,IAAA,CAAC,sFAAC;wGAnCS,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,otBCT1B,4LAMA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;4FDGa,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;AEOtB,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;;IAG/B,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgC;;AAG5C,IAAA,QAAQ,GAAG,KAAK,CAAmB,IAAI,+EAAC;AAExC,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,KAAK,GAAqC;AAC9C,YAAA,EAAE,EAAE,oDAAoD;AACxD,YAAA,EAAE,EAAE,wDAAwD;AAC5D,YAAA,EAAE,EAAE,uDAAuD;AAC3D,YAAA,EAAE,EAAE,sCAAsC;AAC1C,YAAA,EAAE,EAAE,wCAAwC;AAC5C,YAAA,EAAE,EAAE;SACL;QACD,MAAM,MAAM,GAAG,wCAAwC;AACvD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,IAAI,GAAG,CAAA,EAAG,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC,IAAI,EAAE;AAC7C,QAAA,OAAO,KAAK,GAAG,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC,IAAI,EAAE,GAAG,IAAI;AACjD,IAAA,CAAC,qFAAC;AAEO,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,IAAI,GAAqC;AAC7C,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC;AAClB,IAAA,CAAC,+EAAC;wGArCS,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ1B,yiCAuCA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/BY,gBAAgB,oJAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAI7B,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,yiCAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AEArC,MAAO,YAAa,SAAQ,iBAAiB,CAAA;;AAExC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;;AAEjC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;wGAV9B,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,0vBCRzB,46BA4BA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDpBa,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,46BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEKrB,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,QAAQ,GAAG,KAAK,CAAmB,MAAM,+EAAC;;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,kFAAC;;AAEnC,IAAA,QAAQ,GAAG,KAAK,CAAU,IAAI,+EAAC;;IAG/B,SAAS,GAAG,MAAM,EAAQ;;AAG1B,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AAEzB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACvC,MAAM,IAAI,GAAG,2BAA2B;AAExC,QAAA,MAAM,UAAU,GAAqC;AACnD,YAAA,OAAO,EAAE,mDAAmD;AAC5D,YAAA,OAAO,EAAE,mDAAmD;AAC5D,YAAA,MAAM,EAAE,gDAAgD;AACxD,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,YAAY,GAAG,QAAQ;AAE7D,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAA,EAAI,WAAW,EAAE;AAChE,IAAA,CAAC,sFAAC;IAEF,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;wGAlCW,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,spBCT1B,oxGAiEA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDxDa,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,oxGAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEItB,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;;AAE3C,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,KAAK,GAAG,KAAK,CAAgB,SAAS,4EAAC;;AAEvC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,SAAS,GAAG,KAAK,CAAS,SAAS,gFAAC;;AAEpC,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,kFAAC;AAE5D,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;QACxC,MAAM,IAAI,GAAG,gCAAgC;AAC7C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,GAAG,UAAU,GAAG,EAAE;AAClE,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,EAAE;AAC5B,IAAA,CAAC,uFAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,QAAQ,GAAkC;AAC9C,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,SAAS,EAAE,oBAAoB;AAC/B,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,MAAM,EAAE,iBAAiB;AACzB,YAAA,IAAI,EAAE;SACP;AAED,QAAA,OAAO,wBAAwB,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE;AACjF,IAAA,CAAC,qFAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE;SACL;AAED,QAAA,OAAO,CAAA,EAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,KAAK,EAAE,cAAc;AAC9D,IAAA,CAAC,mFAAC;wGAjDS,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,kuBCT5B,imBAaA,EAAA,MAAA,EAAA,CAAA,8KAAA,CAAA,EAAA,CAAA;;4FDJa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,imBAAA,EAAA,MAAA,EAAA,CAAA,8KAAA,CAAA,EAAA;;;AEIxB,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,sFAAC;;AAEtC,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,sFAAC;;AAEtC,IAAA,aAAa,GAAG,KAAK,CAAU,IAAI,oFAAC;;AAGpC,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;;AAEtB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;;IAGzB,OAAO,GAAG,MAAM,EAAQ;AAEhB,IAAA,UAAU,GAAG,SAAS,CAAa,YAAY,iFAAC;AAExD,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,IAAI,GAAG,CAAC,yCAAyC,EAAE,8CAA8C,CAAC;AAExG,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE;SACL;AAED,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,uBAAuB,GAAG,oBAAoB;AAEnF,QAAA,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7D,IAAA,CAAC,mFAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACjB,qBAAqB,CAAC,MAAK;AACzB,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;oBACxB,IAAI,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;AAC3C,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;;IAGA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB;;IAGA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB,CAAC,EAAE,GAAG,CAAC;IACT;wGA5DW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,yzBCT1B,w/DAiDA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FDxCa,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,w/DAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;mjBAsB0B,YAAY,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEnB5D,MAAO,WAAY,SAAQ,iBAAiB,CAAA;;AAEvC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;;AAEhC,IAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;;AAExB,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;wGARtB,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,wdCRxB,yIAKA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDGa,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,yIAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEKpB,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;;AAE5C,IAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;;AAE7B,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;;AAGlC,IAAA,WAAW,GAAG,KAAK,CAAS,CAAC,kFAAC;;AAG9B,IAAA,IAAI,GAAG,eAAe,CAAC,WAAW,2EAAC;AAE5C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;YAC9B,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC1D,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7B;wGAvBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAUK,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB7C,ujDAkCA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDzBa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,oBAAoB,EAAA,QAAA,EAAA,ujDAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;odAcE,WAAW,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEVvC,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;;AAE/C,IAAA,KAAK,GAAG,KAAK,CAAS,CAAC,4EAAC;;AAExB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;;AAEhC,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;;AAEhC,IAAA,OAAO,GAAG,KAAK,CAA+B,SAAS,8EAAC;;AAExD,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,oFAAC;;AAErC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;IAE/B,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEvE,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,OAAO,GAAiC;AAC5C,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE;SACL;QAED,OAAO,CAAA,mDAAA,EAAsD,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA,CAAE;AACrF,IAAA,CAAC,mFAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,IAAI,EAAE;SACP;AAED,QAAA,MAAM,IAAI,GAAG;YACX,0DAA0D;YAC1D,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC,SAAS;SACnD;AAED,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,iCAAiC,CAAC;QAC9C;AAEA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,IAAI,CAAC,qFAAqF,CAAC;QAClG;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,IAAA,CAAC,iFAAC;wGAvDS,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,6mCCThC,8sBAsBA,EAAA,MAAA,EAAA,CAAA,sOAAA,CAAA,EAAA,CAAA;;4FDba,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,8sBAAA,EAAA,MAAA,EAAA,CAAA,sOAAA,CAAA,EAAA;;;AESnC;AACA,MAAM,kBAAkB,GAAG,GAAG;AAOxB,MAAO,YAAa,SAAQ,iBAAiB,CAAA;AACzC,IAAA,cAAc;IACd,QAAQ,GAAuB,IAAI;IAE1B,kBAAkB,GAAG,MAAW;AAC/C,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,mBAAmB,EAAE;QAC5B;AACF,IAAA,CAAC;AAEQ,IAAA,KAAK,GAAG,KAAK,CAAqB,EAAE,4EAAC;AACrC,IAAA,KAAK,GAAG,KAAK,CAAmB,MAAM,4EAAC;IAEvC,QAAQ,GAAG,MAAM,EAAoB;AAErC,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;;AAGtB,IAAA,WAAW,GAAG,MAAM,CAKnB,IAAI,kFAAC;AAEE,IAAA,QAAQ,GAAG,SAAS,CAA0B,OAAO,+EAAC;IAEvE,QAAQ,GAAA;QACN,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC;IACpE;IAEA,WAAW,GAAA;QACT,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC;AACrE,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;AAC/B,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;QACnC;IACF;AAEA;;;;;;AAMG;AACH,IAAA,IAAI,CAAC,MAA4B,EAAA;AAC/B,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC1B;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;AACA,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB;QACF;QACA,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,MAAM,CAAC,MAA4B,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;AACA,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAC1B;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;QACF;QACA,IAAI,CAAC,YAAY,EAAE;IACrB;AAEQ,IAAA,WAAW,CAAC,MAA2B,EAAA;AAC7C,QAAA,IAAI,MAAM,YAAY,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;YACtB;QACF;AACA,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa;AACnC,QAAA,IAAI,MAAM,YAAY,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;QACxB;IACF;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;AAC/B,YAAA,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC;QACnC;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,MAAK;AACpC,YAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,mBAAmB,EAAE;YAC1B,qBAAqB,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzD,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ;QAC5B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B;QACF;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;QAC9C,MAAM,MAAM,GAAG;AACb,cAAE,IAAI,CAAC,kCAAkC,CAAC,OAAO;AACjD,cAAE,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC;AACnD,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,qBAAqB,EAAE;AAC7C,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;AAC3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG;AACpC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,GAAG;AACH,gBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;gBAChC;AACD,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,GAAG;AACH,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;gBAC7B;AACD,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,UAAU,CAAC,IAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAGA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB;QACF;QACA,IAAI,CAAC,KAAK,EAAE;IACd;AAGA,IAAA,eAAe,CAAC,KAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB;QACF;AACA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,IAAI,CAAC,MAAM,EAAE;YACX;QACF;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;QAC9C,MAAM,OAAO,GAAG,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK;AAClD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK;AACzD,QAAA,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;IAGA,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,mBAAmB,EAAE;QAC5B;IACF;;AAGQ,IAAA,2BAA2B,CAAC,EAAe,EAAA;AACjD,QAAA,MAAM,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,EAAE;AACzC,YAAA,OAAO,IAAI;QACb;QACA,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE;AAC7C,YAAA,OAAO,IAAI;QACb;QACA,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE;AACnC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO;AACzB,QAAA,IAAI,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC3E,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,kCAAkC,CAAC,IAAiB,EAAA;AAC1D,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE;AACvD,YAAA,IAAI,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE;AACvC,gBAAA,OAAO,CAAC;YACV;QACF;QACA,OAAO,QAAQ,CAAC,eAAe;IACjC;wGAlMW,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,8oBCtBzB,47BAyBA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FDHa,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,47BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;+SA6BsC,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA;sBA+GrE,YAAY;uBAAC,yBAAyB;;sBAQtC,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;sBAiBzC,YAAY;uBAAC,eAAe;;;AE9KzB,MAAO,cAAe,SAAQ,iBAAiB,CAAA;;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;;AAEzB,IAAA,QAAQ,GAAG,KAAK,CAAmB,OAAO,+EAAC;;AAE3C,IAAA,KAAK,GAAG,KAAK,CAAS,UAAU,4EAAC;;AAEjC,IAAA,eAAe,GAAG,KAAK,CAAU,IAAI,sFAAC;;AAGtC,IAAA,MAAM,GAAG,MAAM,CAAC,KAAK,6EAAC;;AAEtB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;;IAGzB,OAAO,GAAG,MAAM,EAAQ;AAExB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,IAAI,GAAG;YACX,+BAA+B;YAC/B,0CAA0C;YAC1C,+CAA+C;YAC/C,IAAI,CAAC,KAAK;SACX;AAED,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE3B,QAAA,IAAI,GAAG,KAAK,OAAO,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,eAAe,GAAG,kBAAkB,CAAC;QACpE;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,eAAe,GAAG,mBAAmB,CAAC;QACrE;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,IAAA,CAAC,mFAAC;IAEF,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACrB,qBAAqB,CAAC,MAAK;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,CAAC,CAAC;IACJ;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB,CAAC,EAAE,GAAG,CAAC;IACT;wGApDW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,spBCT3B,88CAqCA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FD5Ba,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,88CAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AESvB,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AAC9C,IAAA,KAAK,GAAG,KAAK,CAA2B,EAAE,4EAAC;AAC3C,IAAA,SAAS,GAAG,KAAK,CAAS,GAAG,gFAAC;AAC9B,IAAA,SAAS,GAAG,KAAK,CAAS,YAAY,gFAAC;wGAHrC,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd/B,4xCAkCA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzBY,UAAU,oOAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKvB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,UAAU,EAAE,YAAY,CAAC,YACzB,qBAAqB,EAAA,QAAA,EAAA,4xCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEC3B,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;IACtC,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE3F,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAA4B;AACvD,IAAA,QAAQ,GAAG,KAAK,CAAyB,EAAE,+EAAC;AAC5C,IAAA,WAAW,GAAG,KAAK,CAA4B,CAAC,kFAAC;AACjD,IAAA,SAAS,GAAG,KAAK,CAA0B,YAAY,gFAAC;;IAExD,OAAO,GAAG,KAAK,CAAwB,IAAI,CAAC,yBAAyB,IAAI,kCAAkC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IAE5G,YAAY,GAAG,MAAM,EAAU;IAE/B,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3E,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACvD,IAAA,CAAC,mFAAC;AAEO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;QAC/B,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AAC5G,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;AAC5D,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC;QACjE,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE;AACnC,aAAA,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,EAAE;aAC/B,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzC,IAAA,CAAC,kFAAC;AAEF,IAAA,QAAQ,CAAC,IAAY,EAAA;QACnB,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B;IACF;wGAnCW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,k1BCX/B,+nEAkDA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDvCa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,qBAAqB,EAAA,QAAA,EAAA,+nEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEE3B,MAAO,WAAY,SAAQ,iBAAiB,CAAA;AACvC,IAAA,OAAO,GAAG,KAAK,CAA2C,SAAS,8EAAC;AAEpE,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,OAAO,EAAE,2BAA2B;AACpC,YAAA,OAAO,EAAE,iCAAiC;AAC1C,YAAA,MAAM,EAAE,0BAA0B;AAClC,YAAA,IAAI,EAAE;SACP;QACD,OAAO,CAAA,gGAAA,EAAmG,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;AACxI,IAAA,CAAC,sFAAC;wGAbS,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,yOCTxB,6DACA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,CAAA;;4FDQa,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,6DAAA,EAAA,MAAA,EAAA,CAAA,+BAAA,CAAA,EAAA;;;AEcpB,MAAO,aAAc,SAAQ,iBAAiB,CAAA;IACjC,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE3F,IAAA,IAAI,GAAG,KAAK,CAAQ,EAAE,2EAAC;AACvB,IAAA,UAAU,GAAG,KAAK,CAAU,KAAK,iFAAC;AAClC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;AAC/B,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,8EAAC;AAC/B,IAAA,YAAY,GAAG,KAAK,CAAS,mBAAmB,mFAAC;;AAEjD,IAAA,YAAY,GAAG,KAAK,CAAS,CAAC,mFAAC;AAE/B,IAAA,SAAS,GAAG,KAAK,CAAU,IAAI,gFAAC;IAChC,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAc;AAChC,IAAA,iBAAiB,GAAG,QAAQ,CACnC,MAAM,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,IAAI,IAAI,CAAC,yBAAyB,IAAI,kCAAkC,wFACzG;IAEQ,YAAY,GAAG,MAAM,EAA8C;IACnE,iBAAiB,GAAG,MAAM,EAAe;AAEzC,IAAA,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAEvE,UAAU,CAAC,GAA4B,EAAE,KAAa,EAAA;QACpD,OAAO;AACL,YAAA,SAAS,EAAE,GAAG;YACd,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC;YAC7C,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACxC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;YAC7B,SAAS,EAAE,MAAK;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAAE;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC7B;SACD;IACH;AAES,IAAA,OAAO,GAAG,MAAM,CAAS,EAAE,8EAAC;AAC5B,IAAA,OAAO,GAAG,MAAM,CAAiB,KAAK,8EAAC;AACvC,IAAA,YAAY,GAAG,MAAM,CAAc,IAAI,GAAG,EAAE,mFAAC;AAC7C,IAAA,WAAW,GAAG,MAAM,CAAS,CAAC,kFAAC;AAExC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,WAAW;YAChD,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE;AACvC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;IACJ;AAES,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;QAClC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;QAC1B,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACjB,gBAAA,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EACf,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;AACb,gBAAA,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;AACvC,gBAAA,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;gBACvC,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gBACnF,OAAO,GAAG,GAAG,GAAG;AAClB,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,iFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAAE,YAAA,OAAO,IAAI;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,IAAI,EAAE;AAC9C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAC/B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;AACnD,IAAA,CAAC,oFAAC;AAEF,IAAA,IAAI,CAAC,GAAW,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC;QAC1D;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5E;AAEA,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAG;AAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACvB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAClC,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAClD;AAGU,IAAA,eAAe,CAAC,EAAS,EAAA;AACjC,QAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAChC;AAGU,IAAA,iBAAiB,CAAC,EAAiB,EAAA;QAC3C,IAAI,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG;YAAE;AAC1C,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,MAA4B;AAC9C,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,sBAAsB,CAAC;YAAE;AAChD,QAAA,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG;YAAE,EAAE,CAAC,cAAc,EAAE;AACvC,QAAA,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAChC;AAEQ,IAAA,qBAAqB,CAAC,EAAS,EAAA;AACrC,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,aAA4B;AAC5C,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,MAA4B;QAC9C,MAAM,MAAM,GAAG,MAAM,EAAE,OAAO,GAAG,sBAAsB,CAAuB;QAC9E,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE;AACvC,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,IAAI;YAAE;QAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC;AAChD,QAAA,IAAI,GAAG;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACzB;wGAvHW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,g7CAoBqB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvCxE,msDAwCA,EAAA,MAAA,EAAA,CAAA,igBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7BY,gBAAgB,oJAAE,kBAAkB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAQnC,aAAa,EAAA,UAAA,EAAA,CAAA;kBAVzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,WACjB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAA,IAAA,EAGzC;AACJ,wBAAA,yBAAyB,EAAE,WAAW;AACtC,wBAAA,yBAAyB,EAAE;AAC5B,qBAAA,EAAA,QAAA,EAAA,msDAAA,EAAA,MAAA,EAAA,CAAA,igBAAA,CAAA,EAAA;4gCAsB4C,yBAAyB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA;sBA6ErE,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAKhC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AEjHrC,MAAMA,MAAI,GAAgH;AACxH,IAAA,EAAE,EAAE;QACF,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;AAC1I,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,EAAE,EAAE;QACF,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;AAClI,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,WAAW,EAAE;AACd;CACF;AAQK,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AACtC,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,IAAI,GAAS,MAAM,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI;AAEzE,IAAA,IAAI,GAAGA,MAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,IAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ;AAEvC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,kFAAC;AAClD,IAAA,MAAM,GAAG,KAAK,CAAS,YAAY,6EAAC;AAEpC,IAAA,KAAK,GAAG,KAAK,CAAc,IAAI,4EAAC;;AAEhC,IAAA,KAAK,GAAG,MAAM,CAAc,IAAI,4EAAC;AAEjC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;IAC5B,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IACzC,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3C,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAA,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW;AAC9C,IAAA,CAAC,2FAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE;AACjB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI;YACF,OAAO,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;QACnE;AAAE,QAAA,MAAM;YACN,OAAO,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC;QACpC;AACF,IAAA,CAAC,mFAAC;IAEO,cAAc,GAAG,QAAQ,CAAC,MACjC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC3D;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;QAC/C,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;QAC7C,MAAM,IAAI,GAAa,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,mFAAC;AAEM,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,CAAc,EAAA;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;YAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC;IACF;IAEA,gBAAgB,CAAC,EAA4B,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IAC3E,iBAAiB,CAAC,EAAc,EAAA,EAAU,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AAC/D,IAAA,gBAAgB,CAAC,CAAU,EAAA,EAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7D,cAAc,GAAA;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE;YACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACtC;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE;aACnF;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE;IAC5C;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE;aACnF;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE;IAC5C;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;QACnB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;IAClE;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,KAAK;QACpB,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG;IACxG;AAEA,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;QACpB,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG;IACxG;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;QACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7B;AAGA,IAAA,qBAAqB,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE;AAC1B,QAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM;AACtB,QAAA,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE;AAC9D,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;AAGA,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QACpC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAAE;QACpD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B;wGAhIW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EAJlB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3B7G,k4JA4GA,EAAA,MAAA,EAAA,CAAA,0CAAA,CAAA,EAAA,CAAA;;4FD7Ea,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,sBAAsB,EAAA,SAAA,EACrB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAAA,k4JAAA,EAAA,MAAA,EAAA,CAAA,0CAAA,CAAA,EAAA;;sBAuH1G,YAAY;uBAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;;sBAQ/C,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;;AElJ9C,MAAMA,MAAI,GAAsE;AAC9E,IAAA,EAAE,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE;AACrE,IAAA,EAAE,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO;CAC7D;AASK,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;AACtC,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,IAAI,GAAS,MAAM,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI;AAEzE,IAAA,IAAI,GAAGA,MAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACtB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAE3D,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AACzB,IAAA,KAAK,GAAG,MAAM,CAAmB,IAAI,4EAAC;IAEtC,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE5C,IAAA,QAAQ,GAAwB,MAAK,EAAE,CAAC;AACxC,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,CAAS,EAAA;QAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB;AACA,IAAA,gBAAgB,CAAC,EAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AACA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AACA,IAAA,gBAAgB,CAAC,CAAU,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE;QACjC,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBACb,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE;gBACvD,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU;AACxD,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,IAAI,CAAC,CAAC;YAAE;AACR,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACnF,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;IAC5D;AAEA,IAAA,YAAY,CAAC,CAAQ,EAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAE,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9E;AAEA,IAAA,cAAc,CAAC,CAAQ,EAAA;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAE,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9E;AAGA,IAAA,qBAAqB,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;AACvB,QAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM;AACtB,QAAA,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;AAGA,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QACpC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;QACjD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;wGAvFW,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EAJlB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB7G,q+GAuEA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDnDa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;+BACE,sBAAsB,EAAA,OAAA,EACvB,EAAE,EAAA,SAAA,EACA,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,kBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAAA,q+GAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBA8E1G,YAAY;uBAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;;sBAQ/C,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;;AE9F9C,MAAM,IAAI,GAA8H;AACtI,IAAA,EAAE,EAAE;QACF,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;AAC1I,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,QAAA,IAAI,EAAE,KAAK;AACX,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,WAAW,EAAE;AACd,KAAA;AACD,IAAA,EAAE,EAAE;QACF,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;AAClI,QAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACpD,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,WAAW,EAAE;AACd;CACF;AASK,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAC1C,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,IAAI,GAAS,MAAM,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI;AAEzE,IAAA,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,IAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ;IAC7B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAE3D,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,WAAW,GAAG,KAAK,CAAqB,SAAS,kFAAC;;AAElD,IAAA,MAAM,GAAG,KAAK,CAAS,kBAAkB,6EAAC;AAE1C,IAAA,QAAQ,GAAG,MAAM,CAAc,IAAI,+EAAC;AACpC,IAAA,KAAK,GAAG,MAAM,CAAc,IAAI,4EAAC;AACjC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;IACzB,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;IACzC,QAAQ,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAE3C,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAA,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW;AAC9C,IAAA,CAAC,2FAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE;;;;AAIjB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI;YACF,OAAO,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;QACnE;AAAE,QAAA,MAAM;YACN,OAAO,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC;QACpC;AACF,IAAA,CAAC,mFAAC;IAEO,cAAc,GAAG,QAAQ,CAAC,MACjC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAC3D;AAEQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;QAC/C,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;QAC7C,MAAM,IAAI,GAAa,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,mFAAC;AAEM,IAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAExC,IAAA,UAAU,CAAC,CAA0B,EAAA;AACnC,QAAA,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;AACtE,QAAA,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE;QAC3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IACtC;IAEA,gBAAgB,CAAC,EAA4B,EAAA,EAAU,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IAC3E,iBAAiB,CAAC,EAAc,EAAA,EAAU,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;AAC/D,IAAA,gBAAgB,CAAC,QAAiB,EAAA,EAAU,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE3E,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,UAAU,EAAE;YAAE;AACvB,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE;QACjC,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;YACzB,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;AACvD,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACtC;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE;aACnF;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE;IAC5C;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE;aACnF;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE;IAC5C;AAEA,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtH;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;AACtB,QAAA,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG;IAC/G;AAEA,IAAA,OAAO,CAAC,GAAW,EAAA;AACjB,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;QACpB,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG;IACxG;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE;QACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACnB;AAEA,IAAA,YAAY,CAAC,CAAQ,EAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,MAAM,CAAC,GAAG,MAAM,CAAE,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC;AACvD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG;AAEA,IAAA,cAAc,CAAC,CAAQ,EAAA;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG;YAAE;QACV,MAAM,GAAG,GAAG,MAAM,CAAE,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC;AACzD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvG;IAEQ,QAAQ,GAAA;AACd,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;AACpB,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACjG;AAEQ,IAAA,SAAS,CAAC,CAAc,EAAA;QAC9B,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE;IAClB;AAGA,IAAA,qBAAqB,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;AACvB,QAAA,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM;AACtB,QAAA,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE;AAC9D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;AAGA,IAAA,iBAAiB,CAAC,KAAoB,EAAA;QACpC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAAE;QACjD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC3B;wGA9JW,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,SAAA,EAJtB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BjH,s8MAkIA,EAAA,MAAA,EAAA,CAAA,2DAAA,CAAA,EAAA,CAAA;;4FDhGa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;+BACE,0BAA0B,EAAA,OAAA,EAC3B,EAAE,EAAA,SAAA,EACA,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,sBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAAA,s8MAAA,EAAA,MAAA,EAAA,CAAA,2DAAA,CAAA,EAAA;;sBAqJ9G,YAAY;uBAAC,sBAAsB,EAAE,CAAC,QAAQ,CAAC;;sBAQ/C,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;;AEnLxC,MAAO,YAAa,SAAQ,iBAAiB,CAAA;AACxC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AACzB,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,+EAAC;wGALtB,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,8eCRzB,qEAGA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDKa,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEKrB,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;AAC3C,IAAA,WAAW,GAAG,KAAK,CAAS,CAAC,kFAAC;AAC9B,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,6EAAC;AAE9B,IAAA,KAAK,GAAG,eAAe,CAAC,YAAY,4EAAC;AAE9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;YAC9B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AACvD,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACjD,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;IACF;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAA,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE;wGA/BW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAIO,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb/C,qkEAkDA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDzCa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,qkEAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;2WAQK,YAAY,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEHzC,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AACjD,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;AAChC,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;IAE1B,QAAQ,GAAG,MAAM,EAAQ;IAElC,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QACtB;IACF;wGAZW,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVlC,kiCAyBA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDpBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;8BACC,CAAC,YAAY,CAAC,EAAA,QAAA,EACb,yBAAyB,EAAA,QAAA,EAAA,kiCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEK/B,MAAO,iBAAkB,SAAQ,iBAAiB,CAAA;AAC7C,IAAA,KAAK,GAAG,eAAe,CAAC,qBAAqB,4EAAC;wGAD5C,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EACK,qBAAqB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZxD,uLAMA,+EDAY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;8BACC,CAAC,YAAY,CAAC,EAAA,QAAA,EACb,oBAAoB,EAAA,QAAA,EAAA,uLAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;6FAKG,qBAAqB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEZ3C,gBAAgB,CAAA;AACnB,IAAA,QAAQ;AACR,IAAA,OAAO;;AAGf,IAAA,KAAK,CAAC,OAAmB,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;IACzB;;AAGA,IAAA,KAAK,CAAC,MAAU,EAAA;AACd,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;QACrB,IAAI,CAAC,QAAQ,EAAE;IACjB;;IAGA,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;AACD;;MCFY,oBAAoB,CAAA;AACd,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/B,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAElE;;;;;;;;;;;;;AAaG;AACH,IAAA,IAAI,CAAmB,SAAwB,EAAE,MAAA,GAAiC,EAAE,EAAA;AAClF,QAAA,OAAO,IAAI,OAAO,CAAgB,OAAO,IAAG;AAC1C,YAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAK;AAE1C,YAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC/B,gBAAA,SAAS,EAAE;AACT,oBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE;oBACjD,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;AAC9D,iBAAA;gBACD,MAAM,EAAE,IAAI,CAAC;AACd,aAAA,CAAC;;AAGF,YAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE;gBAC1C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAC7C,gBAAA,eAAe,EAAE;AAClB,aAAA,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACzC,YAAA,QAAQ,CAAC,iBAAiB,CAAC,aAAa,EAAE;;AAG1C,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAA4B;YAC3D,MAAM,KAAK,GAAG,CAAC,GAAW,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA,SAAA,EAAY,GAAG,CAAA,CAAE,CAAC,CAAC;;;;;AAMnF,YAAA,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE;gBAC/C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAC7C,gBAAA,eAAe,EAAE,QAAQ;AACzB,gBAAA,gBAAgB,EAAE;oBAChB,KAAK,CAAC,wBAAwB,CAAC;oBAC/B,KAAK,CAAC,0BAA0B,CAAC;oBACjC,KAAK,CAAC,yBAAyB;AAChC;AACF,aAAA,CAAC;YAEF,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC;YAC/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;YACrE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;YACrE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;YAEjE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;;AAG3D,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAEhD,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;gBACpD,GAAG,CAAC,WAAW,EAAE;AACjB,gBAAA,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC9B,gBAAA,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;gBACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzC,SAAS,CAAC,OAAO,EAAE;gBACnB,QAAQ,CAAC,OAAO,EAAE;AACpB,YAAA,CAAC,CAAC;AAEF,YAAA,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC3B,QAAA,CAAC,CAAC;IACJ;wGA/EW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;4FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCXrB,oBAAoB,CAAA;IACvB,MAAM,GAAG,CAAC;AACT,IAAA,MAAM,GAAG,MAAM,CAAsB,EAAE,6EAAC;AAEjD,IAAA,IAAI,CAAC,MAA2B,EAAA;AAC9B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,MAAM,KAAK,GAAsB,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE;AACvG,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE;AACxC,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;QACpD;AACA,QAAA,OAAO,EAAE;IACX;IAEA,OAAO,CAAC,OAAe,EAAE,KAAc,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC3D;IACA,OAAO,CAAC,OAAe,EAAE,KAAc,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC3D;IACA,MAAM,CAAC,OAAe,EAAE,KAAc,EAAA;AACpC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC1D;IACA,IAAI,CAAC,OAAe,EAAE,KAAc,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACxD;AAEA,IAAA,OAAO,CAAC,EAAU,EAAA;QAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D;IACA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB;wGAhCW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAApB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA;;4FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACS5B,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AACzC,IAAA,YAAY,GAAG,MAAM,CAAC,oBAAoB,CAAC;wGADzC,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,iGCb1B,gwDAkCA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;4FDrBa,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,gwDAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA;;;AEAtB,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;AAChD,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAmB,MAAM,+EAAC;AAC1C,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,kFAAC;AAClC,IAAA,WAAW,GAAG,KAAK,CAAU,KAAK,kFAAC;IAEnC,SAAS,GAAG,MAAM,EAAQ;AAE1B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,UAAU,GAAqC;AACnD,YAAA,OAAO,EAAE,mDAAmD;AAC5D,YAAA,OAAO,EAAE,mDAAmD;AAC5D,YAAA,MAAM,EAAE,gDAAgD;AACxD,YAAA,IAAI,EAAE;SACP;QACD,OAAO,CAAA,uCAAA,EAA0C,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAE;AAChF,IAAA,CAAC,sFAAC;wGAhBS,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,sqBCTjC,o9BAyBA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDhBa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,o9BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEI7B,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;AAC3C,IAAA,QAAQ,GAAG,KAAK,CAAmB,MAAM,+EAAC;AAE1C,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,UAAU,GAAqC;AACnD,YAAA,OAAO,EAAE,mDAAmD;AAC5D,YAAA,OAAO,EAAE,mDAAmD;AAC5D,YAAA,MAAM,EAAE,gDAAgD;AACxD,YAAA,IAAI,EAAE;SACP;QACD,OAAO,CAAA,oCAAA,EAAuC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAE;AAC7E,IAAA,CAAC,sFAAC;wGAXS,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,gPCT5B,iFAGA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDMa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,iFAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEGxB,MAAO,gBAAiB,SAAQ,iBAAiB,CAAA;AAC5C,IAAA,OAAO,GAAG,KAAK,CAAyC,MAAM,8EAAC;AAC/D,IAAA,KAAK,GAAG,KAAK,CAAS,MAAM,4EAAC;AAC7B,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,6EAAC;AAE1B,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACvC,MAAM,IAAI,GAAG,yBAAyB;AACtC,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,OAAO,EAAE;SACV;QACD,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA,CAAE;AAChD,IAAA,CAAC,sFAAC;wGAdS,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,ieCR7B,qLAKA,EAAA,MAAA,EAAA,CAAA,mVAAA,CAAA,EAAA,CAAA;;4FDGa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACE,mBAAmB,EAAA,QAAA,EAAA,qLAAA,EAAA,MAAA,EAAA,CAAA,mVAAA,CAAA,EAAA;;;AEQzB,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;;AAE3C,IAAA,OAAO,GAAG,KAAK,CAAU,IAAI,8EAAC;AACvC;;;AAGG;AACM,IAAA,KAAK,GAAG,KAAK,CAAuB,MAAM,4EAAC;;AAE3C,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;;AAEhC,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,kFAAC;;AAG5D,IAAA,IAAI,GAAG,KAAK,CAAqB,EAAE,2EAAC;;IAGpC,YAAY,GAAG,MAAM,EAAoB;IAEzC,oBAAoB,GAAG,QAAQ,CAAC,MACvC,IAAI,CAAC,WAAW,EAAE,KAAK;AACrB,UAAE;UACA,8DAA8D,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACnE;IAEQ,qBAAqB,GAAG,QAAQ,CAAC,MACxC,IAAI,CAAC,WAAW,EAAE,KAAK;AACrB,UAAE;UACA,gQAAgQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACrQ;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;QACtD,MAAM,WAAW,GAAG;AAClB,cAAE,IAAI,CAAC,KAAK,EAAE,KAAK;AACjB,kBAAE;AACF,kBAAE;cACF,eAAe;AAEnB,QAAA,MAAM,IAAI,GAAG;YACX,oCAAoC;YACpC,MAAM;YACN,WAAW;YACX,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,GAAG,cAAc;YAC9C,IAAI,CAAC,QAAQ,EAAE,GAAG,WAAW,GAAG;SACjC;QAED,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC;QACpD;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,gDAAgD,CAAC;QAC7D;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,IAAA,CAAC,kFAAC;AAEF,IAAA,cAAc,CAAC,IAAsB,EAAA;QACnC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC;QACF;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAC9B;;AAGA,IAAA,uBAAuB,CAAC,IAAsB,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;IAC7D;;AAGA,IAAA,iBAAiB,CAAC,IAAsB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE;AACtC,YAAA,OAAO,IAAI;QACb;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK;AACpB,QAAA,OAAO,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI;IAC3E;IAEA,YAAY,CAAC,KAAa,EAAE,IAAsB,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IAClD;wGAhFW,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ5B,62GA+EA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxEY,YAAY,oFAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAKzB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,EAAE,YAAY,CAAC,YAC3B,kBAAkB,EAAA,QAAA,EAAA,62GAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEAxB,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;;AAE3C,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,kFAAC;;AAE5D,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,4EAAC;;AAE7B,IAAA,OAAO,GAAG,KAAK,CAAqB,OAAO,8EAAC;;AAE5C,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;IAEzB,mBAAmB,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACpE;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY,GAAG,MAAM,GAAG,EAAE;AAC/E,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,GAAG,eAAe,GAAG,cAAc;AAE9E,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE;AACrC,YAAA,OAAO,CAAC,yDAAyD,EAAE,OAAO,EAAE,oBAAoB;iBAC7F,IAAI,CAAC,GAAG,CAAC;QACd;QAEA,OAAO,CAAC,0BAA0B,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK;aAC7E,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;AACd,IAAA,CAAC,kFAAC;;AAGO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,QAAQ,GAAG,eAAe,GAAG,cAAc;QAC9E,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAClD,IAAA,CAAC,oFAAC;AAEO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAClC,CAAC,qCAAqC,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,sFAC9F;wGApCU,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,umBCR5B,udASA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDDa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,udAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEMxB,MAAO,aAAc,SAAQ,iBAAiB,CAAA;;AAEzC,IAAA,QAAQ,GAAG,KAAK,CAAyB,EAAE,+EAAC;AACrD;;;AAGG;AACM,IAAA,GAAG,GAAG,KAAK,CAAS,GAAG,0EAAC;;AAExB,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,iFAAC;;AAEjC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;AAEhC,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,GAAG,GAAiC;AACxC,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,IAAA,CAAC,uFAAC;AAEO,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,iFAAC;AAE1F,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;AACT,YAAA,OAAO,CAAC;QACV;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,IAAA,CAAC,+EAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC3B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,IAAG;AAC/B,YAAA,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAC9D,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS;AACxC,YAAA,OAAO,EAAE,GAAG,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;AAC7E,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,qFAAC;AAEO,IAAA,qBAAqB,GAAG,QAAQ,CACvC,MAAM,CAAA,wDAAA,EAA2D,IAAI,CAAC,gBAAgB,EAAE,CAAA,CAAE,4FAC3F;AAED,IAAA,iBAAiB,CAAC,OAAsC,EAAA;QACtD,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,IAAI,SAAS,CAAC;IACrD;AAEQ,IAAA,iBAAiB,CAAC,OAAqC,EAAA;AAC7D,QAAA,MAAM,GAAG,GAA2B;AAClC,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,IAAI,EAAE;SACP;QACD,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC;IACvC;wGA7DW,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,4lBCV1B,4nCA+BA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;4FDrBa,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,4nCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AEctB,MAAO,cAAe,SAAQ,iBAAiB,CAAA;;AAE1C,IAAA,GAAG,GAAG,KAAK,CAAS,CAAC,0EAAC;;AAEtB,IAAA,GAAG,GAAG,KAAK,CAAS,GAAG,0EAAC;;AAExB,IAAA,IAAI,GAAG,KAAK,CAAS,CAAC,2EAAC;;AAEvB,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,4EAAC;;AAE7B,IAAA,WAAW,GAAG,KAAK,CAA4B,YAAY,kFAAC;;AAE5D,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,gFAAC;;AAEjC,IAAA,IAAI,GAAG,KAAK,CAAe,IAAI,2EAAC;;AAEhC,IAAA,OAAO,GAAG,KAAK,CAA+B,SAAS,8EAAC;AAExD,IAAA,QAAQ,GAAG,SAAS,CAA0B,OAAO,+EAAC;;AAGtD,IAAA,WAAW,GAAG,MAAM,CAAC,CAAC,kFAAC;;AAEvB,IAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,+EAAC;;AAEpB,IAAA,SAAS,GAAG,MAAM,CAAC,GAAG,gFAAC;;AAGvB,IAAA,YAAY,GAAG,KAAK,CAAC,KAAK,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,GAAG;AAE/E,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,iFAAC;AAE1B,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,4FAAC;AAEjF,IAAA,QAAQ,GAAqC,MAAK,EAAE,CAAC;AACrD,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAE/B,IAAA,WAAW,GAAG,MAAM,CAAe,IAAI,kFAAC;AAExC,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,GAAG,GAAiC;AACxC,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,IAAA,CAAC,qFAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,GAAG,GAAiC;AACxC,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,IAAA,CAAC,qFAAC;AAEO,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,GAAG,GAAiC;AACxC,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE,KAAK;AACT,YAAA,EAAE,EAAE,OAAO;AACX,YAAA,EAAE,EAAE;SACL;AACD,QAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzB,IAAA,CAAC,6FAAC;AAEF;;;AAGG;AACM,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;QAC3B,OAAO;YACL,IAAI,EAAE,CAAA,YAAA,EAAe,IAAI,CAAA,KAAA,CAAO;YAChC,KAAK,EAAE,CAAA,YAAA,EAAe,IAAI,CAAA,KAAA,CAAO;YACjC,IAAI,EAAE,CAAA,YAAA,EAAe,IAAI,CAAA,KAAA;SAC1B;AACH,IAAA,CAAC,iFAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,gFAAC;AAE/D,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,6EAAC;AACzD,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,8EAAC;AAE3D,IAAA,YAAY,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,mFAAC;AAE3F,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,mFAC3E;AAEQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,OAAO,EAAc;QACvB;AACA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;QACtB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;AACtB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACxC,MAAM,GAAG,GAAa,EAAE;AACxB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;AAC/B,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC;AACA,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC,oFAAC;AAEF,IAAA,UAAU,CAAC,KAAiC,EAAA;AAC1C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;YAChB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC;aAAO;AACL,YAAA,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;YACjD,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AAC9D,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAoC,EAAA;AACnD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC/B;AAEA,IAAA,UAAU,CAAC,CAAS,EAAA;AAClB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,IAAI,EAAE,KAAK,EAAE,EAAE;AACb,YAAA,OAAO,CAAC;QACV;QACA,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG;IAChD;AAEA,IAAA,IAAI,CAAC,GAAW,EAAA;AACd,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACxC;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;AACrD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG;AAC/C,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5C;AAEA,IAAA,UAAU,CAAC,GAAW,EAAA;AACpB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrB;IAEA,kBAAkB,CAAC,KAAmB,EAAE,UAAiB,EAAA;QACvD,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC;IAC5C;IAEA,kBAAkB,CAAC,KAAmB,EAAE,UAAwB,EAAA;AAC9D,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC;QACF;QACA,KAAK,CAAC,cAAc,EAAE;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;QAC5C,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QAEA,IAAI,KAAK,GAAiB,UAAU;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;YACjB,KAAK,GAAG,IAAI;QACd;AAAO,aAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YACzB,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;AACjD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;YAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7B,YAAA,KAAK,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC;QAC1B;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAEtC,QAAA,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,UAAU,EAAE;AACjD,YAAA,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;QAC1C;AAEA,QAAA,MAAM,IAAI,GAAG,CAAC,EAAgB,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC;AACtE,QAAA,MAAM,EAAE,GAAG,CAAC,EAAgB,KAAI;AAC9B,YAAA,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC;AACjD,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7C,YAAA,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,EAAE,CAAC;AACjD,YAAA,IAAI;AACF,gBAAA,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,SAAS,CAAC;YAC3C;AAAE,YAAA,MAAM;;YAER;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC;AACD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC;AAC9C,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,CAAC;AAC1C,QAAA,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,EAAE,CAAC;IAChD;IAEQ,oBAAoB,CAAC,KAAmB,EAAE,KAAkB,EAAA;AAClE,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,EAAE;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;AACtD,QAAA,IAAI,KAAa;QACjB,IAAI,UAAU,EAAE;AACd,YAAA,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;QAClD;aAAO;AACL,YAAA,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM;QACtD;AACA,QAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC;IACrC;AAEQ,IAAA,YAAY,CAAC,KAAmB,EAAE,KAAkB,EAAE,UAAwB,EAAA;QACpF,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;AACpD,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,MAAM,GAAG,GAAG,UAAU,IAAI,CAAC;AAC3B,YAAA,IAAI,GAAG,KAAK,CAAC,EAAE;AACb,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YAClD;iBAAO;AACL,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC1B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACnD;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACpD;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC;IACF;IAEA,SAAS,CAAC,KAAoB,EAAE,UAAiB,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC;QACF;AACA,QAAA,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC;QAC/E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YAC7B;QACF;QACA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE;AACrB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;QACtD,MAAM,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW;QACrD,MAAM,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS;AAEpD,QAAA,MAAM,KAAK,GAAG,CAAC,GAAW,KAAI;AAC5B,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;gBAClB,OAAO,EAAE,IAAI,UAAU,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACrE;AACA,YAAA,IAAI,GAAG,KAAK,KAAK,EAAE;gBACjB,OAAO,EAAE,IAAI,UAAU,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACrE;AACA,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;gBAClB,OAAO,CAAC,EAAE;YACZ;AACA,YAAA,IAAI,GAAG,KAAK,MAAM,EAAE;AAClB,gBAAA,OAAO,EAAE;YACX;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC;QAED,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE;YACX;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,IAAI,UAAU,KAAK,CAAC,EAAE;AACpB,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC3C,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACrD;iBAAO;AACL,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC5C,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrD;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACpD;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC;IACF;wGA/SW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVd;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,cAAc,CAAC;AAC7C,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBH,uuOA6JA,EAAA,MAAA,EAAA,CAAA,4QAAA,CAAA,EAAA,CAAA;;4FDzIa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,SAAA,EAChB;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,oBAAoB,CAAC;AAC7C,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,uuOAAA,EAAA,MAAA,EAAA,CAAA,4QAAA,CAAA,EAAA;kyBAsBsD,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEtChE;;AC8BA;;;AAGG;AACG,SAAU,yBAAyB,CAAC,MAAgC,EAAA;IACxE,MAAM,SAAS,GAAe,EAAE;AAEhC,IAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;AACjC,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC5E;AACA,IAAA,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE;AACzC,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC5F;AACA,IAAA,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE;AACvC,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;IACxF;AACA,IAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE;AAC1C,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC9F;AACA,IAAA,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;AAClC,QAAA,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IAC9E;AAEA,IAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC;AAC5C;;ACtDA;;AAEG;AAEH;;ACJA;;AAEG;;;;"}