@tapflowio/relay 0.27.1 → 0.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/dist/RelayServer.d.ts +54 -0
  2. package/dist/RelayServer.d.ts.map +1 -1
  3. package/dist/RelayServer.js +384 -37
  4. package/dist/RelayServer.js.map +1 -1
  5. package/dist/SessionManager.d.ts +63 -2
  6. package/dist/SessionManager.d.ts.map +1 -1
  7. package/dist/SessionManager.js +123 -1
  8. package/dist/SessionManager.js.map +1 -1
  9. package/dist/api/apps.d.ts +2 -1
  10. package/dist/api/apps.d.ts.map +1 -1
  11. package/dist/api/apps.js +20 -7
  12. package/dist/api/apps.js.map +1 -1
  13. package/dist/api/builds.d.ts +2 -1
  14. package/dist/api/builds.d.ts.map +1 -1
  15. package/dist/api/builds.js +13 -39
  16. package/dist/api/builds.js.map +1 -1
  17. package/dist/api/profile.d.ts.map +1 -1
  18. package/dist/api/profile.js +3 -1
  19. package/dist/api/profile.js.map +1 -1
  20. package/dist/api/runVideos.d.ts +85 -0
  21. package/dist/api/runVideos.d.ts.map +1 -0
  22. package/dist/api/runVideos.js +494 -0
  23. package/dist/api/runVideos.js.map +1 -0
  24. package/dist/api/runs.d.ts +77 -0
  25. package/dist/api/runs.d.ts.map +1 -0
  26. package/dist/api/runs.js +579 -0
  27. package/dist/api/runs.js.map +1 -0
  28. package/dist/api/settings.d.ts +1 -1
  29. package/dist/api/settings.d.ts.map +1 -1
  30. package/dist/api/settings.js +43 -3
  31. package/dist/api/settings.js.map +1 -1
  32. package/dist/db.d.ts +2 -0
  33. package/dist/db.d.ts.map +1 -1
  34. package/dist/db.js +4 -0
  35. package/dist/db.js.map +1 -1
  36. package/dist/lib/buildDeletion.d.ts +21 -0
  37. package/dist/lib/buildDeletion.d.ts.map +1 -0
  38. package/dist/lib/buildDeletion.js +58 -0
  39. package/dist/lib/buildDeletion.js.map +1 -0
  40. package/dist/lib/watchActions.d.ts +10 -0
  41. package/dist/lib/watchActions.d.ts.map +1 -0
  42. package/dist/lib/watchActions.js +27 -0
  43. package/dist/lib/watchActions.js.map +1 -0
  44. package/dist/middleware/auth.d.ts +1 -0
  45. package/dist/middleware/auth.d.ts.map +1 -1
  46. package/dist/middleware/auth.js +1 -1
  47. package/dist/middleware/auth.js.map +1 -1
  48. package/dist/migrations/015_flow_runs.sql +59 -0
  49. package/dist/migrations/016_flow_run_videos.sql +51 -0
  50. package/dist/router.d.ts +5 -0
  51. package/dist/router.d.ts.map +1 -1
  52. package/dist/router.js +24 -0
  53. package/dist/router.js.map +1 -1
  54. package/package.json +9 -9
  55. package/public/assets/AISessionWatch-C2h4NZ_I.js +31 -0
  56. package/public/assets/AISessionWatch-C2h4NZ_I.js.br +0 -0
  57. package/public/assets/AISessionWatch-C2h4NZ_I.js.gz +0 -0
  58. package/public/assets/AndroidDeviceScreen-C55msKfh.js +35 -0
  59. package/public/assets/AndroidDeviceScreen-C55msKfh.js.br +0 -0
  60. package/public/assets/AndroidDeviceScreen-C55msKfh.js.gz +0 -0
  61. package/public/assets/AppCenter-S1y-8_7l.js +26 -0
  62. package/public/assets/AppCenter-S1y-8_7l.js.br +0 -0
  63. package/public/assets/AppCenter-S1y-8_7l.js.gz +0 -0
  64. package/public/assets/Default-C-l1O-g9.js +6 -0
  65. package/public/assets/Default-C-l1O-g9.js.br +0 -0
  66. package/public/assets/Default-C-l1O-g9.js.gz +0 -0
  67. package/public/assets/Invite-BCndVxaO.js +1 -0
  68. package/public/assets/Invite-BCndVxaO.js.br +0 -0
  69. package/public/assets/Invite-BCndVxaO.js.gz +0 -0
  70. package/public/assets/MacResources-41cFDgE1.js +1 -0
  71. package/public/assets/MacResources-41cFDgE1.js.br +0 -0
  72. package/public/assets/MacResources-41cFDgE1.js.gz +0 -0
  73. package/public/assets/{NotFound-wHOnT2Fl.js → NotFound-DVq_rCKc.js} +1 -1
  74. package/public/assets/NotFound-DVq_rCKc.js.br +0 -0
  75. package/public/assets/NotFound-DVq_rCKc.js.gz +0 -0
  76. package/public/assets/QASession-B67RsIPm.js +81 -0
  77. package/public/assets/QASession-B67RsIPm.js.br +0 -0
  78. package/public/assets/QASession-B67RsIPm.js.gz +0 -0
  79. package/public/assets/ResetPassword-8rj7ASt1.js +1 -0
  80. package/public/assets/ResetPassword-8rj7ASt1.js.br +0 -0
  81. package/public/assets/ResetPassword-8rj7ASt1.js.gz +0 -0
  82. package/public/assets/RunDetail-BIgq9gJ0.js +16 -0
  83. package/public/assets/RunDetail-BIgq9gJ0.js.br +0 -0
  84. package/public/assets/RunDetail-BIgq9gJ0.js.gz +0 -0
  85. package/public/assets/Runs-DpK5aoBr.js +6 -0
  86. package/public/assets/Runs-DpK5aoBr.js.br +0 -0
  87. package/public/assets/Runs-DpK5aoBr.js.gz +0 -0
  88. package/public/assets/Setup-DZrhA_7b.js +1 -0
  89. package/public/assets/Setup-DZrhA_7b.js.br +0 -0
  90. package/public/assets/Setup-DZrhA_7b.js.gz +0 -0
  91. package/public/assets/Team-CJThCjd3.js +6 -0
  92. package/public/assets/Team-CJThCjd3.js.br +0 -0
  93. package/public/assets/Team-CJThCjd3.js.gz +0 -0
  94. package/public/assets/Tokens-DGURtHWi.js +1 -0
  95. package/public/assets/Tokens-DGURtHWi.js.br +0 -0
  96. package/public/assets/Tokens-DGURtHWi.js.gz +0 -0
  97. package/public/assets/WatchedDevice-CpaKHa1x.js +1 -0
  98. package/public/assets/WatchedDevice-CpaKHa1x.js.br +0 -0
  99. package/public/assets/WatchedDevice-CpaKHa1x.js.gz +0 -0
  100. package/public/assets/aiSession-BW09Jhqz.js +26 -0
  101. package/public/assets/aiSession-BW09Jhqz.js.br +0 -0
  102. package/public/assets/aiSession-BW09Jhqz.js.gz +0 -0
  103. package/public/assets/alert-dialog-t5vlOabq.js +1 -0
  104. package/public/assets/alert-dialog-t5vlOabq.js.br +0 -0
  105. package/public/assets/alert-dialog-t5vlOabq.js.gz +0 -0
  106. package/public/assets/{badge-DNaS0Mu3.js → badge-DrDCTAQQ.js} +1 -1
  107. package/public/assets/badge-DrDCTAQQ.js.br +0 -0
  108. package/public/assets/badge-DrDCTAQQ.js.gz +0 -0
  109. package/public/assets/build-format-ofd2iIzf.js +1 -0
  110. package/public/assets/build-format-ofd2iIzf.js.br +0 -0
  111. package/public/assets/build-format-ofd2iIzf.js.gz +0 -0
  112. package/public/assets/dialog-BOFZkCES.js +1 -0
  113. package/public/assets/dialog-BOFZkCES.js.br +0 -0
  114. package/public/assets/dialog-BOFZkCES.js.gz +0 -0
  115. package/public/assets/field-hint-B9fPUgi7.js +1 -0
  116. package/public/assets/field-hint-B9fPUgi7.js.br +0 -0
  117. package/public/assets/field-hint-B9fPUgi7.js.gz +0 -0
  118. package/public/assets/index-Bixhy5MB.js +248 -0
  119. package/public/assets/index-Bixhy5MB.js.br +0 -0
  120. package/public/assets/index-Bixhy5MB.js.gz +0 -0
  121. package/public/assets/index-D17hSi50.js +1 -0
  122. package/public/assets/index-D17hSi50.js.br +0 -0
  123. package/public/assets/index-D17hSi50.js.gz +0 -0
  124. package/public/assets/index-h2hiZ2OM.css +1 -0
  125. package/public/assets/index-h2hiZ2OM.css.br +0 -0
  126. package/public/assets/index-h2hiZ2OM.css.gz +0 -0
  127. package/public/assets/list-view-BpOY1e-d.js +1 -0
  128. package/public/assets/list-view-BpOY1e-d.js.br +0 -0
  129. package/public/assets/list-view-BpOY1e-d.js.gz +0 -0
  130. package/public/assets/{pencil-BN18R4oa.js → pencil-ZlrAsWuU.js} +2 -2
  131. package/public/assets/pencil-ZlrAsWuU.js.br +0 -0
  132. package/public/assets/pencil-ZlrAsWuU.js.gz +0 -0
  133. package/public/assets/play-4CsGZdQU.js +6 -0
  134. package/public/assets/play-4CsGZdQU.js.br +0 -0
  135. package/public/assets/play-4CsGZdQU.js.gz +0 -0
  136. package/public/assets/resource-health-oWJ8hy9X.js +1 -0
  137. package/public/assets/resource-health-oWJ8hy9X.js.br +0 -0
  138. package/public/assets/resource-health-oWJ8hy9X.js.gz +0 -0
  139. package/public/assets/runs-CInQb6v1.js +1 -0
  140. package/public/assets/runs-CInQb6v1.js.br +0 -0
  141. package/public/assets/runs-CInQb6v1.js.gz +0 -0
  142. package/public/assets/search-input-G_QpBvPM.js +6 -0
  143. package/public/assets/search-input-G_QpBvPM.js.br +0 -0
  144. package/public/assets/search-input-G_QpBvPM.js.gz +0 -0
  145. package/public/assets/select-DDzv2YfY.js +11 -0
  146. package/public/assets/select-DDzv2YfY.js.br +0 -0
  147. package/public/assets/select-DDzv2YfY.js.gz +0 -0
  148. package/public/assets/slider-DE7lQdK4.js +1 -0
  149. package/public/assets/slider-DE7lQdK4.js.br +0 -0
  150. package/public/assets/slider-DE7lQdK4.js.gz +0 -0
  151. package/public/assets/tabs-Co1N3x_X.js +1 -0
  152. package/public/assets/tabs-Co1N3x_X.js.br +0 -0
  153. package/public/assets/tabs-Co1N3x_X.js.gz +0 -0
  154. package/public/assets/tech-label-BMvuJmUf.js +1 -0
  155. package/public/assets/tech-label-BMvuJmUf.js.br +0 -0
  156. package/public/assets/tech-label-BMvuJmUf.js.gz +0 -0
  157. package/public/assets/{trash-D1l1Fm-Z.js → trash-Cwj2dbgB.js} +3 -3
  158. package/public/assets/trash-Cwj2dbgB.js.br +0 -0
  159. package/public/assets/trash-Cwj2dbgB.js.gz +0 -0
  160. package/public/assets/{useFocusAfterSwap-BY3N9f9v.js → useFocusAfterSwap-BdItkQCu.js} +1 -1
  161. package/public/assets/useFocusAfterSwap-BdItkQCu.js.br +0 -0
  162. package/public/assets/useFocusAfterSwap-BdItkQCu.js.gz +0 -0
  163. package/public/assets/useRelay-CES3I1Mt.js +1 -0
  164. package/public/assets/useRelay-CES3I1Mt.js.br +0 -0
  165. package/public/assets/useRelay-CES3I1Mt.js.gz +0 -0
  166. package/public/assets/useShownAfter-By1Yxysz.js +1 -0
  167. package/public/assets/useShownAfter-By1Yxysz.js.br +0 -0
  168. package/public/assets/useShownAfter-By1Yxysz.js.gz +0 -0
  169. package/public/assets/{vendor-charts-BykzUV2D.js → vendor-charts-BE7R_8yA.js} +2 -2
  170. package/public/assets/vendor-charts-BE7R_8yA.js.br +0 -0
  171. package/public/assets/vendor-charts-BE7R_8yA.js.gz +0 -0
  172. package/public/assets/{vendor-react-BlPSzrEe.js → vendor-react-DTSdA8m-.js} +4 -4
  173. package/public/assets/vendor-react-DTSdA8m-.js.br +0 -0
  174. package/public/assets/{vendor-react-BlPSzrEe.js.gz → vendor-react-DTSdA8m-.js.gz} +0 -0
  175. package/public/assets/{vendor-router-B_lVHrKl.js → vendor-router-B1pQim9Z.js} +3 -3
  176. package/public/assets/vendor-router-B1pQim9Z.js.br +0 -0
  177. package/public/assets/vendor-router-B1pQim9Z.js.gz +0 -0
  178. package/public/assets/video-swsaHrfi.js +6 -0
  179. package/public/assets/video-swsaHrfi.js.br +0 -0
  180. package/public/assets/video-swsaHrfi.js.gz +0 -0
  181. package/public/index.html +30 -4
  182. package/public/index.html.br +0 -0
  183. package/public/index.html.gz +0 -0
  184. package/public/og-image.jpg +0 -0
  185. package/public/assets/AppCenter-CeLjUbnR.js +0 -26
  186. package/public/assets/AppCenter-CeLjUbnR.js.br +0 -0
  187. package/public/assets/AppCenter-CeLjUbnR.js.gz +0 -0
  188. package/public/assets/Default-UB0Pa3lN.js +0 -1
  189. package/public/assets/Default-UB0Pa3lN.js.br +0 -0
  190. package/public/assets/Default-UB0Pa3lN.js.gz +0 -0
  191. package/public/assets/Invite-Dv3omu3x.js +0 -1
  192. package/public/assets/Invite-Dv3omu3x.js.br +0 -0
  193. package/public/assets/Invite-Dv3omu3x.js.gz +0 -0
  194. package/public/assets/MacResources-CY4-OdGt.js +0 -1
  195. package/public/assets/MacResources-CY4-OdGt.js.br +0 -0
  196. package/public/assets/MacResources-CY4-OdGt.js.gz +0 -0
  197. package/public/assets/NotFound-wHOnT2Fl.js.br +0 -0
  198. package/public/assets/NotFound-wHOnT2Fl.js.gz +0 -0
  199. package/public/assets/QASession-H5eRSwZv.js +0 -150
  200. package/public/assets/QASession-H5eRSwZv.js.br +0 -0
  201. package/public/assets/QASession-H5eRSwZv.js.gz +0 -0
  202. package/public/assets/ResetPassword-nFTigYt2.js +0 -1
  203. package/public/assets/ResetPassword-nFTigYt2.js.br +0 -0
  204. package/public/assets/ResetPassword-nFTigYt2.js.gz +0 -0
  205. package/public/assets/Setup-UmLtF2PF.js +0 -1
  206. package/public/assets/Setup-UmLtF2PF.js.br +0 -0
  207. package/public/assets/Setup-UmLtF2PF.js.gz +0 -0
  208. package/public/assets/Team-DW40kt3H.js +0 -6
  209. package/public/assets/Team-DW40kt3H.js.br +0 -0
  210. package/public/assets/Team-DW40kt3H.js.gz +0 -0
  211. package/public/assets/Tokens-B1a4ChJK.js +0 -1
  212. package/public/assets/Tokens-B1a4ChJK.js.br +0 -0
  213. package/public/assets/Tokens-B1a4ChJK.js.gz +0 -0
  214. package/public/assets/alert-dialog-aoqYdAwx.js +0 -1
  215. package/public/assets/alert-dialog-aoqYdAwx.js.br +0 -0
  216. package/public/assets/alert-dialog-aoqYdAwx.js.gz +0 -0
  217. package/public/assets/badge-DNaS0Mu3.js.br +0 -0
  218. package/public/assets/badge-DNaS0Mu3.js.gz +0 -0
  219. package/public/assets/build-format-DF5aFcag.js +0 -11
  220. package/public/assets/build-format-DF5aFcag.js.br +0 -0
  221. package/public/assets/build-format-DF5aFcag.js.gz +0 -0
  222. package/public/assets/dialog-DE2WUMuX.js +0 -11
  223. package/public/assets/dialog-DE2WUMuX.js.br +0 -0
  224. package/public/assets/dialog-DE2WUMuX.js.gz +0 -0
  225. package/public/assets/field-hint-Csb40Gzp.js +0 -1
  226. package/public/assets/field-hint-Csb40Gzp.js.br +0 -2
  227. package/public/assets/field-hint-Csb40Gzp.js.gz +0 -0
  228. package/public/assets/index-BbCkTtjO.css +0 -1
  229. package/public/assets/index-BbCkTtjO.css.br +0 -0
  230. package/public/assets/index-BbCkTtjO.css.gz +0 -0
  231. package/public/assets/index-DSW9h8XX.js +0 -218
  232. package/public/assets/index-DSW9h8XX.js.br +0 -0
  233. package/public/assets/index-DSW9h8XX.js.gz +0 -0
  234. package/public/assets/list-view-C0w97ltJ.js +0 -1
  235. package/public/assets/list-view-C0w97ltJ.js.br +0 -0
  236. package/public/assets/list-view-C0w97ltJ.js.gz +0 -0
  237. package/public/assets/pencil-BN18R4oa.js.br +0 -0
  238. package/public/assets/pencil-BN18R4oa.js.gz +0 -0
  239. package/public/assets/resource-health-Bi20EUDs.js +0 -1
  240. package/public/assets/resource-health-Bi20EUDs.js.br +0 -0
  241. package/public/assets/resource-health-Bi20EUDs.js.gz +0 -0
  242. package/public/assets/trash-D1l1Fm-Z.js.br +0 -0
  243. package/public/assets/trash-D1l1Fm-Z.js.gz +0 -0
  244. package/public/assets/useFocusAfterSwap-BY3N9f9v.js.br +0 -0
  245. package/public/assets/useFocusAfterSwap-BY3N9f9v.js.gz +0 -0
  246. package/public/assets/vendor-charts-BykzUV2D.js.br +0 -0
  247. package/public/assets/vendor-charts-BykzUV2D.js.gz +0 -0
  248. package/public/assets/vendor-react-BlPSzrEe.js.br +0 -0
  249. package/public/assets/vendor-router-B_lVHrKl.js.br +0 -0
  250. package/public/assets/vendor-router-B_lVHrKl.js.gz +0 -0
