claude-mux 0.7.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 (636) hide show
  1. package/.beads/README.md +81 -0
  2. package/.beads/config.yaml +62 -0
  3. package/.beads/interactions.jsonl +0 -0
  4. package/.beads/issues.jsonl +5 -0
  5. package/.beads/metadata.json +4 -0
  6. package/.eslintrc.json +25 -0
  7. package/.gitattributes +3 -0
  8. package/.prettierrc +7 -0
  9. package/CLAUDE.md +123 -0
  10. package/LICENSE +21 -0
  11. package/PLAN-beads-integration.md +250 -0
  12. package/README.md +366 -0
  13. package/dist/app.d.ts +2 -0
  14. package/dist/app.d.ts.map +1 -0
  15. package/dist/app.js +147 -0
  16. package/dist/app.js.map +1 -0
  17. package/dist/cli.d.ts +3 -0
  18. package/dist/cli.d.ts.map +1 -0
  19. package/dist/cli.js +65 -0
  20. package/dist/cli.js.map +1 -0
  21. package/dist/commands/index.d.ts +5 -0
  22. package/dist/commands/index.d.ts.map +1 -0
  23. package/dist/commands/index.js +5 -0
  24. package/dist/commands/index.js.map +1 -0
  25. package/dist/commands/serve.d.ts +8 -0
  26. package/dist/commands/serve.d.ts.map +1 -0
  27. package/dist/commands/serve.js +59 -0
  28. package/dist/commands/serve.js.map +1 -0
  29. package/dist/commands/setup.d.ts +4 -0
  30. package/dist/commands/setup.d.ts.map +1 -0
  31. package/dist/commands/setup.js +12 -0
  32. package/dist/commands/setup.js.map +1 -0
  33. package/dist/commands/tui.d.ts +9 -0
  34. package/dist/commands/tui.d.ts.map +1 -0
  35. package/dist/commands/tui.js +234 -0
  36. package/dist/commands/tui.js.map +1 -0
  37. package/dist/commands/uninstall.d.ts +4 -0
  38. package/dist/commands/uninstall.d.ts.map +1 -0
  39. package/dist/commands/uninstall.js +12 -0
  40. package/dist/commands/uninstall.js.map +1 -0
  41. package/dist/components/Header.d.ts +7 -0
  42. package/dist/components/Header.d.ts.map +1 -0
  43. package/dist/components/Header.js +14 -0
  44. package/dist/components/Header.js.map +1 -0
  45. package/dist/components/HelpDialog.d.ts +6 -0
  46. package/dist/components/HelpDialog.d.ts.map +1 -0
  47. package/dist/components/HelpDialog.js +14 -0
  48. package/dist/components/HelpDialog.js.map +1 -0
  49. package/dist/components/SessionEntry.d.ts +17 -0
  50. package/dist/components/SessionEntry.d.ts.map +1 -0
  51. package/dist/components/SessionEntry.js +102 -0
  52. package/dist/components/SessionEntry.js.map +1 -0
  53. package/dist/components/SessionList.d.ts +14 -0
  54. package/dist/components/SessionList.d.ts.map +1 -0
  55. package/dist/components/SessionList.js +57 -0
  56. package/dist/components/SessionList.js.map +1 -0
  57. package/dist/components/StatusBar.d.ts +6 -0
  58. package/dist/components/StatusBar.d.ts.map +1 -0
  59. package/dist/components/StatusBar.js +7 -0
  60. package/dist/components/StatusBar.js.map +1 -0
  61. package/dist/components/index.d.ts +6 -0
  62. package/dist/components/index.d.ts.map +1 -0
  63. package/dist/components/index.js +6 -0
  64. package/dist/components/index.js.map +1 -0
  65. package/dist/db/index.d.ts +2 -0
  66. package/dist/db/index.d.ts.map +1 -0
  67. package/dist/db/index.js +3 -0
  68. package/dist/db/index.js.map +1 -0
  69. package/dist/db/schema.d.ts +4 -0
  70. package/dist/db/schema.d.ts.map +1 -0
  71. package/dist/db/schema.js +23 -0
  72. package/dist/db/schema.js.map +1 -0
  73. package/dist/db/sessions-json.d.ts +85 -0
  74. package/dist/db/sessions-json.d.ts.map +1 -0
  75. package/dist/db/sessions-json.js +242 -0
  76. package/dist/db/sessions-json.js.map +1 -0
  77. package/dist/db/sessions.d.ts +38 -0
  78. package/dist/db/sessions.d.ts.map +1 -0
  79. package/dist/db/sessions.js +87 -0
  80. package/dist/db/sessions.js.map +1 -0
  81. package/dist/hooks/claude-mux-hook.d.ts +15 -0
  82. package/dist/hooks/claude-mux-hook.d.ts.map +1 -0
  83. package/dist/hooks/claude-mux-hook.js +396 -0
  84. package/dist/hooks/claude-mux-hook.js.map +1 -0
  85. package/dist/hooks/claude-watch-hook.d.ts +15 -0
  86. package/dist/hooks/claude-watch-hook.d.ts.map +1 -0
  87. package/dist/hooks/claude-watch-hook.js +396 -0
  88. package/dist/hooks/claude-watch-hook.js.map +1 -0
  89. package/dist/server/custom-server.d.ts +13 -0
  90. package/dist/server/custom-server.d.ts.map +1 -0
  91. package/dist/server/custom-server.js +63 -0
  92. package/dist/server/custom-server.js.map +1 -0
  93. package/dist/server/index.d.ts +9 -0
  94. package/dist/server/index.d.ts.map +1 -0
  95. package/dist/server/index.js +1143 -0
  96. package/dist/server/index.js.map +1 -0
  97. package/dist/server/middleware/cors.d.ts +2 -0
  98. package/dist/server/middleware/cors.d.ts.map +1 -0
  99. package/dist/server/middleware/cors.js +11 -0
  100. package/dist/server/middleware/cors.js.map +1 -0
  101. package/dist/server/routes/sessions.d.ts +3 -0
  102. package/dist/server/routes/sessions.d.ts.map +1 -0
  103. package/dist/server/routes/sessions.js +78 -0
  104. package/dist/server/routes/sessions.js.map +1 -0
  105. package/dist/server/routes/stream.d.ts +3 -0
  106. package/dist/server/routes/stream.d.ts.map +1 -0
  107. package/dist/server/routes/stream.js +45 -0
  108. package/dist/server/routes/stream.js.map +1 -0
  109. package/dist/server/types.d.ts +28 -0
  110. package/dist/server/types.d.ts.map +1 -0
  111. package/dist/server/types.js +2 -0
  112. package/dist/server/types.js.map +1 -0
  113. package/dist/server/watcher.d.ts +22 -0
  114. package/dist/server/watcher.d.ts.map +1 -0
  115. package/dist/server/watcher.js +119 -0
  116. package/dist/server/watcher.js.map +1 -0
  117. package/dist/server/websocket.d.ts +51 -0
  118. package/dist/server/websocket.d.ts.map +1 -0
  119. package/dist/server/websocket.js +156 -0
  120. package/dist/server/websocket.js.map +1 -0
  121. package/dist/server/ws-handlers.d.ts +174 -0
  122. package/dist/server/ws-handlers.d.ts.map +1 -0
  123. package/dist/server/ws-handlers.js +695 -0
  124. package/dist/server/ws-handlers.js.map +1 -0
  125. package/dist/setup/hooks.d.ts +44 -0
  126. package/dist/setup/hooks.d.ts.map +1 -0
  127. package/dist/setup/hooks.js +267 -0
  128. package/dist/setup/hooks.js.map +1 -0
  129. package/dist/setup/index.d.ts +3 -0
  130. package/dist/setup/index.d.ts.map +1 -0
  131. package/dist/setup/index.js +3 -0
  132. package/dist/setup/index.js.map +1 -0
  133. package/dist/setup/wizard.d.ts +4 -0
  134. package/dist/setup/wizard.d.ts.map +1 -0
  135. package/dist/setup/wizard.js +72 -0
  136. package/dist/setup/wizard.js.map +1 -0
  137. package/dist/tmux/detect.d.ts +25 -0
  138. package/dist/tmux/detect.d.ts.map +1 -0
  139. package/dist/tmux/detect.js +71 -0
  140. package/dist/tmux/detect.js.map +1 -0
  141. package/dist/tmux/navigate.d.ts +13 -0
  142. package/dist/tmux/navigate.d.ts.map +1 -0
  143. package/dist/tmux/navigate.js +41 -0
  144. package/dist/tmux/navigate.js.map +1 -0
  145. package/dist/tmux/pane.d.ts +57 -0
  146. package/dist/tmux/pane.d.ts.map +1 -0
  147. package/dist/tmux/pane.js +156 -0
  148. package/dist/tmux/pane.js.map +1 -0
  149. package/dist/tmux/resize.d.ts +10 -0
  150. package/dist/tmux/resize.d.ts.map +1 -0
  151. package/dist/tmux/resize.js +25 -0
  152. package/dist/tmux/resize.js.map +1 -0
  153. package/dist/utils/paths.d.ts +7 -0
  154. package/dist/utils/paths.d.ts.map +1 -0
  155. package/dist/utils/paths.js +9 -0
  156. package/dist/utils/paths.js.map +1 -0
  157. package/dist/utils/pid.d.ts +5 -0
  158. package/dist/utils/pid.d.ts.map +1 -0
  159. package/dist/utils/pid.js +14 -0
  160. package/dist/utils/pid.js.map +1 -0
  161. package/dist/utils/version.d.ts +6 -0
  162. package/dist/utils/version.d.ts.map +1 -0
  163. package/dist/utils/version.js +6 -0
  164. package/dist/utils/version.js.map +1 -0
  165. package/dist/web/client/_app/immutable/assets/0.WptSHSUl.css +1 -0
  166. package/dist/web/client/_app/immutable/assets/2.s6Kx4oz1.css +1 -0
  167. package/dist/web/client/_app/immutable/assets/4.DoNWy7tW.css +1 -0
  168. package/dist/web/client/_app/immutable/assets/AllSessionsPanel.CGHY3HLy.css +1 -0
  169. package/dist/web/client/_app/immutable/chunks/-3mUPuLP.js +1 -0
  170. package/dist/web/client/_app/immutable/chunks/B5U4_V3d.js +1 -0
  171. package/dist/web/client/_app/immutable/chunks/BHwiZXRv.js +1 -0
  172. package/dist/web/client/_app/immutable/chunks/C9P-coqM.js +1 -0
  173. package/dist/web/client/_app/immutable/chunks/Cegv0r8x.js +1 -0
  174. package/dist/web/client/_app/immutable/chunks/DU91Ml7U.js +3 -0
  175. package/dist/web/client/_app/immutable/chunks/DmdO6ygw.js +1 -0
  176. package/dist/web/client/_app/immutable/chunks/HKNo9LID.js +5 -0
  177. package/dist/web/client/_app/immutable/chunks/U4ip-C0d.js +2 -0
  178. package/dist/web/client/_app/immutable/chunks/cgUjKIhX.js +2 -0
  179. package/dist/web/client/_app/immutable/entry/app.CGIBnoln.js +2 -0
  180. package/dist/web/client/_app/immutable/entry/start.CJk8zB1j.js +1 -0
  181. package/dist/web/client/_app/immutable/nodes/0.CqlJ9a31.js +1 -0
  182. package/dist/web/client/_app/immutable/nodes/1.BQUZh2-w.js +1 -0
  183. package/dist/web/client/_app/immutable/nodes/2.CCV1YdgF.js +1 -0
  184. package/dist/web/client/_app/immutable/nodes/3.D9tDCdq8.js +1 -0
  185. package/dist/web/client/_app/immutable/nodes/4.BqPyNkFA.js +6 -0
  186. package/dist/web/client/_app/version.json +1 -0
  187. package/dist/web/client/robots.txt +3 -0
  188. package/dist/web/env.js +32 -0
  189. package/dist/web/handler.js +744 -0
  190. package/dist/web/index.js +49 -0
  191. package/dist/web/server/chunks/0-BHWsmCJv.js +23 -0
  192. package/dist/web/server/chunks/0-BHWsmCJv.js.map +1 -0
  193. package/dist/web/server/chunks/1-YRx6A8Tm.js +17 -0
  194. package/dist/web/server/chunks/1-YRx6A8Tm.js.map +1 -0
  195. package/dist/web/server/chunks/2-eC6JuGAo.js +22 -0
  196. package/dist/web/server/chunks/2-eC6JuGAo.js.map +1 -0
  197. package/dist/web/server/chunks/3-Bk-wV20p.js +32 -0
  198. package/dist/web/server/chunks/3-Bk-wV20p.js.map +1 -0
  199. package/dist/web/server/chunks/4-nteBgDrW.js +21 -0
  200. package/dist/web/server/chunks/4-nteBgDrW.js.map +1 -0
  201. package/dist/web/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang-Bt4B0-oi.js +35 -0
  202. package/dist/web/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang-Bt4B0-oi.js.map +1 -0
  203. package/dist/web/server/chunks/_layout.svelte-BIF9eZCY.js +453 -0
  204. package/dist/web/server/chunks/_layout.svelte-BIF9eZCY.js.map +1 -0
  205. package/dist/web/server/chunks/_page.svelte-Be6iabRn.js +34 -0
  206. package/dist/web/server/chunks/_page.svelte-Be6iabRn.js.map +1 -0
  207. package/dist/web/server/chunks/_page.svelte-C_fGJVSE.js +576 -0
  208. package/dist/web/server/chunks/_page.svelte-C_fGJVSE.js.map +1 -0
  209. package/dist/web/server/chunks/_page.svelte-CnfJk6cu.js +2722 -0
  210. package/dist/web/server/chunks/_page.svelte-CnfJk6cu.js.map +1 -0
  211. package/dist/web/server/chunks/_server.ts-3WAmKvn2.js +34 -0
  212. package/dist/web/server/chunks/_server.ts-3WAmKvn2.js.map +1 -0
  213. package/dist/web/server/chunks/_server.ts-BAWJCSFb.js +29 -0
  214. package/dist/web/server/chunks/_server.ts-BAWJCSFb.js.map +1 -0
  215. package/dist/web/server/chunks/_server.ts-BPpMOZCm.js +24 -0
  216. package/dist/web/server/chunks/_server.ts-BPpMOZCm.js.map +1 -0
  217. package/dist/web/server/chunks/_server.ts-BUKgRb6U.js +13 -0
  218. package/dist/web/server/chunks/_server.ts-BUKgRb6U.js.map +1 -0
  219. package/dist/web/server/chunks/_server.ts-BVHUS8fm.js +41 -0
  220. package/dist/web/server/chunks/_server.ts-BVHUS8fm.js.map +1 -0
  221. package/dist/web/server/chunks/_server.ts-BrF3od0O.js +45 -0
  222. package/dist/web/server/chunks/_server.ts-BrF3od0O.js.map +1 -0
  223. package/dist/web/server/chunks/_server.ts-C4oPmOJR.js +38 -0
  224. package/dist/web/server/chunks/_server.ts-C4oPmOJR.js.map +1 -0
  225. package/dist/web/server/chunks/_server.ts-CDAUUmG_.js +21 -0
  226. package/dist/web/server/chunks/_server.ts-CDAUUmG_.js.map +1 -0
  227. package/dist/web/server/chunks/_server.ts-CR0uWvpz.js +24 -0
  228. package/dist/web/server/chunks/_server.ts-CR0uWvpz.js.map +1 -0
  229. package/dist/web/server/chunks/_server.ts-CSqdCNGi.js +21 -0
  230. package/dist/web/server/chunks/_server.ts-CSqdCNGi.js.map +1 -0
  231. package/dist/web/server/chunks/_server.ts-DI9fzUo9.js +52 -0
  232. package/dist/web/server/chunks/_server.ts-DI9fzUo9.js.map +1 -0
  233. package/dist/web/server/chunks/_server.ts-DNjJTClI.js +46 -0
  234. package/dist/web/server/chunks/_server.ts-DNjJTClI.js.map +1 -0
  235. package/dist/web/server/chunks/_server.ts-DdbOAkOj.js +22 -0
  236. package/dist/web/server/chunks/_server.ts-DdbOAkOj.js.map +1 -0
  237. package/dist/web/server/chunks/_server.ts-Df2isGQc.js +41 -0
  238. package/dist/web/server/chunks/_server.ts-Df2isGQc.js.map +1 -0
  239. package/dist/web/server/chunks/_server.ts-Vpw25_-3.js +12 -0
  240. package/dist/web/server/chunks/_server.ts-Vpw25_-3.js.map +1 -0
  241. package/dist/web/server/chunks/_server.ts-WldRpSRi.js +26 -0
  242. package/dist/web/server/chunks/_server.ts-WldRpSRi.js.map +1 -0
  243. package/dist/web/server/chunks/alert-dialog-description-DDA6u-nS.js +2890 -0
  244. package/dist/web/server/chunks/alert-dialog-description-DDA6u-nS.js.map +1 -0
  245. package/dist/web/server/chunks/auth-DrUf-v4J.js +51 -0
  246. package/dist/web/server/chunks/auth-DrUf-v4J.js.map +1 -0
  247. package/dist/web/server/chunks/button-D6xS9rHt.js +2335 -0
  248. package/dist/web/server/chunks/button-D6xS9rHt.js.map +1 -0
  249. package/dist/web/server/chunks/chunk-EKzHsMy_.js +42 -0
  250. package/dist/web/server/chunks/chunks-DmdqVYC7.js +58 -0
  251. package/dist/web/server/chunks/chunks-DmdqVYC7.js.map +1 -0
  252. package/dist/web/server/chunks/client-CUrSQijh.js +18 -0
  253. package/dist/web/server/chunks/client-CUrSQijh.js.map +1 -0
  254. package/dist/web/server/chunks/clsx-FzI4_gi0.js +332 -0
  255. package/dist/web/server/chunks/clsx-FzI4_gi0.js.map +1 -0
  256. package/dist/web/server/chunks/error.svelte-D-c-9pTE.js +27 -0
  257. package/dist/web/server/chunks/error.svelte-D-c-9pTE.js.map +1 -0
  258. package/dist/web/server/chunks/events-BDBlYddw.js +89 -0
  259. package/dist/web/server/chunks/events-BDBlYddw.js.map +1 -0
  260. package/dist/web/server/chunks/exports-CCurQ-Tl.js +131 -0
  261. package/dist/web/server/chunks/exports-CCurQ-Tl.js.map +1 -0
  262. package/dist/web/server/chunks/hooks.server-BK1bopsh.js +86 -0
  263. package/dist/web/server/chunks/hooks.server-BK1bopsh.js.map +1 -0
  264. package/dist/web/server/chunks/index2-BQnysSj-.js +2588 -0
  265. package/dist/web/server/chunks/index2-BQnysSj-.js.map +1 -0
  266. package/dist/web/server/chunks/internal-DLENj6YI.js +61 -0
  267. package/dist/web/server/chunks/internal-DLENj6YI.js.map +1 -0
  268. package/dist/web/server/chunks/pane-Dg3pKvsm.js +94 -0
  269. package/dist/web/server/chunks/pane-Dg3pKvsm.js.map +1 -0
  270. package/dist/web/server/chunks/sessions-json-DgfkCLO7.js +107 -0
  271. package/dist/web/server/chunks/sessions-json-DgfkCLO7.js.map +1 -0
  272. package/dist/web/server/chunks/sessions.svelte-Ds82MvkB.js +178 -0
  273. package/dist/web/server/chunks/sessions.svelte-Ds82MvkB.js.map +1 -0
  274. package/dist/web/server/chunks/state.svelte-xeAZvWZ6.js +7 -0
  275. package/dist/web/server/chunks/state.svelte-xeAZvWZ6.js.map +1 -0
  276. package/dist/web/server/chunks/ws-handlers-B4r5eSP2.js +733 -0
  277. package/dist/web/server/chunks/ws-handlers-B4r5eSP2.js.map +1 -0
  278. package/dist/web/server/index.js +4907 -0
  279. package/dist/web/server/index.js.map +1 -0
  280. package/dist/web/server/manifest.js +233 -0
  281. package/dist/web/server/manifest.js.map +1 -0
  282. package/docs/images/desktop-dashboard.png +0 -0
  283. package/docs/images/desktop-session.png +0 -0
  284. package/docs/images/mobile-dashboard.png +0 -0
  285. package/docs/images/mobile-session.png +0 -0
  286. package/docs/release-checklist.md +228 -0
  287. package/docs/removing-hooks.md +135 -0
  288. package/docs/state-transitions.md +109 -0
  289. package/package.json +71 -0
  290. package/src/app.tsx +188 -0
  291. package/src/cli.ts +83 -0
  292. package/src/commands/index.ts +4 -0
  293. package/src/commands/serve.ts +75 -0
  294. package/src/commands/setup.ts +13 -0
  295. package/src/commands/tui.ts +255 -0
  296. package/src/commands/uninstall.ts +13 -0
  297. package/src/components/Header.tsx +32 -0
  298. package/src/components/HelpDialog.tsx +45 -0
  299. package/src/components/SessionEntry.tsx +202 -0
  300. package/src/components/SessionList.tsx +98 -0
  301. package/src/components/StatusBar.tsx +26 -0
  302. package/src/components/index.ts +5 -0
  303. package/src/db/index.ts +20 -0
  304. package/src/db/sessions-json.ts +314 -0
  305. package/src/hooks/claude-mux-hook.ts +498 -0
  306. package/src/server/watcher.ts +128 -0
  307. package/src/server/ws-handlers.ts +922 -0
  308. package/src/setup/hooks.ts +333 -0
  309. package/src/setup/index.ts +2 -0
  310. package/src/setup/wizard.ts +81 -0
  311. package/src/tmux/detect.ts +87 -0
  312. package/src/tmux/navigate.ts +42 -0
  313. package/src/tmux/pane.ts +167 -0
  314. package/src/tmux/resize.ts +28 -0
  315. package/src/utils/paths.ts +11 -0
  316. package/src/utils/pid.ts +12 -0
  317. package/src/utils/version.ts +5 -0
  318. package/tests/components/Header.test.tsx +42 -0
  319. package/tests/components/SessionEntry-extended.test.tsx +165 -0
  320. package/tests/components/SessionEntry.test.tsx +138 -0
  321. package/tests/components/SessionList.test.tsx +110 -0
  322. package/tests/components/StatusBar.test.tsx +31 -0
  323. package/tests/db/index.test.ts +78 -0
  324. package/tests/db/sessions.test.ts +230 -0
  325. package/tests/server/integration.test.ts +319 -0
  326. package/tests/server/sessions.test.ts +114 -0
  327. package/tests/setup/hooks-integration.test.ts +148 -0
  328. package/tests/setup/hooks.test.ts +123 -0
  329. package/tests/tmux/detect.test.ts +54 -0
  330. package/tests/tmux/navigate.test.ts +30 -0
  331. package/tests/utils/pid.test.ts +17 -0
  332. package/tsconfig.cli.json +9 -0
  333. package/tsconfig.json +22 -0
  334. package/vitest.config.ts +29 -0
  335. package/web/.svelte-kit/adapter-bun/.vite/manifest.json +408 -0
  336. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +1 -0
  337. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_layout.WptSHSUl.css +1 -0
  338. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.DldLgTc-.css +1 -0
  339. package/web/.svelte-kit/adapter-bun/_app/immutable/assets/_page.DoNWy7tW.css +1 -0
  340. package/web/.svelte-kit/adapter-bun/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +49 -0
  341. package/web/.svelte-kit/adapter-bun/chunks/alert-dialog-description.js +2670 -0
  342. package/web/.svelte-kit/adapter-bun/chunks/auth.js +59 -0
  343. package/web/.svelte-kit/adapter-bun/chunks/button.js +82 -0
  344. package/web/.svelte-kit/adapter-bun/chunks/client.js +29 -0
  345. package/web/.svelte-kit/adapter-bun/chunks/context.js +133 -0
  346. package/web/.svelte-kit/adapter-bun/chunks/environment.js +34 -0
  347. package/web/.svelte-kit/adapter-bun/chunks/events.js +121 -0
  348. package/web/.svelte-kit/adapter-bun/chunks/exports.js +174 -0
  349. package/web/.svelte-kit/adapter-bun/chunks/false.js +4 -0
  350. package/web/.svelte-kit/adapter-bun/chunks/index.js +59 -0
  351. package/web/.svelte-kit/adapter-bun/chunks/index2.js +2828 -0
  352. package/web/.svelte-kit/adapter-bun/chunks/internal.js +920 -0
  353. package/web/.svelte-kit/adapter-bun/chunks/pane.js +82 -0
  354. package/web/.svelte-kit/adapter-bun/chunks/sessions-json.js +124 -0
  355. package/web/.svelte-kit/adapter-bun/chunks/sessions.svelte.js +229 -0
  356. package/web/.svelte-kit/adapter-bun/chunks/shared.js +542 -0
  357. package/web/.svelte-kit/adapter-bun/chunks/state.svelte.js +16 -0
  358. package/web/.svelte-kit/adapter-bun/chunks/utils.js +43 -0
  359. package/web/.svelte-kit/adapter-bun/chunks/ws-handlers.js +782 -0
  360. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/auth/login/_server.ts.js +22 -0
  361. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/auth/logout/_server.ts.js +9 -0
  362. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/beads/_server.ts.js +22 -0
  363. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/browse/_server.ts.js +50 -0
  364. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/chrome/_server.ts.js +30 -0
  365. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/files/image/_server.ts.js +53 -0
  366. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/health/_server.ts.js +7 -0
  367. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/projects/new-session/_server.ts.js +44 -0
  368. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/_server.ts.js +20 -0
  369. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +36 -0
  370. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +40 -0
  371. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +28 -0
  372. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_id_/send/_server.ts.js +29 -0
  373. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_server.ts.js +49 -0
  374. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/sessions/_target_/output/_server.ts.js +14 -0
  375. package/web/.svelte-kit/adapter-bun/entries/endpoints/api/tmux/panes/_server.ts.js +21 -0
  376. package/web/.svelte-kit/adapter-bun/entries/fallbacks/error.svelte.js +27 -0
  377. package/web/.svelte-kit/adapter-bun/entries/hooks.server.js +105 -0
  378. package/web/.svelte-kit/adapter-bun/entries/pages/_layout.svelte.js +499 -0
  379. package/web/.svelte-kit/adapter-bun/entries/pages/_page.svelte.js +3057 -0
  380. package/web/.svelte-kit/adapter-bun/entries/pages/login/_page.server.ts.js +15 -0
  381. package/web/.svelte-kit/adapter-bun/entries/pages/login/_page.svelte.js +37 -0
  382. package/web/.svelte-kit/adapter-bun/entries/pages/session/_target_/_page.svelte.js +653 -0
  383. package/web/.svelte-kit/adapter-bun/index.js +3864 -0
  384. package/web/.svelte-kit/adapter-bun/internal.js +13 -0
  385. package/web/.svelte-kit/adapter-bun/manifest-full.js +167 -0
  386. package/web/.svelte-kit/adapter-bun/manifest.js +171 -0
  387. package/web/.svelte-kit/adapter-bun/nodes/0.js +8 -0
  388. package/web/.svelte-kit/adapter-bun/nodes/1.js +8 -0
  389. package/web/.svelte-kit/adapter-bun/nodes/2.js +8 -0
  390. package/web/.svelte-kit/adapter-bun/nodes/3.js +10 -0
  391. package/web/.svelte-kit/adapter-bun/nodes/4.js +8 -0
  392. package/web/.svelte-kit/adapter-bun/remote-entry.js +541 -0
  393. package/web/.svelte-kit/adapter-node/.vite/manifest.json +223 -0
  394. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_layout.4NiX29PU.css +1 -0
  395. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.BEMzYUGV.css +1 -0
  396. package/web/.svelte-kit/adapter-node/_app/immutable/assets/_page.DOJn7TG7.css +1 -0
  397. package/web/.svelte-kit/adapter-node/chunks/context.js +121 -0
  398. package/web/.svelte-kit/adapter-node/chunks/environment.js +34 -0
  399. package/web/.svelte-kit/adapter-node/chunks/exports.js +174 -0
  400. package/web/.svelte-kit/adapter-node/chunks/false.js +4 -0
  401. package/web/.svelte-kit/adapter-node/chunks/index.js +59 -0
  402. package/web/.svelte-kit/adapter-node/chunks/index2.js +2710 -0
  403. package/web/.svelte-kit/adapter-node/chunks/internal.js +1005 -0
  404. package/web/.svelte-kit/adapter-node/chunks/sessions-json.js +109 -0
  405. package/web/.svelte-kit/adapter-node/chunks/sessions.svelte.js +67 -0
  406. package/web/.svelte-kit/adapter-node/chunks/shared.js +542 -0
  407. package/web/.svelte-kit/adapter-node/chunks/state.svelte.js +16 -0
  408. package/web/.svelte-kit/adapter-node/chunks/utils.js +43 -0
  409. package/web/.svelte-kit/adapter-node/entries/endpoints/api/browse/_server.ts.js +50 -0
  410. package/web/.svelte-kit/adapter-node/entries/endpoints/api/health/_server.ts.js +7 -0
  411. package/web/.svelte-kit/adapter-node/entries/endpoints/api/projects/new-session/_server.ts.js +44 -0
  412. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/_server.ts.js +20 -0
  413. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +30 -0
  414. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_id_/send/_server.ts.js +22 -0
  415. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_server.ts.js +126 -0
  416. package/web/.svelte-kit/adapter-node/entries/endpoints/api/sessions/_target_/output/_server.ts.js +14 -0
  417. package/web/.svelte-kit/adapter-node/entries/fallbacks/error.svelte.js +44 -0
  418. package/web/.svelte-kit/adapter-node/entries/pages/_layout.svelte.js +12 -0
  419. package/web/.svelte-kit/adapter-node/entries/pages/_page.svelte.js +87 -0
  420. package/web/.svelte-kit/adapter-node/entries/pages/session/_target_/_page.svelte.js +76 -0
  421. package/web/.svelte-kit/adapter-node/index.js +3864 -0
  422. package/web/.svelte-kit/adapter-node/internal.js +13 -0
  423. package/web/.svelte-kit/adapter-node/manifest-full.js +103 -0
  424. package/web/.svelte-kit/adapter-node/manifest.js +107 -0
  425. package/web/.svelte-kit/adapter-node/nodes/0.js +8 -0
  426. package/web/.svelte-kit/adapter-node/nodes/1.js +8 -0
  427. package/web/.svelte-kit/adapter-node/nodes/2.js +8 -0
  428. package/web/.svelte-kit/adapter-node/nodes/3.js +8 -0
  429. package/web/.svelte-kit/adapter-node/remote-entry.js +541 -0
  430. package/web/.svelte-kit/ambient.d.ts +187 -0
  431. package/web/.svelte-kit/generated/client/app.js +33 -0
  432. package/web/.svelte-kit/generated/client/matchers.js +1 -0
  433. package/web/.svelte-kit/generated/client/nodes/0.js +1 -0
  434. package/web/.svelte-kit/generated/client/nodes/1.js +1 -0
  435. package/web/.svelte-kit/generated/client/nodes/2.js +1 -0
  436. package/web/.svelte-kit/generated/client/nodes/3.js +1 -0
  437. package/web/.svelte-kit/generated/client/nodes/4.js +1 -0
  438. package/web/.svelte-kit/generated/client-optimized/app.js +33 -0
  439. package/web/.svelte-kit/generated/client-optimized/matchers.js +1 -0
  440. package/web/.svelte-kit/generated/client-optimized/nodes/0.js +1 -0
  441. package/web/.svelte-kit/generated/client-optimized/nodes/1.js +1 -0
  442. package/web/.svelte-kit/generated/client-optimized/nodes/2.js +1 -0
  443. package/web/.svelte-kit/generated/client-optimized/nodes/3.js +1 -0
  444. package/web/.svelte-kit/generated/client-optimized/nodes/4.js +1 -0
  445. package/web/.svelte-kit/generated/root.js +3 -0
  446. package/web/.svelte-kit/generated/root.svelte +68 -0
  447. package/web/.svelte-kit/generated/server/internal.js +53 -0
  448. package/web/.svelte-kit/non-ambient.d.ts +73 -0
  449. package/web/.svelte-kit/output/client/.vite/manifest.json +203 -0
  450. package/web/.svelte-kit/output/client/_app/immutable/assets/0.WptSHSUl.css +1 -0
  451. package/web/.svelte-kit/output/client/_app/immutable/assets/2.s6Kx4oz1.css +1 -0
  452. package/web/.svelte-kit/output/client/_app/immutable/assets/4.DoNWy7tW.css +1 -0
  453. package/web/.svelte-kit/output/client/_app/immutable/assets/AllSessionsPanel.CGHY3HLy.css +1 -0
  454. package/web/.svelte-kit/output/client/_app/immutable/chunks/-3mUPuLP.js +1 -0
  455. package/web/.svelte-kit/output/client/_app/immutable/chunks/B5U4_V3d.js +1 -0
  456. package/web/.svelte-kit/output/client/_app/immutable/chunks/BHwiZXRv.js +1 -0
  457. package/web/.svelte-kit/output/client/_app/immutable/chunks/C9P-coqM.js +1 -0
  458. package/web/.svelte-kit/output/client/_app/immutable/chunks/Cegv0r8x.js +1 -0
  459. package/web/.svelte-kit/output/client/_app/immutable/chunks/DU91Ml7U.js +3 -0
  460. package/web/.svelte-kit/output/client/_app/immutable/chunks/DmdO6ygw.js +1 -0
  461. package/web/.svelte-kit/output/client/_app/immutable/chunks/HKNo9LID.js +5 -0
  462. package/web/.svelte-kit/output/client/_app/immutable/chunks/U4ip-C0d.js +2 -0
  463. package/web/.svelte-kit/output/client/_app/immutable/chunks/cgUjKIhX.js +2 -0
  464. package/web/.svelte-kit/output/client/_app/immutable/entry/app.CGIBnoln.js +2 -0
  465. package/web/.svelte-kit/output/client/_app/immutable/entry/start.CJk8zB1j.js +1 -0
  466. package/web/.svelte-kit/output/client/_app/immutable/nodes/0.CqlJ9a31.js +1 -0
  467. package/web/.svelte-kit/output/client/_app/immutable/nodes/1.BQUZh2-w.js +1 -0
  468. package/web/.svelte-kit/output/client/_app/immutable/nodes/2.CCV1YdgF.js +1 -0
  469. package/web/.svelte-kit/output/client/_app/immutable/nodes/3.D9tDCdq8.js +1 -0
  470. package/web/.svelte-kit/output/client/_app/immutable/nodes/4.BqPyNkFA.js +6 -0
  471. package/web/.svelte-kit/output/client/_app/version.json +1 -0
  472. package/web/.svelte-kit/output/client/robots.txt +3 -0
  473. package/web/.svelte-kit/output/server/.vite/manifest.json +408 -0
  474. package/web/.svelte-kit/output/server/_app/immutable/assets/AllSessionsPanel.BKhqOrbV.css +1 -0
  475. package/web/.svelte-kit/output/server/_app/immutable/assets/_layout.WptSHSUl.css +1 -0
  476. package/web/.svelte-kit/output/server/_app/immutable/assets/_page.DldLgTc-.css +1 -0
  477. package/web/.svelte-kit/output/server/_app/immutable/assets/_page.DoNWy7tW.css +1 -0
  478. package/web/.svelte-kit/output/server/chunks/AllSessionsPanel.svelte_svelte_type_style_lang.js +49 -0
  479. package/web/.svelte-kit/output/server/chunks/alert-dialog-description.js +2670 -0
  480. package/web/.svelte-kit/output/server/chunks/auth.js +59 -0
  481. package/web/.svelte-kit/output/server/chunks/button.js +82 -0
  482. package/web/.svelte-kit/output/server/chunks/client.js +29 -0
  483. package/web/.svelte-kit/output/server/chunks/context.js +133 -0
  484. package/web/.svelte-kit/output/server/chunks/environment.js +34 -0
  485. package/web/.svelte-kit/output/server/chunks/events.js +121 -0
  486. package/web/.svelte-kit/output/server/chunks/exports.js +174 -0
  487. package/web/.svelte-kit/output/server/chunks/false.js +4 -0
  488. package/web/.svelte-kit/output/server/chunks/index.js +59 -0
  489. package/web/.svelte-kit/output/server/chunks/index2.js +2828 -0
  490. package/web/.svelte-kit/output/server/chunks/internal.js +920 -0
  491. package/web/.svelte-kit/output/server/chunks/pane.js +82 -0
  492. package/web/.svelte-kit/output/server/chunks/sessions-json.js +124 -0
  493. package/web/.svelte-kit/output/server/chunks/sessions.svelte.js +229 -0
  494. package/web/.svelte-kit/output/server/chunks/shared.js +542 -0
  495. package/web/.svelte-kit/output/server/chunks/state.svelte.js +16 -0
  496. package/web/.svelte-kit/output/server/chunks/utils.js +43 -0
  497. package/web/.svelte-kit/output/server/chunks/ws-handlers.js +782 -0
  498. package/web/.svelte-kit/output/server/entries/endpoints/api/auth/login/_server.ts.js +22 -0
  499. package/web/.svelte-kit/output/server/entries/endpoints/api/auth/logout/_server.ts.js +9 -0
  500. package/web/.svelte-kit/output/server/entries/endpoints/api/beads/_server.ts.js +22 -0
  501. package/web/.svelte-kit/output/server/entries/endpoints/api/browse/_server.ts.js +50 -0
  502. package/web/.svelte-kit/output/server/entries/endpoints/api/chrome/_server.ts.js +30 -0
  503. package/web/.svelte-kit/output/server/entries/endpoints/api/files/image/_server.ts.js +53 -0
  504. package/web/.svelte-kit/output/server/entries/endpoints/api/health/_server.ts.js +7 -0
  505. package/web/.svelte-kit/output/server/entries/endpoints/api/projects/new-session/_server.ts.js +44 -0
  506. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/_server.ts.js +20 -0
  507. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/kill/_server.ts.js +36 -0
  508. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/restart/_server.ts.js +40 -0
  509. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/screenshots/_server.ts.js +28 -0
  510. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_id_/send/_server.ts.js +29 -0
  511. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_server.ts.js +49 -0
  512. package/web/.svelte-kit/output/server/entries/endpoints/api/sessions/_target_/output/_server.ts.js +14 -0
  513. package/web/.svelte-kit/output/server/entries/endpoints/api/tmux/panes/_server.ts.js +21 -0
  514. package/web/.svelte-kit/output/server/entries/fallbacks/error.svelte.js +27 -0
  515. package/web/.svelte-kit/output/server/entries/hooks.server.js +105 -0
  516. package/web/.svelte-kit/output/server/entries/pages/_layout.svelte.js +499 -0
  517. package/web/.svelte-kit/output/server/entries/pages/_page.svelte.js +3057 -0
  518. package/web/.svelte-kit/output/server/entries/pages/login/_page.server.ts.js +15 -0
  519. package/web/.svelte-kit/output/server/entries/pages/login/_page.svelte.js +37 -0
  520. package/web/.svelte-kit/output/server/entries/pages/session/_target_/_page.svelte.js +653 -0
  521. package/web/.svelte-kit/output/server/index.js +3864 -0
  522. package/web/.svelte-kit/output/server/internal.js +13 -0
  523. package/web/.svelte-kit/output/server/manifest-full.js +167 -0
  524. package/web/.svelte-kit/output/server/manifest.js +167 -0
  525. package/web/.svelte-kit/output/server/nodes/0.js +8 -0
  526. package/web/.svelte-kit/output/server/nodes/1.js +8 -0
  527. package/web/.svelte-kit/output/server/nodes/2.js +8 -0
  528. package/web/.svelte-kit/output/server/nodes/3.js +10 -0
  529. package/web/.svelte-kit/output/server/nodes/4.js +8 -0
  530. package/web/.svelte-kit/output/server/remote-entry.js +541 -0
  531. package/web/.svelte-kit/tsconfig.json +58 -0
  532. package/web/.svelte-kit/types/route_meta_data.json +55 -0
  533. package/web/.svelte-kit/types/src/routes/$types.d.ts +24 -0
  534. package/web/.svelte-kit/types/src/routes/api/auth/login/$types.d.ts +10 -0
  535. package/web/.svelte-kit/types/src/routes/api/auth/logout/$types.d.ts +10 -0
  536. package/web/.svelte-kit/types/src/routes/api/beads/$types.d.ts +10 -0
  537. package/web/.svelte-kit/types/src/routes/api/browse/$types.d.ts +10 -0
  538. package/web/.svelte-kit/types/src/routes/api/chrome/$types.d.ts +10 -0
  539. package/web/.svelte-kit/types/src/routes/api/files/image/$types.d.ts +10 -0
  540. package/web/.svelte-kit/types/src/routes/api/health/$types.d.ts +10 -0
  541. package/web/.svelte-kit/types/src/routes/api/projects/new-session/$types.d.ts +10 -0
  542. package/web/.svelte-kit/types/src/routes/api/sessions/$types.d.ts +10 -0
  543. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/$types.d.ts +11 -0
  544. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/kill/$types.d.ts +11 -0
  545. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/restart/$types.d.ts +11 -0
  546. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/screenshots/$types.d.ts +11 -0
  547. package/web/.svelte-kit/types/src/routes/api/sessions/[id]/send/$types.d.ts +11 -0
  548. package/web/.svelte-kit/types/src/routes/api/sessions/[target]/output/$types.d.ts +11 -0
  549. package/web/.svelte-kit/types/src/routes/api/tmux/panes/$types.d.ts +10 -0
  550. package/web/.svelte-kit/types/src/routes/login/$types.d.ts +25 -0
  551. package/web/.svelte-kit/types/src/routes/login/proxy+page.server.ts +19 -0
  552. package/web/.svelte-kit/types/src/routes/session/[target]/$types.d.ts +19 -0
  553. package/web/README.md +42 -0
  554. package/web/components.json +16 -0
  555. package/web/package.json +35 -0
  556. package/web/src/app.css +128 -0
  557. package/web/src/app.d.ts +13 -0
  558. package/web/src/app.html +11 -0
  559. package/web/src/hooks.server.ts +156 -0
  560. package/web/src/lib/assets/favicon.svg +1 -0
  561. package/web/src/lib/components/AllSessionsPanel.svelte +789 -0
  562. package/web/src/lib/components/BeadsPanel.svelte +146 -0
  563. package/web/src/lib/components/IssueItem.svelte +287 -0
  564. package/web/src/lib/components/ScreenshotsPanel.svelte +336 -0
  565. package/web/src/lib/components/SessionsSidebar.svelte +312 -0
  566. package/web/src/lib/components/TerminalRenderer.svelte +189 -0
  567. package/web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +18 -0
  568. package/web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +18 -0
  569. package/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +29 -0
  570. package/web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +17 -0
  571. package/web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +20 -0
  572. package/web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +20 -0
  573. package/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +20 -0
  574. package/web/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte +7 -0
  575. package/web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +17 -0
  576. package/web/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte +7 -0
  577. package/web/src/lib/components/ui/alert-dialog/alert-dialog.svelte +7 -0
  578. package/web/src/lib/components/ui/alert-dialog/index.ts +37 -0
  579. package/web/src/lib/components/ui/badge/badge.svelte +50 -0
  580. package/web/src/lib/components/ui/badge/index.ts +2 -0
  581. package/web/src/lib/components/ui/button/button.svelte +86 -0
  582. package/web/src/lib/components/ui/button/index.ts +17 -0
  583. package/web/src/lib/components/ui/checkbox/checkbox.svelte +36 -0
  584. package/web/src/lib/components/ui/checkbox/index.ts +6 -0
  585. package/web/src/lib/components/ui/dialog/dialog-close.svelte +7 -0
  586. package/web/src/lib/components/ui/dialog/dialog-content.svelte +45 -0
  587. package/web/src/lib/components/ui/dialog/dialog-description.svelte +17 -0
  588. package/web/src/lib/components/ui/dialog/dialog-footer.svelte +20 -0
  589. package/web/src/lib/components/ui/dialog/dialog-header.svelte +20 -0
  590. package/web/src/lib/components/ui/dialog/dialog-overlay.svelte +20 -0
  591. package/web/src/lib/components/ui/dialog/dialog-portal.svelte +7 -0
  592. package/web/src/lib/components/ui/dialog/dialog-title.svelte +17 -0
  593. package/web/src/lib/components/ui/dialog/dialog-trigger.svelte +7 -0
  594. package/web/src/lib/components/ui/dialog/dialog.svelte +7 -0
  595. package/web/src/lib/components/ui/dialog/index.ts +34 -0
  596. package/web/src/lib/components/ui/scroll-area/index.ts +10 -0
  597. package/web/src/lib/components/ui/scroll-area/scroll-area-scrollbar.svelte +31 -0
  598. package/web/src/lib/components/ui/scroll-area/scroll-area.svelte +43 -0
  599. package/web/src/lib/components/ui/textarea/index.ts +7 -0
  600. package/web/src/lib/components/ui/textarea/textarea.svelte +23 -0
  601. package/web/src/lib/index.ts +1 -0
  602. package/web/src/lib/server/auth.ts +90 -0
  603. package/web/src/lib/stores/beads.svelte.ts +163 -0
  604. package/web/src/lib/stores/input-injection.svelte.ts +39 -0
  605. package/web/src/lib/stores/preferences.svelte.ts +55 -0
  606. package/web/src/lib/stores/sessions.svelte.ts +108 -0
  607. package/web/src/lib/stores/terminal.svelte.ts +96 -0
  608. package/web/src/lib/stores/websocket-base.svelte.ts +209 -0
  609. package/web/src/lib/types/terminal.ts +31 -0
  610. package/web/src/lib/utils/terminal-parser.ts +239 -0
  611. package/web/src/lib/utils.ts +13 -0
  612. package/web/src/routes/+layout.svelte +450 -0
  613. package/web/src/routes/+page.svelte +19 -0
  614. package/web/src/routes/api/auth/login/+server.ts +34 -0
  615. package/web/src/routes/api/auth/logout/+server.ts +10 -0
  616. package/web/src/routes/api/beads/+server.ts +28 -0
  617. package/web/src/routes/api/browse/+server.ts +59 -0
  618. package/web/src/routes/api/chrome/+server.ts +35 -0
  619. package/web/src/routes/api/files/image/+server.ts +64 -0
  620. package/web/src/routes/api/health/+server.ts +6 -0
  621. package/web/src/routes/api/projects/new-session/+server.ts +50 -0
  622. package/web/src/routes/api/sessions/+server.ts +62 -0
  623. package/web/src/routes/api/sessions/[id]/+server.ts +19 -0
  624. package/web/src/routes/api/sessions/[id]/kill/+server.ts +46 -0
  625. package/web/src/routes/api/sessions/[id]/restart/+server.ts +59 -0
  626. package/web/src/routes/api/sessions/[id]/screenshots/+server.ts +32 -0
  627. package/web/src/routes/api/sessions/[id]/send/+server.ts +31 -0
  628. package/web/src/routes/api/sessions/[target]/output/+server.ts +13 -0
  629. package/web/src/routes/api/tmux/panes/+server.ts +32 -0
  630. package/web/src/routes/login/+page.server.ts +18 -0
  631. package/web/src/routes/login/+page.svelte +69 -0
  632. package/web/src/routes/session/[target]/+page.svelte +450 -0
  633. package/web/static/robots.txt +3 -0
  634. package/web/svelte.config.js +20 -0
  635. package/web/tsconfig.json +20 -0
  636. package/web/vite.config.ts +154 -0
