@leanspec/ui 0.2.5-dev.20251119032109 → 0.2.5-dev.20251120015656

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 (150) hide show
  1. package/.next/standalone/node_modules/.pnpm/tiktoken@1.0.22/node_modules/tiktoken/tiktoken_bg.wasm +0 -0
  2. package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
  3. package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +1 -0
  4. package/.next/standalone/packages/ui/.next/build-manifest.json +2 -2
  5. package/.next/standalone/packages/ui/.next/prerender-manifest.json +3 -3
  6. package/.next/standalone/packages/ui/.next/routes-manifest.json +8 -0
  7. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js +1 -1
  8. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
  10. package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  12. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  13. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +2 -2
  16. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
  19. package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +16 -16
  20. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
  21. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  22. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  23. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  24. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +5 -5
  25. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js +1 -1
  26. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
  27. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js +1 -1
  28. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
  29. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js +1 -1
  30. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
  31. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js +1 -1
  32. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
  33. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js +1 -1
  34. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
  35. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route/app-paths-manifest.json +3 -0
  36. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route/build-manifest.json +11 -0
  37. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route/server-reference-manifest.json +4 -0
  38. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js +7 -0
  39. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.map +5 -0
  40. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -0
  41. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route_client-reference-manifest.js +2 -0
  42. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js +1 -1
  43. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
  44. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js +1 -1
  45. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
  46. package/.next/standalone/packages/ui/.next/server/app/page.js +2 -2
  47. package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
  48. package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js +2 -2
  50. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  51. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/packages/ui/.next/server/app/specs/page.js +2 -2
  53. package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
  54. package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
  55. package/.next/standalone/packages/ui/.next/server/app/stats/page.js +2 -2
  56. package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
  57. package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +1 -0
  59. package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_specs_[id]_status_route_actions_5d700407.js +3 -0
  60. package/.next/standalone/packages/ui/.next/server/chunks/{[root-of-the-server]__d1d92c7c._.js → [root-of-the-server]__175bef84._.js} +2 -2
  61. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3971eae5._.js +3 -0
  62. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__6bca1621._.js +3 -0
  63. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__87a3475a._.js +3 -0
  64. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9f0f4c0b._.js +3 -0
  65. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__c1c9f5f5._.js +3 -0
  66. package/.next/standalone/packages/ui/.next/server/chunks/{[root-of-the-server]__e09ce4bf._.js → [root-of-the-server]__c6689757._.js} +2 -2
  67. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__cd1fb0a2._.js +4 -0
  68. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e2071b2e._.js +3 -0
  69. package/.next/standalone/packages/ui/.next/server/chunks/e0876_tiktoken_3efea2dc._.js +3 -0
  70. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__1d0c2012._.js +1 -1
  71. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__c65aedd0._.js → [root-of-the-server]__299c81cc._.js} +2 -2
  72. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__b3633d6e._.js → [root-of-the-server]__41f5b5c0._.js} +2 -2
  73. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__a9d7fd42._.js → [root-of-the-server]__5ca2e973._.js} +2 -2
  74. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__7f55abaa._.js +1 -1
  75. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b2fe773d._.js +3 -0
  76. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__e79a982a._.js +7 -0
  77. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__6e89d129._.js → [root-of-the-server]__ff03fc1e._.js} +2 -2
  78. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
  79. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_6cd9a5e0._.js +3 -0
  80. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b483c9fe._.js +3 -0
  81. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b5040d31._.js +5 -0
  82. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_e1889307._.js +3 -0
  83. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +3 -0
  84. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_specs-nav-sidebar_tsx_8237ed13._.js +3 -0
  85. package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
  86. package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
  87. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
  88. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
  89. package/.next/standalone/packages/ui/.next/static/chunks/093ea4b175adb770.js +1 -0
  90. package/.next/standalone/packages/ui/.next/static/chunks/{f2151fb88f8fc70a.js → 3fc323b284db714f.js} +1 -1
  91. package/.next/standalone/packages/ui/.next/static/chunks/5f97d665a4d9dc62.js +3 -0
  92. package/.next/standalone/packages/ui/.next/static/chunks/9b7b7024c39c5f99.js +1 -0
  93. package/.next/standalone/packages/ui/.next/static/chunks/c61cbb6a0ba3b6ab.js +1 -0
  94. package/.next/standalone/packages/ui/.next/static/chunks/cff894805981b496.css +1 -0
  95. package/.next/standalone/packages/ui/.next/static/chunks/d79bf953f0dfb650.js +1 -0
  96. package/.next/standalone/packages/ui/.next/static/chunks/e50fb8d0b728cd35.js +5 -0
  97. package/.next/standalone/packages/ui/.next/static/chunks/e6e238dbf1d3e740.js +1 -0
  98. package/.next/standalone/packages/ui/package.json +1 -1
  99. package/.next/standalone/packages/ui/src/app/api/specs/[id]/status/route.ts +122 -0
  100. package/.next/standalone/packages/ui/src/app/globals.css +10 -0
  101. package/.next/standalone/packages/ui/src/app/specs/page.tsx +2 -2
  102. package/.next/standalone/packages/ui/src/app/specs/specs-client.tsx +489 -214
  103. package/.next/standalone/packages/ui/src/lib/db/service-queries.ts +23 -0
  104. package/.next/standalone/packages/ui/src/lib/specs/sources/filesystem-source.ts +46 -6
  105. package/.next/standalone/packages/ui/tsconfig.json +2 -1
  106. package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
  107. package/.next/standalone/packages/ui/vitest.config.ts +1 -0
  108. package/.next/static/chunks/093ea4b175adb770.js +1 -0
  109. package/.next/static/chunks/{f2151fb88f8fc70a.js → 3fc323b284db714f.js} +1 -1
  110. package/.next/static/chunks/5f97d665a4d9dc62.js +3 -0
  111. package/.next/static/chunks/9b7b7024c39c5f99.js +1 -0
  112. package/.next/static/chunks/c61cbb6a0ba3b6ab.js +1 -0
  113. package/.next/static/chunks/cff894805981b496.css +1 -0
  114. package/.next/static/chunks/d79bf953f0dfb650.js +1 -0
  115. package/.next/static/chunks/e50fb8d0b728cd35.js +5 -0
  116. package/.next/static/chunks/e6e238dbf1d3e740.js +1 -0
  117. package/package.json +1 -1
  118. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__15e8a946._.js +0 -3
  119. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__47b8cab4._.js +0 -3
  120. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9fda1bdb._.js +0 -3
  121. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a2c55ffb._.js +0 -3
  122. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__d4193584._.js +0 -3
  123. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__68015eee._.js +0 -3
  124. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__8ae28367._.js +0 -7
  125. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_a527620e._.js +0 -3
  126. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_d7e4bd50._.js +0 -5
  127. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_f8b2190a._.js +0 -3
  128. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_ui_input_tsx_190a7701._.js +0 -3
  129. package/.next/standalone/packages/ui/.next/static/chunks/16b2f4261d3a374a.css +0 -1
  130. package/.next/standalone/packages/ui/.next/static/chunks/17ac52d909def83e.js +0 -1
  131. package/.next/standalone/packages/ui/.next/static/chunks/3385e291c49e782d.js +0 -1
  132. package/.next/standalone/packages/ui/.next/static/chunks/5057c3e1e7e13ca3.js +0 -1
  133. package/.next/standalone/packages/ui/.next/static/chunks/88f695d32910a4ac.js +0 -1
  134. package/.next/standalone/packages/ui/.next/static/chunks/dde5d8bddd7fbfcf.js +0 -1
  135. package/.next/standalone/packages/ui/.next/static/chunks/e237e00fd3a84178.js +0 -3
  136. package/.next/standalone/packages/ui/.next/static/chunks/ee4245fe6ba3d6d3.js +0 -5
  137. package/.next/static/chunks/16b2f4261d3a374a.css +0 -1
  138. package/.next/static/chunks/17ac52d909def83e.js +0 -1
  139. package/.next/static/chunks/3385e291c49e782d.js +0 -1
  140. package/.next/static/chunks/5057c3e1e7e13ca3.js +0 -1
  141. package/.next/static/chunks/88f695d32910a4ac.js +0 -1
  142. package/.next/static/chunks/dde5d8bddd7fbfcf.js +0 -1
  143. package/.next/static/chunks/e237e00fd3a84178.js +0 -3
  144. package/.next/static/chunks/ee4245fe6ba3d6d3.js +0 -5
  145. /package/.next/standalone/packages/ui/.next/static/{uj2-H8ytNCFa611gjl5uE → aJb7D9JtV_zRcRPZ0yHNE}/_buildManifest.js +0 -0
  146. /package/.next/standalone/packages/ui/.next/static/{uj2-H8ytNCFa611gjl5uE → aJb7D9JtV_zRcRPZ0yHNE}/_clientMiddlewareManifest.json +0 -0
  147. /package/.next/standalone/packages/ui/.next/static/{uj2-H8ytNCFa611gjl5uE → aJb7D9JtV_zRcRPZ0yHNE}/_ssgManifest.js +0 -0
  148. /package/.next/static/{uj2-H8ytNCFa611gjl5uE → aJb7D9JtV_zRcRPZ0yHNE}/_buildManifest.js +0 -0
  149. /package/.next/static/{uj2-H8ytNCFa611gjl5uE → aJb7D9JtV_zRcRPZ0yHNE}/_clientMiddlewareManifest.json +0 -0
  150. /package/.next/static/{uj2-H8ytNCFa611gjl5uE → aJb7D9JtV_zRcRPZ0yHNE}/_ssgManifest.js +0 -0