@@ -1,6 +0,0 @@
1
- import{k as a,j as e,f as xe}from"./vendor-react-BlPSzrEe.js";import{a6 as pe,aO as je,aN as ve,aK as fe,aB as ge,B as k,L as P,I as Z,F as _,h as be,s as ye,C as ke,c as Ce,d as we,a as Se,aA as x,au as E,az as C,av as Q,Y as ee,am as De}from"./index-DSW9h8XX.js";import{D as V,a as B,d as M,e as q,b as Te,f as Ne,S as H,i as U,j as z,g as K,h as p}from"./dialog-DE2WUMuX.js";import{A as Ae,c as Re,f as Ee,g as Ie,d as $e,e as Fe,b as Le,a as Oe}from"./alert-dialog-aoqYdAwx.js";import{l as Pe,T as _e,d as Qe,e as J,c as S,a as Ve,L as Be,b as D}from"./list-view-C0w97ltJ.js";import{j as G,l as Y}from"./publicLink-D6zKS_wu.js";import{u as Me}from"./useFocusAfterSwap-BY3N9f9v.js";import"./vendor-router-B_lVHrKl.js";/**
2
- * @license lucide-react v1.48.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const se={name:"user-plus",size:24,node:[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]]};se.node;const qe=pe(se),He=E({email:C().email("Enter a valid email"),role:C().min(1,"Pick a role")}),Ue=E({token:C(),emailSent:ee(),inviteUrl:C().nullable()}),ze=E({token:C(),emailSent:ee(),resetUrl:C().nullable()});function W(j){return(navigator.clipboard?navigator.clipboard.writeText(j):Promise.reject(new Error("no clipboard"))).then(()=>!0,()=>!1)}function X(j){const s=xe.c(15),{link:l,copied:b,noun:d}=j,m=a.useId(),t=a.useRef(null);let u;s[0]===Symbol.for("react.memo_cache_sentinel")?(u=()=>{var T;(T=t.current)==null||T.focus()},s[0]=u):u=s[0];let v;s[1]!==l?(v=[l],s[1]=l,s[2]=v):v=s[2],a.useEffect(u,v);let r;s[3]!==b||s[4]!==d?(r=b?`${d[0].toUpperCase()}${d.slice(1)} copied to clipboard:`:`Copy this ${d}:`,s[3]=b,s[4]=d,s[5]=r):r=s[5];let o;s[6]!==m||s[7]!==r?(o=e.jsx("p",{id:m,className:"text-sm text-muted-foreground",children:r}),s[6]=m,s[7]=r,s[8]=o):o=s[8];let h;s[9]!==m||s[10]!==l?(h=e.jsx(Z,{ref:t,readOnly:!0,value:l,"aria-labelledby":m,onFocus:Ke,className:"font-mono text-xs"}),s[9]=m,s[10]=l,s[11]=h):h=s[11];let f;return s[12]!==o||s[13]!==h?(f=e.jsxs(e.Fragment,{children:[o,h]}),s[12]=o,s[13]=h,s[14]=f):f=s[14],f}function Ke(j){return j.currentTarget.select()}function is(){var L,O;const j=je(),s=ve({queryKey:Q.teamMembers,queryFn:De}),l=s.data??[],b=Pe(s),d=a.useRef(null),m=Me(b,d),[t,u]=a.useState(null),v=a.useRef(null),[r,o]=a.useState(""),[h,f]=a.useState(!1),[T,N]=a.useState(""),[ie,ne]=a.useState(!1),[A,R]=a.useState(null),{register:te,handleSubmit:ae,control:le,reset:re,setError:oe,formState:{errors:g,isSubmitting:I,submitCount:ce}}=fe({shouldFocusError:!1,resolver:ge(He),defaultValues:{email:"",role:"QA"}}),$=()=>{j.invalidateQueries({queryKey:Q.teamMembers})};async function de(i){N("");try{const n=await fetch("/api/v1/team/invite",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:i.email,role:i.role})});if(n.status===409){oe("email",{message:"Already a member. Change their role in the list instead."});return}if(!n.ok)throw new Error(`Server error: ${n.status}`);const c=Ue.parse(await n.json()),w=c.inviteUrl??G((await Y()).linkBase,`/invite?token=${c.token}`),y=await W(w);o(w),f(y),N(`${c.emailSent?`Invite email sent to ${i.email}.`:"Email could not be sent."} ${y?"Invite link copied to clipboard.":"Copy the invite link."}`),c.emailSent?x.success(`Invite email sent to ${i.email}`):y?x.warning("Invite link copied — email could not be sent. Check your SMTP settings."):x.warning("Email could not be sent. Copy the invite link from the dialog, and check your SMTP settings.")}catch{x.error("Failed to create invite link"),N("Failed to create invite link.")}}function F(i){ne(i),i||(o(""),f(!1),N(""),re())}async function me(i,n){await fetch(`/api/v1/team/members/${i}`,{method:"PATCH",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({role:n})}),$()}async function ue(i){try{const n=await fetch(`/api/v1/team/members/${i.id}/send-reset`,{method:"POST",credentials:"include"});if(!n.ok)throw new Error(`Server error: ${n.status}`);const c=ze.parse(await n.json()),w=c.resetUrl??G((await Y()).linkBase,`/reset-password?token=${c.token}`),y=await W(w);u({email:i.email,link:w,copied:y,emailSent:c.emailSent}),c.emailSent?x.success(`Reset email sent to ${i.email}`):y?x.warning("Reset link copied — email could not be sent. Send the link to the member yourself."):x.warning("Email could not be sent. Copy the reset link from the dialog and send it to the member.")}catch{x.error("Failed to create reset link")}}async function he(i){await fetch(`/api/v1/team/members/${i}`,{method:"DELETE",credentials:"include"}),R(null),$()}return e.jsxs("div",{className:"flex flex-col gap-6 max-w-[900px] mx-auto w-full p-6",children:[e.jsx(Ae,{open:A!==null,onOpenChange:i=>{i||R(null)},children:e.jsxs(Re,{children:[e.jsxs(Ee,{children:[e.jsx(Ie,{children:"Remove this member?"}),e.jsx($e,{children:"This member will lose access to the team immediately."})]}),e.jsxs(Fe,{children:[e.jsx(Le,{children:"Cancel"}),e.jsx(Oe,{className:"bg-destructive/10 text-destructive hover:bg-destructive/20 border-0",onClick:()=>A!==null&&he(A),children:"Remove"})]})]})}),e.jsx(V,{open:t!==null,onOpenChange:i=>{i||u(null)},children:e.jsxs(B,{className:"sm:max-w-md",onCloseAutoFocus:i=>{var n;i.preventDefault(),(n=v.current)==null||n.focus()},children:[e.jsxs(M,{children:[e.jsx(q,{children:"Password reset link"}),e.jsxs(Te,{children:[t!=null&&t.emailSent?`Reset email sent to ${t.email}.`:`Email could not be sent to ${(t==null?void 0:t.email)??""}.`," ","The link works once, for 2 hours. Making a new one turns this one off. Completing the reset signs the member out everywhere and revokes their personal access tokens, so agents using those tokens disconnect until new ones are issued."]})]}),t&&e.jsxs("div",{className:"flex flex-col gap-3 pt-2",children:[e.jsx(X,{link:t.link,copied:t.copied,noun:"reset link"}),e.jsx(k,{onClick:()=>u(null),children:"Done"})]})]})}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h1",{className:"text-xl font-semibold",children:"Team"}),e.jsxs(V,{open:ie,onOpenChange:F,children:[e.jsx(Ne,{asChild:!0,children:e.jsxs(k,{ref:d,size:"sm",children:[e.jsx(qe,{className:"mr-2 h-4 w-4"}),"Invite member"]})}),e.jsxs(B,{className:"sm:max-w-md",children:[e.jsx(M,{children:e.jsx(q,{children:"Invite team member"})}),e.jsx("p",{role:"status",className:"sr-only",children:T}),r?e.jsxs("div",{className:"flex flex-col gap-3 pt-2",children:[e.jsx(X,{link:r,copied:h,noun:"invite link"}),e.jsx(k,{onClick:()=>F(!1),children:"Done"})]}):e.jsxs("form",{onSubmit:ae(de),className:"flex flex-col gap-4 pt-2",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(P,{htmlFor:"invite-email",children:"Email"}),e.jsx(Z,{id:"invite-email",type:"email","aria-required":"true","aria-invalid":!!g.email,"aria-describedby":g.email?"email-error":void 0,...te("email")}),e.jsx(_,{id:"email-error",message:(L=g.email)==null?void 0:L.message})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(P,{htmlFor:"invite-role",children:"Role"}),e.jsx(be,{name:"role",control:le,render:({field:i})=>e.jsxs(H,{value:i.value,onValueChange:i.onChange,children:[e.jsx(U,{id:"invite-role","aria-invalid":!!g.role,"aria-describedby":g.role?"role-error":void 0,children:e.jsx(z,{})}),e.jsxs(K,{children:[e.jsx(p,{value:"Admin",children:"Admin"}),e.jsx(p,{value:"Developer",children:"Developer"}),e.jsx(p,{value:"QA",children:"QA"}),e.jsx(p,{value:"Viewer",children:"Viewer"})]})]})}),e.jsx(_,{id:"role-error",message:(O=g.role)==null?void 0:O.message})]}),e.jsx(k,{type:"submit",disabled:I,children:I?"Creating link…":"Generate invite link"}),e.jsx(ye,{errors:g,submitCount:ce})]})]})]})]}),e.jsxs(ke,{children:[e.jsx(Ce,{children:e.jsxs(we,{children:["Members",s.data?` (${l.length})`:""]})}),e.jsx(Se,{className:"px-4 pt-0 pb-2",children:e.jsxs(_e,{children:[e.jsx(Qe,{children:e.jsxs(J,{children:[e.jsx(S,{children:"Nickname"}),e.jsx(S,{children:"Email"}),e.jsx(S,{children:"Role"}),e.jsx(S,{children:"Joined"}),e.jsx(S,{className:"w-10"})]})}),e.jsxs(Ve,{...m,children:[e.jsx(Be,{view:b,colSpan:5,noun:"team members",emptyText:"No members yet.",onRetry:()=>{s.refetch()}}),l.map(i=>e.jsxs(J,{className:"hover:bg-transparent",children:[e.jsx(D,{className:"font-medium",children:i.display_name||"—"}),e.jsx(D,{className:"text-muted-foreground text-sm",children:i.email}),e.jsx(D,{children:e.jsxs(H,{value:i.role,onValueChange:n=>me(i.id,n),children:[e.jsx(U,{className:"h-7 w-28",children:e.jsx(z,{})}),e.jsxs(K,{children:[e.jsx(p,{value:"Admin",children:"Admin"}),e.jsx(p,{value:"Developer",children:"Developer"}),e.jsx(p,{value:"QA",children:"QA"}),e.jsx(p,{value:"Viewer",children:"Viewer"})]})]})}),e.jsx(D,{className:"text-muted-foreground text-sm",children:new Date(i.joined_at).toLocaleDateString()}),e.jsx(D,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{variant:"secondary",size:"nav",onClick:n=>{v.current=n.currentTarget,ue(i)},children:"Reset pwd"}),e.jsx(k,{variant:"destructive",size:"nav",onClick:()=>R(i.id),children:"Remove"})]})})]},i.id))]})]})})]})]})}export{is as TeamSettings};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{k as a,j as e}from"./vendor-react-BlPSzrEe.js";import{aO as ce,aD as de,aN as xe,aK as ue,aB as me,aQ as pe,B as u,I as j,aA as n,L as y,F as W,h as he,s as je,C as ye,c as ge,d as fe,b as ve,a as ke,au as be,az as z,_ as Ne,av as K,an as we}from"./index-DSW9h8XX.js";import{B as N}from"./badge-DNaS0Mu3.js";import{A as Ce,c as De,f as Te,g as Se,d as Ae,e as Fe,b as Ie}from"./alert-dialog-aoqYdAwx.js";import{D as Ee,f as Re,a as Be,d as Pe,e as Le,S as $,i as M,j as G,g as J,h as m}from"./dialog-DE2WUMuX.js";import{l as Oe,T as qe,d as _e,e as U,c as p,a as He,L as Qe,b as h}from"./list-view-C0w97ltJ.js";import{l as Ve}from"./publicLink-D6zKS_wu.js";import{u as We}from"./useFocusAfterSwap-BY3N9f9v.js";import{P as ze,T as Ke}from"./trash-D1l1Fm-Z.js";import"./vendor-router-B_lVHrKl.js";const X=["7","30","60","90"],$e=be({name:z().min(1,"Give the token a name"),expiry:Ne([...X,"custom","never"]),expiresDays:z()}).superRefine((r,g)=>{if(r.expiry!=="custom")return;const i=Number(r.expiresDays);(!Number.isInteger(i)||i<1||i>365)&&g.addIssue({code:"custom",path:["expiresDays"],message:"Must be between 1 and 365"})});function Me(r){if(r.expiry!=="never")return Number(r.expiry==="custom"?r.expiresDays:r.expiry)}function ts(){var H,Q,V;const r=ce(),g=((H=de().user)==null?void 0:H.role)==="Admin",i=xe({queryKey:K.tokens,queryFn:we}),Y=i.data??[],w=Oe(i),C=a.useRef(null),Z=We(w,C),[ee,se]=a.useState(!1),[l,D]=a.useState(""),[x,T]=a.useState("api"),[S,A]=a.useState(""),[f,v]=a.useState(null),F=a.useId(),I=a.useId(),k=a.useRef(null),[ae,c]=a.useState(""),E=a.useId(),{register:R,control:B,handleSubmit:re,reset:te,formState:{errors:o,isSubmitting:P,submitCount:ne}}=ue({shouldFocusError:!1,resolver:me($e),defaultValues:{name:"",expiry:"30",expiresDays:"30"}}),L=pe({control:B,name:"expiry"}),O=()=>{r.invalidateQueries({queryKey:K.tokens})};a.useEffect(()=>{var s;l&&((s=k.current)==null||s.focus())},[l]);async function ie(s){c("");try{const t=Me(s),b=await fetch("/api/v1/tokens",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:s.name,...t!==void 0?{expires_in_days:t}:{},...x==="agent"?{scope:"agent"}:{}})});if(!b.ok){const d=await b.json().catch(()=>null);n.error((d==null?void 0:d.error)??"Failed to create token"),c((d==null?void 0:d.error)??"Failed to create token");return}const le=await b.json();x==="agent"&&A((await Ve()).agentWsBase),n.success("Token created"),D(le.token),O()}catch{n.error("Network error"),c("Network error")}}function q(s){se(s),s||(D(""),T("api"),A(""),c(""),te())}async function oe(s){try{return(await fetch(`/api/v1/tokens/${s}`,{method:"DELETE",credentials:"include"})).ok?(n.success("Token revoked"),O(),!0):(n.error("Failed to revoke token"),!1)}catch{return n.error("Network error"),!1}}function _(s){return s.expires_at&&new Date(s.expires_at)<new Date}return e.jsxs("div",{className:"flex flex-col gap-6 max-w-[900px] mx-auto w-full p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h1",{className:"text-xl font-semibold",children:"Personal Access Tokens"}),e.jsxs(Ee,{open:ee,onOpenChange:q,children:[e.jsx(Re,{asChild:!0,children:e.jsxs(u,{ref:C,size:"sm",children:[e.jsx(ze,{className:"mr-2 h-4 w-4"}),"New token"]})}),e.jsxs(Be,{className:"sm:max-w-md",children:[e.jsx(Pe,{children:e.jsx(Le,{children:"Create token"})}),e.jsx("p",{role:"status",className:"sr-only",children:ae}),l?e.jsxs("div",{className:"flex flex-col gap-3 pt-2",children:[e.jsx("p",{id:F,className:"text-sm text-muted-foreground",children:"Copy this token now — it won't be shown again."}),e.jsx(j,{ref:k,readOnly:!0,value:l,"aria-labelledby":F,onFocus:s=>s.currentTarget.select(),className:"font-mono text-xs"}),x==="agent"&&S&&e.jsxs(e.Fragment,{children:[e.jsx("p",{id:I,className:"text-sm text-muted-foreground",children:"Run this on the agent Mac to connect it to this relay:"}),e.jsx(j,{readOnly:!0,value:`tapflow agent start --relay ${S} --token ${l}`,"aria-labelledby":I,onFocus:s=>s.currentTarget.select(),className:"font-mono text-xs"})]}),e.jsx(u,{onClick:()=>{c(""),(navigator.clipboard?navigator.clipboard.writeText(l):Promise.reject(new Error("no clipboard"))).then(()=>{n.success("Token copied to clipboard"),q(!1)}).catch(()=>{var s;n.error("Failed to copy — copy manually"),c("Could not copy the token. Select it and copy it by hand."),(s=k.current)==null||s.focus()})},children:"Copy & close"})]}):e.jsxs("form",{onSubmit:re(ie),className:"flex flex-col gap-4 pt-2",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"token-name",children:"Name"}),e.jsx(j,{id:"token-name",placeholder:"e.g. ci-deploy","aria-required":"true","aria-invalid":!!o.name,"aria-describedby":o.name?"name-error":void 0,...R("name")}),e.jsx(W,{id:"name-error",message:(Q=o.name)==null?void 0:Q.message})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"token-expiry",children:"Expiration"}),e.jsx(he,{control:B,name:"expiry",render:({field:s})=>e.jsxs($,{value:s.value,onValueChange:t=>s.onChange(t),children:[e.jsx(M,{id:"token-expiry",ref:s.ref,onBlur:s.onBlur,"aria-describedby":s.value==="never"?E:void 0,children:e.jsx(G,{})}),e.jsxs(J,{children:[X.map(t=>e.jsxs(m,{value:t,children:[t," days"]},t)),e.jsx(m,{value:"custom",children:"Custom…"}),e.jsx(m,{value:"never",children:"No expiration"})]})]})}),L==="never"&&e.jsx("p",{id:E,className:"text-sm text-amber-700 dark:text-amber-300",children:"A token without an expiry stays valid until you revoke it. For CI, 90 days or less is recommended."})]}),L==="custom"&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"expires",children:"Expires in (days)"}),e.jsx(j,{id:"expires",type:"number","aria-required":"true","aria-invalid":!!o.expiresDays,"aria-describedby":o.expiresDays?"expiresDays-error":void 0,...R("expiresDays")}),e.jsx(W,{id:"expiresDays-error",message:(V=o.expiresDays)==null?void 0:V.message})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"token-type",children:"Type"}),e.jsxs($,{value:x,onValueChange:s=>T(s),children:[e.jsx(M,{id:"token-type",children:e.jsx(G,{})}),e.jsxs(J,{children:[e.jsx(m,{value:"api",children:"API — CI uploads & API access"}),g&&e.jsx(m,{value:"agent",children:"Agent — connect remote device agents (Admin only)"})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Scope: ",e.jsx(N,{variant:"secondary",children:x==="agent"?"agent":"view, builds:write"})]}),e.jsx(u,{type:"submit",disabled:P,children:P?"Creating…":"Create token"}),e.jsx(je,{errors:o,submitCount:ne})]})]})]})]}),e.jsxs(ye,{children:[e.jsxs(ge,{children:[e.jsx(fe,{children:"Active tokens"}),e.jsxs(ve,{children:["Use these tokens with ",e.jsx("code",{className:"text-xs",children:"Authorization: Bearer <token>"})," for API deployments."]})]}),e.jsx(ke,{className:"px-4 pt-0 pb-2",children:e.jsxs(qe,{children:[e.jsx(_e,{children:e.jsxs(U,{children:[e.jsx(p,{children:"Name"}),e.jsx(p,{children:"Scope"}),e.jsx(p,{children:"Last used"}),e.jsx(p,{children:"Expires"}),e.jsx(p,{className:"w-10"})]})}),e.jsxs(He,{...Z,children:[e.jsx(Qe,{view:w,colSpan:5,noun:"tokens",emptyText:"No tokens yet.",onRetry:()=>{i.refetch()}}),Y.map(s=>e.jsxs(U,{className:"hover:bg-transparent",children:[e.jsx(h,{className:"font-medium",children:s.name}),e.jsx(h,{children:e.jsx(N,{variant:"secondary",children:s.scope})}),e.jsx(h,{className:"text-muted-foreground text-sm",children:s.last_used_at?new Date(s.last_used_at).toLocaleDateString():"Never"}),e.jsx(h,{children:s.expires_at?e.jsx("span",{className:_(s)?"text-destructive text-sm":"text-muted-foreground text-sm",children:_(s)?"Expired":new Date(s.expires_at).toLocaleDateString()}):e.jsx(N,{variant:"outline",children:"No expiration"})}),e.jsx(h,{children:e.jsx(u,{variant:"destructive",size:"icon",className:"h-7 w-7","aria-label":"Revoke token",onClick:()=>v(s.id),children:e.jsx(Ke,{className:"h-4 w-4"})})})]},s.id))]})]})})]}),e.jsx(Ce,{open:f!==null,onOpenChange:s=>{s||v(null)},children:e.jsxs(De,{children:[e.jsxs(Te,{children:[e.jsx(Se,{children:"Revoke token?"}),e.jsx(Ae,{children:"Any active API calls using this token will immediately fail."})]}),e.jsxs(Fe,{children:[e.jsx(Ie,{children:"Cancel"}),e.jsx(u,{variant:"destructive",onClick:async()=>{if(f===null)return;await oe(f)&&v(null)},children:"Revoke"})]})]})})]})}export{ts as TokenSettings};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{k as n,j as i,f as d}from"./vendor-react-BlPSzrEe.js";import{m as S,aG as u,j as T,a1 as O,n as b,k as E,i as v,a5 as x,a4 as h,D as k,o as z,l as F,a0 as f,Z as N}from"./index-DSW9h8XX.js";var H=Object.defineProperty,c=(s,t)=>H(s,"name",{value:t,configurable:!0}),M="AlertDialog",[G,fe]=h(M,[x]),p=x(),I=c(s=>{const{__scopeAlertDialog:t,...e}=s,a=p(t);return i.jsx(k,{...a,...e,modal:!0})},"AlertDialog"),L=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,o=p(a);return i.jsx(z,{...o,...l,ref:e})},"AlertDialogTrigger")),V=c(s=>{const{__scopeAlertDialog:t,...e}=s,a=p(t);return i.jsx(S,{...a,...e})},"AlertDialogPortal"),Z=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,o=p(a);return i.jsx(F,{...o,...l,ref:e})},"AlertDialogOverlay")),q="AlertDialogContent",[B,J]=G(q),K=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,children:l,...o}=t,r=p(a),g=n.useRef(null),$=u(e,g),m=n.useRef(null);return i.jsx(B,{scope:a,cancelRef:m,children:i.jsx(T,{role:"alertdialog",...r,...o,ref:$,onOpenAutoFocus:O(o.onOpenAutoFocus,D=>{var A;D.preventDefault(),(A=m.current)==null||A.focus({preventScroll:!0})}),onPointerDownOutside:D=>D.preventDefault(),onInteractOutside:D=>D.preventDefault(),children:l})})},"AlertDialogContent")),Q=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,o=p(a);return i.jsx(b,{...o,...l,ref:e})},"AlertDialogTitle")),U=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,o=p(a);return i.jsx(E,{...o,...l,ref:e})},"AlertDialogDescription")),W=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,o=p(a);return i.jsx(v,{...o,...l,ref:e})},"AlertDialogAction")),X="AlertDialogCancel",Y=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,{cancelRef:o}=J(X,a),r=p(a),g=u(e,o);return i.jsx(v,{...r,...l,ref:g})},"AlertDialogCancel")),ee=I,te=L,ae=V,_=Z,y=K,j=W,R=Y,C=Q,w=U;const De=ee,me=te,le=ae,P=n.forwardRef((s,t)=>{const e=d.c(9);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]!==a?(o=f("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),e[3]=a,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==t||e[7]!==o?(r=i.jsx(_,{className:o,...l,ref:t}),e[5]=l,e[6]=t,e[7]=o,e[8]=r):r=e[8],r});P.displayName=_.displayName;const oe=n.forwardRef((s,t)=>{const e=d.c(10);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(P,{}),e[3]=o):o=e[3];let r;e[4]!==a?(r=f("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),e[4]=a,e[5]=r):r=e[5];let g;return e[6]!==l||e[7]!==t||e[8]!==r?(g=i.jsxs(le,{children:[o,i.jsx(y,{ref:t,className:r,...l})]}),e[6]=l,e[7]=t,e[8]=r,e[9]=g):g=e[9],g});oe.displayName=y.displayName;const se=s=>{const t=d.c(8);let e,a;t[0]!==s?({className:e,...a}=s,t[0]=s,t[1]=e,t[2]=a):(e=t[1],a=t[2]);let l;t[3]!==e?(l=f("flex flex-col space-y-2 text-center sm:text-left",e),t[3]=e,t[4]=l):l=t[4];let o;return t[5]!==a||t[6]!==l?(o=i.jsx("div",{className:l,...a}),t[5]=a,t[6]=l,t[7]=o):o=t[7],o};se.displayName="AlertDialogHeader";const re=s=>{const t=d.c(8);let e,a;t[0]!==s?({className:e,...a}=s,t[0]=s,t[1]=e,t[2]=a):(e=t[1],a=t[2]);let l;t[3]!==e?(l=f("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),t[3]=e,t[4]=l):l=t[4];let o;return t[5]!==a||t[6]!==l?(o=i.jsx("div",{className:l,...a}),t[5]=a,t[6]=l,t[7]=o):o=t[7],o};re.displayName="AlertDialogFooter";const ie=n.forwardRef((s,t)=>{const e=d.c(9);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]!==a?(o=f("text-lg font-semibold",a),e[3]=a,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==t||e[7]!==o?(r=i.jsx(C,{ref:t,className:o,...l}),e[5]=l,e[6]=t,e[7]=o,e[8]=r):r=e[8],r});ie.displayName=C.displayName;const ne=n.forwardRef((s,t)=>{const e=d.c(9);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]!==a?(o=f("text-sm text-muted-foreground",a),e[3]=a,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==t||e[7]!==o?(r=i.jsx(w,{ref:t,className:o,...l}),e[5]=l,e[6]=t,e[7]=o,e[8]=r):r=e[8],r});ne.displayName=w.displayName;const ce=n.forwardRef((s,t)=>{const e=d.c(9);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]!==a?(o=f(N(),a),e[3]=a,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==t||e[7]!==o?(r=i.jsx(j,{ref:t,className:o,...l}),e[5]=l,e[6]=t,e[7]=o,e[8]=r):r=e[8],r});ce.displayName=j.displayName;const pe=n.forwardRef((s,t)=>{const e=d.c(9);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]!==a?(o=f(N({variant:"outline"}),"mt-2 sm:mt-0",a),e[3]=a,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==t||e[7]!==o?(r=i.jsx(R,{ref:t,className:o,...l}),e[5]=l,e[6]=t,e[7]=o,e[8]=r):r=e[8],r});pe.displayName=R.displayName;export{De as A,ce as a,pe as b,oe as c,ne as d,re as e,se as f,ie as g,me as h};
Binary file
Binary file
@@ -1,11 +0,0 @@
1
- import{a6 as m,I as g}from"./index-DSW9h8XX.js";import{f as y,j as f}from"./vendor-react-BlPSzrEe.js";/**
2
- * @license lucide-react v1.48.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const b={name:"play",size:24,node:[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]};b.node;const w=m(b);/**
7
- * @license lucide-react v1.48.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const h={name:"search",size:24,node:[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]};h.node;const v=m(h);function x(n){const e=y.c(11),{value:t,onChange:r,placeholder:i,className:_,"aria-label":l,"aria-describedby":c,ref:u}=n;let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=f.jsx(v,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none"}),e[0]=o):o=e[0];let a;e[1]!==r?(a=$=>r($.target.value),e[1]=r,e[2]=a):a=e[2];const d=`h-8 pl-8 ${_??"w-48"}`;let s;return e[3]!==l||e[4]!==c||e[5]!==i||e[6]!==u||e[7]!==a||e[8]!==d||e[9]!==t?(s=f.jsxs("div",{className:"relative",children:[o,f.jsx(g,{ref:u,"aria-label":l,"aria-describedby":c,placeholder:i,value:t,onChange:a,className:d})]}),e[3]=l,e[4]=c,e[5]=i,e[6]=u,e[7]=a,e[8]=d,e[9]=t,e[10]=s):s=e[10],s}const k={Backlog:"backlog","In Progress":"progress",Done:"done",Rejected:"rejected"};function M(n){return n.version_name&&n.build_number?`${n.version_name} · build ${n.build_number}`:n.version_name??n.version_label??(n.build_number?`build ${n.build_number}`:"Build")}function N(n){return`${n.platform} build ${n.build_number??"without a number"}, ${n.version_name??"Unversioned"}`}function p(n){const e=/[zZ]|[+-]\d{2}:?\d{2}$/.test(n);return new Date(e?n:n.replace(" ","T")+"Z").getTime()-Date.now()}function S(n){const e=p(n);if(e<=0)return{label:"Deleting…",urgent:!0};const t=Math.floor(e/36e5);return t<1?{label:"Deletes in < 1h",urgent:!0}:t<24?{label:`Deletes in ${t}h`,urgent:t<6}:{label:`Deletes in ${Math.floor(t/24)}d`,urgent:!1}}function T(n){const e=p(n);if(e<=0)return"now";if(e<36e5)return"within an hour";const t=Math.round(e/36e5);if(t<24)return`in ${t} hour${t===1?"":"s"}`;const r=Math.round(e/864e5);return`in ${r} day${r===1?"":"s"}`}export{w as P,k as S,v as a,x as b,M as c,N as d,T as e,S as f};
@@ -1,11 +0,0 @@
1
- import{k as d,j as u,r as De,f as k}from"./vendor-react-BlPSzrEe.js";import{a6 as Me,aG as U,A as lt,z as A,a1 as E,x as at,aM as Z,y as ct,aF as Ce,aL as Oe,a7 as ke,a3 as it,aq as dt,aJ as ut,R as pt,q as ft,p as mt,a4 as ht,a9 as gt,g as St,V as xt,aI as vt,aH as _e,G as wt,a0 as M,e as yt,D as Ct,o as bt,m as It,j as Le,n as Ae,k as Be,l as Ve,i as Tt,X as Pt}from"./index-DSW9h8XX.js";/**
2
- * @license lucide-react v1.48.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const He={name:"chevron-down",size:24,node:[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]};He.node;const Fe=Me(He);/**
7
- * @license lucide-react v1.48.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const $e={name:"chevron-up",size:24,node:[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]};$e.node;const _t=Me($e);var Nt=Object.defineProperty,Rt=(l,o)=>Nt(l,"name",{value:o,configurable:!0});function we(l,[o,e]){return Math.min(e,Math.max(o,l))}Rt(we,"clamp");var jt=Object.defineProperty,Et=(l,o)=>jt(l,"name",{value:o,configurable:!0});function Ue(l){const o=d.useRef({value:l,previous:l});return d.useMemo(()=>(o.current.value!==l&&(o.current.previous=o.current.value,o.current.value=l),o.current.previous),[l])}Et(Ue,"usePrevious");var Dt=Object.defineProperty,x=(l,o)=>Dt(l,"name",{value:o,configurable:!0}),Mt=[" ","Enter","ArrowUp","ArrowDown"],Ot=[" ","Enter"],de="Select",[he,ge,kt]=it(de),[re,bo]=ht(de,[kt,ke]),be=ke(),[Lt,J]=re(de),[At,Bt]=re(de);function We(l){const{__scopeSelect:o,children:e,open:t,defaultOpen:s,onOpenChange:n,value:r,defaultValue:a,onValueChange:c,dir:i,name:m,autoComplete:v,disabled:w,required:y,form:C,internal_do_not_use_render:I}=l,p=be(o),[g,T]=d.useState(null),[h,f]=d.useState(null),[R,j]=d.useState(!1),Q=vt(i),[L,V]=_e({prop:t,defaultProp:s??!1,onChange:n,caller:de}),[ee,G]=_e({prop:r,defaultProp:a,onChange:c,caller:de}),W=d.useRef(null),K=d.useRef(ee);d.useEffect(()=>{const D=C?g==null?void 0:g.ownerDocument.getElementById(C):g==null?void 0:g.form;if(D instanceof HTMLFormElement){const $=x(()=>G(K.current),"reset");return D.addEventListener("reset",$),()=>D.removeEventListener("reset",$)}},[C,g,G]);const te=g?!!C||!!g.closest("form"):!0,[z,H]=d.useState(new Set),q=Oe(),Y=Array.from(z).map(D=>D.props.value).join(";"),X=d.useCallback(D=>{H($=>new Set($).add(D))},[]),F=d.useCallback(D=>{H($=>{const ce=new Set($);return ce.delete(D),ce})},[]),ae={required:y,trigger:g,onTriggerChange:T,valueNode:h,onValueNodeChange:f,valueNodeHasChildren:R,onValueNodeHasChildrenChange:j,contentId:q,value:ee,onValueChange:G,open:L,onOpenChange:V,dir:Q,triggerPointerDownPosRef:W,disabled:w,name:m,autoComplete:v,form:C,nativeOptions:z,nativeSelectKey:Y,isFormControl:te};return u.jsx(wt,{...p,children:u.jsx(Lt,{scope:o,...ae,children:u.jsx(he.Provider,{scope:o,children:u.jsx(At,{scope:o,onNativeOptionAdd:X,onNativeOptionRemove:F,children:tt(I)?I(ae):e})})})})}x(We,"SelectProvider");var Vt=x(l=>{const{__scopeSelect:o,children:e,...t}=l;return u.jsx(We,{__scopeSelect:o,...t,internal_do_not_use_render:({isFormControl:s})=>u.jsxs(u.Fragment,{children:[e,s?u.jsx(co,{__scopeSelect:o}):null]})})},"Select"),Ht="SelectTrigger",Ke=d.forwardRef(x(function(o,e){const{__scopeSelect:t,disabled:s=!1,...n}=o,r=be(t),a=J(Ht,t),c=a.disabled||s,i=U(e,a.onTriggerChange),m=ge(t),v=d.useRef("touch"),[w,y,C]=Te(p=>{const g=m().filter(f=>!f.disabled),T=g.find(f=>f.value===a.value),h=Pe(g,p,T);h!==void 0&&a.onValueChange(h.value)}),I=x(p=>{c||(a.onOpenChange(!0),C()),p&&(a.triggerPointerDownPosRef.current={x:Math.round(p.pageX),y:Math.round(p.pageY)})},"handleOpen");return u.jsx(lt,{asChild:!0,...r,children:u.jsx(A.button,{type:"button",role:"combobox","aria-controls":a.open?a.contentId:void 0,"aria-expanded":a.open,"aria-required":a.required,"aria-autocomplete":"none",dir:a.dir,"data-state":a.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":pe(a.value)?"":void 0,...n,ref:i,onClick:E(n.onClick,p=>{p.currentTarget.focus(),v.current!=="mouse"&&I(p)}),onPointerDown:E(n.onPointerDown,p=>{v.current=p.pointerType;const g=p.target;g.hasPointerCapture(p.pointerId)&&g.releasePointerCapture(p.pointerId),p.button===0&&p.ctrlKey===!1&&p.pointerType==="mouse"&&(I(p),p.preventDefault())}),onKeyDown:E(n.onKeyDown,p=>{const g=w.current!=="";!(p.ctrlKey||p.altKey||p.metaKey)&&p.key.length===1&&y(p.key),!(g&&p.key===" ")&&Mt.includes(p.key)&&(I(),p.preventDefault())})})})},"SelectTrigger")),Ft="SelectValue",$t=d.forwardRef(x(function(o,e){const{__scopeSelect:t,className:s,style:n,children:r,placeholder:a="",...c}=o,i=J(Ft,t),{onValueNodeHasChildrenChange:m}=i,v=r!==void 0,w=U(e,i.onValueNodeChange);Z(()=>{m(v)},[m,v]);const y=pe(i.value);return u.jsx(A.span,{...c,asChild:y?!1:c.asChild,ref:w,style:{pointerEvents:"none"},children:u.jsx(d.Fragment,{children:y?a:r},y?"placeholder":"value")})},"SelectValue")),Ut=d.forwardRef(x(function(o,e){const{__scopeSelect:t,children:s,...n}=o;return u.jsx(A.span,{"aria-hidden":!0,...n,ref:e,children:s||"▼"})},"SelectIcon")),Wt="SelectPortal",[Kt,zt]=re(Wt,{forceMount:void 0}),Gt=x(l=>{const{__scopeSelect:o,forceMount:e,...t}=l;return u.jsx(Kt,{scope:l.__scopeSelect,forceMount:e,children:u.jsx(at,{asChild:!0,...t})})},"SelectPortal"),se="SelectContent",ze=d.forwardRef(x(function(o,e){const t=zt(se,o.__scopeSelect),{forceMount:s=t.forceMount,...n}=o,r=J(se,o.__scopeSelect),[a,c]=d.useState();return Z(()=>{c(new DocumentFragment)},[]),u.jsx(ct,{present:s||r.open,children:({present:i})=>i?u.jsx(Xt,{...n,ref:e}):u.jsx(qt,{...n,fragment:a})})},"SelectContent")),qt=d.forwardRef(x(function(o,e){const{__scopeSelect:t,children:s,fragment:n}=o;return n?De.createPortal(u.jsx(Ge,{scope:t,children:u.jsx(he.Slot,{scope:t,children:u.jsx("div",{ref:e,children:s})})}),n):null},"SelectContentFragment")),B=10,[Ge,le]=re(se),Yt=gt("SelectContent.RemoveScroll"),Xt=d.forwardRef(x(function(o,e){const{__scopeSelect:t}=o,{position:s="item-aligned",onCloseAutoFocus:n,onEscapeKeyDown:r,onPointerDownOutside:a,side:c,sideOffset:i,align:m,alignOffset:v,arrowPadding:w,collisionBoundary:y,collisionPadding:C,sticky:I,hideWhenDetached:p,avoidCollisions:g,...T}=o,h=J(se,t),[f,R]=d.useState(null),[j,Q]=d.useState(null),L=U(e,R),[V,ee]=d.useState(null),[G,W]=d.useState(null),K=ge(t),[te,z]=d.useState(!1),H=d.useRef(!1);d.useEffect(()=>{if(f)return dt(f)},[f]),ut();const q=d.useCallback(S=>{const[N,...O]=K().map(P=>P.ref.current),[_]=O.slice(-1),b=document.activeElement;for(const P of S)if(P===b||(P==null||P.scrollIntoView({block:"nearest"}),P===N&&j&&(j.scrollTop=0),P===_&&j&&(j.scrollTop=j.scrollHeight),P==null||P.focus(),document.activeElement!==b))return},[K,j]),Y=d.useCallback(()=>q([V,f]),[q,V,f]);d.useEffect(()=>{te&&Y()},[te,Y]);const{onOpenChange:X,triggerPointerDownPosRef:F}=h;d.useEffect(()=>{if(f){let S={x:0,y:0};const N=x(_=>{var b,P;S={x:Math.abs(Math.round(_.pageX)-(((b=F.current)==null?void 0:b.x)??0)),y:Math.abs(Math.round(_.pageY)-(((P=F.current)==null?void 0:P.y)??0))}},"handlePointerMove"),O=x(_=>{S.x<=10&&S.y<=10?_.preventDefault():_.composedPath().includes(f)||X(!1),document.removeEventListener("pointermove",N),F.current=null},"handlePointerUp");return F.current!==null&&(document.addEventListener("pointermove",N),document.addEventListener("pointerup",O,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",N),document.removeEventListener("pointerup",O,{capture:!0})}}},[f,X,F]),d.useEffect(()=>{const S=x(()=>X(!1),"close");return window.addEventListener("blur",S),window.addEventListener("resize",S),()=>{window.removeEventListener("blur",S),window.removeEventListener("resize",S)}},[X]);const[ae,D]=Te(S=>{const N=K().filter(b=>!b.disabled),O=N.find(b=>b.ref.current===document.activeElement),_=Pe(N,S,O);_&&setTimeout(()=>{var b;return(b=_.ref.current)==null?void 0:b.focus()})}),$=d.useCallback((S,N,O)=>{const _=!H.current&&!O;(h.value!==void 0&&h.value===N||_)&&(ee(S),_&&(H.current=!0))},[h.value]),ce=d.useCallback(()=>f==null?void 0:f.focus(),[f]),ie=d.useCallback((S,N,O)=>{const _=!H.current&&!O;(h.value!==void 0&&h.value===N||_)&&W(S)},[h.value]),fe=s==="popper"?Ne:Zt,ue=fe===Ne?{side:c,sideOffset:i,align:m,alignOffset:v,arrowPadding:w,collisionBoundary:y,collisionPadding:C,sticky:I,hideWhenDetached:p,avoidCollisions:g}:{};return u.jsx(Ge,{scope:t,content:f,viewport:j,onViewportChange:Q,itemRefCallback:$,selectedItem:V,onItemLeave:ce,itemTextRefCallback:ie,focusSelectedItem:Y,selectedItemText:G,position:s,isPositioned:te,searchRef:ae,children:u.jsx(pt,{as:Yt,allowPinchZoom:!0,children:u.jsx(ft,{asChild:!0,trapped:h.open,onMountAutoFocus:S=>{S.preventDefault()},onUnmountAutoFocus:E(n,S=>{var N;(N=h.trigger)==null||N.focus({preventScroll:!0}),S.preventDefault()}),children:u.jsx(mt,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:r,onPointerDownOutside:a,onFocusOutside:S=>S.preventDefault(),onDismiss:()=>h.onOpenChange(!1),children:u.jsx(fe,{role:"listbox",id:h.contentId,"data-state":h.open?"open":"closed",dir:h.dir,onContextMenu:S=>S.preventDefault(),...T,...ue,onPlaced:()=>z(!0),ref:L,style:{display:"flex",flexDirection:"column",outline:"none",...T.style},onKeyDown:E(T.onKeyDown,S=>{const N=S.ctrlKey||S.altKey||S.metaKey;if(S.key==="Tab"&&S.preventDefault(),!N&&S.key.length===1&&D(S.key),["ArrowUp","ArrowDown","Home","End"].includes(S.key)){let _=K().filter(b=>!b.disabled).map(b=>b.ref.current);if(["ArrowUp","End"].includes(S.key)&&(_=_.slice().reverse()),["ArrowUp","ArrowDown"].includes(S.key)){const b=S.target,P=_.indexOf(b);_=_.slice(P+1)}setTimeout(()=>q(_)),S.preventDefault()}})})})})})})},"SelectContentImpl")),Zt=d.forwardRef(x(function(o,e){const{__scopeSelect:t,onPlaced:s,...n}=o,r=J(se,t),a=le(se,t),[c,i]=d.useState(null),[m,v]=d.useState(null),w=U(e,v),y=ge(t),C=d.useRef(!1),I=d.useRef(!0),{viewport:p,selectedItem:g,selectedItemText:T,focusSelectedItem:h}=a,f=d.useCallback(()=>{if(r.trigger&&r.valueNode&&c&&m&&p&&g&&T){const L=r.trigger.getBoundingClientRect(),V=m.getBoundingClientRect(),ee=r.valueNode.getBoundingClientRect(),G=T.getBoundingClientRect();if(r.dir!=="rtl"){const b=G.left-V.left,P=ee.left-b,oe=L.left-P,ne=L.width+oe,Se=Math.max(ne,V.width),xe=window.innerWidth-B,ve=we(P,[B,Math.max(B,xe-Se)]);c.style.minWidth=ne+"px",c.style.left=ve+"px"}else{const b=V.right-G.right,P=window.innerWidth-ee.right-b,oe=window.innerWidth-L.right-P,ne=L.width+oe,Se=Math.max(ne,V.width),xe=window.innerWidth-B,ve=we(P,[B,Math.max(B,xe-Se)]);c.style.minWidth=ne+"px",c.style.right=ve+"px"}const W=y(),K=window.innerHeight-B*2,te=p.scrollHeight,z=window.getComputedStyle(m),H=parseInt(z.borderTopWidth,10),q=parseInt(z.paddingTop,10),Y=parseInt(z.borderBottomWidth,10),X=parseInt(z.paddingBottom,10),F=H+q+te+X+Y,ae=Math.min(g.offsetHeight*5,F),D=window.getComputedStyle(p),$=parseInt(D.paddingTop,10),ce=parseInt(D.paddingBottom,10),ie=L.top+L.height/2-B,fe=K-ie,ue=g.offsetHeight/2,S=g.offsetTop+ue,N=H+q+S,O=F-N;if(N<=ie){const b=W.length>0&&g===W[W.length-1].ref.current;c.style.bottom="0px";const P=m.clientHeight-p.offsetTop-p.offsetHeight,oe=Math.max(fe,ue+(b?ce:0)+P+Y),ne=N+oe;c.style.height=ne+"px"}else{const b=W.length>0&&g===W[0].ref.current;c.style.top="0px";const oe=Math.max(ie,H+p.offsetTop+(b?$:0)+ue)+O;c.style.height=oe+"px",p.scrollTop=N-ie+p.offsetTop}c.style.margin=`${B}px 0`,c.style.minHeight=ae+"px",c.style.maxHeight=K+"px",s==null||s(),requestAnimationFrame(()=>C.current=!0)}},[y,r.trigger,r.valueNode,c,m,p,g,T,r.dir,s]);Z(()=>f(),[f]);const[R,j]=d.useState();Z(()=>{m&&j(window.getComputedStyle(m).zIndex)},[m]);const Q=d.useCallback(L=>{L&&I.current===!0&&(f(),h==null||h(),I.current=!1)},[f,h]);return u.jsx(Jt,{scope:t,contentWrapper:c,shouldExpandOnScrollRef:C,onScrollButtonChange:Q,children:u.jsx("div",{ref:i,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:R},children:u.jsx(A.div,{...n,ref:w,style:{boxSizing:"border-box",maxHeight:"100%",...n.style}})})})},"SelectItemAlignedPosition")),Ne=d.forwardRef(x(function(o,e){const{__scopeSelect:t,align:s="start",collisionPadding:n=B,...r}=o,a=be(t);return u.jsx(St,{...a,...r,ref:e,align:s,collisionPadding:n,style:{boxSizing:"border-box",...r.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})},"SelectPopperPosition")),[Jt,Ie]=re(se,{}),Re="SelectViewport",Qt=d.forwardRef(x(function(o,e){const{__scopeSelect:t,nonce:s,...n}=o,r=le(Re,t),a=Ie(Re,t),c=U(e,r.onViewportChange),i=d.useRef(0);return u.jsxs(u.Fragment,{children:[u.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),u.jsx(he.Slot,{scope:t,children:u.jsx(A.div,{"data-radix-select-viewport":"",role:"presentation",...n,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...n.style},onScroll:E(n.onScroll,m=>{const v=m.currentTarget,{contentWrapper:w,shouldExpandOnScrollRef:y}=a;if(y!=null&&y.current&&w){const C=Math.abs(i.current-v.scrollTop);if(C>0){const I=window.innerHeight-B*2,p=parseFloat(w.style.minHeight),g=parseFloat(w.style.height),T=Math.max(p,g);if(T<I){const h=T+C,f=Math.min(I,h),R=h-f;w.style.height=f+"px",w.style.bottom==="0px"&&(v.scrollTop=R>0?R:0,w.style.justifyContent="flex-end")}}}i.current=v.scrollTop})})})]})},"SelectViewport")),eo="SelectGroup",[Io,to]=re(eo),oo="SelectLabel",qe=d.forwardRef(x(function(o,e){const{__scopeSelect:t,...s}=o,n=to(oo,t);return u.jsx(A.div,{id:n.id,...s,ref:e})},"SelectLabel")),ye="SelectItem",[no,Ye]=re(ye),Xe=d.forwardRef(x(function(o,e){const{__scopeSelect:t,value:s,disabled:n=!1,textValue:r,...a}=o,c=J(ye,t),i=le(ye,t),m=c.value===s,[v,w]=d.useState(r??""),[y,C]=d.useState(!1),I=Ce(f=>{var R;return(R=i.itemRefCallback)==null?void 0:R.call(i,f,s,n)}),p=U(e,I),g=Oe(),T=d.useRef("touch"),h=x(()=>{n||(c.onValueChange(s),c.onOpenChange(!1))},"handleSelect");return u.jsx(no,{scope:t,value:s,disabled:n,textId:g,isSelected:m,onItemTextChange:d.useCallback(f=>{w(R=>R||((f==null?void 0:f.textContent)??"").trim())},[]),children:u.jsx(he.ItemSlot,{scope:t,value:s,disabled:n,textValue:v,children:u.jsx(A.div,{role:"option","aria-labelledby":g,"data-highlighted":y?"":void 0,"aria-selected":m&&y,"data-state":m?"checked":"unchecked","aria-disabled":n||void 0,"data-disabled":n?"":void 0,tabIndex:n?void 0:-1,...a,ref:p,onFocus:E(a.onFocus,()=>C(!0)),onBlur:E(a.onBlur,()=>C(!1)),onClick:E(a.onClick,()=>{T.current!=="mouse"&&h()}),onPointerUp:E(a.onPointerUp,()=>{T.current==="mouse"&&h()}),onPointerDown:E(a.onPointerDown,f=>{T.current=f.pointerType}),onPointerMove:E(a.onPointerMove,f=>{var R;T.current=f.pointerType,n?(R=i.onItemLeave)==null||R.call(i):T.current==="mouse"&&f.currentTarget.focus({preventScroll:!0})}),onPointerLeave:E(a.onPointerLeave,f=>{var R;f.currentTarget===document.activeElement&&((R=i.onItemLeave)==null||R.call(i))}),onKeyDown:E(a.onKeyDown,f=>{var j;n||f.target!==f.currentTarget||((j=i.searchRef)==null?void 0:j.current)!==""&&f.key===" "||(Ot.includes(f.key)&&h(),f.key===" "&&f.preventDefault())})})})})},"SelectItem")),me="SelectItemText",so=d.forwardRef(x(function(o,e){const{__scopeSelect:t,className:s,style:n,...r}=o,a=J(me,t),c=le(me,t),i=Ye(me,t),m=Bt(me,t),[v,w]=d.useState(null),y=Ce(h=>{var f;return(f=c.itemTextRefCallback)==null?void 0:f.call(c,h,i.value,i.disabled)}),C=U(e,w,i.onItemTextChange,y),I=v==null?void 0:v.textContent,p=d.useMemo(()=>u.jsx("option",{value:i.value,disabled:i.disabled,children:I},i.value),[i.disabled,i.value,I]),{onNativeOptionAdd:g,onNativeOptionRemove:T}=m;return Z(()=>(g(p),()=>T(p)),[g,T,p]),u.jsxs(u.Fragment,{children:[u.jsx(A.span,{id:i.textId,...r,ref:C}),i.isSelected&&a.valueNode&&!a.valueNodeHasChildren&&!pe(a.value)?De.createPortal(r.children,a.valueNode):null]})},"SelectItemText")),ro="SelectItemIndicator",lo=d.forwardRef(x(function(o,e){const{__scopeSelect:t,...s}=o;return Ye(ro,t).isSelected?u.jsx(A.span,{"aria-hidden":!0,...s,ref:e}):null},"SelectItemIndicator")),je="SelectScrollUpButton",Ze=d.forwardRef(x(function(o,e){const t=le(je,o.__scopeSelect),s=Ie(je,o.__scopeSelect),[n,r]=d.useState(!1),a=U(e,s.onScrollButtonChange);return Z(()=>{if(t.viewport&&t.isPositioned){let c=function(){const m=i.scrollTop>0;r(m)};x(c,"handleScroll");const i=t.viewport;return c(),i.addEventListener("scroll",c),()=>i.removeEventListener("scroll",c)}},[t.viewport,t.isPositioned]),n?u.jsx(Qe,{...o,ref:a,onAutoScroll:()=>{const{viewport:c,selectedItem:i}=t;c&&i&&(c.scrollTop=c.scrollTop-i.offsetHeight)}}):null},"SelectScrollUpButton")),Ee="SelectScrollDownButton",Je=d.forwardRef(x(function(o,e){const t=le(Ee,o.__scopeSelect),s=Ie(Ee,o.__scopeSelect),[n,r]=d.useState(!1),a=U(e,s.onScrollButtonChange);return Z(()=>{if(t.viewport&&t.isPositioned){let c=function(){const m=i.scrollHeight-i.clientHeight,v=Math.ceil(i.scrollTop)<m;r(v)};x(c,"handleScroll");const i=t.viewport;return c(),i.addEventListener("scroll",c),()=>i.removeEventListener("scroll",c)}},[t.viewport,t.isPositioned]),n?u.jsx(Qe,{...o,ref:a,onAutoScroll:()=>{const{viewport:c,selectedItem:i}=t;c&&i&&(c.scrollTop=c.scrollTop+i.offsetHeight)}}):null},"SelectScrollDownButton")),Qe=d.forwardRef(x(function(o,e){const{__scopeSelect:t,onAutoScroll:s,...n}=o,r=le("SelectScrollButton",t),a=d.useRef(null),c=ge(t),i=d.useCallback(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]);return d.useEffect(()=>()=>i(),[i]),Z(()=>{var v;const m=c().find(w=>w.ref.current===document.activeElement);(v=m==null?void 0:m.ref.current)==null||v.scrollIntoView({block:"nearest"})},[c]),u.jsx(A.div,{"aria-hidden":!0,...n,ref:e,style:{flexShrink:0,...n.style},onPointerDown:E(n.onPointerDown,()=>{a.current===null&&(a.current=window.setInterval(s,50))}),onPointerMove:E(n.onPointerMove,()=>{var m;(m=r.onItemLeave)==null||m.call(r),a.current===null&&(a.current=window.setInterval(s,50))}),onPointerLeave:E(n.onPointerLeave,()=>{i()})})},"SelectScrollButtonImpl")),et=d.forwardRef(x(function(o,e){const{__scopeSelect:t,...s}=o;return u.jsx(A.div,{"aria-hidden":!0,...s,ref:e})},"SelectSeparator")),ao="SelectBubbleInput",co=d.forwardRef(x(function({__scopeSelect:o,...e},t){const s=J(ao,o),{value:n,onValueChange:r,required:a,disabled:c,name:i,autoComplete:m,form:v}=s,{nativeOptions:w,nativeSelectKey:y}=s,C=d.useRef(null),I=U(t,C),p=n??"",g=Ue(p),T=Array.from(w).some(h=>(h.props.value??"")==="");return d.useEffect(()=>{const h=C.current;if(!h)return;const f=window.HTMLSelectElement.prototype,j=Object.getOwnPropertyDescriptor(f,"value").set;if(g!==p&&j){const Q=new Event("change",{bubbles:!0});j.call(h,p),h.dispatchEvent(Q)}},[g,p]),u.jsxs(A.select,{"aria-hidden":!0,required:a,tabIndex:-1,name:i,autoComplete:m,disabled:c,form:v,onChange:h=>r(h.target.value),...e,style:{...xt,...e.style},ref:I,defaultValue:p,children:[pe(n)&&!T?u.jsx("option",{value:""}):null,Array.from(w)]},y)},"SelectBubbleInput"));function tt(l){return typeof l=="function"}x(tt,"isFunction");function pe(l){return l===""||l===void 0}x(pe,"shouldShowPlaceholder");function Te(l){const o=Ce(l),e=d.useRef(""),t=d.useRef(0),s=d.useCallback(r=>{const a=e.current+r;o(a),x((function c(i){e.current=i,window.clearTimeout(t.current),i!==""&&(t.current=window.setTimeout(()=>c(""),1e3))}),"updateSearch")(a)},[o]),n=d.useCallback(()=>{e.current="",window.clearTimeout(t.current)},[]);return d.useEffect(()=>()=>window.clearTimeout(t.current),[]),[e,s,n]}x(Te,"useTypeaheadSearch");function Pe(l,o,e){const s=o.length>1&&Array.from(o).every(i=>i===o[0])?o[0]:o,n=e?l.indexOf(e):-1;let r=ot(l,Math.max(n,0));s.length===1&&(r=r.filter(i=>i!==e));const c=r.find(i=>i.textValue.toLowerCase().startsWith(s.toLowerCase()));return c!==e?c:void 0}x(Pe,"findNextItem");function ot(l,o){return l.map((e,t)=>l[(o+t)%l.length])}x(ot,"wrapArray");const To=Vt,Po=$t,io=d.forwardRef((l,o)=>{const e=k.c(12);let t,s,n;e[0]!==l?({className:s,children:t,...n}=l,e[0]=l,e[1]=t,e[2]=s,e[3]=n):(t=e[1],s=e[2],n=e[3]);let r;e[4]!==s?(r=M("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",s),e[4]=s,e[5]=r):r=e[5];let a;e[6]===Symbol.for("react.memo_cache_sentinel")?(a=u.jsx(Ut,{asChild:!0,children:u.jsx(Fe,{className:"h-4 w-4 opacity-50"})}),e[6]=a):a=e[6];let c;return e[7]!==t||e[8]!==n||e[9]!==o||e[10]!==r?(c=u.jsxs(Ke,{ref:o,className:r,...n,children:[t,a]}),e[7]=t,e[8]=n,e[9]=o,e[10]=r,e[11]=c):c=e[11],c});io.displayName=Ke.displayName;const nt=d.forwardRef((l,o)=>{const e=k.c(10);let t,s;e[0]!==l?({className:t,...s}=l,e[0]=l,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let n;e[3]!==t?(n=M("flex cursor-default items-center justify-center py-1",t),e[3]=t,e[4]=n):n=e[4];let r;e[5]===Symbol.for("react.memo_cache_sentinel")?(r=u.jsx(_t,{className:"h-4 w-4"}),e[5]=r):r=e[5];let a;return e[6]!==s||e[7]!==o||e[8]!==n?(a=u.jsx(Ze,{ref:o,className:n,...s,children:r}),e[6]=s,e[7]=o,e[8]=n,e[9]=a):a=e[9],a});nt.displayName=Ze.displayName;const st=d.forwardRef((l,o)=>{const e=k.c(10);let t,s;e[0]!==l?({className:t,...s}=l,e[0]=l,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let n;e[3]!==t?(n=M("flex cursor-default items-center justify-center py-1",t),e[3]=t,e[4]=n):n=e[4];let r;e[5]===Symbol.for("react.memo_cache_sentinel")?(r=u.jsx(Fe,{className:"h-4 w-4"}),e[5]=r):r=e[5];let a;return e[6]!==s||e[7]!==o||e[8]!==n?(a=u.jsx(Je,{ref:o,className:n,...s,children:r}),e[6]=s,e[7]=o,e[8]=n,e[9]=a):a=e[9],a});st.displayName=Je.displayName;const uo=d.forwardRef((l,o)=>{const e=k.c(21);let t,s,n,r;e[0]!==l?({className:s,children:t,position:r,...n}=l,e[0]=l,e[1]=t,e[2]=s,e[3]=n,e[4]=r):(t=e[1],s=e[2],n=e[3],r=e[4]);const a=r===void 0?"popper":r,c=a==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1";let i;e[5]!==s||e[6]!==c?(i=M("relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",c,s),e[5]=s,e[6]=c,e[7]=i):i=e[7];let m;e[8]===Symbol.for("react.memo_cache_sentinel")?(m=u.jsx(nt,{}),e[8]=m):m=e[8];const v=a==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]";let w;e[9]!==v?(w=M("p-1",v),e[9]=v,e[10]=w):w=e[10];let y;e[11]!==t||e[12]!==w?(y=u.jsx(Qt,{className:w,children:t}),e[11]=t,e[12]=w,e[13]=y):y=e[13];let C;e[14]===Symbol.for("react.memo_cache_sentinel")?(C=u.jsx(st,{}),e[14]=C):C=e[14];let I;return e[15]!==a||e[16]!==n||e[17]!==o||e[18]!==i||e[19]!==y?(I=u.jsx(Gt,{children:u.jsxs(ze,{ref:o,className:i,position:a,...n,children:[m,y,C]})}),e[15]=a,e[16]=n,e[17]=o,e[18]=i,e[19]=y,e[20]=I):I=e[20],I});uo.displayName=ze.displayName;const po=d.forwardRef((l,o)=>{const e=k.c(9);let t,s;e[0]!==l?({className:t,...s}=l,e[0]=l,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let n;e[3]!==t?(n=M("py-1.5 pl-8 pr-2 text-sm font-semibold",t),e[3]=t,e[4]=n):n=e[4];let r;return e[5]!==s||e[6]!==o||e[7]!==n?(r=u.jsx(qe,{ref:o,className:n,...s}),e[5]=s,e[6]=o,e[7]=n,e[8]=r):r=e[8],r});po.displayName=qe.displayName;const fo=d.forwardRef((l,o)=>{const e=k.c(14);let t,s,n;e[0]!==l?({className:s,children:t,...n}=l,e[0]=l,e[1]=t,e[2]=s,e[3]=n):(t=e[1],s=e[2],n=e[3]);let r;e[4]!==s?(r=M("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",s),e[4]=s,e[5]=r):r=e[5];let a;e[6]===Symbol.for("react.memo_cache_sentinel")?(a=u.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:u.jsx(lo,{children:u.jsx(yt,{className:"h-4 w-4"})})}),e[6]=a):a=e[6];let c;e[7]!==t?(c=u.jsx(so,{children:t}),e[7]=t,e[8]=c):c=e[8];let i;return e[9]!==n||e[10]!==o||e[11]!==r||e[12]!==c?(i=u.jsxs(Xe,{ref:o,className:r,...n,children:[a,c]}),e[9]=n,e[10]=o,e[11]=r,e[12]=c,e[13]=i):i=e[13],i});fo.displayName=Xe.displayName;const mo=d.forwardRef((l,o)=>{const e=k.c(9);let t,s;e[0]!==l?({className:t,...s}=l,e[0]=l,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let n;e[3]!==t?(n=M("-mx-1 my-1 h-px bg-muted",t),e[3]=t,e[4]=n):n=e[4];let r;return e[5]!==s||e[6]!==o||e[7]!==n?(r=u.jsx(et,{ref:o,className:n,...s}),e[5]=s,e[6]=o,e[7]=n,e[8]=r):r=e[8],r});mo.displayName=et.displayName;const _o=Ct,No=bt,ho=It,rt=d.forwardRef((l,o)=>{const e=k.c(9);let t,s;e[0]!==l?({className:t,...s}=l,e[0]=l,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let n;e[3]!==t?(n=M("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),e[3]=t,e[4]=n):n=e[4];let r;return e[5]!==s||e[6]!==o||e[7]!==n?(r=u.jsx(Ve,{ref:o,className:n,...s}),e[5]=s,e[6]=o,e[7]=n,e[8]=r):r=e[8],r});rt.displayName=Ve.displayName;const go=d.forwardRef((l,o)=>{const e=k.c(13);let t,s,n;e[0]!==l?({className:s,children:t,...n}=l,e[0]=l,e[1]=t,e[2]=s,e[3]=n):(t=e[1],s=e[2],n=e[3]);let r;e[4]===Symbol.for("react.memo_cache_sentinel")?(r=u.jsx(rt,{}),e[4]=r):r=e[4];let a;e[5]!==s?(a=M("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",s),e[5]=s,e[6]=a):a=e[6];let c;e[7]===Symbol.for("react.memo_cache_sentinel")?(c=u.jsxs(Tt,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[u.jsx(Pt,{className:"h-4 w-4"}),u.jsx("span",{className:"sr-only",children:"Close"})]}),e[7]=c):c=e[7];let i;return e[8]!==t||e[9]!==n||e[10]!==o||e[11]!==a?(i=u.jsxs(ho,{children:[r,u.jsxs(Le,{ref:o,className:a,...n,children:[t,c]})]}),e[8]=t,e[9]=n,e[10]=o,e[11]=a,e[12]=i):i=e[12],i});go.displayName=Le.displayName;const So=l=>{const o=k.c(8);let e,t;o[0]!==l?({className:e,...t}=l,o[0]=l,o[1]=e,o[2]=t):(e=o[1],t=o[2]);let s;o[3]!==e?(s=M("flex flex-col space-y-1.5 text-center sm:text-left",e),o[3]=e,o[4]=s):s=o[4];let n;return o[5]!==t||o[6]!==s?(n=u.jsx("div",{className:s,...t}),o[5]=t,o[6]=s,o[7]=n):n=o[7],n};So.displayName="DialogHeader";const xo=l=>{const o=k.c(8);let e,t;o[0]!==l?({className:e,...t}=l,o[0]=l,o[1]=e,o[2]=t):(e=o[1],t=o[2]);let s;o[3]!==e?(s=M("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),o[3]=e,o[4]=s):s=o[4];let n;return o[5]!==t||o[6]!==s?(n=u.jsx("div",{className:s,...t}),o[5]=t,o[6]=s,o[7]=n):n=o[7],n};xo.displayName="DialogFooter";const vo=d.forwardRef((l,o)=>{const e=k.c(9);let t,s;e[0]!==l?({className:t,...s}=l,e[0]=l,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let n;e[3]!==t?(n=M("text-lg font-semibold leading-none tracking-tight",t),e[3]=t,e[4]=n):n=e[4];let r;return e[5]!==s||e[6]!==o||e[7]!==n?(r=u.jsx(Ae,{ref:o,className:n,...s}),e[5]=s,e[6]=o,e[7]=n,e[8]=r):r=e[8],r});vo.displayName=Ae.displayName;const wo=d.forwardRef((l,o)=>{const e=k.c(9);let t,s;e[0]!==l?({className:t,...s}=l,e[0]=l,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let n;e[3]!==t?(n=M("text-sm text-muted-foreground",t),e[3]=t,e[4]=n):n=e[4];let r;return e[5]!==s||e[6]!==o||e[7]!==n?(r=u.jsx(Be,{ref:o,className:n,...s}),e[5]=s,e[6]=o,e[7]=n,e[8]=r):r=e[8],r});wo.displayName=Be.displayName;export{Fe as C,_o as D,To as S,go as a,wo as b,xo as c,So as d,vo as e,No as f,uo as g,fo as h,io as i,Po as j,we as k};
Binary file
Binary file
@@ -1 +0,0 @@
1
- import{f as n,j as a}from"./vendor-react-BlPSzrEe.js";import{a0 as c}from"./index-DSW9h8XX.js";function p(m){const t=n.c(6),{id:o,children:r,className:i}=m;let e;t[0]!==i?(e=c("text-sm text-muted-foreground",i),t[0]=i,t[1]=e):e=t[1];let s;return t[2]!==r||t[3]!==o||t[4]!==e?(s=a.jsx("p",{id:o,className:e,children:r}),t[2]=r,t[3]=o,t[4]=e,t[5]=s):s=t[5],s}export{p as F};
@@ -1,2 +0,0 @@
1
- t`��8&�ؠw��NIci{Q��L3?Lv�XO����������F2�M|��dMU��6�7ui���Z�I��=��/P����;��/٭��cZ�E�H��`�%A9��&��6��4��ꤿ�˙X0�=UF;�ݪpq�Ԃqn����éxDX�a0N�*
2
- a�$�]:���tg\����E:;�0�&BA]@�R���3#�d~��1_8u��"�{�Kɫ4i��h���!"��^V���t�����]{k��
@@ -1 +0,0 @@
1
- @font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-standard-normal-BwkfbSeq.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-standard-normal-DpK-iCPk.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 98%;--foreground: 0 0% 9%;--card: 0 0% 100%;--card-foreground: 0 0% 9%;--popover: 0 0% 100%;--popover-foreground: 0 0% 9%;--primary: 0 0% 9%;--primary-foreground: 0 0% 100%;--secondary: 0 0% 96%;--secondary-foreground: 0 0% 9%;--muted: 0 0% 96%;--muted-foreground: 0 0% 53%;--accent: 0 0% 96%;--accent-foreground: 0 0% 9%;--destructive: 0 100% 47%;--destructive-foreground: 0 0% 100%;--border: 0 0% 92%;--input: 0 0% 92%;--ring: 0 0% 9%;--radius: .5rem;--avatar-1-bg: 353 90% 82%;--avatar-1-fg: 353 80% 28%;--avatar-2-bg: 25 100% 76%;--avatar-2-fg: 25 90% 25%;--avatar-3-bg: 48 100% 72%;--avatar-3-fg: 31 85% 25%;--avatar-4-bg: 151 70% 70%;--avatar-4-fg: 151 80% 18%;--avatar-5-bg: 216 90% 78%;--avatar-5-fg: 216 85% 25%;--avatar-6-bg: 278 75% 84%;--avatar-6-fg: 278 75% 28%;--sidebar-background: 0 0% 98%;--sidebar-foreground: 0 0% 30%;--sidebar-primary: 0 0% 9%;--sidebar-primary-foreground: 0 0% 100%;--sidebar-accent: 0 0% 96%;--sidebar-accent-foreground: 0 0% 9%;--sidebar-border: 0 0% 92%;--sidebar-ring: 211 100% 48%;--chart-1: 216 85% 55%;--chart-2: 262 65% 58%;--chart-3: 30 80% 55%;--chart-4: 151 65% 45%;--chart-5: 340 75% 55%}.dark{--background: 0 0% 9%;--foreground: 0 0% 98%;--card: 0 0% 11%;--card-foreground: 0 0% 98%;--popover: 0 0% 11%;--popover-foreground: 0 0% 98%;--primary: 0 0% 98%;--primary-foreground: 0 0% 9%;--secondary: 0 0% 15%;--secondary-foreground: 0 0% 98%;--muted: 0 0% 15%;--muted-foreground: 0 0% 65%;--accent: 0 0% 15%;--accent-foreground: 0 0% 98%;--destructive: 0 70% 62%;--destructive-foreground: 0 0% 98%;--border: 0 0% 18%;--input: 0 0% 18%;--ring: 0 0% 98%;--avatar-1-bg: 353 40% 32%;--avatar-1-fg: 353 60% 78%;--avatar-2-bg: 25 42% 32%;--avatar-2-fg: 25 65% 78%;--avatar-3-bg: 48 42% 32%;--avatar-3-fg: 48 65% 78%;--avatar-4-bg: 151 36% 28%;--avatar-4-fg: 151 50% 72%;--avatar-5-bg: 216 42% 32%;--avatar-5-fg: 216 60% 78%;--avatar-6-bg: 278 38% 32%;--avatar-6-fg: 278 55% 78%;--sidebar-background: 0 0% 7%;--sidebar-foreground: 0 0% 80%;--sidebar-primary: 0 0% 98%;--sidebar-primary-foreground: 0 0% 9%;--sidebar-accent: 0 0% 13%;--sidebar-accent-foreground: 0 0% 98%;--sidebar-border: 0 0% 18%;--sidebar-ring: 211 100% 48%;--chart-1: 216 80% 65%;--chart-2: 262 60% 68%;--chart-3: 30 75% 65%;--chart-4: 151 60% 55%;--chart-5: 340 70% 65%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-feature-settings:"ss01","ss02";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button:not([aria-haspopup]):not(:disabled),[role=button]:not([aria-haspopup]):not(:disabled){transition-property:color,background-color,border-color,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.12s}button:active:not([aria-haspopup]):not(:disabled),[role=button]:active:not([aria-haspopup]):not(:disabled){transform:translateY(1px)}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50,.z-\[50\]{z-index:50}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-ml-1{margin-left:-.25rem}.-mr-4{margin-right:-1rem}.-mt-1{margin-top:-.25rem}.mb-1{margin-bottom:.25rem}.ml-0\.5{margin-left:.125rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.\!hidden{display:none!important}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[220px\]{height:220px}.h-\[32px\]{height:32px}.h-\[52px\]{height:52px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-48{max-height:12rem}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\]{max-height:var(--radix-dropdown-menu-content-available-height)}.min-h-0{min-height:0px}.min-h-16{min-height:4rem}.min-h-\[100px\]{min-height:100px}.min-h-\[80px\]{min-height:80px}.min-h-full{min-height:100%}.min-h-svh{min-height:100svh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[1px\]{width:1px}.w-\[300px\]{width:300px}.w-\[500px\]{width:500px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-5{min-width:1.25rem}.min-w-6{min-width:1.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-\[--skeleton-width\]{max-width:var(--skeleton-width)}.max-w-\[500px\]{max-width:500px}.max-w-\[900px\]{max-width:900px}.max-w-lg{max-width:32rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.origin-\[--radix-dropdown-menu-content-transform-origin\]{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-px{--tw-translate-x: 1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-0{--tw-rotate: 0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-0{--tw-scale-x: 0;--tw-scale-y: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes screen-shimmer{0%{background-position:150% 0}to{background-position:-50% 0}}.animate-screen-shimmer{animation:screen-shimmer 1.6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[12px\]{gap:12px}.gap-\[4px\]{gap:4px}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){border-color:hsl(var(--border))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.\!rounded-\[18px\]{border-radius:18px!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-pill{border-radius:100px}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-border{border-color:hsl(var(--border))}.border-input{border-color:hsl(var(--input))}.border-sidebar-border{border-color:hsl(var(--sidebar-border))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-background{background-color:hsl(var(--background))}.bg-background\/90{background-color:hsl(var(--background) / .9)}.bg-black\/60{background-color:#0009}.bg-black\/80{background-color:#000c}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-foreground\/85{background-color:hsl(var(--foreground) / .85)}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/40{background-color:hsl(var(--muted-foreground) / .4)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-sidebar{background-color:hsl(var(--sidebar-background))}.bg-sidebar-border{background-color:hsl(var(--sidebar-border))}.bg-sky-50{--tw-bg-opacity: 1;background-color:rgb(240 249 255 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-violet-400{--tw-bg-opacity: 1;background-color:rgb(167 139 250 / var(--tw-bg-opacity, 1))}.bg-zinc-100{--tw-bg-opacity: 1;background-color:rgb(244 244 245 / var(--tw-bg-opacity, 1))}.bg-zinc-700{--tw-bg-opacity: 1;background-color:rgb(63 63 70 / var(--tw-bg-opacity, 1))}.bg-screen-shimmer{background-image:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.08) 50%,transparent 70%)}.bg-\[length\:200\%_100\%\]{background-size:200% 100%}.fill-current{fill:currentColor}.fill-muted-foreground{fill:hsl(var(--muted-foreground))}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\[10px\]{padding:10px}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[7px\]{padding-left:7px;padding-right:7px}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-\[1px\]{padding-bottom:1px}.pl-1{padding-left:.25rem}.pl-8{padding-left:2rem}.pl-\[4px\]{padding-left:4px}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace}.font-sans{font-family:Inter,ui-sans-serif,system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-display-md{letter-spacing:-.96px}.tracking-display-sm{letter-spacing:-.6px}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-500\/60{color:#f59e0b99}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-background{color:hsl(var(--background))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/70{color:hsl(var(--foreground) / .7)}.text-foreground\/75{color:hsl(var(--foreground) / .75)}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/40{color:hsl(var(--muted-foreground) / .4)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}.text-sidebar-foreground{color:hsl(var(--sidebar-foreground))}.text-sidebar-foreground\/70{color:hsl(var(--sidebar-foreground) / .7)}.text-sky-700{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-zinc-600{--tw-text-opacity: 1;color:rgb(82 82 91 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-card-1{--tw-shadow: inset 0 0 0 1px rgba(0,0,0,.08);--tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-card-2{--tw-shadow: 0px 1px 1px rgba(0,0,0,.02), 0px 2px 2px rgba(0,0,0,.04), inset 0 0 0 1px rgba(0,0,0,.08);--tw-shadow-colored: 0px 1px 1px var(--tw-shadow-color), 0px 2px 2px var(--tw-shadow-color), inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-card-3{--tw-shadow: 0px 2px 2px rgba(0,0,0,.04), 0px 8px 8px -8px rgba(0,0,0,.04), inset 0 0 0 1px rgba(0,0,0,.08);--tw-shadow-colored: 0px 2px 2px var(--tw-shadow-color), 0px 8px 8px -8px var(--tw-shadow-color), inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-card-4{--tw-shadow: 0px 2px 2px rgba(0,0,0,.04), 0px 8px 16px -4px rgba(0,0,0,.04), inset 0 0 0 1px rgba(0,0,0,.08);--tw-shadow-colored: 0px 2px 2px var(--tw-shadow-color), 0px 8px 16px -4px var(--tw-shadow-color), inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-sidebar-ring{--tw-ring-color: hsl(var(--sidebar-ring))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);top:-.5rem;right:-.5rem;bottom:-.5rem;left:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.first\:pt-0:first-child{padding-top:0}.last\:pb-0:last-child{padding-bottom:0}.focus-within\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-within\:ring-ring:focus-within{--tw-ring-color: hsl(var(--ring))}.focus-within\:ring-offset-2:focus-within{--tw-ring-offset-width: 2px}.hover\:border-primary:hover{border-color:hsl(var(--primary))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-destructive\/20:hover{background-color:hsl(var(--destructive) / .2)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-sidebar-accent:hover{background-color:hsl(var(--sidebar-accent))}.hover\:bg-transparent:hover{background-color:transparent}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-amber-500:hover{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-sidebar-accent-foreground:hover{color:hsl(var(--sidebar-accent-foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:\!opacity-100:hover{opacity:1!important}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:hsl(var(--sidebar-border))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-destructive:focus{color:hsl(var(--destructive))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:\!opacity-100:focus-visible{opacity:1!important}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-offset-\[-2px\]:focus-visible{outline-offset:-2px}.focus-visible\:outline-ring:focus-visible{outline-color:hsl(var(--ring))}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset: inset}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-sidebar-ring:focus-visible{--tw-ring-color: hsl(var(--sidebar-ring))}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width: 0px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:bg-sidebar-accent:active{background-color:hsl(var(--sidebar-accent))}.active\:text-sidebar-accent-foreground:active{color:hsl(var(--sidebar-accent-foreground))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group:focus-within .group-focus-within\:opacity-50{opacity:.5}.group\/menu-item:hover .group-hover\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-50{opacity:.5}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.peer\/menu-button:hover~.peer-hover\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.has-\[\[data-variant\=inset\]\]\:bg-sidebar:has([data-variant=inset]){background-color:hsl(var(--sidebar-background))}.group\/menu-item:has([data-sidebar=menu-action]) .group-has-\[\[data-sidebar\=menu-action\]\]\/menu-item\:pr-8{padding-right:2rem}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:hsl(var(--sidebar-accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:hsl(var(--sidebar-accent-foreground))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=open\]\:hover\:bg-sidebar-accent:hover[data-state=open]{background-color:hsl(var(--sidebar-accent))}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground:hover[data-state=open]{color:hsl(var(--sidebar-accent-foreground))}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width) * -1)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width) * -1)}.group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-1rem}.group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-2rem}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden{display:none}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!size-8{width:2rem!important;height:2rem!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[--sidebar-width-icon\]{width:var(--sidebar-width-icon)}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\]{width:calc(var(--sidebar-width-icon) + 1rem)}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\]{width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0px}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\[side\=right\]\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:justify-center{justify-content:center}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:var(--radius)}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border{border-width:1px}.group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border-sidebar-border{border-color:hsl(var(--sidebar-border))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-0{padding:0!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-2{padding:.5rem!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:hover\:bg-sidebar:hover{background-color:hsl(var(--sidebar-background))}.peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:.375rem}.peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}.peer\/menu-button[data-active=true]~.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}@media(prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}.dark\:-rotate-90:is(.dark *){--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:rotate-0:is(.dark *){--tw-rotate: 0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-0:is(.dark *){--tw-scale-x: 0;--tw-scale-y: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-100:is(.dark *){--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-emerald-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(2 44 34 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-red-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-sky-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(8 47 73 / var(--tw-bg-opacity, 1))}.dark\:bg-zinc-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1))}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-emerald-300:is(.dark *){--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-sky-300:is(.dark *){--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity, 1))}.dark\:text-zinc-400:is(.dark *){--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity, 1))}@media(min-width:640px){.sm\:mt-0{margin-top:0}.sm\:flex{display:flex}.sm\:max-w-\[440px\]{max-width:440px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}@media(min-width:768px){.md\:block{display:block}.md\:flex{display:flex}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:opacity-0{opacity:0}.after\:md\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:.5rem}.peer[data-state=collapsed][data-variant=inset]~.md\:peer-data-\[state\=collapsed\]\:peer-data-\[variant\=inset\]\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:.75rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1536px){.\32xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:h-3\.5>svg{height:.875rem}.\[\&\>svg\]\:w-3\.5>svg{width:.875rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:hsl(var(--sidebar-accent-foreground))}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:.75rem;height:.75rem}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=left] .\[\[data-side\=left\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=right] .\[\[data-side\=right\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/20{background-color:hsl(var(--background) / .2)}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:text-background{color:hsl(var(--background))}[data-slot=tooltip-content] .dark\:\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/10:is(.dark *){background-color:hsl(var(--background) / .1)}
Binary file
Binary file