@@ -0,0 +1,2335 @@
1
+ import { b as bind_props, w as clsx, y as attributes } from "./index2-BQnysSj-.js";
2
+ import { t as clsx$1 } from "./clsx-FzI4_gi0.js";
3
+
4
+ //#region ../node_modules/tailwind-merge/dist/bundle-mjs.mjs
5
+ /**
6
+ * Concatenates two arrays faster than the array spread operator.
7
+ */
8
+ const concatArrays = (array1, array2) => {
9
+ const combinedArray = new Array(array1.length + array2.length);
10
+ for (let i = 0; i < array1.length; i++) combinedArray[i] = array1[i];
11
+ for (let i = 0; i < array2.length; i++) combinedArray[array1.length + i] = array2[i];
12
+ return combinedArray;
13
+ };
14
+ const createClassValidatorObject = (classGroupId, validator) => ({
15
+ classGroupId,
16
+ validator
17
+ });
18
+ const createClassPartObject = (nextPart = /* @__PURE__ */ new Map(), validators = null, classGroupId) => ({
19
+ nextPart,
20
+ validators,
21
+ classGroupId
22
+ });
23
+ const CLASS_PART_SEPARATOR = "-";
24
+ const EMPTY_CONFLICTS = [];
25
+ const ARBITRARY_PROPERTY_PREFIX = "arbitrary..";
26
+ const createClassGroupUtils = (config) => {
27
+ const classMap = createClassMap(config);
28
+ const { conflictingClassGroups, conflictingClassGroupModifiers } = config;
29
+ const getClassGroupId = (className) => {
30
+ if (className.startsWith("[") && className.endsWith("]")) return getGroupIdForArbitraryProperty(className);
31
+ const classParts = className.split(CLASS_PART_SEPARATOR);
32
+ return getGroupRecursive(classParts, classParts[0] === "" && classParts.length > 1 ? 1 : 0, classMap);
33
+ };
34
+ const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
35
+ if (hasPostfixModifier) {
36
+ const modifierConflicts = conflictingClassGroupModifiers[classGroupId];
37
+ const baseConflicts = conflictingClassGroups[classGroupId];
38
+ if (modifierConflicts) {
39
+ if (baseConflicts) return concatArrays(baseConflicts, modifierConflicts);
40
+ return modifierConflicts;
41
+ }
42
+ return baseConflicts || EMPTY_CONFLICTS;
43
+ }
44
+ return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;
45
+ };
46
+ return {
47
+ getClassGroupId,
48
+ getConflictingClassGroupIds
49
+ };
50
+ };
51
+ const getGroupRecursive = (classParts, startIndex, classPartObject) => {
52
+ if (classParts.length - startIndex === 0) return classPartObject.classGroupId;
53
+ const currentClassPart = classParts[startIndex];
54
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
55
+ if (nextClassPartObject) {
56
+ const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);
57
+ if (result) return result;
58
+ }
59
+ const validators = classPartObject.validators;
60
+ if (validators === null) return;
61
+ const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);
62
+ const validatorsLength = validators.length;
63
+ for (let i = 0; i < validatorsLength; i++) {
64
+ const validatorObj = validators[i];
65
+ if (validatorObj.validator(classRest)) return validatorObj.classGroupId;
66
+ }
67
+ };
68
+ /**
69
+ * Get the class group ID for an arbitrary property.
70
+ *
71
+ * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.
72
+ */
73
+ const getGroupIdForArbitraryProperty = (className) => className.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
74
+ const content = className.slice(1, -1);
75
+ const colonIndex = content.indexOf(":");
76
+ const property = content.slice(0, colonIndex);
77
+ return property ? ARBITRARY_PROPERTY_PREFIX + property : void 0;
78
+ })();
79
+ /**
80
+ * Exported for testing only
81
+ */
82
+ const createClassMap = (config) => {
83
+ const { theme, classGroups } = config;
84
+ return processClassGroups(classGroups, theme);
85
+ };
86
+ const processClassGroups = (classGroups, theme) => {
87
+ const classMap = createClassPartObject();
88
+ for (const classGroupId in classGroups) {
89
+ const group = classGroups[classGroupId];
90
+ processClassesRecursively(group, classMap, classGroupId, theme);
91
+ }
92
+ return classMap;
93
+ };
94
+ const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
95
+ const len = classGroup.length;
96
+ for (let i = 0; i < len; i++) {
97
+ const classDefinition = classGroup[i];
98
+ processClassDefinition(classDefinition, classPartObject, classGroupId, theme);
99
+ }
100
+ };
101
+ const processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
102
+ if (typeof classDefinition === "string") {
103
+ processStringDefinition(classDefinition, classPartObject, classGroupId);
104
+ return;
105
+ }
106
+ if (typeof classDefinition === "function") {
107
+ processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);
108
+ return;
109
+ }
110
+ processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);
111
+ };
112
+ const processStringDefinition = (classDefinition, classPartObject, classGroupId) => {
113
+ const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition);
114
+ classPartObjectToEdit.classGroupId = classGroupId;
115
+ };
116
+ const processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
117
+ if (isThemeGetter(classDefinition)) {
118
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
119
+ return;
120
+ }
121
+ if (classPartObject.validators === null) classPartObject.validators = [];
122
+ classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));
123
+ };
124
+ const processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
125
+ const entries = Object.entries(classDefinition);
126
+ const len = entries.length;
127
+ for (let i = 0; i < len; i++) {
128
+ const [key, value] = entries[i];
129
+ processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);
130
+ }
131
+ };
132
+ const getPart = (classPartObject, path) => {
133
+ let current = classPartObject;
134
+ const parts = path.split(CLASS_PART_SEPARATOR);
135
+ const len = parts.length;
136
+ for (let i = 0; i < len; i++) {
137
+ const part = parts[i];
138
+ let next = current.nextPart.get(part);
139
+ if (!next) {
140
+ next = createClassPartObject();
141
+ current.nextPart.set(part, next);
142
+ }
143
+ current = next;
144
+ }
145
+ return current;
146
+ };
147
+ const isThemeGetter = (func) => "isThemeGetter" in func && func.isThemeGetter === true;
148
+ const createLruCache = (maxCacheSize) => {
149
+ if (maxCacheSize < 1) return {
150
+ get: () => void 0,
151
+ set: () => {}
152
+ };
153
+ let cacheSize = 0;
154
+ let cache = Object.create(null);
155
+ let previousCache = Object.create(null);
156
+ const update = (key, value) => {
157
+ cache[key] = value;
158
+ cacheSize++;
159
+ if (cacheSize > maxCacheSize) {
160
+ cacheSize = 0;
161
+ previousCache = cache;
162
+ cache = Object.create(null);
163
+ }
164
+ };
165
+ return {
166
+ get(key) {
167
+ let value = cache[key];
168
+ if (value !== void 0) return value;
169
+ if ((value = previousCache[key]) !== void 0) {
170
+ update(key, value);
171
+ return value;
172
+ }
173
+ },
174
+ set(key, value) {
175
+ if (key in cache) cache[key] = value;
176
+ else update(key, value);
177
+ }
178
+ };
179
+ };
180
+ const IMPORTANT_MODIFIER = "!";
181
+ const MODIFIER_SEPARATOR = ":";
182
+ const EMPTY_MODIFIERS = [];
183
+ const createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({
184
+ modifiers,
185
+ hasImportantModifier,
186
+ baseClassName,
187
+ maybePostfixModifierPosition,
188
+ isExternal
189
+ });
190
+ const createParseClassName = (config) => {
191
+ const { prefix, experimentalParseClassName } = config;
192
+ /**
193
+ * Parse class name into parts.
194
+ *
195
+ * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS
196
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js
197
+ */
198
+ let parseClassName = (className) => {
199
+ const modifiers = [];
200
+ let bracketDepth = 0;
201
+ let parenDepth = 0;
202
+ let modifierStart = 0;
203
+ let postfixModifierPosition;
204
+ const len = className.length;
205
+ for (let index = 0; index < len; index++) {
206
+ const currentCharacter = className[index];
207
+ if (bracketDepth === 0 && parenDepth === 0) {
208
+ if (currentCharacter === MODIFIER_SEPARATOR) {
209
+ modifiers.push(className.slice(modifierStart, index));
210
+ modifierStart = index + 1;
211
+ continue;
212
+ }
213
+ if (currentCharacter === "/") {
214
+ postfixModifierPosition = index;
215
+ continue;
216
+ }
217
+ }
218
+ if (currentCharacter === "[") bracketDepth++;
219
+ else if (currentCharacter === "]") bracketDepth--;
220
+ else if (currentCharacter === "(") parenDepth++;
221
+ else if (currentCharacter === ")") parenDepth--;
222
+ }
223
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);
224
+ let baseClassName = baseClassNameWithImportantModifier;
225
+ let hasImportantModifier = false;
226
+ if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {
227
+ baseClassName = baseClassNameWithImportantModifier.slice(0, -1);
228
+ hasImportantModifier = true;
229
+ } else if (baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {
230
+ baseClassName = baseClassNameWithImportantModifier.slice(1);
231
+ hasImportantModifier = true;
232
+ }
233
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0;
234
+ return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);
235
+ };
236
+ if (prefix) {
237
+ const fullPrefix = prefix + MODIFIER_SEPARATOR;
238
+ const parseClassNameOriginal = parseClassName;
239
+ parseClassName = (className) => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, void 0, true);
240
+ }
241
+ if (experimentalParseClassName) {
242
+ const parseClassNameOriginal = parseClassName;
243
+ parseClassName = (className) => experimentalParseClassName({
244
+ className,
245
+ parseClassName: parseClassNameOriginal
246
+ });
247
+ }
248
+ return parseClassName;
249
+ };
250
+ /**
251
+ * Sorts modifiers according to following schema:
252
+ * - Predefined modifiers are sorted alphabetically
253
+ * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it
254
+ */
255
+ const createSortModifiers = (config) => {
256
+ const modifierWeights = /* @__PURE__ */ new Map();
257
+ config.orderSensitiveModifiers.forEach((mod, index) => {
258
+ modifierWeights.set(mod, 1e6 + index);
259
+ });
260
+ return (modifiers) => {
261
+ const result = [];
262
+ let currentSegment = [];
263
+ for (let i = 0; i < modifiers.length; i++) {
264
+ const modifier = modifiers[i];
265
+ const isArbitrary = modifier[0] === "[";
266
+ const isOrderSensitive = modifierWeights.has(modifier);
267
+ if (isArbitrary || isOrderSensitive) {
268
+ if (currentSegment.length > 0) {
269
+ currentSegment.sort();
270
+ result.push(...currentSegment);
271
+ currentSegment = [];
272
+ }
273
+ result.push(modifier);
274
+ } else currentSegment.push(modifier);
275
+ }
276
+ if (currentSegment.length > 0) {
277
+ currentSegment.sort();
278
+ result.push(...currentSegment);
279
+ }
280
+ return result;
281
+ };
282
+ };
283
+ const createConfigUtils = (config) => ({
284
+ cache: createLruCache(config.cacheSize),
285
+ parseClassName: createParseClassName(config),
286
+ sortModifiers: createSortModifiers(config),
287
+ ...createClassGroupUtils(config)
288
+ });
289
+ const SPLIT_CLASSES_REGEX = /\s+/;
290
+ const mergeClassList = (classList, configUtils) => {
291
+ const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } = configUtils;
292
+ /**
293
+ * Set of classGroupIds in following format:
294
+ * `{importantModifier}{variantModifiers}{classGroupId}`
295
+ * @example 'float'
296
+ * @example 'hover:focus:bg-color'
297
+ * @example 'md:!pr'
298
+ */
299
+ const classGroupsInConflict = [];
300
+ const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
301
+ let result = "";
302
+ for (let index = classNames.length - 1; index >= 0; index -= 1) {
303
+ const originalClassName = classNames[index];
304
+ const { isExternal, modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } = parseClassName(originalClassName);
305
+ if (isExternal) {
306
+ result = originalClassName + (result.length > 0 ? " " + result : result);
307
+ continue;
308
+ }
309
+ let hasPostfixModifier = !!maybePostfixModifierPosition;
310
+ let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
311
+ if (!classGroupId) {
312
+ if (!hasPostfixModifier) {
313
+ result = originalClassName + (result.length > 0 ? " " + result : result);
314
+ continue;
315
+ }
316
+ classGroupId = getClassGroupId(baseClassName);
317
+ if (!classGroupId) {
318
+ result = originalClassName + (result.length > 0 ? " " + result : result);
319
+ continue;
320
+ }
321
+ hasPostfixModifier = false;
322
+ }
323
+ const variantModifier = modifiers.length === 0 ? "" : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(":");
324
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
325
+ const classId = modifierId + classGroupId;
326
+ if (classGroupsInConflict.indexOf(classId) > -1) continue;
327
+ classGroupsInConflict.push(classId);
328
+ const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
329
+ for (let i = 0; i < conflictGroups.length; ++i) {
330
+ const group = conflictGroups[i];
331
+ classGroupsInConflict.push(modifierId + group);
332
+ }
333
+ result = originalClassName + (result.length > 0 ? " " + result : result);
334
+ }
335
+ return result;
336
+ };
337
+ /**
338
+ * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.
339
+ *
340
+ * Specifically:
341
+ * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js
342
+ * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts
343
+ *
344
+ * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
345
+ */
346
+ const twJoin = (...classLists) => {
347
+ let index = 0;
348
+ let argument;
349
+ let resolvedValue;
350
+ let string = "";
351
+ while (index < classLists.length) if (argument = classLists[index++]) {
352
+ if (resolvedValue = toValue(argument)) {
353
+ string && (string += " ");
354
+ string += resolvedValue;
355
+ }
356
+ }
357
+ return string;
358
+ };
359
+ const toValue = (mix) => {
360
+ if (typeof mix === "string") return mix;
361
+ let resolvedValue;
362
+ let string = "";
363
+ for (let k = 0; k < mix.length; k++) if (mix[k]) {
364
+ if (resolvedValue = toValue(mix[k])) {
365
+ string && (string += " ");
366
+ string += resolvedValue;
367
+ }
368
+ }
369
+ return string;
370
+ };
371
+ const createTailwindMerge = (createConfigFirst, ...createConfigRest) => {
372
+ let configUtils;
373
+ let cacheGet;
374
+ let cacheSet;
375
+ let functionToCall;
376
+ const initTailwindMerge = (classList) => {
377
+ configUtils = createConfigUtils(createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst()));
378
+ cacheGet = configUtils.cache.get;
379
+ cacheSet = configUtils.cache.set;
380
+ functionToCall = tailwindMerge;
381
+ return tailwindMerge(classList);
382
+ };
383
+ const tailwindMerge = (classList) => {
384
+ const cachedResult = cacheGet(classList);
385
+ if (cachedResult) return cachedResult;
386
+ const result = mergeClassList(classList, configUtils);
387
+ cacheSet(classList, result);
388
+ return result;
389
+ };
390
+ functionToCall = initTailwindMerge;
391
+ return (...args) => functionToCall(twJoin(...args));
392
+ };
393
+ const fallbackThemeArr = [];
394
+ const fromTheme = (key) => {
395
+ const themeGetter = (theme) => theme[key] || fallbackThemeArr;
396
+ themeGetter.isThemeGetter = true;
397
+ return themeGetter;
398
+ };
399
+ const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
400
+ const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
401
+ const fractionRegex = /^\d+\/\d+$/;
402
+ const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
403
+ const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
404
+ const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
405
+ const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
406
+ const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
407
+ const isFraction = (value) => fractionRegex.test(value);
408
+ const isNumber = (value) => !!value && !Number.isNaN(Number(value));
409
+ const isInteger = (value) => !!value && Number.isInteger(Number(value));
410
+ const isPercent = (value) => value.endsWith("%") && isNumber(value.slice(0, -1));
411
+ const isTshirtSize = (value) => tshirtUnitRegex.test(value);
412
+ const isAny = () => true;
413
+ const isLengthOnly = (value) => lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);
414
+ const isNever = () => false;
415
+ const isShadow = (value) => shadowRegex.test(value);
416
+ const isImage = (value) => imageRegex.test(value);
417
+ const isAnyNonArbitrary = (value) => !isArbitraryValue(value) && !isArbitraryVariable(value);
418
+ const isArbitrarySize = (value) => getIsArbitraryValue(value, isLabelSize, isNever);
419
+ const isArbitraryValue = (value) => arbitraryValueRegex.test(value);
420
+ const isArbitraryLength = (value) => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
421
+ const isArbitraryNumber = (value) => getIsArbitraryValue(value, isLabelNumber, isNumber);
422
+ const isArbitraryPosition = (value) => getIsArbitraryValue(value, isLabelPosition, isNever);
423
+ const isArbitraryImage = (value) => getIsArbitraryValue(value, isLabelImage, isImage);
424
+ const isArbitraryShadow = (value) => getIsArbitraryValue(value, isLabelShadow, isShadow);
425
+ const isArbitraryVariable = (value) => arbitraryVariableRegex.test(value);
426
+ const isArbitraryVariableLength = (value) => getIsArbitraryVariable(value, isLabelLength);
427
+ const isArbitraryVariableFamilyName = (value) => getIsArbitraryVariable(value, isLabelFamilyName);
428
+ const isArbitraryVariablePosition = (value) => getIsArbitraryVariable(value, isLabelPosition);
429
+ const isArbitraryVariableSize = (value) => getIsArbitraryVariable(value, isLabelSize);
430
+ const isArbitraryVariableImage = (value) => getIsArbitraryVariable(value, isLabelImage);
431
+ const isArbitraryVariableShadow = (value) => getIsArbitraryVariable(value, isLabelShadow, true);
432
+ const getIsArbitraryValue = (value, testLabel, testValue) => {
433
+ const result = arbitraryValueRegex.exec(value);
434
+ if (result) {
435
+ if (result[1]) return testLabel(result[1]);
436
+ return testValue(result[2]);
437
+ }
438
+ return false;
439
+ };
440
+ const getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {
441
+ const result = arbitraryVariableRegex.exec(value);
442
+ if (result) {
443
+ if (result[1]) return testLabel(result[1]);
444
+ return shouldMatchNoLabel;
445
+ }
446
+ return false;
447
+ };
448
+ const isLabelPosition = (label) => label === "position" || label === "percentage";
449
+ const isLabelImage = (label) => label === "image" || label === "url";
450
+ const isLabelSize = (label) => label === "length" || label === "size" || label === "bg-size";
451
+ const isLabelLength = (label) => label === "length";
452
+ const isLabelNumber = (label) => label === "number";
453
+ const isLabelFamilyName = (label) => label === "family-name";
454
+ const isLabelShadow = (label) => label === "shadow";
455
+ const getDefaultConfig = () => {
456
+ /**
457
+ * Theme getters for theme variable namespaces
458
+ * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces
459
+ */
460
+ const themeColor = fromTheme("color");
461
+ const themeFont = fromTheme("font");
462
+ const themeText = fromTheme("text");
463
+ const themeFontWeight = fromTheme("font-weight");
464
+ const themeTracking = fromTheme("tracking");
465
+ const themeLeading = fromTheme("leading");
466
+ const themeBreakpoint = fromTheme("breakpoint");
467
+ const themeContainer = fromTheme("container");
468
+ const themeSpacing = fromTheme("spacing");
469
+ const themeRadius = fromTheme("radius");
470
+ const themeShadow = fromTheme("shadow");
471
+ const themeInsetShadow = fromTheme("inset-shadow");
472
+ const themeTextShadow = fromTheme("text-shadow");
473
+ const themeDropShadow = fromTheme("drop-shadow");
474
+ const themeBlur = fromTheme("blur");
475
+ const themePerspective = fromTheme("perspective");
476
+ const themeAspect = fromTheme("aspect");
477
+ const themeEase = fromTheme("ease");
478
+ const themeAnimate = fromTheme("animate");
479
+ /**
480
+ * Helpers to avoid repeating the same scales
481
+ *
482
+ * We use functions that create a new array every time they're called instead of static arrays.
483
+ * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.
484
+ */
485
+ const scaleBreak = () => [
486
+ "auto",
487
+ "avoid",
488
+ "all",
489
+ "avoid-page",
490
+ "page",
491
+ "left",
492
+ "right",
493
+ "column"
494
+ ];
495
+ const scalePosition = () => [
496
+ "center",
497
+ "top",
498
+ "bottom",
499
+ "left",
500
+ "right",
501
+ "top-left",
502
+ "left-top",
503
+ "top-right",
504
+ "right-top",
505
+ "bottom-right",
506
+ "right-bottom",
507
+ "bottom-left",
508
+ "left-bottom"
509
+ ];
510
+ const scalePositionWithArbitrary = () => [
511
+ ...scalePosition(),
512
+ isArbitraryVariable,
513
+ isArbitraryValue
514
+ ];
515
+ const scaleOverflow = () => [
516
+ "auto",
517
+ "hidden",
518
+ "clip",
519
+ "visible",
520
+ "scroll"
521
+ ];
522
+ const scaleOverscroll = () => [
523
+ "auto",
524
+ "contain",
525
+ "none"
526
+ ];
527
+ const scaleUnambiguousSpacing = () => [
528
+ isArbitraryVariable,
529
+ isArbitraryValue,
530
+ themeSpacing
531
+ ];
532
+ const scaleInset = () => [
533
+ isFraction,
534
+ "full",
535
+ "auto",
536
+ ...scaleUnambiguousSpacing()
537
+ ];
538
+ const scaleGridTemplateColsRows = () => [
539
+ isInteger,
540
+ "none",
541
+ "subgrid",
542
+ isArbitraryVariable,
543
+ isArbitraryValue
544
+ ];
545
+ const scaleGridColRowStartAndEnd = () => [
546
+ "auto",
547
+ { span: [
548
+ "full",
549
+ isInteger,
550
+ isArbitraryVariable,
551
+ isArbitraryValue
552
+ ] },
553
+ isInteger,
554
+ isArbitraryVariable,
555
+ isArbitraryValue
556
+ ];
557
+ const scaleGridColRowStartOrEnd = () => [
558
+ isInteger,
559
+ "auto",
560
+ isArbitraryVariable,
561
+ isArbitraryValue
562
+ ];
563
+ const scaleGridAutoColsRows = () => [
564
+ "auto",
565
+ "min",
566
+ "max",
567
+ "fr",
568
+ isArbitraryVariable,
569
+ isArbitraryValue
570
+ ];
571
+ const scaleAlignPrimaryAxis = () => [
572
+ "start",
573
+ "end",
574
+ "center",
575
+ "between",
576
+ "around",
577
+ "evenly",
578
+ "stretch",
579
+ "baseline",
580
+ "center-safe",
581
+ "end-safe"
582
+ ];
583
+ const scaleAlignSecondaryAxis = () => [
584
+ "start",
585
+ "end",
586
+ "center",
587
+ "stretch",
588
+ "center-safe",
589
+ "end-safe"
590
+ ];
591
+ const scaleMargin = () => ["auto", ...scaleUnambiguousSpacing()];
592
+ const scaleSizing = () => [
593
+ isFraction,
594
+ "auto",
595
+ "full",
596
+ "dvw",
597
+ "dvh",
598
+ "lvw",
599
+ "lvh",
600
+ "svw",
601
+ "svh",
602
+ "min",
603
+ "max",
604
+ "fit",
605
+ ...scaleUnambiguousSpacing()
606
+ ];
607
+ const scaleColor = () => [
608
+ themeColor,
609
+ isArbitraryVariable,
610
+ isArbitraryValue
611
+ ];
612
+ const scaleBgPosition = () => [
613
+ ...scalePosition(),
614
+ isArbitraryVariablePosition,
615
+ isArbitraryPosition,
616
+ { position: [isArbitraryVariable, isArbitraryValue] }
617
+ ];
618
+ const scaleBgRepeat = () => ["no-repeat", { repeat: [
619
+ "",
620
+ "x",
621
+ "y",
622
+ "space",
623
+ "round"
624
+ ] }];
625
+ const scaleBgSize = () => [
626
+ "auto",
627
+ "cover",
628
+ "contain",
629
+ isArbitraryVariableSize,
630
+ isArbitrarySize,
631
+ { size: [isArbitraryVariable, isArbitraryValue] }
632
+ ];
633
+ const scaleGradientStopPosition = () => [
634
+ isPercent,
635
+ isArbitraryVariableLength,
636
+ isArbitraryLength
637
+ ];
638
+ const scaleRadius = () => [
639
+ "",
640
+ "none",
641
+ "full",
642
+ themeRadius,
643
+ isArbitraryVariable,
644
+ isArbitraryValue
645
+ ];
646
+ const scaleBorderWidth = () => [
647
+ "",
648
+ isNumber,
649
+ isArbitraryVariableLength,
650
+ isArbitraryLength
651
+ ];
652
+ const scaleLineStyle = () => [
653
+ "solid",
654
+ "dashed",
655
+ "dotted",
656
+ "double"
657
+ ];
658
+ const scaleBlendMode = () => [
659
+ "normal",
660
+ "multiply",
661
+ "screen",
662
+ "overlay",
663
+ "darken",
664
+ "lighten",
665
+ "color-dodge",
666
+ "color-burn",
667
+ "hard-light",
668
+ "soft-light",
669
+ "difference",
670
+ "exclusion",
671
+ "hue",
672
+ "saturation",
673
+ "color",
674
+ "luminosity"
675
+ ];
676
+ const scaleMaskImagePosition = () => [
677
+ isNumber,
678
+ isPercent,
679
+ isArbitraryVariablePosition,
680
+ isArbitraryPosition
681
+ ];
682
+ const scaleBlur = () => [
683
+ "",
684
+ "none",
685
+ themeBlur,
686
+ isArbitraryVariable,
687
+ isArbitraryValue
688
+ ];
689
+ const scaleRotate = () => [
690
+ "none",
691
+ isNumber,
692
+ isArbitraryVariable,
693
+ isArbitraryValue
694
+ ];
695
+ const scaleScale = () => [
696
+ "none",
697
+ isNumber,
698
+ isArbitraryVariable,
699
+ isArbitraryValue
700
+ ];
701
+ const scaleSkew = () => [
702
+ isNumber,
703
+ isArbitraryVariable,
704
+ isArbitraryValue
705
+ ];
706
+ const scaleTranslate = () => [
707
+ isFraction,
708
+ "full",
709
+ ...scaleUnambiguousSpacing()
710
+ ];
711
+ return {
712
+ cacheSize: 500,
713
+ theme: {
714
+ animate: [
715
+ "spin",
716
+ "ping",
717
+ "pulse",
718
+ "bounce"
719
+ ],
720
+ aspect: ["video"],
721
+ blur: [isTshirtSize],
722
+ breakpoint: [isTshirtSize],
723
+ color: [isAny],
724
+ container: [isTshirtSize],
725
+ "drop-shadow": [isTshirtSize],
726
+ ease: [
727
+ "in",
728
+ "out",
729
+ "in-out"
730
+ ],
731
+ font: [isAnyNonArbitrary],
732
+ "font-weight": [
733
+ "thin",
734
+ "extralight",
735
+ "light",
736
+ "normal",
737
+ "medium",
738
+ "semibold",
739
+ "bold",
740
+ "extrabold",
741
+ "black"
742
+ ],
743
+ "inset-shadow": [isTshirtSize],
744
+ leading: [
745
+ "none",
746
+ "tight",
747
+ "snug",
748
+ "normal",
749
+ "relaxed",
750
+ "loose"
751
+ ],
752
+ perspective: [
753
+ "dramatic",
754
+ "near",
755
+ "normal",
756
+ "midrange",
757
+ "distant",
758
+ "none"
759
+ ],
760
+ radius: [isTshirtSize],
761
+ shadow: [isTshirtSize],
762
+ spacing: ["px", isNumber],
763
+ text: [isTshirtSize],
764
+ "text-shadow": [isTshirtSize],
765
+ tracking: [
766
+ "tighter",
767
+ "tight",
768
+ "normal",
769
+ "wide",
770
+ "wider",
771
+ "widest"
772
+ ]
773
+ },
774
+ classGroups: {
775
+ aspect: [{ aspect: [
776
+ "auto",
777
+ "square",
778
+ isFraction,
779
+ isArbitraryValue,
780
+ isArbitraryVariable,
781
+ themeAspect
782
+ ] }],
783
+ container: ["container"],
784
+ columns: [{ columns: [
785
+ isNumber,
786
+ isArbitraryValue,
787
+ isArbitraryVariable,
788
+ themeContainer
789
+ ] }],
790
+ "break-after": [{ "break-after": scaleBreak() }],
791
+ "break-before": [{ "break-before": scaleBreak() }],
792
+ "break-inside": [{ "break-inside": [
793
+ "auto",
794
+ "avoid",
795
+ "avoid-page",
796
+ "avoid-column"
797
+ ] }],
798
+ "box-decoration": [{ "box-decoration": ["slice", "clone"] }],
799
+ box: [{ box: ["border", "content"] }],
800
+ display: [
801
+ "block",
802
+ "inline-block",
803
+ "inline",
804
+ "flex",
805
+ "inline-flex",
806
+ "table",
807
+ "inline-table",
808
+ "table-caption",
809
+ "table-cell",
810
+ "table-column",
811
+ "table-column-group",
812
+ "table-footer-group",
813
+ "table-header-group",
814
+ "table-row-group",
815
+ "table-row",
816
+ "flow-root",
817
+ "grid",
818
+ "inline-grid",
819
+ "contents",
820
+ "list-item",
821
+ "hidden"
822
+ ],
823
+ sr: ["sr-only", "not-sr-only"],
824
+ float: [{ float: [
825
+ "right",
826
+ "left",
827
+ "none",
828
+ "start",
829
+ "end"
830
+ ] }],
831
+ clear: [{ clear: [
832
+ "left",
833
+ "right",
834
+ "both",
835
+ "none",
836
+ "start",
837
+ "end"
838
+ ] }],
839
+ isolation: ["isolate", "isolation-auto"],
840
+ "object-fit": [{ object: [
841
+ "contain",
842
+ "cover",
843
+ "fill",
844
+ "none",
845
+ "scale-down"
846
+ ] }],
847
+ "object-position": [{ object: scalePositionWithArbitrary() }],
848
+ overflow: [{ overflow: scaleOverflow() }],
849
+ "overflow-x": [{ "overflow-x": scaleOverflow() }],
850
+ "overflow-y": [{ "overflow-y": scaleOverflow() }],
851
+ overscroll: [{ overscroll: scaleOverscroll() }],
852
+ "overscroll-x": [{ "overscroll-x": scaleOverscroll() }],
853
+ "overscroll-y": [{ "overscroll-y": scaleOverscroll() }],
854
+ position: [
855
+ "static",
856
+ "fixed",
857
+ "absolute",
858
+ "relative",
859
+ "sticky"
860
+ ],
861
+ inset: [{ inset: scaleInset() }],
862
+ "inset-x": [{ "inset-x": scaleInset() }],
863
+ "inset-y": [{ "inset-y": scaleInset() }],
864
+ start: [{ start: scaleInset() }],
865
+ end: [{ end: scaleInset() }],
866
+ top: [{ top: scaleInset() }],
867
+ right: [{ right: scaleInset() }],
868
+ bottom: [{ bottom: scaleInset() }],
869
+ left: [{ left: scaleInset() }],
870
+ visibility: [
871
+ "visible",
872
+ "invisible",
873
+ "collapse"
874
+ ],
875
+ z: [{ z: [
876
+ isInteger,
877
+ "auto",
878
+ isArbitraryVariable,
879
+ isArbitraryValue
880
+ ] }],
881
+ basis: [{ basis: [
882
+ isFraction,
883
+ "full",
884
+ "auto",
885
+ themeContainer,
886
+ ...scaleUnambiguousSpacing()
887
+ ] }],
888
+ "flex-direction": [{ flex: [
889
+ "row",
890
+ "row-reverse",
891
+ "col",
892
+ "col-reverse"
893
+ ] }],
894
+ "flex-wrap": [{ flex: [
895
+ "nowrap",
896
+ "wrap",
897
+ "wrap-reverse"
898
+ ] }],
899
+ flex: [{ flex: [
900
+ isNumber,
901
+ isFraction,
902
+ "auto",
903
+ "initial",
904
+ "none",
905
+ isArbitraryValue
906
+ ] }],
907
+ grow: [{ grow: [
908
+ "",
909
+ isNumber,
910
+ isArbitraryVariable,
911
+ isArbitraryValue
912
+ ] }],
913
+ shrink: [{ shrink: [
914
+ "",
915
+ isNumber,
916
+ isArbitraryVariable,
917
+ isArbitraryValue
918
+ ] }],
919
+ order: [{ order: [
920
+ isInteger,
921
+ "first",
922
+ "last",
923
+ "none",
924
+ isArbitraryVariable,
925
+ isArbitraryValue
926
+ ] }],
927
+ "grid-cols": [{ "grid-cols": scaleGridTemplateColsRows() }],
928
+ "col-start-end": [{ col: scaleGridColRowStartAndEnd() }],
929
+ "col-start": [{ "col-start": scaleGridColRowStartOrEnd() }],
930
+ "col-end": [{ "col-end": scaleGridColRowStartOrEnd() }],
931
+ "grid-rows": [{ "grid-rows": scaleGridTemplateColsRows() }],
932
+ "row-start-end": [{ row: scaleGridColRowStartAndEnd() }],
933
+ "row-start": [{ "row-start": scaleGridColRowStartOrEnd() }],
934
+ "row-end": [{ "row-end": scaleGridColRowStartOrEnd() }],
935
+ "grid-flow": [{ "grid-flow": [
936
+ "row",
937
+ "col",
938
+ "dense",
939
+ "row-dense",
940
+ "col-dense"
941
+ ] }],
942
+ "auto-cols": [{ "auto-cols": scaleGridAutoColsRows() }],
943
+ "auto-rows": [{ "auto-rows": scaleGridAutoColsRows() }],
944
+ gap: [{ gap: scaleUnambiguousSpacing() }],
945
+ "gap-x": [{ "gap-x": scaleUnambiguousSpacing() }],
946
+ "gap-y": [{ "gap-y": scaleUnambiguousSpacing() }],
947
+ "justify-content": [{ justify: [...scaleAlignPrimaryAxis(), "normal"] }],
948
+ "justify-items": [{ "justify-items": [...scaleAlignSecondaryAxis(), "normal"] }],
949
+ "justify-self": [{ "justify-self": ["auto", ...scaleAlignSecondaryAxis()] }],
950
+ "align-content": [{ content: ["normal", ...scaleAlignPrimaryAxis()] }],
951
+ "align-items": [{ items: [...scaleAlignSecondaryAxis(), { baseline: ["", "last"] }] }],
952
+ "align-self": [{ self: [
953
+ "auto",
954
+ ...scaleAlignSecondaryAxis(),
955
+ { baseline: ["", "last"] }
956
+ ] }],
957
+ "place-content": [{ "place-content": scaleAlignPrimaryAxis() }],
958
+ "place-items": [{ "place-items": [...scaleAlignSecondaryAxis(), "baseline"] }],
959
+ "place-self": [{ "place-self": ["auto", ...scaleAlignSecondaryAxis()] }],
960
+ p: [{ p: scaleUnambiguousSpacing() }],
961
+ px: [{ px: scaleUnambiguousSpacing() }],
962
+ py: [{ py: scaleUnambiguousSpacing() }],
963
+ ps: [{ ps: scaleUnambiguousSpacing() }],
964
+ pe: [{ pe: scaleUnambiguousSpacing() }],
965
+ pt: [{ pt: scaleUnambiguousSpacing() }],
966
+ pr: [{ pr: scaleUnambiguousSpacing() }],
967
+ pb: [{ pb: scaleUnambiguousSpacing() }],
968
+ pl: [{ pl: scaleUnambiguousSpacing() }],
969
+ m: [{ m: scaleMargin() }],
970
+ mx: [{ mx: scaleMargin() }],
971
+ my: [{ my: scaleMargin() }],
972
+ ms: [{ ms: scaleMargin() }],
973
+ me: [{ me: scaleMargin() }],
974
+ mt: [{ mt: scaleMargin() }],
975
+ mr: [{ mr: scaleMargin() }],
976
+ mb: [{ mb: scaleMargin() }],
977
+ ml: [{ ml: scaleMargin() }],
978
+ "space-x": [{ "space-x": scaleUnambiguousSpacing() }],
979
+ "space-x-reverse": ["space-x-reverse"],
980
+ "space-y": [{ "space-y": scaleUnambiguousSpacing() }],
981
+ "space-y-reverse": ["space-y-reverse"],
982
+ size: [{ size: scaleSizing() }],
983
+ w: [{ w: [
984
+ themeContainer,
985
+ "screen",
986
+ ...scaleSizing()
987
+ ] }],
988
+ "min-w": [{ "min-w": [
989
+ themeContainer,
990
+ "screen",
991
+ "none",
992
+ ...scaleSizing()
993
+ ] }],
994
+ "max-w": [{ "max-w": [
995
+ themeContainer,
996
+ "screen",
997
+ "none",
998
+ "prose",
999
+ { screen: [themeBreakpoint] },
1000
+ ...scaleSizing()
1001
+ ] }],
1002
+ h: [{ h: [
1003
+ "screen",
1004
+ "lh",
1005
+ ...scaleSizing()
1006
+ ] }],
1007
+ "min-h": [{ "min-h": [
1008
+ "screen",
1009
+ "lh",
1010
+ "none",
1011
+ ...scaleSizing()
1012
+ ] }],
1013
+ "max-h": [{ "max-h": [
1014
+ "screen",
1015
+ "lh",
1016
+ ...scaleSizing()
1017
+ ] }],
1018
+ "font-size": [{ text: [
1019
+ "base",
1020
+ themeText,
1021
+ isArbitraryVariableLength,
1022
+ isArbitraryLength
1023
+ ] }],
1024
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
1025
+ "font-style": ["italic", "not-italic"],
1026
+ "font-weight": [{ font: [
1027
+ themeFontWeight,
1028
+ isArbitraryVariable,
1029
+ isArbitraryNumber
1030
+ ] }],
1031
+ "font-stretch": [{ "font-stretch": [
1032
+ "ultra-condensed",
1033
+ "extra-condensed",
1034
+ "condensed",
1035
+ "semi-condensed",
1036
+ "normal",
1037
+ "semi-expanded",
1038
+ "expanded",
1039
+ "extra-expanded",
1040
+ "ultra-expanded",
1041
+ isPercent,
1042
+ isArbitraryValue
1043
+ ] }],
1044
+ "font-family": [{ font: [
1045
+ isArbitraryVariableFamilyName,
1046
+ isArbitraryValue,
1047
+ themeFont
1048
+ ] }],
1049
+ "fvn-normal": ["normal-nums"],
1050
+ "fvn-ordinal": ["ordinal"],
1051
+ "fvn-slashed-zero": ["slashed-zero"],
1052
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
1053
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
1054
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
1055
+ tracking: [{ tracking: [
1056
+ themeTracking,
1057
+ isArbitraryVariable,
1058
+ isArbitraryValue
1059
+ ] }],
1060
+ "line-clamp": [{ "line-clamp": [
1061
+ isNumber,
1062
+ "none",
1063
+ isArbitraryVariable,
1064
+ isArbitraryNumber
1065
+ ] }],
1066
+ leading: [{ leading: [themeLeading, ...scaleUnambiguousSpacing()] }],
1067
+ "list-image": [{ "list-image": [
1068
+ "none",
1069
+ isArbitraryVariable,
1070
+ isArbitraryValue
1071
+ ] }],
1072
+ "list-style-position": [{ list: ["inside", "outside"] }],
1073
+ "list-style-type": [{ list: [
1074
+ "disc",
1075
+ "decimal",
1076
+ "none",
1077
+ isArbitraryVariable,
1078
+ isArbitraryValue
1079
+ ] }],
1080
+ "text-alignment": [{ text: [
1081
+ "left",
1082
+ "center",
1083
+ "right",
1084
+ "justify",
1085
+ "start",
1086
+ "end"
1087
+ ] }],
1088
+ "placeholder-color": [{ placeholder: scaleColor() }],
1089
+ "text-color": [{ text: scaleColor() }],
1090
+ "text-decoration": [
1091
+ "underline",
1092
+ "overline",
1093
+ "line-through",
1094
+ "no-underline"
1095
+ ],
1096
+ "text-decoration-style": [{ decoration: [...scaleLineStyle(), "wavy"] }],
1097
+ "text-decoration-thickness": [{ decoration: [
1098
+ isNumber,
1099
+ "from-font",
1100
+ "auto",
1101
+ isArbitraryVariable,
1102
+ isArbitraryLength
1103
+ ] }],
1104
+ "text-decoration-color": [{ decoration: scaleColor() }],
1105
+ "underline-offset": [{ "underline-offset": [
1106
+ isNumber,
1107
+ "auto",
1108
+ isArbitraryVariable,
1109
+ isArbitraryValue
1110
+ ] }],
1111
+ "text-transform": [
1112
+ "uppercase",
1113
+ "lowercase",
1114
+ "capitalize",
1115
+ "normal-case"
1116
+ ],
1117
+ "text-overflow": [
1118
+ "truncate",
1119
+ "text-ellipsis",
1120
+ "text-clip"
1121
+ ],
1122
+ "text-wrap": [{ text: [
1123
+ "wrap",
1124
+ "nowrap",
1125
+ "balance",
1126
+ "pretty"
1127
+ ] }],
1128
+ indent: [{ indent: scaleUnambiguousSpacing() }],
1129
+ "vertical-align": [{ align: [
1130
+ "baseline",
1131
+ "top",
1132
+ "middle",
1133
+ "bottom",
1134
+ "text-top",
1135
+ "text-bottom",
1136
+ "sub",
1137
+ "super",
1138
+ isArbitraryVariable,
1139
+ isArbitraryValue
1140
+ ] }],
1141
+ whitespace: [{ whitespace: [
1142
+ "normal",
1143
+ "nowrap",
1144
+ "pre",
1145
+ "pre-line",
1146
+ "pre-wrap",
1147
+ "break-spaces"
1148
+ ] }],
1149
+ break: [{ break: [
1150
+ "normal",
1151
+ "words",
1152
+ "all",
1153
+ "keep"
1154
+ ] }],
1155
+ wrap: [{ wrap: [
1156
+ "break-word",
1157
+ "anywhere",
1158
+ "normal"
1159
+ ] }],
1160
+ hyphens: [{ hyphens: [
1161
+ "none",
1162
+ "manual",
1163
+ "auto"
1164
+ ] }],
1165
+ content: [{ content: [
1166
+ "none",
1167
+ isArbitraryVariable,
1168
+ isArbitraryValue
1169
+ ] }],
1170
+ "bg-attachment": [{ bg: [
1171
+ "fixed",
1172
+ "local",
1173
+ "scroll"
1174
+ ] }],
1175
+ "bg-clip": [{ "bg-clip": [
1176
+ "border",
1177
+ "padding",
1178
+ "content",
1179
+ "text"
1180
+ ] }],
1181
+ "bg-origin": [{ "bg-origin": [
1182
+ "border",
1183
+ "padding",
1184
+ "content"
1185
+ ] }],
1186
+ "bg-position": [{ bg: scaleBgPosition() }],
1187
+ "bg-repeat": [{ bg: scaleBgRepeat() }],
1188
+ "bg-size": [{ bg: scaleBgSize() }],
1189
+ "bg-image": [{ bg: [
1190
+ "none",
1191
+ {
1192
+ linear: [
1193
+ { to: [
1194
+ "t",
1195
+ "tr",
1196
+ "r",
1197
+ "br",
1198
+ "b",
1199
+ "bl",
1200
+ "l",
1201
+ "tl"
1202
+ ] },
1203
+ isInteger,
1204
+ isArbitraryVariable,
1205
+ isArbitraryValue
1206
+ ],
1207
+ radial: [
1208
+ "",
1209
+ isArbitraryVariable,
1210
+ isArbitraryValue
1211
+ ],
1212
+ conic: [
1213
+ isInteger,
1214
+ isArbitraryVariable,
1215
+ isArbitraryValue
1216
+ ]
1217
+ },
1218
+ isArbitraryVariableImage,
1219
+ isArbitraryImage
1220
+ ] }],
1221
+ "bg-color": [{ bg: scaleColor() }],
1222
+ "gradient-from-pos": [{ from: scaleGradientStopPosition() }],
1223
+ "gradient-via-pos": [{ via: scaleGradientStopPosition() }],
1224
+ "gradient-to-pos": [{ to: scaleGradientStopPosition() }],
1225
+ "gradient-from": [{ from: scaleColor() }],
1226
+ "gradient-via": [{ via: scaleColor() }],
1227
+ "gradient-to": [{ to: scaleColor() }],
1228
+ rounded: [{ rounded: scaleRadius() }],
1229
+ "rounded-s": [{ "rounded-s": scaleRadius() }],
1230
+ "rounded-e": [{ "rounded-e": scaleRadius() }],
1231
+ "rounded-t": [{ "rounded-t": scaleRadius() }],
1232
+ "rounded-r": [{ "rounded-r": scaleRadius() }],
1233
+ "rounded-b": [{ "rounded-b": scaleRadius() }],
1234
+ "rounded-l": [{ "rounded-l": scaleRadius() }],
1235
+ "rounded-ss": [{ "rounded-ss": scaleRadius() }],
1236
+ "rounded-se": [{ "rounded-se": scaleRadius() }],
1237
+ "rounded-ee": [{ "rounded-ee": scaleRadius() }],
1238
+ "rounded-es": [{ "rounded-es": scaleRadius() }],
1239
+ "rounded-tl": [{ "rounded-tl": scaleRadius() }],
1240
+ "rounded-tr": [{ "rounded-tr": scaleRadius() }],
1241
+ "rounded-br": [{ "rounded-br": scaleRadius() }],
1242
+ "rounded-bl": [{ "rounded-bl": scaleRadius() }],
1243
+ "border-w": [{ border: scaleBorderWidth() }],
1244
+ "border-w-x": [{ "border-x": scaleBorderWidth() }],
1245
+ "border-w-y": [{ "border-y": scaleBorderWidth() }],
1246
+ "border-w-s": [{ "border-s": scaleBorderWidth() }],
1247
+ "border-w-e": [{ "border-e": scaleBorderWidth() }],
1248
+ "border-w-t": [{ "border-t": scaleBorderWidth() }],
1249
+ "border-w-r": [{ "border-r": scaleBorderWidth() }],
1250
+ "border-w-b": [{ "border-b": scaleBorderWidth() }],
1251
+ "border-w-l": [{ "border-l": scaleBorderWidth() }],
1252
+ "divide-x": [{ "divide-x": scaleBorderWidth() }],
1253
+ "divide-x-reverse": ["divide-x-reverse"],
1254
+ "divide-y": [{ "divide-y": scaleBorderWidth() }],
1255
+ "divide-y-reverse": ["divide-y-reverse"],
1256
+ "border-style": [{ border: [
1257
+ ...scaleLineStyle(),
1258
+ "hidden",
1259
+ "none"
1260
+ ] }],
1261
+ "divide-style": [{ divide: [
1262
+ ...scaleLineStyle(),
1263
+ "hidden",
1264
+ "none"
1265
+ ] }],
1266
+ "border-color": [{ border: scaleColor() }],
1267
+ "border-color-x": [{ "border-x": scaleColor() }],
1268
+ "border-color-y": [{ "border-y": scaleColor() }],
1269
+ "border-color-s": [{ "border-s": scaleColor() }],
1270
+ "border-color-e": [{ "border-e": scaleColor() }],
1271
+ "border-color-t": [{ "border-t": scaleColor() }],
1272
+ "border-color-r": [{ "border-r": scaleColor() }],
1273
+ "border-color-b": [{ "border-b": scaleColor() }],
1274
+ "border-color-l": [{ "border-l": scaleColor() }],
1275
+ "divide-color": [{ divide: scaleColor() }],
1276
+ "outline-style": [{ outline: [
1277
+ ...scaleLineStyle(),
1278
+ "none",
1279
+ "hidden"
1280
+ ] }],
1281
+ "outline-offset": [{ "outline-offset": [
1282
+ isNumber,
1283
+ isArbitraryVariable,
1284
+ isArbitraryValue
1285
+ ] }],
1286
+ "outline-w": [{ outline: [
1287
+ "",
1288
+ isNumber,
1289
+ isArbitraryVariableLength,
1290
+ isArbitraryLength
1291
+ ] }],
1292
+ "outline-color": [{ outline: scaleColor() }],
1293
+ shadow: [{ shadow: [
1294
+ "",
1295
+ "none",
1296
+ themeShadow,
1297
+ isArbitraryVariableShadow,
1298
+ isArbitraryShadow
1299
+ ] }],
1300
+ "shadow-color": [{ shadow: scaleColor() }],
1301
+ "inset-shadow": [{ "inset-shadow": [
1302
+ "none",
1303
+ themeInsetShadow,
1304
+ isArbitraryVariableShadow,
1305
+ isArbitraryShadow
1306
+ ] }],
1307
+ "inset-shadow-color": [{ "inset-shadow": scaleColor() }],
1308
+ "ring-w": [{ ring: scaleBorderWidth() }],
1309
+ "ring-w-inset": ["ring-inset"],
1310
+ "ring-color": [{ ring: scaleColor() }],
1311
+ "ring-offset-w": [{ "ring-offset": [isNumber, isArbitraryLength] }],
1312
+ "ring-offset-color": [{ "ring-offset": scaleColor() }],
1313
+ "inset-ring-w": [{ "inset-ring": scaleBorderWidth() }],
1314
+ "inset-ring-color": [{ "inset-ring": scaleColor() }],
1315
+ "text-shadow": [{ "text-shadow": [
1316
+ "none",
1317
+ themeTextShadow,
1318
+ isArbitraryVariableShadow,
1319
+ isArbitraryShadow
1320
+ ] }],
1321
+ "text-shadow-color": [{ "text-shadow": scaleColor() }],
1322
+ opacity: [{ opacity: [
1323
+ isNumber,
1324
+ isArbitraryVariable,
1325
+ isArbitraryValue
1326
+ ] }],
1327
+ "mix-blend": [{ "mix-blend": [
1328
+ ...scaleBlendMode(),
1329
+ "plus-darker",
1330
+ "plus-lighter"
1331
+ ] }],
1332
+ "bg-blend": [{ "bg-blend": scaleBlendMode() }],
1333
+ "mask-clip": [{ "mask-clip": [
1334
+ "border",
1335
+ "padding",
1336
+ "content",
1337
+ "fill",
1338
+ "stroke",
1339
+ "view"
1340
+ ] }, "mask-no-clip"],
1341
+ "mask-composite": [{ mask: [
1342
+ "add",
1343
+ "subtract",
1344
+ "intersect",
1345
+ "exclude"
1346
+ ] }],
1347
+ "mask-image-linear-pos": [{ "mask-linear": [isNumber] }],
1348
+ "mask-image-linear-from-pos": [{ "mask-linear-from": scaleMaskImagePosition() }],
1349
+ "mask-image-linear-to-pos": [{ "mask-linear-to": scaleMaskImagePosition() }],
1350
+ "mask-image-linear-from-color": [{ "mask-linear-from": scaleColor() }],
1351
+ "mask-image-linear-to-color": [{ "mask-linear-to": scaleColor() }],
1352
+ "mask-image-t-from-pos": [{ "mask-t-from": scaleMaskImagePosition() }],
1353
+ "mask-image-t-to-pos": [{ "mask-t-to": scaleMaskImagePosition() }],
1354
+ "mask-image-t-from-color": [{ "mask-t-from": scaleColor() }],
1355
+ "mask-image-t-to-color": [{ "mask-t-to": scaleColor() }],
1356
+ "mask-image-r-from-pos": [{ "mask-r-from": scaleMaskImagePosition() }],
1357
+ "mask-image-r-to-pos": [{ "mask-r-to": scaleMaskImagePosition() }],
1358
+ "mask-image-r-from-color": [{ "mask-r-from": scaleColor() }],
1359
+ "mask-image-r-to-color": [{ "mask-r-to": scaleColor() }],
1360
+ "mask-image-b-from-pos": [{ "mask-b-from": scaleMaskImagePosition() }],
1361
+ "mask-image-b-to-pos": [{ "mask-b-to": scaleMaskImagePosition() }],
1362
+ "mask-image-b-from-color": [{ "mask-b-from": scaleColor() }],
1363
+ "mask-image-b-to-color": [{ "mask-b-to": scaleColor() }],
1364
+ "mask-image-l-from-pos": [{ "mask-l-from": scaleMaskImagePosition() }],
1365
+ "mask-image-l-to-pos": [{ "mask-l-to": scaleMaskImagePosition() }],
1366
+ "mask-image-l-from-color": [{ "mask-l-from": scaleColor() }],
1367
+ "mask-image-l-to-color": [{ "mask-l-to": scaleColor() }],
1368
+ "mask-image-x-from-pos": [{ "mask-x-from": scaleMaskImagePosition() }],
1369
+ "mask-image-x-to-pos": [{ "mask-x-to": scaleMaskImagePosition() }],
1370
+ "mask-image-x-from-color": [{ "mask-x-from": scaleColor() }],
1371
+ "mask-image-x-to-color": [{ "mask-x-to": scaleColor() }],
1372
+ "mask-image-y-from-pos": [{ "mask-y-from": scaleMaskImagePosition() }],
1373
+ "mask-image-y-to-pos": [{ "mask-y-to": scaleMaskImagePosition() }],
1374
+ "mask-image-y-from-color": [{ "mask-y-from": scaleColor() }],
1375
+ "mask-image-y-to-color": [{ "mask-y-to": scaleColor() }],
1376
+ "mask-image-radial": [{ "mask-radial": [isArbitraryVariable, isArbitraryValue] }],
1377
+ "mask-image-radial-from-pos": [{ "mask-radial-from": scaleMaskImagePosition() }],
1378
+ "mask-image-radial-to-pos": [{ "mask-radial-to": scaleMaskImagePosition() }],
1379
+ "mask-image-radial-from-color": [{ "mask-radial-from": scaleColor() }],
1380
+ "mask-image-radial-to-color": [{ "mask-radial-to": scaleColor() }],
1381
+ "mask-image-radial-shape": [{ "mask-radial": ["circle", "ellipse"] }],
1382
+ "mask-image-radial-size": [{ "mask-radial": [{
1383
+ closest: ["side", "corner"],
1384
+ farthest: ["side", "corner"]
1385
+ }] }],
1386
+ "mask-image-radial-pos": [{ "mask-radial-at": scalePosition() }],
1387
+ "mask-image-conic-pos": [{ "mask-conic": [isNumber] }],
1388
+ "mask-image-conic-from-pos": [{ "mask-conic-from": scaleMaskImagePosition() }],
1389
+ "mask-image-conic-to-pos": [{ "mask-conic-to": scaleMaskImagePosition() }],
1390
+ "mask-image-conic-from-color": [{ "mask-conic-from": scaleColor() }],
1391
+ "mask-image-conic-to-color": [{ "mask-conic-to": scaleColor() }],
1392
+ "mask-mode": [{ mask: [
1393
+ "alpha",
1394
+ "luminance",
1395
+ "match"
1396
+ ] }],
1397
+ "mask-origin": [{ "mask-origin": [
1398
+ "border",
1399
+ "padding",
1400
+ "content",
1401
+ "fill",
1402
+ "stroke",
1403
+ "view"
1404
+ ] }],
1405
+ "mask-position": [{ mask: scaleBgPosition() }],
1406
+ "mask-repeat": [{ mask: scaleBgRepeat() }],
1407
+ "mask-size": [{ mask: scaleBgSize() }],
1408
+ "mask-type": [{ "mask-type": ["alpha", "luminance"] }],
1409
+ "mask-image": [{ mask: [
1410
+ "none",
1411
+ isArbitraryVariable,
1412
+ isArbitraryValue
1413
+ ] }],
1414
+ filter: [{ filter: [
1415
+ "",
1416
+ "none",
1417
+ isArbitraryVariable,
1418
+ isArbitraryValue
1419
+ ] }],
1420
+ blur: [{ blur: scaleBlur() }],
1421
+ brightness: [{ brightness: [
1422
+ isNumber,
1423
+ isArbitraryVariable,
1424
+ isArbitraryValue
1425
+ ] }],
1426
+ contrast: [{ contrast: [
1427
+ isNumber,
1428
+ isArbitraryVariable,
1429
+ isArbitraryValue
1430
+ ] }],
1431
+ "drop-shadow": [{ "drop-shadow": [
1432
+ "",
1433
+ "none",
1434
+ themeDropShadow,
1435
+ isArbitraryVariableShadow,
1436
+ isArbitraryShadow
1437
+ ] }],
1438
+ "drop-shadow-color": [{ "drop-shadow": scaleColor() }],
1439
+ grayscale: [{ grayscale: [
1440
+ "",
1441
+ isNumber,
1442
+ isArbitraryVariable,
1443
+ isArbitraryValue
1444
+ ] }],
1445
+ "hue-rotate": [{ "hue-rotate": [
1446
+ isNumber,
1447
+ isArbitraryVariable,
1448
+ isArbitraryValue
1449
+ ] }],
1450
+ invert: [{ invert: [
1451
+ "",
1452
+ isNumber,
1453
+ isArbitraryVariable,
1454
+ isArbitraryValue
1455
+ ] }],
1456
+ saturate: [{ saturate: [
1457
+ isNumber,
1458
+ isArbitraryVariable,
1459
+ isArbitraryValue
1460
+ ] }],
1461
+ sepia: [{ sepia: [
1462
+ "",
1463
+ isNumber,
1464
+ isArbitraryVariable,
1465
+ isArbitraryValue
1466
+ ] }],
1467
+ "backdrop-filter": [{ "backdrop-filter": [
1468
+ "",
1469
+ "none",
1470
+ isArbitraryVariable,
1471
+ isArbitraryValue
1472
+ ] }],
1473
+ "backdrop-blur": [{ "backdrop-blur": scaleBlur() }],
1474
+ "backdrop-brightness": [{ "backdrop-brightness": [
1475
+ isNumber,
1476
+ isArbitraryVariable,
1477
+ isArbitraryValue
1478
+ ] }],
1479
+ "backdrop-contrast": [{ "backdrop-contrast": [
1480
+ isNumber,
1481
+ isArbitraryVariable,
1482
+ isArbitraryValue
1483
+ ] }],
1484
+ "backdrop-grayscale": [{ "backdrop-grayscale": [
1485
+ "",
1486
+ isNumber,
1487
+ isArbitraryVariable,
1488
+ isArbitraryValue
1489
+ ] }],
1490
+ "backdrop-hue-rotate": [{ "backdrop-hue-rotate": [
1491
+ isNumber,
1492
+ isArbitraryVariable,
1493
+ isArbitraryValue
1494
+ ] }],
1495
+ "backdrop-invert": [{ "backdrop-invert": [
1496
+ "",
1497
+ isNumber,
1498
+ isArbitraryVariable,
1499
+ isArbitraryValue
1500
+ ] }],
1501
+ "backdrop-opacity": [{ "backdrop-opacity": [
1502
+ isNumber,
1503
+ isArbitraryVariable,
1504
+ isArbitraryValue
1505
+ ] }],
1506
+ "backdrop-saturate": [{ "backdrop-saturate": [
1507
+ isNumber,
1508
+ isArbitraryVariable,
1509
+ isArbitraryValue
1510
+ ] }],
1511
+ "backdrop-sepia": [{ "backdrop-sepia": [
1512
+ "",
1513
+ isNumber,
1514
+ isArbitraryVariable,
1515
+ isArbitraryValue
1516
+ ] }],
1517
+ "border-collapse": [{ border: ["collapse", "separate"] }],
1518
+ "border-spacing": [{ "border-spacing": scaleUnambiguousSpacing() }],
1519
+ "border-spacing-x": [{ "border-spacing-x": scaleUnambiguousSpacing() }],
1520
+ "border-spacing-y": [{ "border-spacing-y": scaleUnambiguousSpacing() }],
1521
+ "table-layout": [{ table: ["auto", "fixed"] }],
1522
+ caption: [{ caption: ["top", "bottom"] }],
1523
+ transition: [{ transition: [
1524
+ "",
1525
+ "all",
1526
+ "colors",
1527
+ "opacity",
1528
+ "shadow",
1529
+ "transform",
1530
+ "none",
1531
+ isArbitraryVariable,
1532
+ isArbitraryValue
1533
+ ] }],
1534
+ "transition-behavior": [{ transition: ["normal", "discrete"] }],
1535
+ duration: [{ duration: [
1536
+ isNumber,
1537
+ "initial",
1538
+ isArbitraryVariable,
1539
+ isArbitraryValue
1540
+ ] }],
1541
+ ease: [{ ease: [
1542
+ "linear",
1543
+ "initial",
1544
+ themeEase,
1545
+ isArbitraryVariable,
1546
+ isArbitraryValue
1547
+ ] }],
1548
+ delay: [{ delay: [
1549
+ isNumber,
1550
+ isArbitraryVariable,
1551
+ isArbitraryValue
1552
+ ] }],
1553
+ animate: [{ animate: [
1554
+ "none",
1555
+ themeAnimate,
1556
+ isArbitraryVariable,
1557
+ isArbitraryValue
1558
+ ] }],
1559
+ backface: [{ backface: ["hidden", "visible"] }],
1560
+ perspective: [{ perspective: [
1561
+ themePerspective,
1562
+ isArbitraryVariable,
1563
+ isArbitraryValue
1564
+ ] }],
1565
+ "perspective-origin": [{ "perspective-origin": scalePositionWithArbitrary() }],
1566
+ rotate: [{ rotate: scaleRotate() }],
1567
+ "rotate-x": [{ "rotate-x": scaleRotate() }],
1568
+ "rotate-y": [{ "rotate-y": scaleRotate() }],
1569
+ "rotate-z": [{ "rotate-z": scaleRotate() }],
1570
+ scale: [{ scale: scaleScale() }],
1571
+ "scale-x": [{ "scale-x": scaleScale() }],
1572
+ "scale-y": [{ "scale-y": scaleScale() }],
1573
+ "scale-z": [{ "scale-z": scaleScale() }],
1574
+ "scale-3d": ["scale-3d"],
1575
+ skew: [{ skew: scaleSkew() }],
1576
+ "skew-x": [{ "skew-x": scaleSkew() }],
1577
+ "skew-y": [{ "skew-y": scaleSkew() }],
1578
+ transform: [{ transform: [
1579
+ isArbitraryVariable,
1580
+ isArbitraryValue,
1581
+ "",
1582
+ "none",
1583
+ "gpu",
1584
+ "cpu"
1585
+ ] }],
1586
+ "transform-origin": [{ origin: scalePositionWithArbitrary() }],
1587
+ "transform-style": [{ transform: ["3d", "flat"] }],
1588
+ translate: [{ translate: scaleTranslate() }],
1589
+ "translate-x": [{ "translate-x": scaleTranslate() }],
1590
+ "translate-y": [{ "translate-y": scaleTranslate() }],
1591
+ "translate-z": [{ "translate-z": scaleTranslate() }],
1592
+ "translate-none": ["translate-none"],
1593
+ accent: [{ accent: scaleColor() }],
1594
+ appearance: [{ appearance: ["none", "auto"] }],
1595
+ "caret-color": [{ caret: scaleColor() }],
1596
+ "color-scheme": [{ scheme: [
1597
+ "normal",
1598
+ "dark",
1599
+ "light",
1600
+ "light-dark",
1601
+ "only-dark",
1602
+ "only-light"
1603
+ ] }],
1604
+ cursor: [{ cursor: [
1605
+ "auto",
1606
+ "default",
1607
+ "pointer",
1608
+ "wait",
1609
+ "text",
1610
+ "move",
1611
+ "help",
1612
+ "not-allowed",
1613
+ "none",
1614
+ "context-menu",
1615
+ "progress",
1616
+ "cell",
1617
+ "crosshair",
1618
+ "vertical-text",
1619
+ "alias",
1620
+ "copy",
1621
+ "no-drop",
1622
+ "grab",
1623
+ "grabbing",
1624
+ "all-scroll",
1625
+ "col-resize",
1626
+ "row-resize",
1627
+ "n-resize",
1628
+ "e-resize",
1629
+ "s-resize",
1630
+ "w-resize",
1631
+ "ne-resize",
1632
+ "nw-resize",
1633
+ "se-resize",
1634
+ "sw-resize",
1635
+ "ew-resize",
1636
+ "ns-resize",
1637
+ "nesw-resize",
1638
+ "nwse-resize",
1639
+ "zoom-in",
1640
+ "zoom-out",
1641
+ isArbitraryVariable,
1642
+ isArbitraryValue
1643
+ ] }],
1644
+ "field-sizing": [{ "field-sizing": ["fixed", "content"] }],
1645
+ "pointer-events": [{ "pointer-events": ["auto", "none"] }],
1646
+ resize: [{ resize: [
1647
+ "none",
1648
+ "",
1649
+ "y",
1650
+ "x"
1651
+ ] }],
1652
+ "scroll-behavior": [{ scroll: ["auto", "smooth"] }],
1653
+ "scroll-m": [{ "scroll-m": scaleUnambiguousSpacing() }],
1654
+ "scroll-mx": [{ "scroll-mx": scaleUnambiguousSpacing() }],
1655
+ "scroll-my": [{ "scroll-my": scaleUnambiguousSpacing() }],
1656
+ "scroll-ms": [{ "scroll-ms": scaleUnambiguousSpacing() }],
1657
+ "scroll-me": [{ "scroll-me": scaleUnambiguousSpacing() }],
1658
+ "scroll-mt": [{ "scroll-mt": scaleUnambiguousSpacing() }],
1659
+ "scroll-mr": [{ "scroll-mr": scaleUnambiguousSpacing() }],
1660
+ "scroll-mb": [{ "scroll-mb": scaleUnambiguousSpacing() }],
1661
+ "scroll-ml": [{ "scroll-ml": scaleUnambiguousSpacing() }],
1662
+ "scroll-p": [{ "scroll-p": scaleUnambiguousSpacing() }],
1663
+ "scroll-px": [{ "scroll-px": scaleUnambiguousSpacing() }],
1664
+ "scroll-py": [{ "scroll-py": scaleUnambiguousSpacing() }],
1665
+ "scroll-ps": [{ "scroll-ps": scaleUnambiguousSpacing() }],
1666
+ "scroll-pe": [{ "scroll-pe": scaleUnambiguousSpacing() }],
1667
+ "scroll-pt": [{ "scroll-pt": scaleUnambiguousSpacing() }],
1668
+ "scroll-pr": [{ "scroll-pr": scaleUnambiguousSpacing() }],
1669
+ "scroll-pb": [{ "scroll-pb": scaleUnambiguousSpacing() }],
1670
+ "scroll-pl": [{ "scroll-pl": scaleUnambiguousSpacing() }],
1671
+ "snap-align": [{ snap: [
1672
+ "start",
1673
+ "end",
1674
+ "center",
1675
+ "align-none"
1676
+ ] }],
1677
+ "snap-stop": [{ snap: ["normal", "always"] }],
1678
+ "snap-type": [{ snap: [
1679
+ "none",
1680
+ "x",
1681
+ "y",
1682
+ "both"
1683
+ ] }],
1684
+ "snap-strictness": [{ snap: ["mandatory", "proximity"] }],
1685
+ touch: [{ touch: [
1686
+ "auto",
1687
+ "none",
1688
+ "manipulation"
1689
+ ] }],
1690
+ "touch-x": [{ "touch-pan": [
1691
+ "x",
1692
+ "left",
1693
+ "right"
1694
+ ] }],
1695
+ "touch-y": [{ "touch-pan": [
1696
+ "y",
1697
+ "up",
1698
+ "down"
1699
+ ] }],
1700
+ "touch-pz": ["touch-pinch-zoom"],
1701
+ select: [{ select: [
1702
+ "none",
1703
+ "text",
1704
+ "all",
1705
+ "auto"
1706
+ ] }],
1707
+ "will-change": [{ "will-change": [
1708
+ "auto",
1709
+ "scroll",
1710
+ "contents",
1711
+ "transform",
1712
+ isArbitraryVariable,
1713
+ isArbitraryValue
1714
+ ] }],
1715
+ fill: [{ fill: ["none", ...scaleColor()] }],
1716
+ "stroke-w": [{ stroke: [
1717
+ isNumber,
1718
+ isArbitraryVariableLength,
1719
+ isArbitraryLength,
1720
+ isArbitraryNumber
1721
+ ] }],
1722
+ stroke: [{ stroke: ["none", ...scaleColor()] }],
1723
+ "forced-color-adjust": [{ "forced-color-adjust": ["auto", "none"] }]
1724
+ },
1725
+ conflictingClassGroups: {
1726
+ overflow: ["overflow-x", "overflow-y"],
1727
+ overscroll: ["overscroll-x", "overscroll-y"],
1728
+ inset: [
1729
+ "inset-x",
1730
+ "inset-y",
1731
+ "start",
1732
+ "end",
1733
+ "top",
1734
+ "right",
1735
+ "bottom",
1736
+ "left"
1737
+ ],
1738
+ "inset-x": ["right", "left"],
1739
+ "inset-y": ["top", "bottom"],
1740
+ flex: [
1741
+ "basis",
1742
+ "grow",
1743
+ "shrink"
1744
+ ],
1745
+ gap: ["gap-x", "gap-y"],
1746
+ p: [
1747
+ "px",
1748
+ "py",
1749
+ "ps",
1750
+ "pe",
1751
+ "pt",
1752
+ "pr",
1753
+ "pb",
1754
+ "pl"
1755
+ ],
1756
+ px: ["pr", "pl"],
1757
+ py: ["pt", "pb"],
1758
+ m: [
1759
+ "mx",
1760
+ "my",
1761
+ "ms",
1762
+ "me",
1763
+ "mt",
1764
+ "mr",
1765
+ "mb",
1766
+ "ml"
1767
+ ],
1768
+ mx: ["mr", "ml"],
1769
+ my: ["mt", "mb"],
1770
+ size: ["w", "h"],
1771
+ "font-size": ["leading"],
1772
+ "fvn-normal": [
1773
+ "fvn-ordinal",
1774
+ "fvn-slashed-zero",
1775
+ "fvn-figure",
1776
+ "fvn-spacing",
1777
+ "fvn-fraction"
1778
+ ],
1779
+ "fvn-ordinal": ["fvn-normal"],
1780
+ "fvn-slashed-zero": ["fvn-normal"],
1781
+ "fvn-figure": ["fvn-normal"],
1782
+ "fvn-spacing": ["fvn-normal"],
1783
+ "fvn-fraction": ["fvn-normal"],
1784
+ "line-clamp": ["display", "overflow"],
1785
+ rounded: [
1786
+ "rounded-s",
1787
+ "rounded-e",
1788
+ "rounded-t",
1789
+ "rounded-r",
1790
+ "rounded-b",
1791
+ "rounded-l",
1792
+ "rounded-ss",
1793
+ "rounded-se",
1794
+ "rounded-ee",
1795
+ "rounded-es",
1796
+ "rounded-tl",
1797
+ "rounded-tr",
1798
+ "rounded-br",
1799
+ "rounded-bl"
1800
+ ],
1801
+ "rounded-s": ["rounded-ss", "rounded-es"],
1802
+ "rounded-e": ["rounded-se", "rounded-ee"],
1803
+ "rounded-t": ["rounded-tl", "rounded-tr"],
1804
+ "rounded-r": ["rounded-tr", "rounded-br"],
1805
+ "rounded-b": ["rounded-br", "rounded-bl"],
1806
+ "rounded-l": ["rounded-tl", "rounded-bl"],
1807
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
1808
+ "border-w": [
1809
+ "border-w-x",
1810
+ "border-w-y",
1811
+ "border-w-s",
1812
+ "border-w-e",
1813
+ "border-w-t",
1814
+ "border-w-r",
1815
+ "border-w-b",
1816
+ "border-w-l"
1817
+ ],
1818
+ "border-w-x": ["border-w-r", "border-w-l"],
1819
+ "border-w-y": ["border-w-t", "border-w-b"],
1820
+ "border-color": [
1821
+ "border-color-x",
1822
+ "border-color-y",
1823
+ "border-color-s",
1824
+ "border-color-e",
1825
+ "border-color-t",
1826
+ "border-color-r",
1827
+ "border-color-b",
1828
+ "border-color-l"
1829
+ ],
1830
+ "border-color-x": ["border-color-r", "border-color-l"],
1831
+ "border-color-y": ["border-color-t", "border-color-b"],
1832
+ translate: [
1833
+ "translate-x",
1834
+ "translate-y",
1835
+ "translate-none"
1836
+ ],
1837
+ "translate-none": [
1838
+ "translate",
1839
+ "translate-x",
1840
+ "translate-y",
1841
+ "translate-z"
1842
+ ],
1843
+ "scroll-m": [
1844
+ "scroll-mx",
1845
+ "scroll-my",
1846
+ "scroll-ms",
1847
+ "scroll-me",
1848
+ "scroll-mt",
1849
+ "scroll-mr",
1850
+ "scroll-mb",
1851
+ "scroll-ml"
1852
+ ],
1853
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
1854
+ "scroll-my": ["scroll-mt", "scroll-mb"],
1855
+ "scroll-p": [
1856
+ "scroll-px",
1857
+ "scroll-py",
1858
+ "scroll-ps",
1859
+ "scroll-pe",
1860
+ "scroll-pt",
1861
+ "scroll-pr",
1862
+ "scroll-pb",
1863
+ "scroll-pl"
1864
+ ],
1865
+ "scroll-px": ["scroll-pr", "scroll-pl"],
1866
+ "scroll-py": ["scroll-pt", "scroll-pb"],
1867
+ touch: [
1868
+ "touch-x",
1869
+ "touch-y",
1870
+ "touch-pz"
1871
+ ],
1872
+ "touch-x": ["touch"],
1873
+ "touch-y": ["touch"],
1874
+ "touch-pz": ["touch"]
1875
+ },
1876
+ conflictingClassGroupModifiers: { "font-size": ["leading"] },
1877
+ orderSensitiveModifiers: [
1878
+ "*",
1879
+ "**",
1880
+ "after",
1881
+ "backdrop",
1882
+ "before",
1883
+ "details-content",
1884
+ "file",
1885
+ "first-letter",
1886
+ "first-line",
1887
+ "marker",
1888
+ "placeholder",
1889
+ "selection"
1890
+ ]
1891
+ };
1892
+ };
1893
+ /**
1894
+ * @param baseConfig Config where other config will be merged into. This object will be mutated.
1895
+ * @param configExtension Partial config to merge into the `baseConfig`.
1896
+ */
1897
+ const mergeConfigs = (baseConfig, { cacheSize, prefix, experimentalParseClassName, extend = {}, override = {} }) => {
1898
+ overrideProperty(baseConfig, "cacheSize", cacheSize);
1899
+ overrideProperty(baseConfig, "prefix", prefix);
1900
+ overrideProperty(baseConfig, "experimentalParseClassName", experimentalParseClassName);
1901
+ overrideConfigProperties(baseConfig.theme, override.theme);
1902
+ overrideConfigProperties(baseConfig.classGroups, override.classGroups);
1903
+ overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);
1904
+ overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);
1905
+ overrideProperty(baseConfig, "orderSensitiveModifiers", override.orderSensitiveModifiers);
1906
+ mergeConfigProperties(baseConfig.theme, extend.theme);
1907
+ mergeConfigProperties(baseConfig.classGroups, extend.classGroups);
1908
+ mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);
1909
+ mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);
1910
+ mergeArrayProperties(baseConfig, extend, "orderSensitiveModifiers");
1911
+ return baseConfig;
1912
+ };
1913
+ const overrideProperty = (baseObject, overrideKey, overrideValue) => {
1914
+ if (overrideValue !== void 0) baseObject[overrideKey] = overrideValue;
1915
+ };
1916
+ const overrideConfigProperties = (baseObject, overrideObject) => {
1917
+ if (overrideObject) for (const key in overrideObject) overrideProperty(baseObject, key, overrideObject[key]);
1918
+ };
1919
+ const mergeConfigProperties = (baseObject, mergeObject) => {
1920
+ if (mergeObject) for (const key in mergeObject) mergeArrayProperties(baseObject, mergeObject, key);
1921
+ };
1922
+ const mergeArrayProperties = (baseObject, mergeObject, key) => {
1923
+ const mergeValue = mergeObject[key];
1924
+ if (mergeValue !== void 0) baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;
1925
+ };
1926
+ const extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === "function" ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);
1927
+ const twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
1928
+
1929
+ //#endregion
1930
+ //#region ../node_modules/tailwind-variants/dist/chunk-LQJYWU4O.js
1931
+ var SPACE_REGEX = /\s+/g;
1932
+ var removeExtraSpaces = (str) => {
1933
+ if (typeof str !== "string" || !str) return str;
1934
+ return str.replace(SPACE_REGEX, " ").trim();
1935
+ };
1936
+ var cx = (...classnames) => {
1937
+ const classList = [];
1938
+ const buildClassString = (input) => {
1939
+ if (!input && input !== 0 && input !== 0n) return;
1940
+ if (Array.isArray(input)) {
1941
+ for (let i = 0, len = input.length; i < len; i++) buildClassString(input[i]);
1942
+ return;
1943
+ }
1944
+ const type = typeof input;
1945
+ if (type === "string" || type === "number" || type === "bigint") {
1946
+ if (type === "number" && input !== input) return;
1947
+ classList.push(String(input));
1948
+ } else if (type === "object") {
1949
+ const keys = Object.keys(input);
1950
+ for (let i = 0, len = keys.length; i < len; i++) {
1951
+ const key = keys[i];
1952
+ if (input[key]) classList.push(key);
1953
+ }
1954
+ }
1955
+ };
1956
+ for (let i = 0, len = classnames.length; i < len; i++) {
1957
+ const c = classnames[i];
1958
+ if (c !== null && c !== void 0) buildClassString(c);
1959
+ }
1960
+ return classList.length > 0 ? removeExtraSpaces(classList.join(" ")) : void 0;
1961
+ };
1962
+ var falsyToString = (value) => value === false ? "false" : value === true ? "true" : value === 0 ? "0" : value;
1963
+ var isEmptyObject = (obj) => {
1964
+ if (!obj || typeof obj !== "object") return true;
1965
+ for (const _ in obj) return false;
1966
+ return true;
1967
+ };
1968
+ var isEqual = (obj1, obj2) => {
1969
+ if (obj1 === obj2) return true;
1970
+ if (!obj1 || !obj2) return false;
1971
+ const keys1 = Object.keys(obj1);
1972
+ const keys2 = Object.keys(obj2);
1973
+ if (keys1.length !== keys2.length) return false;
1974
+ for (let i = 0; i < keys1.length; i++) {
1975
+ const key = keys1[i];
1976
+ if (!keys2.includes(key)) return false;
1977
+ if (obj1[key] !== obj2[key]) return false;
1978
+ }
1979
+ return true;
1980
+ };
1981
+ var joinObjects = (obj1, obj2) => {
1982
+ for (const key in obj2) if (Object.prototype.hasOwnProperty.call(obj2, key)) {
1983
+ const val2 = obj2[key];
1984
+ if (key in obj1) obj1[key] = cx(obj1[key], val2);
1985
+ else obj1[key] = val2;
1986
+ }
1987
+ return obj1;
1988
+ };
1989
+ var flat = (arr, target) => {
1990
+ for (let i = 0; i < arr.length; i++) {
1991
+ const el = arr[i];
1992
+ if (Array.isArray(el)) flat(el, target);
1993
+ else if (el) target.push(el);
1994
+ }
1995
+ };
1996
+ var flatMergeArrays = (...arrays) => {
1997
+ const result = [];
1998
+ flat(arrays, result);
1999
+ const filtered = [];
2000
+ for (let i = 0; i < result.length; i++) if (result[i]) filtered.push(result[i]);
2001
+ return filtered;
2002
+ };
2003
+ var mergeObjects = (obj1, obj2) => {
2004
+ const result = {};
2005
+ for (const key in obj1) {
2006
+ const val1 = obj1[key];
2007
+ if (key in obj2) {
2008
+ const val2 = obj2[key];
2009
+ if (Array.isArray(val1) || Array.isArray(val2)) result[key] = flatMergeArrays(val2, val1);
2010
+ else if (typeof val1 === "object" && typeof val2 === "object" && val1 && val2) result[key] = mergeObjects(val1, val2);
2011
+ else result[key] = val2 + " " + val1;
2012
+ } else result[key] = val1;
2013
+ }
2014
+ for (const key in obj2) if (!(key in obj1)) result[key] = obj2[key];
2015
+ return result;
2016
+ };
2017
+
2018
+ //#endregion
2019
+ //#region ../node_modules/tailwind-variants/dist/chunk-RZF76H2U.js
2020
+ var defaultConfig = {
2021
+ twMerge: true,
2022
+ twMergeConfig: {}
2023
+ };
2024
+ function createState() {
2025
+ let cachedTwMerge = null;
2026
+ let cachedTwMergeConfig = {};
2027
+ let didTwMergeConfigChange = false;
2028
+ return {
2029
+ get cachedTwMerge() {
2030
+ return cachedTwMerge;
2031
+ },
2032
+ set cachedTwMerge(value) {
2033
+ cachedTwMerge = value;
2034
+ },
2035
+ get cachedTwMergeConfig() {
2036
+ return cachedTwMergeConfig;
2037
+ },
2038
+ set cachedTwMergeConfig(value) {
2039
+ cachedTwMergeConfig = value;
2040
+ },
2041
+ get didTwMergeConfigChange() {
2042
+ return didTwMergeConfigChange;
2043
+ },
2044
+ set didTwMergeConfigChange(value) {
2045
+ didTwMergeConfigChange = value;
2046
+ },
2047
+ reset() {
2048
+ cachedTwMerge = null;
2049
+ cachedTwMergeConfig = {};
2050
+ didTwMergeConfigChange = false;
2051
+ }
2052
+ };
2053
+ }
2054
+ var state = createState();
2055
+ var getTailwindVariants = (cn) => {
2056
+ const tv = (options, configProp) => {
2057
+ const { extend = null, slots: slotProps = {}, variants: variantsProps = {}, compoundVariants: compoundVariantsProps = [], compoundSlots = [], defaultVariants: defaultVariantsProps = {} } = options;
2058
+ const config = {
2059
+ ...defaultConfig,
2060
+ ...configProp
2061
+ };
2062
+ const base = extend?.base ? cx(extend.base, options?.base) : options?.base;
2063
+ const variants = extend?.variants && !isEmptyObject(extend.variants) ? mergeObjects(variantsProps, extend.variants) : variantsProps;
2064
+ const defaultVariants = extend?.defaultVariants && !isEmptyObject(extend.defaultVariants) ? {
2065
+ ...extend.defaultVariants,
2066
+ ...defaultVariantsProps
2067
+ } : defaultVariantsProps;
2068
+ if (!isEmptyObject(config.twMergeConfig) && !isEqual(config.twMergeConfig, state.cachedTwMergeConfig)) {
2069
+ state.didTwMergeConfigChange = true;
2070
+ state.cachedTwMergeConfig = config.twMergeConfig;
2071
+ }
2072
+ const isExtendedSlotsEmpty = isEmptyObject(extend?.slots);
2073
+ const componentSlots = !isEmptyObject(slotProps) ? {
2074
+ base: cx(options?.base, isExtendedSlotsEmpty && extend?.base),
2075
+ ...slotProps
2076
+ } : {};
2077
+ const slots = isExtendedSlotsEmpty ? componentSlots : joinObjects({ ...extend?.slots }, isEmptyObject(componentSlots) ? { base: options?.base } : componentSlots);
2078
+ const compoundVariants = isEmptyObject(extend?.compoundVariants) ? compoundVariantsProps : flatMergeArrays(extend?.compoundVariants, compoundVariantsProps);
2079
+ const component = (props) => {
2080
+ if (isEmptyObject(variants) && isEmptyObject(slotProps) && isExtendedSlotsEmpty) return cn(base, props?.class, props?.className)(config);
2081
+ if (compoundVariants && !Array.isArray(compoundVariants)) throw new TypeError(`The "compoundVariants" prop must be an array. Received: ${typeof compoundVariants}`);
2082
+ if (compoundSlots && !Array.isArray(compoundSlots)) throw new TypeError(`The "compoundSlots" prop must be an array. Received: ${typeof compoundSlots}`);
2083
+ const getVariantValue = (variant, vrs = variants, _slotKey = null, slotProps2 = null) => {
2084
+ const variantObj = vrs[variant];
2085
+ if (!variantObj || isEmptyObject(variantObj)) return null;
2086
+ const variantProp = slotProps2?.[variant] ?? props?.[variant];
2087
+ if (variantProp === null) return null;
2088
+ const variantKey = falsyToString(variantProp);
2089
+ if (typeof variantKey === "object") return null;
2090
+ const defaultVariantProp = defaultVariants?.[variant];
2091
+ return variantObj[(variantKey != null ? variantKey : falsyToString(defaultVariantProp)) || "false"];
2092
+ };
2093
+ const getVariantClassNames = () => {
2094
+ if (!variants) return null;
2095
+ const keys = Object.keys(variants);
2096
+ const result = [];
2097
+ for (let i = 0; i < keys.length; i++) {
2098
+ const value = getVariantValue(keys[i], variants);
2099
+ if (value) result.push(value);
2100
+ }
2101
+ return result;
2102
+ };
2103
+ const getVariantClassNamesBySlotKey = (slotKey, slotProps2) => {
2104
+ if (!variants || typeof variants !== "object") return null;
2105
+ const result = [];
2106
+ for (const variant in variants) {
2107
+ const variantValue = getVariantValue(variant, variants, slotKey, slotProps2);
2108
+ const value = slotKey === "base" && typeof variantValue === "string" ? variantValue : variantValue && variantValue[slotKey];
2109
+ if (value) result.push(value);
2110
+ }
2111
+ return result;
2112
+ };
2113
+ const propsWithoutUndefined = {};
2114
+ for (const prop in props) {
2115
+ const value = props[prop];
2116
+ if (value !== void 0) propsWithoutUndefined[prop] = value;
2117
+ }
2118
+ const getCompleteProps = (key, slotProps2) => {
2119
+ const initialProp = typeof props?.[key] === "object" ? { [key]: props[key]?.initial } : {};
2120
+ return {
2121
+ ...defaultVariants,
2122
+ ...propsWithoutUndefined,
2123
+ ...initialProp,
2124
+ ...slotProps2
2125
+ };
2126
+ };
2127
+ const getCompoundVariantsValue = (cv = [], slotProps2) => {
2128
+ const result = [];
2129
+ const cvLength = cv.length;
2130
+ for (let i = 0; i < cvLength; i++) {
2131
+ const { class: tvClass, className: tvClassName, ...compoundVariantOptions } = cv[i];
2132
+ let isValid = true;
2133
+ const completeProps = getCompleteProps(null, slotProps2);
2134
+ for (const key in compoundVariantOptions) {
2135
+ const value = compoundVariantOptions[key];
2136
+ const completePropsValue = completeProps[key];
2137
+ if (Array.isArray(value)) {
2138
+ if (!value.includes(completePropsValue)) {
2139
+ isValid = false;
2140
+ break;
2141
+ }
2142
+ } else {
2143
+ if ((value == null || value === false) && (completePropsValue == null || completePropsValue === false)) continue;
2144
+ if (completePropsValue !== value) {
2145
+ isValid = false;
2146
+ break;
2147
+ }
2148
+ }
2149
+ }
2150
+ if (isValid) {
2151
+ if (tvClass) result.push(tvClass);
2152
+ if (tvClassName) result.push(tvClassName);
2153
+ }
2154
+ }
2155
+ return result;
2156
+ };
2157
+ const getCompoundVariantClassNamesBySlot = (slotProps2) => {
2158
+ const compoundClassNames = getCompoundVariantsValue(compoundVariants, slotProps2);
2159
+ if (!Array.isArray(compoundClassNames)) return compoundClassNames;
2160
+ const result = {};
2161
+ const cnFn = cn;
2162
+ for (let i = 0; i < compoundClassNames.length; i++) {
2163
+ const className = compoundClassNames[i];
2164
+ if (typeof className === "string") result.base = cnFn(result.base, className)(config);
2165
+ else if (typeof className === "object") for (const slot in className) result[slot] = cnFn(result[slot], className[slot])(config);
2166
+ }
2167
+ return result;
2168
+ };
2169
+ const getCompoundSlotClassNameBySlot = (slotProps2) => {
2170
+ if (compoundSlots.length < 1) return null;
2171
+ const result = {};
2172
+ const completeProps = getCompleteProps(null, slotProps2);
2173
+ for (let i = 0; i < compoundSlots.length; i++) {
2174
+ const { slots: slots2 = [], class: slotClass, className: slotClassName, ...slotVariants } = compoundSlots[i];
2175
+ if (!isEmptyObject(slotVariants)) {
2176
+ let isValid = true;
2177
+ for (const key in slotVariants) {
2178
+ const completePropsValue = completeProps[key];
2179
+ const slotVariantValue = slotVariants[key];
2180
+ if (completePropsValue === void 0 || (Array.isArray(slotVariantValue) ? !slotVariantValue.includes(completePropsValue) : slotVariantValue !== completePropsValue)) {
2181
+ isValid = false;
2182
+ break;
2183
+ }
2184
+ }
2185
+ if (!isValid) continue;
2186
+ }
2187
+ for (let j = 0; j < slots2.length; j++) {
2188
+ const slotName = slots2[j];
2189
+ if (!result[slotName]) result[slotName] = [];
2190
+ result[slotName].push([slotClass, slotClassName]);
2191
+ }
2192
+ }
2193
+ return result;
2194
+ };
2195
+ if (!isEmptyObject(slotProps) || !isExtendedSlotsEmpty) {
2196
+ const slotsFns = {};
2197
+ if (typeof slots === "object" && !isEmptyObject(slots)) {
2198
+ const cnFn = cn;
2199
+ for (const slotKey in slots) slotsFns[slotKey] = (slotProps2) => {
2200
+ const compoundVariantClasses = getCompoundVariantClassNamesBySlot(slotProps2);
2201
+ const compoundSlotClasses = getCompoundSlotClassNameBySlot(slotProps2);
2202
+ return cnFn(slots[slotKey], getVariantClassNamesBySlotKey(slotKey, slotProps2), compoundVariantClasses ? compoundVariantClasses[slotKey] : void 0, compoundSlotClasses ? compoundSlotClasses[slotKey] : void 0, slotProps2?.class, slotProps2?.className)(config);
2203
+ };
2204
+ }
2205
+ return slotsFns;
2206
+ }
2207
+ return cn(base, getVariantClassNames(), getCompoundVariantsValue(compoundVariants), props?.class, props?.className)(config);
2208
+ };
2209
+ const getVariantKeys = () => {
2210
+ if (!variants || typeof variants !== "object") return;
2211
+ return Object.keys(variants);
2212
+ };
2213
+ component.variantKeys = getVariantKeys();
2214
+ component.extend = extend;
2215
+ component.base = base;
2216
+ component.slots = slots;
2217
+ component.variants = variants;
2218
+ component.defaultVariants = defaultVariants;
2219
+ component.compoundSlots = compoundSlots;
2220
+ component.compoundVariants = compoundVariants;
2221
+ return component;
2222
+ };
2223
+ const createTV = (configProp) => {
2224
+ return (options, config) => tv(options, config ? mergeObjects(configProp, config) : configProp);
2225
+ };
2226
+ return {
2227
+ tv,
2228
+ createTV
2229
+ };
2230
+ };
2231
+
2232
+ //#endregion
2233
+ //#region ../node_modules/tailwind-variants/dist/index.js
2234
+ var createTwMerge = (cachedTwMergeConfig) => {
2235
+ return isEmptyObject(cachedTwMergeConfig) ? twMerge : extendTailwindMerge({
2236
+ ...cachedTwMergeConfig,
2237
+ extend: {
2238
+ theme: cachedTwMergeConfig.theme,
2239
+ classGroups: cachedTwMergeConfig.classGroups,
2240
+ conflictingClassGroupModifiers: cachedTwMergeConfig.conflictingClassGroupModifiers,
2241
+ conflictingClassGroups: cachedTwMergeConfig.conflictingClassGroups,
2242
+ ...cachedTwMergeConfig.extend
2243
+ }
2244
+ });
2245
+ };
2246
+ var executeMerge = (classnames, config) => {
2247
+ const base = cx(classnames);
2248
+ if (!base || !(config?.twMerge ?? true)) return base;
2249
+ if (!state.cachedTwMerge || state.didTwMergeConfigChange) {
2250
+ state.didTwMergeConfigChange = false;
2251
+ state.cachedTwMerge = createTwMerge(state.cachedTwMergeConfig);
2252
+ }
2253
+ return state.cachedTwMerge(base) || void 0;
2254
+ };
2255
+ var cnMerge = (...classnames) => {
2256
+ return (config) => executeMerge(classnames, config);
2257
+ };
2258
+ var { createTV, tv } = getTailwindVariants(cnMerge);
2259
+
2260
+ //#endregion
2261
+ //#region .svelte-kit/adapter-bun/chunks/button.js
2262
+ function cn(...inputs) {
2263
+ return twMerge(clsx$1(inputs));
2264
+ }
2265
+ const buttonVariants = tv({
2266
+ base: "cursor-pointer focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2267
+ variants: {
2268
+ variant: {
2269
+ default: "bg-primary text-primary-foreground hover:bg-primary/90 shadow-xs",
2270
+ destructive: "bg-destructive hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-white shadow-xs",
2271
+ outline: "bg-background hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border shadow-xs",
2272
+ secondary: "bg-[#222] text-stone-100 hover:bg-[#333] shadow-xs",
2273
+ ghost: "text-stone-400 hover:bg-[#222] hover:text-stone-100",
2274
+ "ghost-destructive": "bg-red-900 text-red-300 hover:bg-red-800 hover:text-white",
2275
+ warning: "bg-amber-700 text-amber-100 hover:bg-amber-600 shadow-xs",
2276
+ success: "bg-emerald-600 text-white hover:bg-emerald-500 active:bg-emerald-700 shadow-xs",
2277
+ link: "text-primary underline-offset-4 hover:underline"
2278
+ },
2279
+ size: {
2280
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
2281
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
2282
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
2283
+ icon: "size-9",
2284
+ "icon-sm": "size-8",
2285
+ "icon-lg": "size-10",
2286
+ toolbar: "flex-col gap-0.5 px-2 py-1.5 min-w-11 h-auto [&_svg]:size-[18px] text-[9px] uppercase tracking-wide"
2287
+ }
2288
+ },
2289
+ defaultVariants: {
2290
+ variant: "default",
2291
+ size: "default"
2292
+ }
2293
+ });
2294
+ function Button($$renderer, $$props) {
2295
+ $$renderer.component(($$renderer2) => {
2296
+ let { class: className, variant = "default", size = "default", ref = null, href = void 0, type = "button", disabled, children, $$slots, $$events, ...restProps } = $$props;
2297
+ if (href) {
2298
+ $$renderer2.push("<!--[-->");
2299
+ $$renderer2.push(`<a${attributes({
2300
+ "data-slot": "button",
2301
+ class: clsx(cn(buttonVariants({
2302
+ variant,
2303
+ size
2304
+ }), className)),
2305
+ href: disabled ? void 0 : href,
2306
+ "aria-disabled": disabled,
2307
+ role: disabled ? "link" : void 0,
2308
+ tabindex: disabled ? -1 : void 0,
2309
+ ...restProps
2310
+ })}>`);
2311
+ children?.($$renderer2);
2312
+ $$renderer2.push(`<!----></a>`);
2313
+ } else {
2314
+ $$renderer2.push("<!--[!-->");
2315
+ $$renderer2.push(`<button${attributes({
2316
+ "data-slot": "button",
2317
+ class: clsx(cn(buttonVariants({
2318
+ variant,
2319
+ size
2320
+ }), className)),
2321
+ type,
2322
+ disabled,
2323
+ ...restProps
2324
+ })}>`);
2325
+ children?.($$renderer2);
2326
+ $$renderer2.push(`<!----></button>`);
2327
+ }
2328
+ $$renderer2.push(`<!--]-->`);
2329
+ bind_props($$props, { ref });
2330
+ });
2331
+ }
2332
+
2333
+ //#endregion
2334
+ export { tv as i, buttonVariants as n, cn as r, Button as t };
2335
+ //# sourceMappingURL=button-D6xS9rHt.js.map