@@ -0,0 +1,5 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,20315,e=>{"use strict";let t=(0,e.i(22436).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",()=>t],20315)},22436,e=>{"use strict";var t=e.i(31231);let r=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)},n=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim();var o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let a=(0,t.forwardRef)(({color:e="currentColor",size:r=24,strokeWidth:a=2,absoluteStrokeWidth:i,className:l="",children:s,iconNode:u,...c},d)=>(0,t.createElement)("svg",{ref:d,...o,width:r,height:r,stroke:e,strokeWidth:i?24*Number(a)/Number(r):a,className:n("lucide",l),...!s&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0})(c)&&{"aria-hidden":"true"},...c},[...u.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(s)?s:[s]])),i=(e,o)=>{let i=(0,t.forwardRef)(({className:i,...l},s)=>(0,t.createElement)(a,{ref:s,iconNode:o,className:n(`lucide-${r(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,i),...l}));return i.displayName=r(e),i};e.s(["default",()=>i],22436)},40843,e=>{"use strict";let t=(0,e.i(22436).default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock",()=>t],40843)},75364,e=>{"use strict";let t=(0,e.i(22436).default)("circle-play",[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["PlayCircle",()=>t],75364)},96812,e=>{"use strict";let t=(0,e.i(22436).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",()=>t],96812)},14433,30406,e=>{"use strict";var t=e.i(31231);function r(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function n(...e){return t=>{let n=!1,o=e.map(e=>{let o=r(e,t);return n||"function"!=typeof o||(n=!0),o});if(n)return()=>{for(let t=0;t<o.length;t++){let n=o[t];"function"==typeof n?n():r(e[t],null)}}}}function o(...e){return t.useCallback(n(...e),e)}e.s(["composeRefs",()=>n,"useComposedRefs",()=>o],30406);var a=e.i(90022),i=Symbol.for("react.lazy"),l=t[" use ".trim().toString()];function s(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===i&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}function u(e){var r;let o,i=(r=e,(o=t.forwardRef((e,r)=>{let{children:o,...a}=e;if(s(o)&&"function"==typeof l&&(o=l(o._payload)),t.isValidElement(o)){var i;let e,l,s=(i=o,(l=(e=Object.getOwnPropertyDescriptor(i.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.ref:(l=(e=Object.getOwnPropertyDescriptor(i,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?i.props.ref:i.props.ref||i.ref),u=function(e,t){let r={...t};for(let n in t){let o=e[n],a=t[n];/^on[A-Z]/.test(n)?o&&a?r[n]=(...e)=>{let t=a(...e);return o(...e),t}:o&&(r[n]=o):"style"===n?r[n]={...o,...a}:"className"===n&&(r[n]=[o,a].filter(Boolean).join(" "))}return{...e,...r}}(a,o.props);return o.type!==t.Fragment&&(u.ref=r?n(r,s):s),t.cloneElement(o,u)}return t.Children.count(o)>1?t.Children.only(null):null})).displayName=`${r}.SlotClone`,o),u=t.forwardRef((e,r)=>{let{children:n,...o}=e;s(n)&&"function"==typeof l&&(n=l(n._payload));let u=t.Children.toArray(n),c=u.find(f);if(c){let e=c.props.children,n=u.map(r=>r!==c?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,a.jsx)(i,{...o,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,n):null})}return(0,a.jsx)(i,{...o,ref:r,children:n})});return u.displayName=`${e}.Slot`,u}var c=u("Slot"),d=Symbol("radix.slottable");function f(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===d}e.s(["Slot",()=>c,"createSlot",()=>u],14433)},94237,e=>{"use strict";var t=e.i(7284);let r=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,n=t.clsx;e.s(["cva",0,(e,t)=>o=>{var a;if((null==t?void 0:t.variants)==null)return n(e,null==o?void 0:o.class,null==o?void 0:o.className);let{variants:i,defaultVariants:l}=t,s=Object.keys(i).map(e=>{let t=null==o?void 0:o[e],n=null==l?void 0:l[e];if(null===t)return null;let a=r(t)||r(n);return i[e][a]}),u=o&&Object.entries(o).reduce((e,t)=>{let[r,n]=t;return void 0===n||(e[r]=n),e},{});return n(e,s,null==t||null==(a=t.compoundVariants)?void 0:a.reduce((e,t)=>{let{class:r,className:n,...o}=t;return Object.entries(o).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...l,...u}[t]):({...l,...u})[t]===r})?[...e,r,n]:e},[]),null==o?void 0:o.class,null==o?void 0:o.className)}])},35893,e=>{"use strict";var t=e.i(90022),r=e.i(31231),n=e.i(14433),o=e.i(94237),a=e.i(32137);let i=(0,o.cva)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),l=r.forwardRef(({className:e,variant:r,size:o,asChild:l=!1,...s},u)=>{let c=l?n.Slot:"button";return(0,t.jsx)(c,{className:(0,a.cn)(i({variant:r,size:o,className:e})),ref:u,...s})});l.displayName="Button",e.s(["Button",()=>l])},56863,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},65683,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return s},searchParamsToUrlQuery:function(){return a},urlQueryToSearchParams:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function a(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function l(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,i(e));else t.set(r,i(n));return t}function s(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},678,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return l},formatWithValidation:function(){return u},urlObjectKeys:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=e.r(44066)._(e.r(65683)),i=/https?|ftp|gopher|file/;function l(e){let{auth:t,hostname:r}=e,n=e.protocol||"",o=e.pathname||"",l=e.hash||"",s=e.query||"",u=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?u=t+e.host:r&&(u=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(u+=":"+e.port)),s&&"object"==typeof s&&(s=String(a.urlQueryToSearchParams(s)));let c=e.search||s&&`?${s}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||i.test(n))&&!1!==u?(u="//"+(u||""),o&&"/"!==o[0]&&(o="/"+o)):u||(u=""),l&&"#"!==l[0]&&(l="#"+l),c&&"?"!==c[0]&&(c="?"+c),o=o.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${u}${o}${c}${l}`}let s=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function u(e){return l(e)}},66500,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=e.r(31231);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=a(e,n)),t&&(o.current=a(t,n))},[e,t])}function a(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},89370,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return h},MiddlewareNotFoundError:function(){return w},MissingStaticPage:function(){return x},NormalizeError:function(){return v},PageNotFoundError:function(){return b},SP:function(){return g},ST:function(){return y},WEB_VITALS:function(){return a},execOnce:function(){return i},getDisplayName:function(){return d},getLocationOrigin:function(){return u},getURL:function(){return c},isAbsoluteUrl:function(){return s},isResSent:function(){return f},loadGetInitialProps:function(){return m},normalizeRepeatedSlashes:function(){return p},stringifyError:function(){return C}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let l=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,s=e=>l.test(e);function u(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=u();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function p(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function m(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await m(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let g="undefined"!=typeof performance,y=g&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class v extends Error{}class b extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class x extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class w extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function C(e){return JSON.stringify({message:e.message,stack:e.stack})}},8672,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return a}});let n=e.r(89370),o=e.r(72125);function a(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},37465,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},87985,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return h},useLinkStatus:function(){return b}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let a=e.r(44066),i=e.r(90022),l=a._(e.r(31231)),s=e.r(678),u=e.r(15698),c=e.r(66500),d=e.r(89370),f=e.r(12992);e.r(56863);let p=e.r(17945),m=e.r(8672),g=e.r(54772);function y(e){return"string"==typeof e?e:(0,s.formatUrl)(e)}function h(t){var r;let n,o,a,[s,h]=(0,l.useOptimistic)(p.IDLE_LINK_STATUS),b=(0,l.useRef)(null),{href:x,as:w,children:C,prefetch:N=null,passHref:j,replace:k,shallow:E,scroll:R,onClick:P,onMouseEnter:T,onTouchStart:O,legacyBehavior:_=!1,onNavigate:M,ref:D,unstable_dynamicOnHover:S,...I}=t;n=C,_&&("string"==typeof n||"number"==typeof n)&&(n=(0,i.jsx)("a",{children:n}));let A=l.default.useContext(u.AppRouterContext),L=!1!==N,F=!1!==N?null===(r=N)||"auto"===r?g.FetchStrategy.PPR:g.FetchStrategy.Full:g.FetchStrategy.PPR,{href:U,as:$}=l.default.useMemo(()=>{let e=y(x);return{href:e,as:w?y(w):e}},[x,w]);if(_){if(n?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});o=l.default.Children.only(n)}let B=_?o&&"object"==typeof o&&o.ref:D,z=l.default.useCallback(e=>(null!==A&&(b.current=(0,p.mountLinkInstance)(e,U,A,F,L,h)),()=>{b.current&&((0,p.unmountLinkForCurrentNavigation)(b.current),b.current=null),(0,p.unmountPrefetchableInstance)(e)}),[L,U,A,F,h]),H={ref:(0,c.useMergedRef)(z,B),onClick(t){_||"function"!=typeof P||P(t),_&&o.props&&"function"==typeof o.props.onClick&&o.props.onClick(t),!A||t.defaultPrevented||function(t,r,n,o,a,i,s){if("undefined"!=typeof window){let u,{nodeName:c}=t.currentTarget;if("A"===c.toUpperCase()&&((u=t.currentTarget.getAttribute("target"))&&"_self"!==u||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,m.isLocalURL)(r)){a&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),s){let e=!1;if(s({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:d}=e.r(86026);l.default.startTransition(()=>{d(n||r,a?"replace":"push",i??!0,o.current)})}}(t,U,$,b,k,R,M)},onMouseEnter(e){_||"function"!=typeof T||T(e),_&&o.props&&"function"==typeof o.props.onMouseEnter&&o.props.onMouseEnter(e),A&&L&&(0,p.onNavigationIntent)(e.currentTarget,!0===S)},onTouchStart:function(e){_||"function"!=typeof O||O(e),_&&o.props&&"function"==typeof o.props.onTouchStart&&o.props.onTouchStart(e),A&&L&&(0,p.onNavigationIntent)(e.currentTarget,!0===S)}};return(0,d.isAbsoluteUrl)($)?H.href=$:_&&!j&&("a"!==o.type||"href"in o.props)||(H.href=(0,f.addBasePath)($)),a=_?l.default.cloneElement(o,H):(0,i.jsx)("a",{...I,...H,children:n}),(0,i.jsx)(v.Provider,{value:s,children:a})}e.r(37465);let v=(0,l.createContext)(p.IDLE_LINK_STATUS),b=()=>(0,l.useContext)(v);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},90225,e=>{"use strict";let t=(0,e.i(22436).default)("archive",[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]]);e.s(["Archive",()=>t],90225)},23490,e=>{"use strict";var t=e.i(90022),r=e.i(94237),n=e.i(32137);let o=(0,r.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function a({className:e,variant:r,...a}){return(0,t.jsx)("div",{className:(0,n.cn)(o({variant:r}),e),...a})}e.s(["Badge",()=>a])},68497,6751,97705,e=>{"use strict";var t=e.i(90022),r=e.i(40843),n=e.i(75364),o=e.i(96812),a=e.i(90225),i=e.i(23490),l=e.i(32137);let s={planned:{icon:r.Clock,label:"Planned",className:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},"in-progress":{icon:n.PlayCircle,label:"In Progress",className:"bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-400"},complete:{icon:o.CheckCircle2,label:"Complete",className:"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400"},archived:{icon:a.Archive,label:"Archived",className:"bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-400"}};function u({status:e,className:r,iconOnly:n=!1}){let o=s[e]||s.planned,a=o.icon;return(0,t.jsxs)(i.Badge,{className:(0,l.cn)("flex items-center w-fit",!n&&"gap-1.5",o.className,r),children:[(0,t.jsx)(a,{className:"h-3.5 w-3.5"}),!n&&o.label]})}function c(e){return(s[e]||s.planned).label}e.s(["StatusBadge",()=>u,"getStatusLabel",()=>c],68497);var d=e.i(22436);let f=(0,d.default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]),p=(0,d.default)("arrow-up",[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]]);e.s(["ArrowUp",()=>p],6751);let m={critical:{icon:f,label:"Critical",className:"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400"},high:{icon:p,label:"High",className:"bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-400"},medium:{icon:(0,d.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]),label:"Medium",className:"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},low:{icon:(0,d.default)("arrow-down",[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]]),label:"Low",className:"bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-400"}};function g({priority:e,className:r,iconOnly:n=!1}){let o=m[e]||m.medium,a=o.icon;return(0,t.jsxs)(i.Badge,{className:(0,l.cn)("flex items-center w-fit",!n&&"gap-1.5",o.className,r),children:[(0,t.jsx)(a,{className:"h-3.5 w-3.5"}),!n&&o.label]})}function y(e){return(m[e]||m.medium).label}e.s(["PriorityBadge",()=>g,"getPriorityLabel",()=>y],97705)},30827,(e,t,r)=>{t.exports=e.r(1698)},25761,44021,e=>{"use strict";var t=e.i(22436);let r=(0,t.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);e.s(["ChevronRight",()=>r],25761);let n=(0,t.default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);e.s(["X",()=>n],44021)},8402,11052,e=>{"use strict";var t=e.i(90022),r=e.i(31231),n=e.i(91967),o=e.i(30406),a=e.i(79014),i=e.i(55235),l=e.i(15599),s=e.i(6839),u=e.i(14260),c=e.i(43988),d=e=>{var t;let n,a,{present:i,children:l}=e,s=function(e){var t,n;let[o,a]=r.useState(),i=r.useRef(null),l=r.useRef(e),s=r.useRef("none"),[u,d]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,t)=>n[e][t]??e,t));return r.useEffect(()=>{let e=f(i.current);s.current="mounted"===u?e:"none"},[u]),(0,c.useLayoutEffect)(()=>{let t=i.current,r=l.current;if(r!==e){let n=s.current,o=f(t);e?d("MOUNT"):"none"===o||t?.display==="none"?d("UNMOUNT"):r&&n!==o?d("ANIMATION_OUT"):d("UNMOUNT"),l.current=e}},[e,d]),(0,c.useLayoutEffect)(()=>{if(o){let e,t=o.ownerDocument.defaultView??window,r=r=>{let n=f(i.current).includes(CSS.escape(r.animationName));if(r.target===o&&n&&(d("ANIMATION_END"),!l.current)){let r=o.style.animationFillMode;o.style.animationFillMode="forwards",e=t.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=r)})}},n=e=>{e.target===o&&(s.current=f(i.current))};return o.addEventListener("animationstart",n),o.addEventListener("animationcancel",r),o.addEventListener("animationend",r),()=>{t.clearTimeout(e),o.removeEventListener("animationstart",n),o.removeEventListener("animationcancel",r),o.removeEventListener("animationend",r)}}d("ANIMATION_END")},[o,d]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:r.useCallback(e=>{i.current=e?getComputedStyle(e):null,a(e)},[])}}(i),u="function"==typeof l?l({present:s.isPresent}):r.Children.only(l),d=(0,o.useComposedRefs)(s.ref,(t=u,(a=(n=Object.getOwnPropertyDescriptor(t.props,"ref")?.get)&&"isReactWarning"in n&&n.isReactWarning)?t.ref:(a=(n=Object.getOwnPropertyDescriptor(t,"ref")?.get)&&"isReactWarning"in n&&n.isReactWarning)?t.props.ref:t.props.ref||t.ref));return"function"==typeof l||s.isPresent?r.cloneElement(u,{ref:d}):null};function f(e){return e?.animationName||"none"}d.displayName="Presence",e.s(["Presence",()=>d],11052);var p=e.i(22925),m=e.i(65489),g=e.i(93136),y=e.i(26985),[h,v]=(0,a.createContextScope)("Tooltip",[s.createPopperScope]),b=(0,s.createPopperScope)(),x="TooltipProvider",w="tooltip.open",[C,N]=h(x),j=e=>{let{__scopeTooltip:n,delayDuration:o=700,skipDelayDuration:a=300,disableHoverableContent:i=!1,children:l}=e,s=r.useRef(!0),u=r.useRef(!1),c=r.useRef(0);return r.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,t.jsx)(C,{scope:n,isOpenDelayedRef:s,delayDuration:o,onOpen:r.useCallback(()=>{window.clearTimeout(c.current),s.current=!1},[]),onClose:r.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.current=!0,a)},[a]),isPointerInTransitRef:u,onPointerInTransitChange:r.useCallback(e=>{u.current=e},[]),disableHoverableContent:i,children:l})};j.displayName=x;var k="Tooltip",[E,R]=h(k),P=e=>{let{__scopeTooltip:n,children:o,open:a,defaultOpen:i,onOpenChange:u,disableHoverableContent:c,delayDuration:d}=e,f=N(k,e.__scopeTooltip),p=b(n),[m,y]=r.useState(null),h=(0,l.useId)(),v=r.useRef(0),x=c??f.disableHoverableContent,C=d??f.delayDuration,j=r.useRef(!1),[R,P]=(0,g.useControllableState)({prop:a,defaultProp:i??!1,onChange:e=>{e?(f.onOpen(),document.dispatchEvent(new CustomEvent(w))):f.onClose(),u?.(e)},caller:k}),T=r.useMemo(()=>R?j.current?"delayed-open":"instant-open":"closed",[R]),O=r.useCallback(()=>{window.clearTimeout(v.current),v.current=0,j.current=!1,P(!0)},[P]),_=r.useCallback(()=>{window.clearTimeout(v.current),v.current=0,P(!1)},[P]),M=r.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{j.current=!0,P(!0),v.current=0},C)},[C,P]);return r.useEffect(()=>()=>{v.current&&(window.clearTimeout(v.current),v.current=0)},[]),(0,t.jsx)(s.Root,{...p,children:(0,t.jsx)(E,{scope:n,contentId:h,open:R,stateAttribute:T,trigger:m,onTriggerChange:y,onTriggerEnter:r.useCallback(()=>{f.isOpenDelayedRef.current?M():O()},[f.isOpenDelayedRef,M,O]),onTriggerLeave:r.useCallback(()=>{x?_():(window.clearTimeout(v.current),v.current=0)},[_,x]),onOpen:O,onClose:_,disableHoverableContent:x,children:o})})};P.displayName=k;var T="TooltipTrigger",O=r.forwardRef((e,a)=>{let{__scopeTooltip:i,...l}=e,u=R(T,i),c=N(T,i),d=b(i),f=r.useRef(null),m=(0,o.useComposedRefs)(a,f,u.onTriggerChange),g=r.useRef(!1),y=r.useRef(!1),h=r.useCallback(()=>g.current=!1,[]);return r.useEffect(()=>()=>document.removeEventListener("pointerup",h),[h]),(0,t.jsx)(s.Anchor,{asChild:!0,...d,children:(0,t.jsx)(p.Primitive.button,{"aria-describedby":u.open?u.contentId:void 0,"data-state":u.stateAttribute,...l,ref:m,onPointerMove:(0,n.composeEventHandlers)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(y.current||c.isPointerInTransitRef.current||(u.onTriggerEnter(),y.current=!0))}),onPointerLeave:(0,n.composeEventHandlers)(e.onPointerLeave,()=>{u.onTriggerLeave(),y.current=!1}),onPointerDown:(0,n.composeEventHandlers)(e.onPointerDown,()=>{u.open&&u.onClose(),g.current=!0,document.addEventListener("pointerup",h,{once:!0})}),onFocus:(0,n.composeEventHandlers)(e.onFocus,()=>{g.current||u.onOpen()}),onBlur:(0,n.composeEventHandlers)(e.onBlur,u.onClose),onClick:(0,n.composeEventHandlers)(e.onClick,u.onClose)})})});O.displayName=T;var _="TooltipPortal",[M,D]=h(_,{forceMount:void 0}),S=e=>{let{__scopeTooltip:r,forceMount:n,children:o,container:a}=e,i=R(_,r);return(0,t.jsx)(M,{scope:r,forceMount:n,children:(0,t.jsx)(d,{present:n||i.open,children:(0,t.jsx)(u.Portal,{asChild:!0,container:a,children:o})})})};S.displayName=_;var I="TooltipContent",A=r.forwardRef((e,r)=>{let n=D(I,e.__scopeTooltip),{forceMount:o=n.forceMount,side:a="top",...i}=e,l=R(I,e.__scopeTooltip);return(0,t.jsx)(d,{present:o||l.open,children:l.disableHoverableContent?(0,t.jsx)(B,{side:a,...i,ref:r}):(0,t.jsx)(L,{side:a,...i,ref:r})})}),L=r.forwardRef((e,n)=>{let a=R(I,e.__scopeTooltip),i=N(I,e.__scopeTooltip),l=r.useRef(null),s=(0,o.useComposedRefs)(n,l),[u,c]=r.useState(null),{trigger:d,onClose:f}=a,p=l.current,{onPointerInTransitChange:m}=i,g=r.useCallback(()=>{c(null),m(!1)},[m]),y=r.useCallback((e,t)=>{let r,n=e.currentTarget,o={x:e.clientX,y:e.clientY},a=function(e,t){let r=Math.abs(t.top-e.y),n=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(r,n,o,a)){case a:return"left";case o:return"right";case r:return"top";case n:return"bottom";default:throw Error("unreachable")}}(o,n.getBoundingClientRect());c(((r=[...function(e,t,r=5){let n=[];switch(t){case"top":n.push({x:e.x-r,y:e.y+r},{x:e.x+r,y:e.y+r});break;case"bottom":n.push({x:e.x-r,y:e.y-r},{x:e.x+r,y:e.y-r});break;case"left":n.push({x:e.x+r,y:e.y-r},{x:e.x+r,y:e.y+r});break;case"right":n.push({x:e.x-r,y:e.y-r},{x:e.x-r,y:e.y+r})}return n}(o,a),...function(e){let{top:t,right:r,bottom:n,left:o}=e;return[{x:o,y:t},{x:r,y:t},{x:r,y:n},{x:o,y:n}]}(t.getBoundingClientRect())].slice()).sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:1*!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let r=0;r<e.length;r++){let n=e[r];for(;t.length>=2;){let e=t[t.length-1],r=t[t.length-2];if((e.x-r.x)*(n.y-r.y)>=(e.y-r.y)*(n.x-r.x))t.pop();else break}t.push(n)}t.pop();let r=[];for(let t=e.length-1;t>=0;t--){let n=e[t];for(;r.length>=2;){let e=r[r.length-1],t=r[r.length-2];if((e.x-t.x)*(n.y-t.y)>=(e.y-t.y)*(n.x-t.x))r.pop();else break}r.push(n)}return(r.pop(),1===t.length&&1===r.length&&t[0].x===r[0].x&&t[0].y===r[0].y)?t:t.concat(r)}(r))),m(!0)},[m]);return r.useEffect(()=>()=>g(),[g]),r.useEffect(()=>{if(d&&p){let e=e=>y(e,p),t=e=>y(e,d);return d.addEventListener("pointerleave",e),p.addEventListener("pointerleave",t),()=>{d.removeEventListener("pointerleave",e),p.removeEventListener("pointerleave",t)}}},[d,p,y,g]),r.useEffect(()=>{if(u){let e=e=>{let t=e.target,r={x:e.clientX,y:e.clientY},n=d?.contains(t)||p?.contains(t),o=!function(e,t){let{x:r,y:n}=e,o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let i=t[e],l=t[a],s=i.x,u=i.y,c=l.x,d=l.y;u>n!=d>n&&r<(c-s)*(n-u)/(d-u)+s&&(o=!o)}return o}(r,u);n?g():o&&(g(),f())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[d,p,u,f,g]),(0,t.jsx)(B,{...e,ref:s})}),[F,U]=h(k,{isInside:!1}),$=(0,m.createSlottable)("TooltipContent"),B=r.forwardRef((e,n)=>{let{__scopeTooltip:o,children:a,"aria-label":l,onEscapeKeyDown:u,onPointerDownOutside:c,...d}=e,f=R(I,o),p=b(o),{onClose:m}=f;return r.useEffect(()=>(document.addEventListener(w,m),()=>document.removeEventListener(w,m)),[m]),r.useEffect(()=>{if(f.trigger){let e=e=>{let t=e.target;t?.contains(f.trigger)&&m()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[f.trigger,m]),(0,t.jsx)(i.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:m,children:(0,t.jsxs)(s.Content,{"data-state":f.stateAttribute,...p,...d,ref:n,style:{...d.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,t.jsx)($,{children:a}),(0,t.jsx)(F,{scope:o,isInside:!0,children:(0,t.jsx)(y.Root,{id:f.contentId,role:"tooltip",children:l||a})})]})})});A.displayName=I;var z="TooltipArrow";r.forwardRef((e,r)=>{let{__scopeTooltip:n,...o}=e,a=b(n);return U(z,n).isInside?null:(0,t.jsx)(s.Arrow,{...a,...o,ref:r})}).displayName=z;var H=e.i(32137);let W=r.forwardRef(({className:e,sideOffset:r=4,...n},o)=>(0,t.jsx)(S,{children:(0,t.jsx)(A,{ref:o,sideOffset:r,className:(0,H.cn)("z-[100] overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-xs text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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",e),...n})}));W.displayName=A.displayName,e.s(["Tooltip",()=>P,"TooltipContent",()=>W,"TooltipProvider",()=>j,"TooltipTrigger",()=>O],8402)},58362,e=>{"use strict";let t=(0,e.i(22436).default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);e.s(["ChevronLeft",()=>t],58362)},39779,39065,e=>{"use strict";var t=e.i(90022),r=e.i(31231),n=e.i(91967),o=e.i(30406),a=e.i(79014),i=e.i(15599),l=e.i(93136),s=e.i(55235),u=e.i(31007),c=e.i(14260),d=e.i(11052),f=e.i(22925),p=e.i(54440),m=e.i(97496),g=e.i(73772),y=e.i(65489),h="Dialog",[v,b]=(0,a.createContextScope)(h),[x,w]=v(h),C=e=>{let{__scopeDialog:n,children:o,open:a,defaultOpen:s,onOpenChange:u,modal:c=!0}=e,d=r.useRef(null),f=r.useRef(null),[p,m]=(0,l.useControllableState)({prop:a,defaultProp:s??!1,onChange:u,caller:h});return(0,t.jsx)(x,{scope:n,triggerRef:d,contentRef:f,contentId:(0,i.useId)(),titleId:(0,i.useId)(),descriptionId:(0,i.useId)(),open:p,onOpenChange:m,onOpenToggle:r.useCallback(()=>m(e=>!e),[m]),modal:c,children:o})};C.displayName=h;var N="DialogTrigger",j=r.forwardRef((e,r)=>{let{__scopeDialog:a,...i}=e,l=w(N,a),s=(0,o.useComposedRefs)(r,l.triggerRef);return(0,t.jsx)(f.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":l.open,"aria-controls":l.contentId,"data-state":W(l.open),...i,ref:s,onClick:(0,n.composeEventHandlers)(e.onClick,l.onOpenToggle)})});j.displayName=N;var k="DialogPortal",[E,R]=v(k,{forceMount:void 0}),P=e=>{let{__scopeDialog:n,forceMount:o,children:a,container:i}=e,l=w(k,n);return(0,t.jsx)(E,{scope:n,forceMount:o,children:r.Children.map(a,e=>(0,t.jsx)(d.Presence,{present:o||l.open,children:(0,t.jsx)(c.Portal,{asChild:!0,container:i,children:e})}))})};P.displayName=k;var T="DialogOverlay",O=r.forwardRef((e,r)=>{let n=R(T,e.__scopeDialog),{forceMount:o=n.forceMount,...a}=e,i=w(T,e.__scopeDialog);return i.modal?(0,t.jsx)(d.Presence,{present:o||i.open,children:(0,t.jsx)(M,{...a,ref:r})}):null});O.displayName=T;var _=(0,y.createSlot)("DialogOverlay.RemoveScroll"),M=r.forwardRef((e,r)=>{let{__scopeDialog:n,...o}=e,a=w(T,n);return(0,t.jsx)(m.RemoveScroll,{as:_,allowPinchZoom:!0,shards:[a.contentRef],children:(0,t.jsx)(f.Primitive.div,{"data-state":W(a.open),...o,ref:r,style:{pointerEvents:"auto",...o.style}})})}),D="DialogContent",S=r.forwardRef((e,r)=>{let n=R(D,e.__scopeDialog),{forceMount:o=n.forceMount,...a}=e,i=w(D,e.__scopeDialog);return(0,t.jsx)(d.Presence,{present:o||i.open,children:i.modal?(0,t.jsx)(I,{...a,ref:r}):(0,t.jsx)(A,{...a,ref:r})})});S.displayName=D;var I=r.forwardRef((e,a)=>{let i=w(D,e.__scopeDialog),l=r.useRef(null),s=(0,o.useComposedRefs)(a,i.contentRef,l);return r.useEffect(()=>{let e=l.current;if(e)return(0,g.hideOthers)(e)},[]),(0,t.jsx)(L,{...e,ref:s,trapFocus:i.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,n.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),i.triggerRef.current?.focus()}),onPointerDownOutside:(0,n.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey;(2===t.button||r)&&e.preventDefault()}),onFocusOutside:(0,n.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault())})}),A=r.forwardRef((e,n)=>{let o=w(D,e.__scopeDialog),a=r.useRef(!1),i=r.useRef(!1);return(0,t.jsx)(L,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(a.current||o.triggerRef.current?.focus(),t.preventDefault()),a.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(a.current=!0,"pointerdown"===t.detail.originalEvent.type&&(i.current=!0));let r=t.target;o.triggerRef.current?.contains(r)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),L=r.forwardRef((e,n)=>{let{__scopeDialog:a,trapFocus:i,onOpenAutoFocus:l,onCloseAutoFocus:c,...d}=e,f=w(D,a),m=r.useRef(null),g=(0,o.useComposedRefs)(n,m);return(0,p.useFocusGuards)(),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.FocusScope,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:l,onUnmountAutoFocus:c,children:(0,t.jsx)(s.DismissableLayer,{role:"dialog",id:f.contentId,"aria-describedby":f.descriptionId,"aria-labelledby":f.titleId,"data-state":W(f.open),...d,ref:g,onDismiss:()=>f.onOpenChange(!1)})}),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(X,{titleId:f.titleId}),(0,t.jsx)(Z,{contentRef:m,descriptionId:f.descriptionId})]})]})}),F="DialogTitle",U=r.forwardRef((e,r)=>{let{__scopeDialog:n,...o}=e,a=w(F,n);return(0,t.jsx)(f.Primitive.h2,{id:a.titleId,...o,ref:r})});U.displayName=F;var $="DialogDescription",B=r.forwardRef((e,r)=>{let{__scopeDialog:n,...o}=e,a=w($,n);return(0,t.jsx)(f.Primitive.p,{id:a.descriptionId,...o,ref:r})});B.displayName=$;var z="DialogClose",H=r.forwardRef((e,r)=>{let{__scopeDialog:o,...a}=e,i=w(z,o);return(0,t.jsx)(f.Primitive.button,{type:"button",...a,ref:r,onClick:(0,n.composeEventHandlers)(e.onClick,()=>i.onOpenChange(!1))})});function W(e){return e?"open":"closed"}H.displayName=z;var V="DialogTitleWarning",[K,q]=(0,a.createContext)(V,{contentName:D,titleName:F,docsSlug:"dialog"}),X=({titleId:e})=>{let t=q(V),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
2
+
3
+ If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
4
+
5
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return r.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Z=({contentRef:e,descriptionId:t})=>{let n=q("DialogDescriptionWarning"),o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${n.contentName}}.`;return r.useEffect(()=>{let r=e.current?.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null};e.s(["Close",()=>H,"Content",()=>S,"Description",()=>B,"Overlay",()=>O,"Portal",()=>P,"Root",()=>C,"Title",()=>U,"Trigger",()=>j],39065);var Q=e.i(44021),G=e.i(32137);let J=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)(O,{ref:n,className:(0,G.cn)("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",e),...r}));J.displayName=O.displayName;let Y=r.forwardRef(({className:e,children:r,...n},o)=>(0,t.jsxs)(P,{children:[(0,t.jsx)(J,{}),(0,t.jsxs)(S,{ref:o,className:(0,G.cn)("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",e),...n,children:[r,(0,t.jsxs)(H,{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:[(0,t.jsx)(Q.X,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));Y.displayName=S.displayName;let ee=({className:e,...r})=>(0,t.jsx)("div",{className:(0,G.cn)("flex flex-col space-y-1.5 text-center sm:text-left",e),...r});ee.displayName="DialogHeader";let et=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)(U,{ref:n,className:(0,G.cn)("text-lg font-semibold leading-none tracking-tight",e),...r}));et.displayName=U.displayName;let er=r.forwardRef(({className:e,...r},n)=>(0,t.jsx)(B,{ref:n,className:(0,G.cn)("text-sm text-muted-foreground",e),...r}));er.displayName=B.displayName,e.s(["Dialog",()=>C,"DialogContent",()=>Y,"DialogDescription",()=>er,"DialogHeader",()=>ee,"DialogTitle",()=>et],39779)},97332,e=>{"use strict";let t=(0,e.i(22436).default)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]]);e.s(["Home",()=>t],97332)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,81795,t=>{"use strict";var e=t.i(31231),a=(t,e,a,o,r,n,s,i)=>{let l=document.documentElement,d=["light","dark"];function c(e){var a;(Array.isArray(t)?t:[t]).forEach(t=>{let a="class"===t,o=a&&n?r.map(t=>n[t]||t):r;a?(l.classList.remove(...o),l.classList.add(n&&n[e]?n[e]:e)):l.setAttribute(t,e)}),a=e,i&&d.includes(a)&&(l.style.colorScheme=a)}if(o)c(o);else try{let t=localStorage.getItem(e)||a,o=s&&"system"===t?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":t;c(o)}catch(t){}},o=["light","dark"],r="(prefers-color-scheme: dark)",n="undefined"==typeof window,s=e.createContext(void 0),i={setTheme:t=>{},themes:[]},l=()=>{var t;return null!=(t=e.useContext(s))?t:i},d=t=>e.useContext(s)?e.createElement(e.Fragment,null,t.children):e.createElement(u,{...t}),c=["light","dark"],u=({forcedTheme:t,disableTransitionOnChange:a=!1,enableSystem:n=!0,enableColorScheme:i=!0,storageKey:l="theme",themes:d=c,defaultTheme:u=n?"system":"light",attribute:g="data-theme",value:b,children:y,nonce:v,scriptProps:w})=>{let[x,E]=e.useState(()=>m(l,u)),[k,T]=e.useState(()=>"system"===x?h():x),S=b?Object.values(b):d,C=e.useCallback(t=>{let e=t;if(!e)return;"system"===t&&n&&(e=h());let r=b?b[e]:e,s=a?p(v):null,l=document.documentElement,d=t=>{"class"===t?(l.classList.remove(...S),r&&l.classList.add(r)):t.startsWith("data-")&&(r?l.setAttribute(t,r):l.removeAttribute(t))};if(Array.isArray(g)?g.forEach(d):d(g),i){let t=o.includes(u)?u:null,a=o.includes(e)?e:t;l.style.colorScheme=a}null==s||s()},[v]),N=e.useCallback(t=>{let e="function"==typeof t?t(x):t;E(e);try{localStorage.setItem(l,e)}catch(t){}},[x]),M=e.useCallback(e=>{T(h(e)),"system"===x&&n&&!t&&C("system")},[x,t]);e.useEffect(()=>{let t=window.matchMedia(r);return t.addListener(M),M(t),()=>t.removeListener(M)},[M]),e.useEffect(()=>{let t=t=>{t.key===l&&(t.newValue?E(t.newValue):N(u))};return window.addEventListener("storage",t),()=>window.removeEventListener("storage",t)},[N]),e.useEffect(()=>{C(null!=t?t:x)},[t,x]);let B=e.useMemo(()=>({theme:x,setTheme:N,forcedTheme:t,resolvedTheme:"system"===x?k:x,themes:n?[...d,"system"]:d,systemTheme:n?k:void 0}),[x,N,t,k,n,d]);return e.createElement(s.Provider,{value:B},e.createElement(f,{forcedTheme:t,storageKey:l,attribute:g,enableSystem:n,enableColorScheme:i,defaultTheme:u,value:b,themes:d,nonce:v,scriptProps:w}),y)},f=e.memo(({forcedTheme:t,storageKey:o,attribute:r,enableSystem:n,enableColorScheme:s,defaultTheme:i,value:l,themes:d,nonce:c,scriptProps:u})=>{let f=JSON.stringify([r,o,i,t,d,l,n,s]).slice(1,-1);return e.createElement("script",{...u,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?c:"",dangerouslySetInnerHTML:{__html:`(${a.toString()})(${f})`}})}),m=(t,e)=>{let a;if(!n){try{a=localStorage.getItem(t)||void 0}catch(t){}return a||e}},p=t=>{let e=document.createElement("style");return t&&e.setAttribute("nonce",t),e.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(e),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(e)},1)}},h=t=>(t||(t=window.matchMedia(r)),t.matches?"dark":"light");t.s(["ThemeProvider",()=>d,"useTheme",()=>l])},93455,95403,t=>{"use strict";var e=t.i(90022),a=t.i(31231),o=t.i(95635);let r=Array(12).fill(0),n=({visible:t,className:e})=>a.default.createElement("div",{className:["sonner-loading-wrapper",e].filter(Boolean).join(" "),"data-visible":t},a.default.createElement("div",{className:"sonner-spinner"},r.map((t,e)=>a.default.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${e}`})))),s=a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},a.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),i=a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},a.default.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),l=a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},a.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),d=a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},a.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),c=a.default.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},a.default.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),a.default.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),u=1,f=new class{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let e=this.subscribers.indexOf(t);this.subscribers.splice(e,1)}),this.publish=t=>{this.subscribers.forEach(e=>e(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var e;let{message:a,...o}=t,r="number"==typeof(null==t?void 0:t.id)||(null==(e=t.id)?void 0:e.length)>0?t.id:u++,n=this.toasts.find(t=>t.id===r),s=void 0===t.dismissible||t.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),n?this.toasts=this.toasts.map(e=>e.id===r?(this.publish({...e,...t,id:r,title:a}),{...e,...t,id:r,dismissible:s,title:a}):e):this.addToast({title:a,...o,dismissible:s,id:r}),r},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(e=>e({id:t,dismiss:!0})))):this.toasts.forEach(t=>{this.subscribers.forEach(e=>e({id:t.id,dismiss:!0}))}),t),this.message=(t,e)=>this.create({...e,message:t}),this.error=(t,e)=>this.create({...e,message:t,type:"error"}),this.success=(t,e)=>this.create({...e,type:"success",message:t}),this.info=(t,e)=>this.create({...e,type:"info",message:t}),this.warning=(t,e)=>this.create({...e,type:"warning",message:t}),this.loading=(t,e)=>this.create({...e,type:"loading",message:t}),this.promise=(t,e)=>{let o,r;if(!e)return;void 0!==e.loading&&(r=this.create({...e,promise:t,type:"loading",message:e.loading,description:"function"!=typeof e.description?e.description:void 0}));let n=Promise.resolve(t instanceof Function?t():t),s=void 0!==r,i=n.then(async t=>{if(o=["resolve",t],a.default.isValidElement(t))s=!1,this.create({id:r,type:"default",message:t});else if(m(t)&&!t.ok){s=!1;let o="function"==typeof e.error?await e.error(`HTTP error! status: ${t.status}`):e.error,n="function"==typeof e.description?await e.description(`HTTP error! status: ${t.status}`):e.description,i="object"!=typeof o||a.default.isValidElement(o)?{message:o}:o;this.create({id:r,type:"error",description:n,...i})}else if(t instanceof Error){s=!1;let o="function"==typeof e.error?await e.error(t):e.error,n="function"==typeof e.description?await e.description(t):e.description,i="object"!=typeof o||a.default.isValidElement(o)?{message:o}:o;this.create({id:r,type:"error",description:n,...i})}else if(void 0!==e.success){s=!1;let o="function"==typeof e.success?await e.success(t):e.success,n="function"==typeof e.description?await e.description(t):e.description,i="object"!=typeof o||a.default.isValidElement(o)?{message:o}:o;this.create({id:r,type:"success",description:n,...i})}}).catch(async t=>{if(o=["reject",t],void 0!==e.error){s=!1;let o="function"==typeof e.error?await e.error(t):e.error,n="function"==typeof e.description?await e.description(t):e.description,i="object"!=typeof o||a.default.isValidElement(o)?{message:o}:o;this.create({id:r,type:"error",description:n,...i})}}).finally(()=>{s&&(this.dismiss(r),r=void 0),null==e.finally||e.finally.call(e)}),l=()=>new Promise((t,e)=>i.then(()=>"reject"===o[0]?e(o[1]):t(o[1])).catch(e));return"string"!=typeof r&&"number"!=typeof r?{unwrap:l}:Object.assign(r,{unwrap:l})},this.custom=(t,e)=>{let a=(null==e?void 0:e.id)||u++;return this.create({jsx:t(a),id:a,...e}),a},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},m=t=>t&&"object"==typeof t&&"ok"in t&&"boolean"==typeof t.ok&&"status"in t&&"number"==typeof t.status,p=Object.assign((t,e)=>{let a=(null==e?void 0:e.id)||u++;return f.addToast({title:t,...e,id:a}),a},{success:f.success,info:f.info,warning:f.warning,error:f.error,custom:f.custom,message:f.message,promise:f.promise,dismiss:f.dismiss,loading:f.loading},{getHistory:()=>f.toasts,getToasts:()=>f.getActiveToasts()});function h(t){return void 0!==t.label}function g(...t){return t.filter(Boolean).join(" ")}!function(t){if(!t||"undefined"==typeof document)return;let e=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css",e.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");let b=t=>{var e,o,r,u,f,m,p,b,y,v,w,x,E;let{invert:k,toast:T,unstyled:S,interacting:C,setHeights:N,visibleToasts:M,heights:B,index:j,toasts:z,expanded:A,removeToast:R,defaultRichColors:L,closeButton:P,style:I,cancelButtonStyle:Y,actionButtonStyle:$,className:D="",descriptionClassName:H="",duration:V,position:O,gap:K,expandByDefault:U,classNames:X,icons:F,closeButtonAriaLabel:W="Close toast"}=t,[q,_]=a.default.useState(null),[J,G]=a.default.useState(null),[Q,Z]=a.default.useState(!1),[tt,te]=a.default.useState(!1),[ta,to]=a.default.useState(!1),[tr,tn]=a.default.useState(!1),[ts,ti]=a.default.useState(!1),[tl,td]=a.default.useState(0),[tc,tu]=a.default.useState(0),tf=a.default.useRef(T.duration||V||4e3),tm=a.default.useRef(null),tp=a.default.useRef(null),th=0===j,tg=j+1<=M,tb=T.type,ty=!1!==T.dismissible,tv=T.className||"",tw=T.descriptionClassName||"",tx=a.default.useMemo(()=>B.findIndex(t=>t.toastId===T.id)||0,[B,T.id]),tE=a.default.useMemo(()=>{var t;return null!=(t=T.closeButton)?t:P},[T.closeButton,P]),tk=a.default.useMemo(()=>T.duration||V||4e3,[T.duration,V]),tT=a.default.useRef(0),tS=a.default.useRef(0),tC=a.default.useRef(0),tN=a.default.useRef(null),[tM,tB]=O.split("-"),tj=a.default.useMemo(()=>B.reduce((t,e,a)=>a>=tx?t:t+e.height,0),[B,tx]),tz=(()=>{let[t,e]=a.default.useState(document.hidden);return a.default.useEffect(()=>{let t=()=>{e(document.hidden)};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)},[]),t})(),tA=T.invert||k,tR="loading"===tb;tS.current=a.default.useMemo(()=>tx*K+tj,[tx,tj]),a.default.useEffect(()=>{tf.current=tk},[tk]),a.default.useEffect(()=>{Z(!0)},[]),a.default.useEffect(()=>{let t=tp.current;if(t){let e=t.getBoundingClientRect().height;return tu(e),N(t=>[{toastId:T.id,height:e,position:T.position},...t]),()=>N(t=>t.filter(t=>t.toastId!==T.id))}},[N,T.id]),a.default.useLayoutEffect(()=>{if(!Q)return;let t=tp.current,e=t.style.height;t.style.height="auto";let a=t.getBoundingClientRect().height;t.style.height=e,tu(a),N(t=>t.find(t=>t.toastId===T.id)?t.map(t=>t.toastId===T.id?{...t,height:a}:t):[{toastId:T.id,height:a,position:T.position},...t])},[Q,T.title,T.description,N,T.id,T.jsx,T.action,T.cancel]);let tL=a.default.useCallback(()=>{te(!0),td(tS.current),N(t=>t.filter(t=>t.toastId!==T.id)),setTimeout(()=>{R(T)},200)},[T,R,N,tS]);a.default.useEffect(()=>{let t;if((!T.promise||"loading"!==tb)&&T.duration!==1/0&&"loading"!==T.type){if(A||C||tz){if(tC.current<tT.current){let t=new Date().getTime()-tT.current;tf.current=tf.current-t}tC.current=new Date().getTime()}else tf.current!==1/0&&(tT.current=new Date().getTime(),t=setTimeout(()=>{null==T.onAutoClose||T.onAutoClose.call(T,T),tL()},tf.current));return()=>clearTimeout(t)}},[A,C,T,tb,tz,tL]),a.default.useEffect(()=>{T.delete&&(tL(),null==T.onDismiss||T.onDismiss.call(T,T))},[tL,T.delete]);let tP=T.icon||(null==F?void 0:F[tb])||(t=>{switch(t){case"success":return s;case"info":return l;case"warning":return i;case"error":return d;default:return null}})(tb);return a.default.createElement("li",{tabIndex:0,ref:tp,className:g(D,tv,null==X?void 0:X.toast,null==T||null==(e=T.classNames)?void 0:e.toast,null==X?void 0:X.default,null==X?void 0:X[tb],null==T||null==(o=T.classNames)?void 0:o[tb]),"data-sonner-toast":"","data-rich-colors":null!=(v=T.richColors)?v:L,"data-styled":!(T.jsx||T.unstyled||S),"data-mounted":Q,"data-promise":!!T.promise,"data-swiped":ts,"data-removed":tt,"data-visible":tg,"data-y-position":tM,"data-x-position":tB,"data-index":j,"data-front":th,"data-swiping":ta,"data-dismissible":ty,"data-type":tb,"data-invert":tA,"data-swipe-out":tr,"data-swipe-direction":J,"data-expanded":!!(A||U&&Q),"data-testid":T.testId,style:{"--index":j,"--toasts-before":j,"--z-index":z.length-j,"--offset":`${tt?tl:tS.current}px`,"--initial-height":U?"auto":`${tc}px`,...I,...T.style},onDragEnd:()=>{to(!1),_(null),tN.current=null},onPointerDown:t=>{2===t.button||tR||!ty||(tm.current=new Date,td(tS.current),t.target.setPointerCapture(t.pointerId),"BUTTON"!==t.target.tagName&&(to(!0),tN.current={x:t.clientX,y:t.clientY}))},onPointerUp:()=>{var t,e,a,o,r;if(tr||!ty)return;tN.current=null;let n=Number((null==(t=tp.current)?void 0:t.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),s=Number((null==(e=tp.current)?void 0:e.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),i=new Date().getTime()-(null==(a=tm.current)?void 0:a.getTime()),l="x"===q?n:s,d=Math.abs(l)/i;if(Math.abs(l)>=45||d>.11){td(tS.current),null==T.onDismiss||T.onDismiss.call(T,T),"x"===q?G(n>0?"right":"left"):G(s>0?"down":"up"),tL(),tn(!0);return}null==(o=tp.current)||o.style.setProperty("--swipe-amount-x","0px"),null==(r=tp.current)||r.style.setProperty("--swipe-amount-y","0px"),ti(!1),to(!1),_(null)},onPointerMove:e=>{var a,o,r,n;if(!tN.current||!ty||(null==(a=window.getSelection())?void 0:a.toString().length)>0)return;let s=e.clientY-tN.current.y,i=e.clientX-tN.current.x,l=null!=(n=t.swipeDirections)?n:function(t){let[e,a]=t.split("-"),o=[];return e&&o.push(e),a&&o.push(a),o}(O);!q&&(Math.abs(i)>1||Math.abs(s)>1)&&_(Math.abs(i)>Math.abs(s)?"x":"y");let d={x:0,y:0},c=t=>1/(1.5+Math.abs(t)/20);if("y"===q){if(l.includes("top")||l.includes("bottom"))if(l.includes("top")&&s<0||l.includes("bottom")&&s>0)d.y=s;else{let t=s*c(s);d.y=Math.abs(t)<Math.abs(s)?t:s}}else if("x"===q&&(l.includes("left")||l.includes("right")))if(l.includes("left")&&i<0||l.includes("right")&&i>0)d.x=i;else{let t=i*c(i);d.x=Math.abs(t)<Math.abs(i)?t:i}(Math.abs(d.x)>0||Math.abs(d.y)>0)&&ti(!0),null==(o=tp.current)||o.style.setProperty("--swipe-amount-x",`${d.x}px`),null==(r=tp.current)||r.style.setProperty("--swipe-amount-y",`${d.y}px`)}},tE&&!T.jsx&&"loading"!==tb?a.default.createElement("button",{"aria-label":W,"data-disabled":tR,"data-close-button":!0,onClick:tR||!ty?()=>{}:()=>{tL(),null==T.onDismiss||T.onDismiss.call(T,T)},className:g(null==X?void 0:X.closeButton,null==T||null==(r=T.classNames)?void 0:r.closeButton)},null!=(w=null==F?void 0:F.close)?w:c):null,(tb||T.icon||T.promise)&&null!==T.icon&&((null==F?void 0:F[tb])!==null||T.icon)?a.default.createElement("div",{"data-icon":"",className:g(null==X?void 0:X.icon,null==T||null==(u=T.classNames)?void 0:u.icon)},T.promise||"loading"===T.type&&!T.icon?T.icon||((null==F?void 0:F.loading)?a.default.createElement("div",{className:g(null==X?void 0:X.loader,null==T||null==(E=T.classNames)?void 0:E.loader,"sonner-loader"),"data-visible":"loading"===tb},F.loading):a.default.createElement(n,{className:g(null==X?void 0:X.loader,null==T||null==(x=T.classNames)?void 0:x.loader),visible:"loading"===tb})):null,"loading"!==T.type?tP:null):null,a.default.createElement("div",{"data-content":"",className:g(null==X?void 0:X.content,null==T||null==(f=T.classNames)?void 0:f.content)},a.default.createElement("div",{"data-title":"",className:g(null==X?void 0:X.title,null==T||null==(m=T.classNames)?void 0:m.title)},T.jsx?T.jsx:"function"==typeof T.title?T.title():T.title),T.description?a.default.createElement("div",{"data-description":"",className:g(H,tw,null==X?void 0:X.description,null==T||null==(p=T.classNames)?void 0:p.description)},"function"==typeof T.description?T.description():T.description):null),a.default.isValidElement(T.cancel)?T.cancel:T.cancel&&h(T.cancel)?a.default.createElement("button",{"data-button":!0,"data-cancel":!0,style:T.cancelButtonStyle||Y,onClick:t=>{!h(T.cancel)||ty&&(null==T.cancel.onClick||T.cancel.onClick.call(T.cancel,t),tL())},className:g(null==X?void 0:X.cancelButton,null==T||null==(b=T.classNames)?void 0:b.cancelButton)},T.cancel.label):null,a.default.isValidElement(T.action)?T.action:T.action&&h(T.action)?a.default.createElement("button",{"data-button":!0,"data-action":!0,style:T.actionButtonStyle||$,onClick:t=>{!h(T.action)||(null==T.action.onClick||T.action.onClick.call(T.action,t),t.defaultPrevented||tL())},className:g(null==X?void 0:X.actionButton,null==T||null==(y=T.classNames)?void 0:y.actionButton)},T.action.label):null)};function y(){if("undefined"==typeof window||"undefined"==typeof document)return"ltr";let t=document.documentElement.getAttribute("dir");return"auto"!==t&&t?t:window.getComputedStyle(document.documentElement).direction}let v=a.default.forwardRef(function(t,e){let{id:r,invert:n,position:s="bottom-right",hotkey:i=["altKey","KeyT"],expand:l,closeButton:d,className:c,offset:u,mobileOffset:m,theme:p="light",richColors:h,duration:g,style:v,visibleToasts:w=3,toastOptions:x,dir:E=y(),gap:k=14,icons:T,containerAriaLabel:S="Notifications"}=t,[C,N]=a.default.useState([]),M=a.default.useMemo(()=>r?C.filter(t=>t.toasterId===r):C.filter(t=>!t.toasterId),[C,r]),B=a.default.useMemo(()=>Array.from(new Set([s].concat(M.filter(t=>t.position).map(t=>t.position)))),[M,s]),[j,z]=a.default.useState([]),[A,R]=a.default.useState(!1),[L,P]=a.default.useState(!1),[I,Y]=a.default.useState("system"!==p?p:"undefined"!=typeof window&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),$=a.default.useRef(null),D=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),H=a.default.useRef(null),V=a.default.useRef(!1),O=a.default.useCallback(t=>{N(e=>{var a;return(null==(a=e.find(e=>e.id===t.id))?void 0:a.delete)||f.dismiss(t.id),e.filter(({id:e})=>e!==t.id)})},[]);return a.default.useEffect(()=>f.subscribe(t=>{t.dismiss?requestAnimationFrame(()=>{N(e=>e.map(e=>e.id===t.id?{...e,delete:!0}:e))}):setTimeout(()=>{o.default.flushSync(()=>{N(e=>{let a=e.findIndex(e=>e.id===t.id);return -1!==a?[...e.slice(0,a),{...e[a],...t},...e.slice(a+1)]:[t,...e]})})})}),[C]),a.default.useEffect(()=>{if("system"!==p)return void Y(p);if("system"===p&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?Y("dark"):Y("light")),"undefined"==typeof window)return;let t=window.matchMedia("(prefers-color-scheme: dark)");try{t.addEventListener("change",({matches:t})=>{t?Y("dark"):Y("light")})}catch(e){t.addListener(({matches:t})=>{try{t?Y("dark"):Y("light")}catch(t){console.error(t)}})}},[p]),a.default.useEffect(()=>{C.length<=1&&R(!1)},[C]),a.default.useEffect(()=>{let t=t=>{var e,a;i.every(e=>t[e]||t.code===e)&&(R(!0),null==(a=$.current)||a.focus()),"Escape"===t.code&&(document.activeElement===$.current||(null==(e=$.current)?void 0:e.contains(document.activeElement)))&&R(!1)};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[i]),a.default.useEffect(()=>{if($.current)return()=>{H.current&&(H.current.focus({preventScroll:!0}),H.current=null,V.current=!1)}},[$.current]),a.default.createElement("section",{ref:e,"aria-label":`${S} ${D}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},B.map((e,o)=>{var r;let s,[i,f]=e.split("-");return M.length?a.default.createElement("ol",{key:e,dir:"auto"===E?y():E,tabIndex:-1,ref:$,className:c,"data-sonner-toaster":!0,"data-sonner-theme":I,"data-y-position":i,"data-x-position":f,style:{"--front-toast-height":`${(null==(r=j[0])?void 0:r.height)||0}px`,"--width":"356px","--gap":`${k}px`,...v,...(s={},[u,m].forEach((t,e)=>{let a=1===e,o=a?"--mobile-offset":"--offset",r=a?"16px":"24px";function n(t){["top","right","bottom","left"].forEach(e=>{s[`${o}-${e}`]="number"==typeof t?`${t}px`:t})}"number"==typeof t||"string"==typeof t?n(t):"object"==typeof t?["top","right","bottom","left"].forEach(e=>{void 0===t[e]?s[`${o}-${e}`]=r:s[`${o}-${e}`]="number"==typeof t[e]?`${t[e]}px`:t[e]}):n(r)}),s)},onBlur:t=>{V.current&&!t.currentTarget.contains(t.relatedTarget)&&(V.current=!1,H.current&&(H.current.focus({preventScroll:!0}),H.current=null))},onFocus:t=>{!(t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible)&&(V.current||(V.current=!0,H.current=t.relatedTarget))},onMouseEnter:()=>R(!0),onMouseMove:()=>R(!0),onMouseLeave:()=>{L||R(!1)},onDragEnd:()=>R(!1),onPointerDown:t=>{t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible||P(!0)},onPointerUp:()=>P(!1)},M.filter(t=>!t.position&&0===o||t.position===e).map((o,r)=>{var s,i;return a.default.createElement(b,{key:o.id,icons:T,index:r,toast:o,defaultRichColors:h,duration:null!=(s=null==x?void 0:x.duration)?s:g,className:null==x?void 0:x.className,descriptionClassName:null==x?void 0:x.descriptionClassName,invert:n,visibleToasts:w,closeButton:null!=(i=null==x?void 0:x.closeButton)?i:d,interacting:L,position:e,style:null==x?void 0:x.style,unstyled:null==x?void 0:x.unstyled,classNames:null==x?void 0:x.classNames,cancelButtonStyle:null==x?void 0:x.cancelButtonStyle,actionButtonStyle:null==x?void 0:x.actionButtonStyle,closeButtonAriaLabel:null==x?void 0:x.closeButtonAriaLabel,removeToast:O,toasts:M.filter(t=>t.position==o.position),heights:j.filter(t=>t.position==o.position),setHeights:z,expandByDefault:l,gap:k,expanded:A,swipeDirections:t.swipeDirections})})):null}))});t.s(["Toaster",()=>v,"toast",()=>p],95403);var w=t.i(81795);function x(){let{theme:t}=(0,w.useTheme)();return(0,e.jsx)(v,{theme:t,position:"bottom-right",richColors:!0,closeButton:!0,expand:!1,duration:4e3,toastOptions:{classNames:{toast:"group",title:"font-semibold",description:"text-sm opacity-90",actionButton:"bg-primary text-primary-foreground",cancelButton:"bg-muted text-muted-foreground"}}})}t.s(["Toast",()=>x],93455)}]);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leanspec/ui",
3
- "version": "0.2.5-dev.20251119032109",
3
+ "version": "0.2.5-dev.20251120015656",
4
4
  "description": "LeanSpec web UI launcher for visual spec management",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,122 @@
1
+ /**
2
+ * PATCH /api/specs/[id]/status - Update a spec's status (filesystem mode)
3
+ */
4
+
5
+ import { NextResponse } from 'next/server';
6
+ import path from 'node:path';
7
+ import { readFile, writeFile } from 'node:fs/promises';
8
+ import { existsSync } from 'node:fs';
9
+ import { createUpdatedFrontmatter } from '@leanspec/core';
10
+
11
+ const ALLOWED_STATUSES = ['planned', 'in-progress', 'complete', 'archived'] as const;
12
+ type AllowedStatus = (typeof ALLOWED_STATUSES)[number];
13
+
14
+ function resolveProjectRoot(): string {
15
+ if (process.env.LEANSPEC_REPO_ROOT) {
16
+ return process.env.LEANSPEC_REPO_ROOT;
17
+ }
18
+
19
+ let currentDir = process.cwd();
20
+ for (let i = 0; i < 6; i++) {
21
+ if (existsSync(path.join(currentDir, '.lean-spec'))) {
22
+ return currentDir;
23
+ }
24
+ const parentDir = path.resolve(currentDir, '..');
25
+ if (parentDir === currentDir) {
26
+ break;
27
+ }
28
+ currentDir = parentDir;
29
+ }
30
+
31
+ // Fallback to repo root relative to UI package
32
+ return path.resolve(process.cwd(), '..', '..');
33
+ }
34
+
35
+ const PROJECT_ROOT = resolveProjectRoot();
36
+
37
+ /**
38
+ * Find spec directory by identifier (number or name)
39
+ */
40
+ async function findSpecDirectory(specIdentifier: string): Promise<string | null> {
41
+ const specsDir = path.join(PROJECT_ROOT, 'specs');
42
+
43
+ if (!existsSync(specsDir)) {
44
+ return null;
45
+ }
46
+
47
+ const { readdir } = await import('node:fs/promises');
48
+ const entries = await readdir(specsDir, { withFileTypes: true });
49
+
50
+ // Match by spec number or full directory name
51
+ const specPattern = /^(\d{2,})-/;
52
+ const specNum = parseInt(specIdentifier.split('-')[0], 10);
53
+
54
+ for (const entry of entries) {
55
+ if (!entry.isDirectory()) continue;
56
+
57
+ // Match by full name or by spec number
58
+ if (entry.name === specIdentifier) {
59
+ return path.join(specsDir, entry.name);
60
+ }
61
+
62
+ if (!isNaN(specNum) && specPattern.test(entry.name)) {
63
+ const dirNum = parseInt(entry.name.split('-')[0], 10);
64
+ if (dirNum === specNum) {
65
+ return path.join(specsDir, entry.name);
66
+ }
67
+ }
68
+ }
69
+
70
+ return null;
71
+ }
72
+
73
+ export async function PATCH(
74
+ request: Request,
75
+ { params }: { params: Promise<{ id: string }> }
76
+ ) {
77
+ try {
78
+ const { id } = await params;
79
+ if (!id) {
80
+ return NextResponse.json({ error: 'Spec id is required' }, { status: 400 });
81
+ }
82
+
83
+ let payload: { status?: AllowedStatus } = {};
84
+ try {
85
+ payload = await request.json();
86
+ } catch {
87
+ return NextResponse.json({ error: 'Invalid JSON body' }, { status: 400 });
88
+ }
89
+
90
+ const { status } = payload;
91
+ if (!status || !ALLOWED_STATUSES.includes(status)) {
92
+ return NextResponse.json({ error: 'Invalid status value' }, { status: 400 });
93
+ }
94
+
95
+ const specIdentifier = decodeURIComponent(id);
96
+ const specDir = await findSpecDirectory(specIdentifier);
97
+
98
+ if (!specDir) {
99
+ return NextResponse.json({ error: 'Spec not found' }, { status: 404 });
100
+ }
101
+
102
+ const readmePath = path.join(specDir, 'README.md');
103
+
104
+ if (!existsSync(readmePath)) {
105
+ return NextResponse.json({ error: 'Spec README.md not found' }, { status: 404 });
106
+ }
107
+
108
+ // Read current content
109
+ const currentContent = await readFile(readmePath, 'utf-8');
110
+
111
+ // Update frontmatter using @leanspec/core
112
+ const { content: updatedContent } = createUpdatedFrontmatter(currentContent, { status });
113
+
114
+ // Write back to file
115
+ await writeFile(readmePath, updatedContent, 'utf-8');
116
+
117
+ return NextResponse.json({ success: true });
118
+ } catch (error) {
119
+ console.error('Failed to update spec status:', error);
120
+ return NextResponse.json({ error: 'Failed to update spec status' }, { status: 500 });
121
+ }
122
+ }
@@ -528,4 +528,14 @@ html.changing-theme * {
528
528
  .overflow-x-hidden {
529
529
  overflow-x: hidden !important;
530
530
  }
531
+
532
+ /* Vertical text for collapsed columns (ADO-style) */
533
+ .writing-mode-vertical-rl {
534
+ writing-mode: vertical-rl;
535
+ }
536
+
537
+ .vertical-text {
538
+ writing-mode: vertical-rl;
539
+ transform: rotate(180deg);
540
+ }
531
541
  }
@@ -2,7 +2,7 @@
2
2
  * Specs page - Browse all LeanSpec specifications with list/board switcher
3
3
  */
4
4
 
5
- import { getSpecs, getStats } from '@/lib/db/service-queries';
5
+ import { getSpecsWithMetadata, getStats } from '@/lib/db/service-queries';
6
6
  import { SpecsClient } from './specs-client';
7
7
 
8
8
  // Force dynamic rendering - this page needs runtime data
@@ -10,7 +10,7 @@ export const dynamic = 'force-dynamic';
10
10
 
11
11
  export default async function SpecsPage() {
12
12
  const [specs, stats] = await Promise.all([
13
- getSpecs(),
13
+ getSpecsWithMetadata(),
14
14
  getStats(),
15
15
  ]);
16
16