bb-app 0.0.2 → 0.0.4

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.
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-space-x-reverse:0}}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-serif:var(--font-serif);--font-mono:var(--font-mono);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.8125rem;--text-sm--line-height:calc(1.25 / .875);--text-base:.9375rem;--text-base--line-height:1.375rem;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--shadow:var(--shadow);--color-success:var(--success)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border)}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background-color:var(--background);color:var(--foreground);font-family:var(--font-sans)}button,a,[role=button],input,textarea,select,label{touch-action:manipulation}.lucide{stroke-width:var(--icon-stroke-width)}.chat-prompt-box{padding-bottom:.5rem}@media (display-mode:standalone){.chat-prompt-box{padding-bottom:calc(.5rem + env(safe-area-inset-bottom))}}*{scrollbar-width:thin;scrollbar-color:var(--foreground) transparent}@supports (color:color-mix(in lab, red, red)){*{scrollbar-color:color-mix(in oklch, var(--foreground) 20%, transparent) transparent}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb{background-color:color-mix(in oklch, var(--foreground) 20%, transparent)}}::-webkit-scrollbar-thumb{border-radius:9999px}::-webkit-scrollbar-thumb:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklch, var(--foreground) 40%, transparent)}}}@layer components{[data-sidebar-sticky-stack]{--bb-sidebar-sticky-stack-padding:.5rem;--bb-sidebar-sticky-stack-padding-top:var(--bb-sidebar-sticky-stack-padding);--bb-sidebar-sticky-label-height:1.5rem;--bb-sidebar-sticky-label-gap:.25rem;--bb-sidebar-sticky-row-height:var(--bb-sidebar-row-height);--bb-sidebar-sticky-row-gap:.25rem;--bb-sidebar-sticky-label-top:var(--bb-sidebar-sticky-stack-padding-top);--bb-sidebar-sticky-project-top:calc(var(--bb-sidebar-sticky-label-top) + var(--bb-sidebar-sticky-label-height) + var(--bb-sidebar-sticky-label-gap));--bb-sidebar-sticky-manager-top:calc(var(--bb-sidebar-sticky-project-top) + var(--bb-sidebar-sticky-row-height) + var(--bb-sidebar-sticky-row-gap));padding:var(--bb-sidebar-sticky-stack-padding-top) var(--bb-sidebar-sticky-stack-padding) var(--bb-sidebar-sticky-stack-padding)}[data-sidebar-sticky-stack][data-sidebar-sticky-density=compact-actions]{--bb-sidebar-sticky-stack-padding-top:.5rem}[data-sidebar-sticky-stack] [data-sidebar-sticky-tier]{top:var(--bb-sidebar-sticky-tier-top);height:var(--bb-sidebar-sticky-tier-height);min-height:var(--bb-sidebar-sticky-tier-height);z-index:var(--bb-sidebar-sticky-tier-z-index);isolation:isolate;position:sticky}[data-sidebar-sticky-stack] [data-sidebar-sticky-tier]:before,[data-sidebar-sticky-stack] [data-sidebar-sticky-tier]:after{content:"";z-index:-1;pointer-events:none;background-color:var(--sidebar);position:absolute;left:0;right:0}[data-sidebar-sticky-stack] [data-sidebar-sticky-tier]:before{height:var(--bb-sidebar-sticky-tier-shield-top-height,0);bottom:100%}[data-sidebar-sticky-stack] [data-sidebar-sticky-tier]:after{height:var(--bb-sidebar-sticky-tier-shield-bottom-height,0);top:100%}[data-sidebar-sticky-stack] [data-sidebar-sticky-tier=label]{--bb-sidebar-sticky-tier-top:var(--bb-sidebar-sticky-label-top);--bb-sidebar-sticky-tier-height:var(--bb-sidebar-sticky-label-height);--bb-sidebar-sticky-tier-z-index:60;--bb-sidebar-sticky-tier-shield-top-height:var(--bb-sidebar-sticky-stack-padding);--bb-sidebar-sticky-tier-shield-bottom-height:var(--bb-sidebar-sticky-label-gap);margin-bottom:var(--bb-sidebar-sticky-label-gap)}[data-sidebar-sticky-stack] [data-sidebar-sticky-tier=project]{--bb-sidebar-sticky-tier-top:var(--bb-sidebar-sticky-project-top);--bb-sidebar-sticky-tier-height:var(--bb-sidebar-sticky-row-height);--bb-sidebar-sticky-tier-z-index:50;--bb-sidebar-sticky-tier-shield-bottom-height:var(--bb-sidebar-sticky-row-gap)}[data-sidebar-sticky-stack] [data-sidebar-sticky-tier=manager]{--bb-sidebar-sticky-tier-top:var(--bb-sidebar-sticky-manager-top);--bb-sidebar-sticky-tier-height:var(--bb-sidebar-sticky-row-height);--bb-sidebar-sticky-tier-z-index:40;--bb-sidebar-sticky-tier-shield-bottom-height:.125rem}[data-sidebar-sticky-stack] [data-sidebar-sticky-project-item]>:not([hidden])~:not([hidden]){margin-top:var(--bb-sidebar-sticky-row-gap)}@media (width<=767px) and (pointer:coarse){[data-sidebar-sticky-stack]{--bb-sidebar-sticky-row-height:var(--bb-sidebar-row-height-coarse)}}}@layer utilities{.\@container\/page{container:page/inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-2{top:calc(var(--spacing) * -2)}.-top-6{top:calc(var(--spacing) * -6)}.top-0{top:calc(var(--spacing) * 0)}.top-1{top:calc(var(--spacing) * 1)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-4{top:calc(var(--spacing) * 4)}.top-\[50\%\]{top:50%}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-1\.5{right:calc(var(--spacing) * -1.5)}.-right-px{right:-1px}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-2{bottom:calc(var(--spacing) * -2)}.-bottom-6{bottom:calc(var(--spacing) * -6)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-14{bottom:calc(var(--spacing) * 14)}.bottom-full{bottom:100%}.-left-px{left:-1px}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.m-6{margin:calc(var(--spacing) * 6)}.\!mx-0{margin-inline:calc(var(--spacing) * 0)!important}.-mx-1{margin-inline:calc(var(--spacing) * -1)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.my-4{margin-block:calc(var(--spacing) * 4)}.\!mt-0{margin-top:calc(var(--spacing) * 0)!important}.-mt-4{margin-top:calc(var(--spacing) * -4)}.-mt-20{margin-top:calc(var(--spacing) * -20)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-24{margin-top:calc(var(--spacing) * 24)}.mr-1{margin-right:calc(var(--spacing) * 1)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-\[15\]{-webkit-line-clamp:15;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-1{width:calc(var(--spacing) * 1);height:calc(var(--spacing) * 1)}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-auto{width:auto;height:auto}.h-0{height:calc(var(--spacing) * 0)}.h-1{height:calc(var(--spacing) * 1)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-\[1lh\]{height:1lh}.h-\[1px\]{height:1px}.h-\[50dvh\]{height:50dvh}.h-\[70dvh\]{height:70dvh}.h-\[92dvh\]{height:92dvh}.h-\[100dvh\]{height:100dvh}.h-\[160px\]{height:160px}.h-\[260px\]{height:260px}.h-\[360px\]{height:360px}.h-\[480px\]{height:480px}.h-\[var\(--bb-sidebar-row-height\)\]{height:var(--bb-sidebar-row-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[2lh\]{max-height:2lh}.max-h-\[34rem\]{max-height:34rem}.max-h-\[60vh\]{max-height:60vh}.max-h-\[82vh\]{max-height:82vh}.max-h-\[85dvh\]{max-height:85dvh}.max-h-\[92dvh\]{max-height:92dvh}.max-h-\[240px\]{max-height:240px}.max-h-\[288px\]{max-height:288px}.max-h-\[768px\]{max-height:768px}.max-h-\[min\(300px\,var\(--radix-popover-content-available-height\,300px\)-80px\)\]{max-height:min(300px, var(--radix-popover-content-available-height,300px) - 80px)}.max-h-\[…px\]{max-height:…px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-20{min-height:calc(var(--spacing) * 20)}.min-h-\[360px\]{min-height:360px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-\(--sidebar-width-mobile\){width:var(--sidebar-width-mobile)}.w-0{width:calc(var(--spacing) * 0)}.w-2{width:calc(var(--spacing) * 2)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-3\/5{width:60%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-5\/6{width:83.3333%}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-14{width:calc(var(--spacing) * 14)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-72{width:calc(var(--spacing) * 72)}.w-96{width:calc(var(--spacing) * 96)}.w-\[1px\]{width:1px}.w-\[84\%\]{width:84%}.w-\[86\%\]{width:86%}.w-\[87\%\]{width:87%}.w-\[90\%\]{width:90%}.w-\[93\%\]{width:93%}.w-\[94\%\]{width:94%}.w-\[96\%\]{width:96%}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-min{width:min-content}.w-px{width:1px}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-36{max-width:calc(var(--spacing) * 36)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-72{max-width:calc(var(--spacing) * 72)}.max-w-80{max-width:calc(var(--spacing) * 80)}.max-w-96{max-width:calc(var(--spacing) * 96)}.max-w-\[--skeleton-width\]{max-width:--skeleton-width}.max-w-\[10rem\]{max-width:10rem}.max-w-\[34rem\]{max-width:34rem}.max-w-\[80\%\]{max-width:80%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[160px\]{max-width:160px}.max-w-\[180px\]{max-width:180px}.max-w-\[240px\]{max-width:240px}.max-w-\[460px\]{max-width:460px}.max-w-\[480px\]{max-width:480px}.max-w-\[640px\]{max-width:640px}.max-w-\[680px\]{max-width:680px}.max-w-\[760px\]{max-width:760px}.max-w-\[1280px\]{max-width:1280px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-3\.5{min-width:calc(var(--spacing) * 3.5)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-52{min-width:calc(var(--spacing) * 52)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--detail-label-width\,96px\)\]{min-width:var(--detail-label-width,96px)}.min-w-\[var\(--radix-dropdown-menu-trigger-width\)\]{min-width:var(--radix-dropdown-menu-trigger-width)}.min-w-fit{min-width:fit-content}.flex-1{flex:1}.\[flex-shrink\:9999\]{flex-shrink:9999}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-center{transform-origin:50%}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[8\%\]{--tw-translate-x:8%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-px{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-row-resize{cursor:row-resize}.cursor-zoom-in{cursor:zoom-in}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-mt-7{scroll-margin-top:calc(var(--spacing) * 7)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-\[1\.5rem_minmax\(0\,1fr\)_auto\]{grid-template-columns:1.5rem minmax(0,1fr) auto}.grid-cols-\[var\(--detail-label-width\,96px\)_minmax\(0\,1fr\)\]{grid-template-columns:var(--detail-label-width,96px) minmax(0,1fr)}.grid-cols-\[var\(--story-label-width\,210px\)_minmax\(0\,1fr\)\]{grid-template-columns:var(--story-label-width,210px) minmax(0,1fr)}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-end{justify-items:end}.justify-items-start{justify-items:start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-px{gap:1px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-px>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1px * var(--tw-space-y-reverse));margin-block-end:calc(1px * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--border)}.self-center{align-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.rounded{border-radius:.25rem}.rounded-\[3px\]{border-radius:3px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-t-xl{border-top-left-radius:calc(var(--radius) + 4px);border-top-right-radius:calc(var(--radius) + 4px)}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-b-lg{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-0{border-left-style:var(--tw-border-style);border-left-width:0}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-border{border-color:var(--border)}.border-destructive{border-color:var(--destructive)}.border-foreground{border-color:var(--foreground)}.border-input{border-color:var(--input)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-surface-destructive-border{border-color:var(--surface-destructive-border)}.border-surface-selected-border{border-color:var(--surface-selected-border)}.border-transparent{border-color:#0000}.border-l-primary-foreground\/20{border-left-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.border-l-primary-foreground\/20{border-left-color:color-mix(in oklab, var(--primary-foreground) 20%, transparent)}}.bg-accent-foreground\/50{background-color:var(--accent-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-accent-foreground\/50{background-color:color-mix(in oklab, var(--accent-foreground) 50%, transparent)}}.bg-accent\/20{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-accent\/20{background-color:color-mix(in oklab, var(--accent) 20%, transparent)}}.bg-attention{background-color:var(--attention)}.bg-background{background-color:var(--background)}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab, red, red)){.bg-black\/40{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}.bg-black\/45{background-color:#00000073}@supports (color:color-mix(in lab, red, red)){.bg-black\/45{background-color:color-mix(in oklab, var(--color-black) 45%, transparent)}}.bg-black\/55{background-color:#0000008c}@supports (color:color-mix(in lab, red, red)){.bg-black\/55{background-color:color-mix(in oklab, var(--color-black) 55%, transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab, red, red)){.bg-black\/80{background-color:color-mix(in oklab, var(--color-black) 80%, transparent)}}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-current{background-color:currentColor}.bg-destructive{background-color:var(--destructive)}.bg-foreground,.bg-foreground\/25{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/25{background-color:color-mix(in oklab, var(--foreground) 25%, transparent)}}.bg-foreground\/60{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/60{background-color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.bg-input{background-color:var(--input)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\/20{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/20{background-color:color-mix(in oklab, var(--muted-foreground) 20%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-state-active{background-color:var(--state-active)}.bg-success{background-color:var(--success)}.bg-surface-destructive{background-color:var(--surface-destructive)}.bg-surface-raised{background-color:var(--surface-raised)}.bg-surface-recessed{background-color:var(--surface-recessed)}.bg-surface-scrim{background-color:var(--surface-scrim)}.bg-surface-selected{background-color:var(--surface-selected)}.bg-transparent{background-color:#0000}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-l{--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-background{--tw-gradient-from:var(--background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-card{--tw-gradient-from:var(--card);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-sidebar{--tw-gradient-from:var(--sidebar);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-background{--tw-gradient-to:var(--background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-sidebar{--tw-gradient-to:var(--sidebar);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-current{fill:currentColor}.stroke-border-hairline{stroke:var(--border-hairline)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-\[0\.3125rem\]{padding-block:.3125rem}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pr-0{padding-right:calc(var(--spacing) * 0)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-3\.5{padding-right:calc(var(--spacing) * 3.5)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pr-14{padding-right:calc(var(--spacing) * 14)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-\[max\(0\.5rem\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(.5rem, env(safe-area-inset-bottom))}.pb-\[max\(1rem\,env\(safe-area-inset-bottom\)\)\]{padding-bottom:max(1rem, env(safe-area-inset-bottom))}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-3\.5{padding-left:calc(var(--spacing) * 3.5)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-14{padding-left:calc(var(--spacing) * 14)}.pl-20{padding-left:calc(var(--spacing) * 20)}.pl-\[1ch\]{padding-left:1ch}.pl-\[15px\]{padding-left:15px}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-background{color:var(--background)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-diff-added{color:var(--diff-added)}.text-diff-removed{color:var(--diff-removed)}.text-foreground,.text-foreground\/90{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/90{color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.text-muted-foreground,.text-muted-foreground\/30{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/30{color:color-mix(in oklab, var(--muted-foreground) 30%, transparent)}}.text-muted-foreground\/45{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/45{color:color-mix(in oklab, var(--muted-foreground) 45%, transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/60{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground{color:var(--sidebar-foreground)}.text-subtle-foreground{color:var(--subtle-foreground)}.text-success{color:var(--success)}.text-warning-text{color:var(--warning-text)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.decoration-subtle-foreground{-webkit-text-decoration-color:var(--subtle-foreground);-webkit-text-decoration-color:var(--subtle-foreground);-webkit-text-decoration-color:var(--subtle-foreground);text-decoration-color:var(--subtle-foreground)}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-primary{accent-color:var(--primary)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow{--tw-shadow:var(--shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_var\(--sidebar-border\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--sidebar-border));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_4px_color-mix\(in_oklch\,var\(--color-success\)_16\%\,transparent\)\]{--tw-shadow:0 0 0 4px var(--tw-shadow-color,var(--color-success))}@supports (color:color-mix(in lab, red, red)){.shadow-\[0_0_0_4px_color-mix\(in_oklch\,var\(--color-success\)_16\%\,transparent\)\]{--tw-shadow:0 0 0 4px var(--tw-shadow-color,color-mix(in oklch,var(--color-success) 16%,transparent))}}.shadow-\[0_0_0_4px_color-mix\(in_oklch\,var\(--color-success\)_16\%\,transparent\)\]{box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:var(--shadow-md);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:var(--shadow-xl);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:var(--shadow-xs);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-success\/25{--tw-ring-color:var(--success)}@supports (color:color-mix(in lab, red, red)){.ring-success\/25{--tw-ring-color:color-mix(in oklab, var(--success) 25%, transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[flex-grow\,flex-basis\,opacity\]{transition-property:flex-grow,flex-basis,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[grid-template-rows\,opacity\,border-color\]{transition-property:grid-template-rows,opacity,border-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[grid-template-rows\,opacity\]{transition-property:grid-template-rows,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[height\,opacity\,background-color\]{transition-property:height,opacity,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,transform\,width\]{transition-property:left,right,transform,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opa\]{transition-property:margin,opa;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[max-height\]{transition-property:max-height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,rotate\]{transition-property:opacity,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[text-decoration-color\]{transition-property:text-decoration-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,opacity\,background-color\]{transition-property:transform,opacity,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[transform\,opacity\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,opacity\,background-color\]{transition-property:width,opacity,background-color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-\[220ms\]{--tw-duration:.22s;transition-duration:.22s}.ease-\[cubic-bezier\(0\.32\,0\.72\,0\,1\)\]{--tw-ease:cubic-bezier(.32,.72,0,1);transition-timing-function:cubic-bezier(.32,.72,0,1)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\[animation-delay\:-120ms\]{animation-delay:-120ms}.\[animation-delay\:-240ms\]{animation-delay:-240ms}.ring-inset{--tw-ring-inset:inset}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *),.group-focus-within\/project-row\:opacity-100:is(:where(.group\/project-row):focus-within *){opacity:1}@media (hover:hover){.group-hover\:bg-accent-foreground\/35:is(:where(.group):hover *){background-color:var(--accent-foreground)}@supports (color:color-mix(in lab, red, red)){.group-hover\:bg-accent-foreground\/35:is(:where(.group):hover *){background-color:color-mix(in oklab, var(--accent-foreground) 35%, transparent)}}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}.group-hover\/project-row\:opacity-0:is(:where(.group\/project-row):hover *){opacity:0}.group-hover\/project-row\:opacity-100:is(:where(.group\/project-row):hover *){opacity:1}.group-hover\/thread-row\:pointer-events-auto:is(:where(.group\/thread-row):hover *){pointer-events:auto}.group-hover\/thread-row\:opacity-0:is(:where(.group\/thread-row):hover *){opacity:0}.group-hover\/thread-row\:opacity-100:is(:where(.group\/thread-row):hover *),.group-hover\/toggle\:opacity-100:is(:where(.group\/toggle):hover *){opacity:1}}.group-focus-visible\/toggle\:opacity-100:is(:where(.group\/toggle):focus-visible *){opacity:1}.group-has-\[\:focus-visible\]\/thread-row\:opacity-0:is(:where(.group\/thread-row):has(:focus-visible) *){opacity:0}.group-has-\[\:focus-visible\]\/thread-row\:opacity-100:is(:where(.group\/thread-row):has(:focus-visible) *){opacity:1}.group-has-\[\[data-sidebar\=menu-action\]\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:\!size-8:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + 1rem)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:\!p-0:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 0)!important}.group-data-\[collapsible\=icon\]\:\!p-2:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing) * 0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing) * 0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow:is(:where(.group)[data-variant=floating] *){--tw-shadow:var(--shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[variant\=inset\]\:min-h-\[calc\(100svh-theme\(spacing\.4\)\)\]:is(:where(.peer)[data-variant=inset]~*){min-height:calc(100svh - 1rem)}.marker\:text-subtle-foreground ::marker{color:var(--subtle-foreground)}.marker\:text-subtle-foreground::marker{color:var(--subtle-foreground)}.marker\:text-subtle-foreground ::-webkit-details-marker{color:var(--subtle-foreground)}.marker\:text-subtle-foreground::-webkit-details-marker{color:var(--subtle-foreground)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.placeholder\:text-subtle-foreground::placeholder{color:var(--subtle-foreground)}.placeholder\:select-none::placeholder{-webkit-user-select:none;user-select:none}.before\:pointer-events-none:before{content:var(--tw-content);pointer-events:none}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-x-0:before{content:var(--tw-content);inset-inline:calc(var(--spacing) * 0)}.before\:-inset-y-1\.5:before{content:var(--tw-content);inset-block:calc(var(--spacing) * -1.5)}.before\:inset-y-0:before{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing) * 0)}.before\:-right-1\.5:before{content:var(--tw-content);right:calc(var(--spacing) * -1.5)}.before\:bottom-0:before{content:var(--tw-content);bottom:calc(var(--spacing) * 0)}.before\:bottom-1:before{content:var(--tw-content);bottom:calc(var(--spacing) * 1)}.before\:-left-1\.5:before{content:var(--tw-content);left:calc(var(--spacing) * -1.5)}.before\:left-1\.5:before{content:var(--tw-content);left:calc(var(--spacing) * 1.5)}.before\:left-1\/2:before{content:var(--tw-content);left:50%}.before\:left-4:before{content:var(--tw-content);left:calc(var(--spacing) * 4)}.before\:left-10:before{content:var(--tw-content);left:calc(var(--spacing) * 10)}.before\:left-16:before{content:var(--tw-content);left:calc(var(--spacing) * 16)}.before\:z-30:before{content:var(--tw-content);z-index:30}.before\:z-\[45\]:before{content:var(--tw-content);z-index:45}.before\:w-px:before{content:var(--tw-content);width:1px}.before\:-translate-x-1\/2:before{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\:bg-border-hairline:before{content:var(--tw-content);background-color:var(--border-hairline)}.before\:bg-sidebar-border:before{content:var(--tw-content);background-color:var(--sidebar-border)}.before\:bg-transparent:before{content:var(--tw-content);background-color:#0000}.before\:transition-colors:before{content:var(--tw-content);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.first\:mt-0:first-child{margin-top:calc(var(--spacing) * 0)}.first\:pt-0:first-child{padding-top:calc(var(--spacing) * 0)}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing) * 0)}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing) * 0)}@media (hover:hover){.hover\:border-l-primary-foreground\/30:hover{border-left-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-l-primary-foreground\/30:hover{border-left-color:color-mix(in oklab, var(--primary-foreground) 30%, transparent)}}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-accent-foreground\/15:hover{background-color:var(--accent-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent-foreground\/15:hover{background-color:color-mix(in oklab, var(--accent-foreground) 15%, transparent)}}.hover\:bg-black\/60:hover{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/60:hover{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.hover\:bg-black\/70:hover{background-color:#000000b3}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/70:hover{background-color:color-mix(in oklab, var(--color-black) 70%, transparent)}}.hover\:bg-destructive\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-muted-foreground\/15:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted-foreground\/15:hover{background-color:color-mix(in oklab, var(--muted-foreground) 15%, transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-state-hover:hover{background-color:var(--state-hover)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover,.hover\:text-foreground\/80:hover{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:text-foreground\/80:hover{color:color-mix(in oklab, var(--foreground) 80%, transparent)}}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:text-sidebar-foreground:hover{color:var(--sidebar-foreground)}.hover\:text-warning-text:hover{color:var(--warning-text)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:underline-offset-2:hover{text-underline-offset:2px}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_var\(--sidebar-accent\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--sidebar-accent));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-data-\[collapsible\=offcanvas\]\:hover\:bg-sidebar:is(:where(.group)[data-collapsible=offcanvas] *):hover{background-color:var(--sidebar)}.hover\:before\:bg-sidebar-border:hover:before,.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:bg-state-hover:focus{background-color:var(--state-hover)}.focus\:text-destructive:focus{color:var(--destructive)}.focus\:text-foreground:focus{color:var(--foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:bg-state-hover:focus-visible{background-color:var(--state-hover)}.focus-visible\:text-foreground:focus-visible{color:var(--foreground)}.focus-visible\:text-muted-foreground:focus-visible{color:var(--muted-foreground)}.focus-visible\:underline:focus-visible{text-decoration-line:underline}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\:ring-sidebar-ring:focus-visible{--tw-ring-color:var(--sidebar-ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--background)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:bg-state-active:active{background-color:var(--state-active)}.active\:text-foreground:active{color:var(--foreground)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.has-\[\[data-variant\=inset\]\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-pressed\:bg-state-active[aria-pressed=true]{background-color:var(--state-active)}.aria-pressed\:text-foreground[aria-pressed=true]{color:var(--foreground)}@media (hover:hover){.aria-pressed\:hover\:bg-state-active[aria-pressed=true]:hover{background-color:var(--state-active)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:bg-sidebar-border\/70[data-active=true]{background-color:var(--sidebar-border)}@supports (color:color-mix(in lab, red, red)){.data-\[active\=true\]\:bg-sidebar-border\/70[data-active=true]{background-color:color-mix(in oklab, var(--sidebar-border) 70%, transparent)}}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}@media (hover:hover){.data-\[active\=true\]\:hover\:bg-sidebar-border\/70[data-active=true]:hover{background-color:var(--sidebar-border)}@supports (color:color-mix(in lab, red, red)){.data-\[active\=true\]\:hover\:bg-sidebar-border\/70[data-active=true]:hover{background-color:color-mix(in oklab, var(--sidebar-border) 70%, transparent)}}.data-\[active\=true\]\:hover\:text-sidebar-accent-foreground[data-active=true]:hover{color:var(--sidebar-accent-foreground)}}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[open\=true\]\:translate-x-0[data-open=true]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=checked\]\:bg-foreground[data-state=checked]{background-color:var(--foreground)}.data-\[state\=open\]\:bg-sidebar-accent[data-state=open]{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:bg-state-active[data-state=open]{background-color:var(--state-active)}.data-\[state\=open\]\:bg-transparent[data-state=open]{background-color:#0000}.data-\[state\=open\]\:text-foreground[data-state=open]{color:var(--foreground)}.data-\[state\=open\]\:text-sidebar-foreground[data-state=open]{color:var(--sidebar-foreground)}.data-\[state\=open\]\:text-warning-text[data-state=open]{color:var(--warning-text)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:bg-state-active[data-state=open]:hover{background-color:var(--state-active)}.data-\[state\=open\]\:hover\:bg-transparent[data-state=open]:hover{background-color:#0000}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-muted[data-state=unchecked]{background-color:var(--muted)}@media not all and (width>=48rem){.max-md\:w-full{width:100%}.max-md\:max-w-none{max-width:none}}@media (width>=40rem){.sm\:flex{display:flex}.sm\:w-48{width:calc(var(--spacing) * 48)}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:min-w-\[320px\]{min-width:320px}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:gap-4{gap:calc(var(--spacing) * 4)}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:rounded-none{border-radius:0}.sm\:px-3{padding-inline:calc(var(--spacing) * 3)}.sm\:text-left{text-align:left}}@media (width>=48rem){.md\:z-10{z-index:10}.md\:\!mx-0{margin-inline:calc(var(--spacing) * 0)!important}.md\:-mx-5{margin-inline:calc(var(--spacing) * -5)}.md\:\!mt-0{margin-top:calc(var(--spacing) * 0)!important}.md\:-mt-5{margin-top:calc(var(--spacing) * -5)}.md\:-mb-5{margin-bottom:calc(var(--spacing) * -5)}.md\:ml-0{margin-left:calc(var(--spacing) * 0)}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:max-h-80{max-height:calc(var(--spacing) * 80)}.md\:max-h-\[calc\(100vh-6rem\)\]{max-height:calc(100vh - 6rem)}.md\:w-\(--sidebar-width\){width:var(--sidebar-width)}.md\:w-\[18rem\]{width:18rem}.md\:max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.md\:min-w-\[min\(var\(--radix-popover-trigger-width\)\,calc\(100vw-2rem\)\)\]{min-width:min(var(--radix-popover-trigger-width), calc(100vw - 2rem))}.md\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:gap-2{gap:calc(var(--spacing) * 2)}.md\:p-2{padding:calc(var(--spacing) * 2)}.md\:p-5{padding:calc(var(--spacing) * 5)}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:pt-5{padding-top:calc(var(--spacing) * 5)}.md\:opacity-0{opacity:0}.md\:transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.md\:ease-linear{--tw-ease:linear;transition-timing-function:linear}.md\:group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.md\:group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.md\:group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.md\:group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.md\:group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.md\:group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:var(--shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.after\:md\:hidden:after{content:var(--tw-content)}@media (width>=48rem){.after\:md\:hidden:after{display:none}}@media (width>=64rem){.lg\:inline{display:inline}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(280px\,340px\)\]{grid-template-columns:minmax(0,1fr) minmax(280px,340px)}}@media not all and (width>=48rem){@media (pointer:coarse){.max-md\:pointer-coarse\:block{display:block}.max-md\:pointer-coarse\:hidden{display:none}.max-md\:pointer-coarse\:size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.max-md\:pointer-coarse\:size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.max-md\:pointer-coarse\:size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.max-md\:pointer-coarse\:h-5{height:calc(var(--spacing) * 5)}.max-md\:pointer-coarse\:h-9{height:calc(var(--spacing) * 9)}.max-md\:pointer-coarse\:h-10{height:calc(var(--spacing) * 10)}.max-md\:pointer-coarse\:h-\[var\(--bb-sidebar-row-height-coarse\)\]{height:var(--bb-sidebar-row-height-coarse)}.max-md\:pointer-coarse\:w-5{width:calc(var(--spacing) * 5)}.max-md\:pointer-coarse\:w-9{width:calc(var(--spacing) * 9)}.max-md\:pointer-coarse\:w-10{width:calc(var(--spacing) * 10)}.max-md\:pointer-coarse\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.max-md\:pointer-coarse\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.max-md\:pointer-coarse\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.max-md\:pointer-coarse\:opacity-100{opacity:1}.max-md\:pointer-coarse\:before\:left-5:before{content:var(--tw-content);left:calc(var(--spacing) * 5)}}}.\[\&_\*\]\:stroke-0 *{stroke-width:0}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-3 svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}@media not all and (width>=48rem){@media (pointer:coarse){.max-md\:pointer-coarse\:\[\&_svg\]\:size-5 svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}}}.\[\&\>\*\+\*\]\:pt-2>*+*{padding-top:calc(var(--spacing) * 2)}.\[\&\>\*\:not\(\:last-child\)\]\:pb-2>:not(:last-child){padding-bottom:calc(var(--spacing) * 2)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}@media not all and (width>=48rem){@media (pointer:coarse){.max-md\:pointer-coarse\:\[\&\>svg\]\:size-5>svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}}}[data-side=left] .\[\[data-side\=left\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize,[data-side=right] .\[\[data-side\=right\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}.animate-shine{background:linear-gradient(90deg, var(--foreground) 0%, var(--foreground) 50%, var(--foreground) 100%);display:inline-block}@supports (color:color-mix(in lab, red, red)){.animate-shine{background:linear-gradient(90deg, color-mix(in srgb, var(--foreground) 50%, transparent) 0%, var(--foreground) 50%, color-mix(in srgb, var(--foreground) 50%, transparent) 100%)}}.animate-shine{-webkit-text-fill-color:transparent;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:2s linear infinite shine}.animate-typing-dot{animation-name:typing-dot;animation-duration:1.2s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}}@media (width<=767px) and (pointer:coarse){:root{--text-xs:.875rem;--text-xs--line-height:1.25rem;--text-sm:.9375rem;--text-sm--line-height:1.375rem;--text-base:1rem;--text-base--line-height:1.5rem}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:oklch(95.51% 0 0);--foreground:oklch(32.11% 0 0);--card:oklch(97.02% 0 0);--card-foreground:oklch(32.11% 0 0);--popover:oklch(97.02% 0 0);--popover-foreground:oklch(32.11% 0 0);--primary:oklch(48.91% 0 0);--primary-foreground:oklch(100% 0 0);--secondary:oklch(90.67% 0 0);--secondary-foreground:oklch(32.11% 0 0);--muted:oklch(88.53% 0 0);--muted-foreground:oklch(51.03% 0 0);--subtle-foreground:oklch(62% 0 0);--accent:oklch(90% 0 0);--accent-foreground:oklch(32.11% 0 0);--state-hover:oklch(92% 0 0);--state-active:oklch(88% 0 0);--destructive:oklch(45% .19 25.8625);--destructive-foreground:oklch(100% 0 0);--attention:oklch(74% .15 80);--attention-foreground:oklch(32.11% 0 0);--warning:oklch(70% .16 50);--warning-foreground:oklch(32.11% 0 0);--warning-text:oklch(55% .14 50);--success:oklch(70% .15 155);--success-foreground:oklch(32.11% 0 0);--diff-added:oklch(40% .13 163);--diff-removed:oklch(40% .17 28);--border:oklch(85.76% 0 0);--border-hairline:oklch(80% 0 0);--input:oklch(75% 0 0);--ring:oklch(48.91% 0 0);--surface-recessed:oklch(88.53% 0 0/.3);--surface-raised:oklch(95.5% 0 0/.7);--surface-scrim:oklch(95.5% 0 0/.92);--surface-destructive:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:root{--surface-destructive:color-mix(in oklch, var(--destructive) 6%, transparent)}}:root{--surface-destructive-border:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:root{--surface-destructive-border:color-mix(in oklch, var(--destructive) 25%, transparent)}}:root{--surface-selected:var(--primary)}@supports (color:color-mix(in lab, red, red)){:root{--surface-selected:color-mix(in oklch, var(--primary) 10%, transparent)}}:root{--surface-selected-border:var(--primary)}@supports (color:color-mix(in lab, red, red)){:root{--surface-selected-border:color-mix(in oklch, var(--primary) 35%, transparent)}}:root{--chart-1:oklch(48.91% 0 0);--chart-2:oklch(48.63% .0361 196.028);--chart-3:oklch(65.34% 0 0);--chart-4:oklch(73.16% 0 0);--chart-5:oklch(80.78% 0 0);--sidebar:oklch(93.7% 0 0);--sidebar-foreground:oklch(32.11% 0 0);--sidebar-primary:oklch(48.91% 0 0);--sidebar-primary-foreground:oklch(100% 0 0);--sidebar-accent:oklch(80.78% 0 0);--sidebar-accent-foreground:oklch(32.11% 0 0);--sidebar-border:oklch(85.76% 0 0);--sidebar-ring:oklch(48.91% 0 0);--font-sans:"Inter Variable", Inter, sans-serif;--font-serif:Georgia, serif;--font-mono:"Fira Code", monospace;--radius:.35rem;--bb-sidebar-row-height:1.75rem;--bb-sidebar-row-height-coarse:2.5rem;--shadow-x:0px;--shadow-y:2px;--shadow-blur:0px;--shadow-spread:0px;--shadow-opacity:.15;--shadow-color:#3333331a;--shadow-2xs:0px 2px 0px 0px #33333312;--shadow-xs:0px 2px 0px 0px #33333312;--shadow-sm:0px 2px 0px 0px #33333326, 0px 1px 2px -1px #33333326;--shadow:0px 2px 0px 0px #33333326, 0px 1px 2px -1px #33333326;--shadow-md:0px 2px 0px 0px #33333326, 0px 2px 4px -1px #33333326;--shadow-lg:0px 2px 0px 0px #33333326, 0px 4px 6px -1px #33333326;--shadow-xl:0px 2px 0px 0px #33333326, 0px 8px 10px -1px #33333326;--shadow-2xl:0px 2px 0px 0px #33333361;--tracking-normal:0em;--spacing:.25rem;--icon-stroke-width:1.75;--ansi-0:#000;--ansi-1:#a11616;--ansi-2:#13704a;--ansi-3:#7f6a00;--ansi-4:#1f5ca6;--ansi-5:#8a2f8a;--ansi-6:#0b6f88;--ansi-7:#3d3d3d;--ansi-8:#3a3a3a;--ansi-9:#d32f2f;--ansi-10:#197c52;--ansi-11:#a35f00;--ansi-12:#2666b0;--ansi-13:#9b349b;--ansi-14:#0f7798;--ansi-15:#1f1f1f;--ansi-bg-fg-0:#fff;--ansi-bg-fg-1:#fff;--ansi-bg-fg-2:#fff;--ansi-bg-fg-3:#fff;--ansi-bg-fg-4:#fff;--ansi-bg-fg-5:#fff;--ansi-bg-fg-6:#fff;--ansi-bg-fg-7:#fff;--ansi-bg-fg-8:#fff;--ansi-bg-fg-9:#fff;--ansi-bg-fg-10:#fff;--ansi-bg-fg-11:#fff;--ansi-bg-fg-12:#fff;--ansi-bg-fg-13:#fff;--ansi-bg-fg-14:#fff;--ansi-bg-fg-15:#fff}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:oklch(19.5% 0 0);--foreground:oklch(88.53% 0 0);--card:oklch(24.35% 0 0);--card-foreground:oklch(88.53% 0 0);--popover:oklch(24.35% 0 0);--popover-foreground:oklch(88.53% 0 0);--primary:oklch(70.58% 0 0);--primary-foreground:oklch(21.78% 0 0);--secondary:oklch(30.92% 0 0);--secondary-foreground:oklch(88.53% 0 0);--muted:oklch(28.5% 0 0);--muted-foreground:oklch(66% 0 0);--subtle-foreground:oklch(51% 0 0);--accent:oklch(28.5% 0 0);--accent-foreground:oklch(88.53% 0 0);--state-hover:oklch(25.5% 0 0);--state-active:oklch(30.5% 0 0);--destructive:oklch(56% .19 22.1703);--destructive-foreground:oklch(100% 0 0);--attention:oklch(80% .15 80);--attention-foreground:oklch(21.78% 0 0);--warning:oklch(75% .16 50);--warning-foreground:oklch(21.78% 0 0);--warning-text:oklch(75% .16 50);--success:oklch(74% .15 155);--success-foreground:oklch(21.78% 0 0);--diff-added:oklch(77% .17 163);--diff-removed:oklch(72% .19 22);--border:oklch(32.9% 0 0);--border-hairline:oklch(60% 0 0);--input:oklch(55% 0 0);--ring:oklch(70.58% 0 0);--surface-recessed:oklch(28.5% 0 0/.3);--surface-raised:oklch(19.5% 0 0/.7);--surface-scrim:oklch(19.5% 0 0/.92);--surface-destructive:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark{--surface-destructive:color-mix(in oklch, var(--destructive) 8%, transparent)}}.dark{--surface-destructive-border:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.dark{--surface-destructive-border:color-mix(in oklch, var(--destructive) 30%, transparent)}}.dark{--surface-selected:var(--primary)}@supports (color:color-mix(in lab, red, red)){.dark{--surface-selected:color-mix(in oklch, var(--primary) 12%, transparent)}}.dark{--surface-selected-border:var(--primary)}@supports (color:color-mix(in lab, red, red)){.dark{--surface-selected-border:color-mix(in oklch, var(--primary) 35%, transparent)}}.dark{--chart-1:oklch(70.58% 0 0);--chart-2:oklch(67.14% .0339 206.348);--chart-3:oklch(54.52% 0 0);--chart-4:oklch(46.04% 0 0);--chart-5:oklch(37.15% 0 0);--sidebar:oklch(24% 0 0);--sidebar-foreground:oklch(88.53% 0 0);--sidebar-primary:oklch(70.58% 0 0);--sidebar-primary-foreground:oklch(21.78% 0 0);--sidebar-accent:oklch(32% 0 0);--sidebar-accent-foreground:oklch(88.53% 0 0);--sidebar-border:oklch(32% 0 0);--sidebar-ring:oklch(70.58% 0 0);--font-sans:"Inter Variable", Inter, sans-serif;--font-serif:Georgia, serif;--font-mono:"Fira Code", monospace;--radius:.35rem;--shadow-x:0px;--shadow-y:2px;--shadow-blur:0px;--shadow-spread:0px;--shadow-opacity:.15;--shadow-color:#3333331a;--shadow-2xs:0px 2px 0px 0px #33333312;--shadow-xs:0px 2px 0px 0px #33333312;--shadow-sm:0px 2px 0px 0px #33333326, 0px 1px 2px -1px #33333326;--shadow:0px 2px 0px 0px #33333326, 0px 1px 2px -1px #33333326;--shadow-md:0px 2px 0px 0px #33333326, 0px 2px 4px -1px #33333326;--shadow-lg:0px 2px 0px 0px #33333326, 0px 4px 6px -1px #33333326;--shadow-xl:0px 2px 0px 0px #33333326, 0px 8px 10px -1px #33333326;--shadow-2xl:0px 2px 0px 0px #33333361;--ansi-0:#858585;--ansi-1:#d85e5e;--ansi-2:#0dbc79;--ansi-3:#e5e510;--ansi-4:#3c88dc;--ansi-5:#c85ac8;--ansi-6:#11a8cd;--ansi-7:#e5e5e5;--ansi-8:#9a9a9a;--ansi-9:#ff6f6f;--ansi-10:#23d18b;--ansi-11:#f5f543;--ansi-12:#5aaaf2;--ansi-13:#d670d6;--ansi-14:#29b8db;--ansi-15:#fff;--ansi-bg-fg-0:#000;--ansi-bg-fg-1:#000;--ansi-bg-fg-2:#000;--ansi-bg-fg-3:#000;--ansi-bg-fg-4:#000;--ansi-bg-fg-5:#000;--ansi-bg-fg-6:#000;--ansi-bg-fg-7:#000;--ansi-bg-fg-8:#000;--ansi-bg-fg-9:#000;--ansi-bg-fg-10:#000;--ansi-bg-fg-11:#000;--ansi-bg-fg-12:#000;--ansi-bg-fg-13:#000;--ansi-bg-fg-14:#000;--ansi-bg-fg-15:#000}body.sidebar-resizing [data-sidebar=gap],body.sidebar-resizing [data-sidebar=panel]{transition-duration:0s!important}@keyframes shine{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes typing-dot{0%,80%,to{opacity:.35;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}[data-panel-group]:has([data-resize-handle-active]) [data-panel]{transition-property:opacity}.scroll-bottom-anchor-content *{overflow-anchor:none}.scroll-bottom-anchor-content .scroll-bottom-anchor{overflow-anchor:auto;flex-shrink:0;height:1px}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
@@ -1,4 +1,4 @@
1
- import{$ as e,$n as t,Ar as n,Br as r,Cr as i,Dr as a,Er as o,Et as s,Fr as c,Gr as l,Hr as u,Ir as d,It as ee,Ki as te,Kr as ne,Ln as re,Lr as f,Mn as ie,Mr as p,Nr as ae,Or as m,Pn as oe,Pr as h,Qn as se,Rr as g,Sn as ce,Sr as le,Ur as _,Vi as ue,Vr as v,Wr as de,Y as fe,Z as pe,Zn as me,_i as y,_r as he,ai as b,ar as x,br as ge,cn as _e,er as ve,fr as ye,gr as S,hr as C,ii as w,in as be,ir as xe,jn as Se,jr as T,jt as Ce,mr as we,mt as Te,nr as Ee,on as De,pr as Oe,q as ke,qn as Ae,qt as je,ri as Me,rr as Ne,sn as Pe,tt as Fe,ut as Ie,vi as Le,xr as Re,yr as ze,zr as Be}from"./page-shell-Dglk9LmR.js";import{Y as E}from"./effective-hosts-BWRuszG7.js";import{b as Ve,d as He,v as Ue,x as We,y as D}from"./dialog-CxN4lDeD.js";import{A as Ge,a as Ke,n as qe,o as Je,r as Ye,t as Xe}from"./mutation-cache-effects-BQHFwGL7.js";var O=te(ue(),1),Ze=(0,O.createContext)(void 0);function k(e){let t=(0,O.useContext)(Ze);return e?.store||t||Ve()}var A=e=>typeof e?.then==`function`,j=e=>{e.status||(e.status=`pending`,e.then(t=>{e.status=`fulfilled`,e.value=t},t=>{e.status=`rejected`,e.reason=t}))},Qe=O.use||(e=>{if(e.status===`pending`)throw e;if(e.status===`fulfilled`)return e.value;throw e.status===`rejected`?e.reason:(j(e),e)}),M=new WeakMap,$e=(e,t,n)=>{let r=We(e)[26],i=M.get(t);return i||(i=new Promise((a,o)=>{let s=t,c=e=>t=>{s===e&&a(t)},l=e=>t=>{s===e&&o(t)},u=()=>{try{let t=n();A(t)?(M.set(t,i),s=t,t.then(c(t),l(t)),r(e,t,u)):a(t)}catch(e){o(e)}};t.then(c(t),l(t)),r(e,t,u)}),M.set(t,i)),i};function N(e,t){let{delay:n,unstable_promiseStatus:r=!O.use}=t||{},i=k(t),[[a,o,s],c]=(0,O.useReducer)(t=>{let n=i.get(e);return Object.is(t[0],n)&&t[1]===i&&t[2]===e?t:[n,i,e]},void 0,()=>[i.get(e),i,e]),l=a;if((o!==i||s!==e)&&(c(),l=i.get(e)),(0,O.useEffect)(()=>{let t=i.sub(e,()=>{if(r)try{let t=i.get(e);A(t)&&j($e(i,t,()=>i.get(e)))}catch{}if(typeof n==`number`){console.warn(`[DEPRECATED] delay option is deprecated and will be removed in v3.
1
+ import{$ as e,$n as t,Ar as n,Br as r,Cr as i,Dr as a,Er as o,Et as s,Fr as c,Gr as l,Hr as u,Ir as d,It as ee,Ki as te,Kr as ne,Ln as re,Lr as f,Mn as ie,Mr as p,Nr as ae,Or as m,Pn as oe,Pr as h,Qn as se,Rr as g,Sn as ce,Sr as le,Ur as _,Vi as ue,Vr as v,Wr as de,Y as fe,Z as pe,Zn as me,_i as y,_r as he,ai as b,ar as x,br as ge,cn as _e,er as ve,fr as ye,gr as S,hr as C,ii as w,in as be,ir as xe,jn as Se,jr as T,jt as Ce,mr as we,mt as Te,nr as Ee,on as De,pr as Oe,q as ke,qn as Ae,qt as je,ri as Me,rr as Ne,sn as Pe,tt as Fe,ut as Ie,vi as Le,xr as Re,yr as ze,zr as Be}from"./page-shell-Dglk9LmR.js";import{Y as E}from"./effective-hosts-ps3WYS_d.js";import{b as Ve,d as He,v as Ue,x as We,y as D}from"./dialog-CaQY-B8P.js";import{A as Ge,a as Ke,n as qe,o as Je,r as Ye,t as Xe}from"./mutation-cache-effects-BQHFwGL7.js";var O=te(ue(),1),Ze=(0,O.createContext)(void 0);function k(e){let t=(0,O.useContext)(Ze);return e?.store||t||Ve()}var A=e=>typeof e?.then==`function`,j=e=>{e.status||(e.status=`pending`,e.then(t=>{e.status=`fulfilled`,e.value=t},t=>{e.status=`rejected`,e.reason=t}))},Qe=O.use||(e=>{if(e.status===`pending`)throw e;if(e.status===`fulfilled`)return e.value;throw e.status===`rejected`?e.reason:(j(e),e)}),M=new WeakMap,$e=(e,t,n)=>{let r=We(e)[26],i=M.get(t);return i||(i=new Promise((a,o)=>{let s=t,c=e=>t=>{s===e&&a(t)},l=e=>t=>{s===e&&o(t)},u=()=>{try{let t=n();A(t)?(M.set(t,i),s=t,t.then(c(t),l(t)),r(e,t,u)):a(t)}catch(e){o(e)}};t.then(c(t),l(t)),r(e,t,u)}),M.set(t,i)),i};function N(e,t){let{delay:n,unstable_promiseStatus:r=!O.use}=t||{},i=k(t),[[a,o,s],c]=(0,O.useReducer)(t=>{let n=i.get(e);return Object.is(t[0],n)&&t[1]===i&&t[2]===e?t:[n,i,e]},void 0,()=>[i.get(e),i,e]),l=a;if((o!==i||s!==e)&&(c(),l=i.get(e)),(0,O.useEffect)(()=>{let t=i.sub(e,()=>{if(r)try{let t=i.get(e);A(t)&&j($e(i,t,()=>i.get(e)))}catch{}if(typeof n==`number`){console.warn(`[DEPRECATED] delay option is deprecated and will be removed in v3.
2
2
 
3
3
  Migration guide:
4
4
 
@@ -19,4 +19,4 @@ function useAtomValueWithDelay<Value>(
19
19
  }, [store, atom, delay])
20
20
  return value
21
21
  }
22
- `),setTimeout(c,n);return}c()});return c(),t},[i,e,n,r]),(0,O.useDebugValue)(l),A(l)){let t=$e(i,l,()=>i.get(e));return r&&j(t),Qe(t)}return l}function P(e,t){let n=k(t);return(0,O.useCallback)((...t)=>n.set(e,...t),[n,e])}function F(e,t){return[N(e,t),P(e,t)]}function I(e,t){if(!e)throw Error(`${t}: projectId is required when query is enabled`);return e}function et(t){return b({queryKey:e(),queryFn:()=>Pe(),enabled:t?.enabled??!0,refetchOnMount:!1,staleTime:3e4})}function tt(e){let{threads:t,...n}=e;return n}function nt(){let t=y();return b({queryKey:Fe(),queryFn:async()=>{let n=await _e();t.setQueryData(e(),n.map(tt));for(let e of n)t.setQueryData(Ie({projectId:e.id,archived:!1}),e.threads);return n},staleTime:1/0})}function rt(e,t,n){let r=(n?.enabled??!0)&&!!e&&!!t;return b({queryKey:pe(e??``,t??``),queryFn:()=>je(I(e,`useProjectSourceBranches`),t??``),enabled:r,refetchOnWindowFocus:!1,staleTime:3e4})}function it(e,t){return b({queryKey:fe(e),queryFn:({signal:t})=>De(I(e,`useProjectPromptHistory`),t),enabled:(t?.enabled??!0)&&!!e,staleTime:1e4})}function at(e){let{projectId:t,query:n,limit:r=8,environmentId:i}=e,a=n?.trim()??``;return b({queryKey:ke(t,a,r,i),queryFn:()=>ce({projectId:t??``,query:a,limit:r,environmentId:i}),enabled:!!t&&a.length>0,staleTime:15e3,retry:!1,refetchOnWindowFocus:!1,placeholderData:e=>e})}var ot=l().trim().min(1);function st(e){let t=new URL(e);return t.hostname===`localhost`&&(t.hostname=`127.0.0.1`),t.href.replace(/\/$/u,``)}_({hostId:l().min(1),hostKey:ot,hostType:x,serverUrl:l().trim().url().transform(st)}).strict();var ct=`127.0.0.1`,L=d([`vscode`,`cursor`,`sublime-text`,`zed`,`windsurf`,`antigravity`,`finder`,`terminal`,`iterm2`,`ghostty`,`xcode`]),lt=_({targets:f(_({id:L,kind:d([`editor`,`file-browser`,`terminal`]),label:l().min(1)}))}),ut=l().min(1);_({lineNumber:u().int().positive().nullable(),path:ut,targetId:L}),_({path:l().nullable()}),_({paths:f(l().min(1)).min(1).max(200).transform(e=>Array.from(new Set(e)))}),_({existence:de(l(),g())});var dt=d([`darwin`,`linux`,`wsl`,`unknown`]);_({hostId:l().min(1),connected:g(),protocolVersion:u().int().positive(),serverUrl:l(),supportsNativeFolderPicker:g(),platform:dt}),l().min(1);function ft(e){return Ae(e.replace(/\/$/,``))}var pt=1e4,R=[`thread.start`,`turn.submit`,`thread.stop`,`thread.rename`,`thread.archive`,`thread.unarchive`,`thread.deleted`,`interactive.resolve`,`codex.inference.complete`,`codex.voice.transcribe`,`host.list_files`,`host.list_branches`,`host.read_file`,`provider.list`,`provider.list_models`,`environment.provision`,`environment.destroy`,`workspace.status`,`workspace.diff`,`workspace.commit`,`workspace.squash_merge`,`replay.capture_list`,`replay.capture_get`,`replay.capture_delete`,`replay.run`];d(R);var mt=new Set(R);function ht(e){return mt.has(e)}var gt=c,z=_({workspacePath:l().min(1),workspaceProvisionType:ze}),B=_({environmentId:l().min(1),threadId:l().min(1)}),_t=_({threadId:l().min(1)}),vt=_({workspaceContext:z,projectId:l().min(1),providerId:l().min(1),options:gt,instructions:l().min(1),dynamicTools:f(Re),disallowedTools:f(l()).optional(),instructionMode:ae}),yt=vt.extend({providerThreadId:l().min(1)}).omit({options:!0}),bt=_({environmentId:l().min(1)}),V=bt.extend({workspaceContext:z}),xt=B.extend({workspaceContext:z}),St=B.merge(vt).extend({type:v(`thread.start`),requestId:C,input:f(h).min(1),threadStoragePath:l().min(1).optional()}).strict(),Ct=r(`mode`,[_({mode:v(`start`)}),_({mode:v(`auto`),expectedTurnId:l().min(1).nullable()}),_({mode:v(`steer`),expectedTurnId:l().min(1).nullable()})]),wt=B.extend({type:v(`turn.submit`),requestId:C,input:f(h).min(1),options:gt,resumeContext:yt,target:Ct}).strict(),Tt=B.extend({type:v(`thread.stop`)}),Et=B.extend({type:v(`thread.rename`),title:l().min(1)}),Dt=xt.extend({type:v(`thread.archive`),providerId:l().min(1),providerThreadId:l().min(1)}),Ot=_t.extend({type:v(`thread.unarchive`),providerId:l().min(1),providerThreadId:l().min(1)}),kt=B.extend({type:v(`thread.deleted`)}),At=_({type:v(`replay.capture_list`)}),jt=_({type:v(`replay.capture_get`),captureId:l().min(1)}),Mt=_({type:v(`replay.capture_delete`),captureId:l().min(1)}),Nt=B.extend({type:v(`replay.run`),captureId:l().min(1),requestId:C,speed:t}).strict(),Pt=B.extend({type:v(`interactive.resolve`),interactionId:l().min(1),providerId:l().min(1),providerThreadId:l().min(1),providerRequestId:l().min(1),resolution:a}),Ft=_({type:v(`codex.inference.complete`),model:l().min(1),prompt:l().min(1),outputSchema:we,timeoutMs:u().int().positive()}).strict(),It=_({type:v(`codex.voice.transcribe`),model:l().min(1),audioBase64:l().min(1),mimeType:l().min(1),filename:l().min(1),prompt:l().nullable(),timeoutMs:u().int().positive()}).strict(),Lt=_({type:v(`host.read_file`),path:l().min(1),rootPath:l().min(1).optional(),ref:l().min(1).optional()}).superRefine((e,t)=>{e.ref!==void 0&&e.rootPath===void 0&&t.addIssue({code:`custom`,path:[`rootPath`],message:`rootPath is required when ref is set`})}),Rt=_({type:v(`host.list_files`),path:l().min(1),query:l().max(256).optional(),limit:u().int().positive().max(pt)}),zt=_({type:v(`host.list_branches`),path:l().min(1)}),Bt=_({type:v(`provider.list`)}),Vt=_({type:v(`provider.list_models`),providerId:l().min(1)}),Ht=_({threadId:l().min(1),provisioningId:l().min(1)}).strict(),H=bt.extend({type:v(`environment.provision`),initiator:Ht.nullable()}),Ut=r(`kind`,[_({kind:v(`existing`),name:l().min(1)}),_({kind:v(`new`),name:l().min(1)})]),Wt=H.extend({workspaceProvisionType:v(`unmanaged`),path:l().min(1),checkout:Ut.optional()}),Gt=_({sourcePath:l().min(1),targetPath:l().min(1),branchName:l().min(1),baseBranch:l().min(1).nullable(),setupTimeoutMs:u().int().positive()}),Kt=r(`workspaceProvisionType`,[Wt,H.merge(Gt).extend({workspaceProvisionType:v(`managed-worktree`)})]),qt=ne([r(`type`,[St,wt,Tt,Et,Dt,Ot,kt,At,jt,Mt,Nt,Pt,Ft,It,Rt,zt,Lt,Bt,Vt,V.extend({type:v(`environment.destroy`)}),V.extend({type:v(`workspace.status`),mergeBaseBranch:l().min(1).optional()}),V.extend({type:v(`workspace.diff`),target:Ne,maxDiffBytes:u().int().positive(),maxFileListBytes:u().int().positive()}),V.extend({type:v(`workspace.commit`),message:l().min(1)}),V.extend({type:v(`workspace.squash_merge`),targetBranch:l().min(1),commitMessage:l().min(1)})]),Kt]),Jt=_({path:l(),content:l(),contentEncoding:d([`base64`,`utf8`]),mimeType:l().optional(),sizeBytes:u().int().nonnegative()}),Yt=_({files:f(_({path:l(),name:l()})),truncated:g()}),Xt={"thread.start":_({providerThreadId:l().min(1)}),"turn.submit":_({appliedAs:d([`new-turn`,`steer`])}),"thread.stop":_({}),"thread.rename":_({}),"thread.archive":_({}),"thread.unarchive":_({}),"thread.deleted":_({}),"replay.capture_list":me,"replay.capture_get":se,"replay.capture_delete":_({}),"replay.run":_({}),"interactive.resolve":_({}),"codex.inference.complete":_({model:l().min(1),value:we}),"codex.voice.transcribe":_({model:l().min(1),text:l()}),"host.list_files":Yt,"host.list_branches":_({branches:f(l()),current:l().nullable(),defaultBranch:l().nullable()}),"host.read_file":Jt,"provider.list":_({providers:f(le)}),"provider.list_models":_({models:f(ge),selectedOnlyModels:f(ge)}),"environment.provision":he.extend({transcript:f(Oe)}),"environment.destroy":_({}),"workspace.status":_({workspaceStatus:xe}),"workspace.diff":_({diff:Ee}),"workspace.commit":_({commitSha:l().min(1),commitSubject:l().min(1)}),"workspace.squash_merge":_({merged:g(),commitSha:l().min(1),commitSubject:l().min(1)})},Zt=_({id:l().min(1),cursor:u().int().nonnegative(),command:qt}),U=_({sessionId:l().min(1),commandId:l().min(1),completedAt:u().int().nonnegative()});function Qt(e,t){return[U.extend({type:v(e),ok:v(!0),result:t}),U.extend({type:v(e),ok:v(!1),errorCode:l().min(1),errorMessage:l().min(1)})]}function $t(e){return r(`ok`,Qt(e,Xt[e]))}var en=U.extend({type:l().min(1),ok:v(!1),errorCode:v(`unknown_command`),errorMessage:l().min(1)}),tn=U.extend({type:l().min(1),ok:g()}),nn=new Map(R.map(e=>[e,$t(e)]));Be(e=>{let t=tn.safeParse(e);if(!t.success)return!1;if(!ht(t.data.type))return en.safeParse(e).success;let n=nn.get(t.data.type);return n?n.safeParse(e).success:!1});var W=l().regex(/^\d+$/),rn=_({threadId:l().min(1)}),an=_({environmentId:l().min(1),threadId:l().min(1)});_({hostId:l().min(1),instanceId:l().min(1),hostName:l().min(1),hostType:x,dataDir:l().min(1),protocolVersion:v(17),activeThreads:f(rn)}),_({hostId:l().min(1),hostName:l().min(1),hostType:x}).strict(),_({hostId:l().min(1),hostKey:l().min(1)}).strict(),_({sessionId:l().min(1),heartbeatIntervalMs:u().int().positive(),leaseTimeoutMs:u().int().positive(),trackedThreadTargets:f(an)}).strict(),_({sessionId:l().min(1),limit:W,waitMs:W}),_({sessionId:l().min(1),threadId:l().min(1),projectId:l().min(1),path:l().min(1)}),_({commands:f(Zt)});var on=_({producerEventId:S,threadId:l().min(1),event:ye}).strict();_({sessionId:l().min(1),events:f(on)});var sn=d([`thread_not_owned_by_host`]),cn=_({producerEventId:S,threadId:l().min(1),reason:sn}).strict();_({acceptedEvents:f(_({producerEventId:S,threadId:l().min(1),sequence:u().int().nonnegative()}).strict()),rejectedEvents:f(cn)}).strict(),_({ok:v(!0)}).strict();var ln=d(ve).extract([`work-status-changed`,`git-refs-changed`,`thread-storage-changed`]),un=_({environmentId:l().min(1),change:ln});_({sessionId:l().min(1),...un.shape}),_({bufferDepth:u().int().nonnegative(),lastCommandCursor:u().int().nonnegative().nullable()});var dn=d([`replaced`,`expired`,`daemon-disconnect`]),G=l().min(1),K=l().min(1),fn=d([`user`,`process-exit`,`daemon-disconnect`,`environment-destroyed`,`thread-archived`,`thread-deleted`,`open-timeout`]),pn=_({seq:u().int().nonnegative(),dataBase64:T}).strict(),mn=_({type:v(`terminal.open`),requestId:K,terminalId:G,threadId:l().min(1),environmentId:l().min(1),workspaceContext:z,cols:n,rows:p}).strict(),hn=_({type:v(`terminal.attach`),requestId:K,terminalId:G,sinceSeq:u().int().nonnegative()}).strict(),gn=_({type:v(`terminal.input`),terminalId:G,dataBase64:T}).strict(),_n=_({type:v(`terminal.resize`),terminalId:G,cols:n,rows:p}).strict(),vn=_({type:v(`terminal.close`),terminalId:G,reason:fn}).strict();r(`type`,[_({type:v(`commands-available`)}).strict(),_({type:v(`session-close`),reason:dn}).strict(),mn,hn,gn,_n,vn]),r(`type`,[_({type:v(`heartbeat`)}).strict(),_({type:v(`terminal.opened`),requestId:K,terminalId:G,shell:l().min(1),title:l().min(1),initialCwd:l().min(1),currentCwd:l().min(1).nullable(),cols:n,rows:p}).strict(),_({type:v(`terminal.output`),terminalId:G,chunk:pn}).strict(),_({type:v(`terminal.replay`),requestId:K,terminalId:G,chunks:f(pn),nextSeq:u().int().nonnegative()}).strict(),_({type:v(`terminal.exited`),terminalId:G,exitCode:u().int().nullable(),closeReason:fn}).strict(),_({type:v(`terminal.error`),requestId:K,terminalId:G,code:l().min(1),message:l().min(1)}).strict()]),i.pick({threadId:!0,providerThreadId:!0,turnId:!0,callId:!0,tool:!0,arguments:!0}).extend({sessionId:l().min(1)}),_({sessionId:l().min(1),interaction:o}),r(`outcome`,[_({outcome:v(`created`),interactionId:l().min(1),status:m}),_({outcome:v(`existing`),interactionId:l().min(1),status:m}),_({outcome:v(`rejected`),reason:l().min(1)})]),_({sessionId:l().min(1),providerId:l().min(1),threadIds:f(l().min(1)).min(1),reason:l().min(1)}),_({ok:v(!0),interactionIds:f(l().min(1))});var q=null,yn=null,bn=_({message:l().min(1)});function J(e){return(!q||yn!==e)&&(q=ft(`http://${ct}:${e}`),yn=e),q}async function xn(e){try{let t=await J(e).status.$get();return t.ok?await t.json():null}catch{return null}}async function Sn(e){let t=await J(e)[`workspace-open-targets`].$get(),n=Number(t.status);if(n===404)return[];if(!t.ok)throw Error(`Workspace open target discovery failed: HTTP ${n}`);return lt.parse(await t.json()).targets}async function Cn(e,t){let n=await J(e)[`open-in-target`].$post({json:t});if(!n.ok){let e=Number(n.status);throw Error(await wn(n,`Failed to open target: HTTP ${e}`))}}async function wn(e,t){let n=(await e.text().catch(()=>``)).trim();if(n===``)return t;try{let e=bn.safeParse(JSON.parse(n));if(e.success)return e.data.message}catch{return n}return n}async function Tn(e){let t=await J(e)[`pick-folder`].$post({});return t.ok?(await t.json()).path:null}async function En(e,t){if(t.length===0)return{};let n=await J(e).paths.exist.$post({json:{paths:t}});if(!n.ok)throw Error(`Path existence check failed: HTTP ${n.status}`);return(await n.json()).existence}var Dn=`bb.workspaceOpenTarget`;function On(e){return e.find(e=>e.kind===`editor`)??e[0]??null}function kn(e){return L.safeParse(e).success}var An=Ue(Dn,null,He(kn),{getOnInit:!0});function jn(e){if(e.preferredTargetId!==null){let t=e.targets.find(t=>t.id===e.preferredTargetId);if(t)return t}return On(e.targets)}function Mn(){return F(An)}var Nn={featureFlags:{askUserQuestion:!1,terminals:!1},hostDaemonPort:null,voiceTranscriptionEnabled:!1},Y=null;function Pn(){Y=`failed`}function Fn(){Y=`succeeded`}function In(){return Y===`failed`}async function Ln(){try{let e=await re.system.config.$get();return e.ok?(Fn(),await e.json()):(Pn(),Nn)}catch{return Pn(),Nn}}var Rn=D(0);Rn.onMount=e=>{let t=E.onConnected(({reconnected:t})=>{!t&&!In()||e(e=>e+1)}),n=E.onChanged(t=>{t.entity===`system`&&t.changes.includes(`config-changed`)&&e(e=>e+1)});return()=>{t(),n()}};var X=D(async e=>(e(Rn),Ln())),zn=D(0);zn.onMount=e=>{let t=()=>{e(e=>e+1)},n=E.onConnected(()=>{t()}),r=E.onChanged(e=>{e.entity===`host`&&t()});return()=>{n(),r()}};var Z=D(async e=>{e(zn);let t=await e(X);return t.hostDaemonPort?xn(t.hostDaemonPort):null}),Bn=D(async e=>{let t=await e(Z);return t?.connected?t.hostId:null}),Q=D(async e=>{if(!(await e(Z))?.connected)return[];let t=await e(X);return t.hostDaemonPort?Sn(t.hostDaemonPort):[]});D(async e=>jn({preferredTargetId:e(An),targets:await e(Q)}));var Vn=D(async e=>(await e(X)).hostDaemonPort),Hn=D(async e=>(await e(X)).featureFlags.terminals);function Un(){let e=N(Z),t=N(Bn),n=N(Vn),r=t!=null,i=e?.supportsNativeFolderPicker??!1;return{localHostId:t,hasDaemon:r,supportsNativeFolderPicker:i,platform:e?.platform??null,isLocalHost:(0,O.useCallback)(e=>!t||!e?!1:e===t,[t]),pickFolder:(0,O.useMemo)(()=>{if(!t||!n||!i)return null;let e=n;return()=>Tn(e)},[t,n,i])}}var Wn=[`hireProjectManager`];function Gn(){let e=y();return w({meta:{errorMessage:`Failed to create project.`},mutationFn:e=>Ce(e),onSuccess:()=>{qe({queryClient:e})}})}function Kn(){let e=y();return w({mutationKey:Wn,meta:{errorMessage:`Failed to hire manager.`,showErrorToast:!1},mutationFn:({projectId:e,name:t,providerId:n,model:r,reasoningLevel:i,environment:a})=>be(e,{name:t,...n?{providerId:n}:{},...r?{model:r}:{},...i?{reasoningLevel:i}:{},environment:a}),onSuccess:t=>{e.setQueryData(Te(t.id),t),Ge(e,t),Ye({queryClient:e})}})}function qn(){let e=y();return w({meta:{errorMessage:`Failed to update project.`},mutationFn:({id:e,...t})=>Se(e,t),onSuccess:(t,n)=>{Je({projectId:n.id,queryClient:e})}})}function Jn(){let e=y();return w({meta:{errorMessage:`Failed to remove project.`},mutationFn:e=>ee(e),onSuccess:()=>{Xe({queryClient:e})}})}function Yn(){let e=y();return w({meta:{errorMessage:`Failed to add local source.`},mutationFn:({projectId:e,hostId:t,path:n})=>s(e,{type:`local_path`,hostId:t,path:n}),onSuccess:(t,n)=>{Ke({projectId:n.projectId,queryClient:e})}})}function Xn(){let e=y();return w({meta:{errorMessage:`Failed to update local source.`},mutationFn:({projectId:e,sourceId:t,path:n})=>ie(e,t,{type:`local_path`,path:n}),onSuccess:(t,n)=>{Ke({projectId:n.projectId,queryClient:e})}})}function Zn(){return w({meta:{errorMessage:`Failed to upload attachment.`,showErrorToast:!1},mutationFn:({projectId:e,file:t})=>oe(e,t),retry:!1})}function Qn(){let[e,t]=(0,O.useState)(null),n=(0,O.useCallback)(e=>{t(e)},[]),r=(0,O.useCallback)(()=>{t(null)},[]),i=(0,O.useCallback)(e=>{e||t(null)},[]);return(0,O.useMemo)(()=>({isOpen:e!==null,onClose:r,onOpen:n,onOpenChange:i,setTarget:t,target:e}),[r,n,i,t,e])}var $n=`Laptop`;function er(e){return $n}var $=Le(),tr={primary:`bg-primary/10 text-primary`,muted:`bg-muted text-muted-foreground`};function nr({variant:e,className:t,children:n}){return(0,$.jsx)(`span`,{className:Me(`inline-flex items-center rounded-full px-1.5 py-px text-xs font-medium leading-none`,tr[e],t),children:(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:n})})}function rr(){return(0,$.jsx)(nr,{variant:`primary`,className:`shrink-0`,children:`localhost`})}export{P as A,at as C,nt as D,et as E,F as O,Cn as S,rt as T,Q as _,Qn as a,Mn as b,Gn as c,Xn as d,qn as f,Bn as g,Vn as h,er as i,k as j,N as k,Jn as l,Un as m,nr as n,Wn as o,Zn as p,$n as r,Yn as s,rr as t,Kn as u,Hn as v,it as w,En as x,jn as y};
22
+ `),setTimeout(c,n);return}c()});return c(),t},[i,e,n,r]),(0,O.useDebugValue)(l),A(l)){let t=$e(i,l,()=>i.get(e));return r&&j(t),Qe(t)}return l}function P(e,t){let n=k(t);return(0,O.useCallback)((...t)=>n.set(e,...t),[n,e])}function F(e,t){return[N(e,t),P(e,t)]}function I(e,t){if(!e)throw Error(`${t}: projectId is required when query is enabled`);return e}function et(t){return b({queryKey:e(),queryFn:()=>Pe(),enabled:t?.enabled??!0,refetchOnMount:!1,staleTime:3e4})}function tt(e){let{threads:t,...n}=e;return n}function nt(){let t=y();return b({queryKey:Fe(),queryFn:async()=>{let n=await _e();t.setQueryData(e(),n.map(tt));for(let e of n)t.setQueryData(Ie({projectId:e.id,archived:!1}),e.threads);return n},staleTime:1/0})}function rt(e,t,n){let r=(n?.enabled??!0)&&!!e&&!!t;return b({queryKey:pe(e??``,t??``),queryFn:()=>je(I(e,`useProjectSourceBranches`),t??``),enabled:r,refetchOnWindowFocus:!1,staleTime:3e4})}function it(e,t){return b({queryKey:fe(e),queryFn:({signal:t})=>De(I(e,`useProjectPromptHistory`),t),enabled:(t?.enabled??!0)&&!!e,staleTime:1e4})}function at(e){let{projectId:t,query:n,limit:r=8,environmentId:i}=e,a=n?.trim()??``;return b({queryKey:ke(t,a,r,i),queryFn:()=>ce({projectId:t??``,query:a,limit:r,environmentId:i}),enabled:!!t&&a.length>0,staleTime:15e3,retry:!1,refetchOnWindowFocus:!1,placeholderData:e=>e})}var ot=l().trim().min(1);function st(e){let t=new URL(e);return t.hostname===`localhost`&&(t.hostname=`127.0.0.1`),t.href.replace(/\/$/u,``)}_({hostId:l().min(1),hostKey:ot,hostType:x,serverUrl:l().trim().url().transform(st)}).strict();var ct=`127.0.0.1`,L=d([`vscode`,`cursor`,`sublime-text`,`zed`,`windsurf`,`antigravity`,`finder`,`terminal`,`iterm2`,`ghostty`,`xcode`]),lt=_({targets:f(_({id:L,kind:d([`editor`,`file-browser`,`terminal`]),label:l().min(1)}))}),ut=l().min(1);_({lineNumber:u().int().positive().nullable(),path:ut,targetId:L}),_({path:l().nullable()}),_({paths:f(l().min(1)).min(1).max(200).transform(e=>Array.from(new Set(e)))}),_({existence:de(l(),g())});var dt=d([`darwin`,`linux`,`wsl`,`unknown`]);_({hostId:l().min(1),connected:g(),protocolVersion:u().int().positive(),serverUrl:l(),supportsNativeFolderPicker:g(),platform:dt}),l().min(1);function ft(e){return Ae(e.replace(/\/$/,``))}var pt=1e4,R=[`thread.start`,`turn.submit`,`thread.stop`,`thread.rename`,`thread.archive`,`thread.unarchive`,`thread.deleted`,`interactive.resolve`,`codex.inference.complete`,`codex.voice.transcribe`,`host.list_files`,`host.list_branches`,`host.read_file`,`provider.list`,`provider.list_models`,`environment.provision`,`environment.destroy`,`workspace.status`,`workspace.diff`,`workspace.commit`,`workspace.squash_merge`,`replay.capture_list`,`replay.capture_get`,`replay.capture_delete`,`replay.run`];d(R);var mt=new Set(R);function ht(e){return mt.has(e)}var gt=c,z=_({workspacePath:l().min(1),workspaceProvisionType:ze}),B=_({environmentId:l().min(1),threadId:l().min(1)}),_t=_({threadId:l().min(1)}),vt=_({workspaceContext:z,projectId:l().min(1),providerId:l().min(1),options:gt,instructions:l().min(1),dynamicTools:f(Re),disallowedTools:f(l()).optional(),instructionMode:ae}),yt=vt.extend({providerThreadId:l().min(1)}).omit({options:!0}),bt=_({environmentId:l().min(1)}),V=bt.extend({workspaceContext:z}),xt=B.extend({workspaceContext:z}),St=B.merge(vt).extend({type:v(`thread.start`),requestId:C,input:f(h).min(1),threadStoragePath:l().min(1).optional()}).strict(),Ct=r(`mode`,[_({mode:v(`start`)}),_({mode:v(`auto`),expectedTurnId:l().min(1).nullable()}),_({mode:v(`steer`),expectedTurnId:l().min(1).nullable()})]),wt=B.extend({type:v(`turn.submit`),requestId:C,input:f(h).min(1),options:gt,resumeContext:yt,target:Ct}).strict(),Tt=B.extend({type:v(`thread.stop`)}),Et=B.extend({type:v(`thread.rename`),title:l().min(1)}),Dt=xt.extend({type:v(`thread.archive`),providerId:l().min(1),providerThreadId:l().min(1)}),Ot=_t.extend({type:v(`thread.unarchive`),providerId:l().min(1),providerThreadId:l().min(1)}),kt=B.extend({type:v(`thread.deleted`)}),At=_({type:v(`replay.capture_list`)}),jt=_({type:v(`replay.capture_get`),captureId:l().min(1)}),Mt=_({type:v(`replay.capture_delete`),captureId:l().min(1)}),Nt=B.extend({type:v(`replay.run`),captureId:l().min(1),requestId:C,speed:t}).strict(),Pt=B.extend({type:v(`interactive.resolve`),interactionId:l().min(1),providerId:l().min(1),providerThreadId:l().min(1),providerRequestId:l().min(1),resolution:a}),Ft=_({type:v(`codex.inference.complete`),model:l().min(1),prompt:l().min(1),outputSchema:we,timeoutMs:u().int().positive()}).strict(),It=_({type:v(`codex.voice.transcribe`),model:l().min(1),audioBase64:l().min(1),mimeType:l().min(1),filename:l().min(1),prompt:l().nullable(),timeoutMs:u().int().positive()}).strict(),Lt=_({type:v(`host.read_file`),path:l().min(1),rootPath:l().min(1).optional(),ref:l().min(1).optional()}).superRefine((e,t)=>{e.ref!==void 0&&e.rootPath===void 0&&t.addIssue({code:`custom`,path:[`rootPath`],message:`rootPath is required when ref is set`})}),Rt=_({type:v(`host.list_files`),path:l().min(1),query:l().max(256).optional(),limit:u().int().positive().max(pt)}),zt=_({type:v(`host.list_branches`),path:l().min(1)}),Bt=_({type:v(`provider.list`)}),Vt=_({type:v(`provider.list_models`),providerId:l().min(1)}),Ht=_({threadId:l().min(1),provisioningId:l().min(1)}).strict(),H=bt.extend({type:v(`environment.provision`),initiator:Ht.nullable()}),Ut=r(`kind`,[_({kind:v(`existing`),name:l().min(1)}),_({kind:v(`new`),name:l().min(1)})]),Wt=H.extend({workspaceProvisionType:v(`unmanaged`),path:l().min(1),checkout:Ut.optional()}),Gt=_({sourcePath:l().min(1),targetPath:l().min(1),branchName:l().min(1),baseBranch:l().min(1).nullable(),setupTimeoutMs:u().int().positive()}),Kt=r(`workspaceProvisionType`,[Wt,H.merge(Gt).extend({workspaceProvisionType:v(`managed-worktree`)})]),qt=ne([r(`type`,[St,wt,Tt,Et,Dt,Ot,kt,At,jt,Mt,Nt,Pt,Ft,It,Rt,zt,Lt,Bt,Vt,V.extend({type:v(`environment.destroy`)}),V.extend({type:v(`workspace.status`),mergeBaseBranch:l().min(1).optional()}),V.extend({type:v(`workspace.diff`),target:Ne,maxDiffBytes:u().int().positive(),maxFileListBytes:u().int().positive()}),V.extend({type:v(`workspace.commit`),message:l().min(1)}),V.extend({type:v(`workspace.squash_merge`),targetBranch:l().min(1),commitMessage:l().min(1)})]),Kt]),Jt=_({path:l(),content:l(),contentEncoding:d([`base64`,`utf8`]),mimeType:l().optional(),sizeBytes:u().int().nonnegative()}),Yt=_({files:f(_({path:l(),name:l()})),truncated:g()}),Xt={"thread.start":_({providerThreadId:l().min(1)}),"turn.submit":_({appliedAs:d([`new-turn`,`steer`])}),"thread.stop":_({}),"thread.rename":_({}),"thread.archive":_({}),"thread.unarchive":_({}),"thread.deleted":_({}),"replay.capture_list":me,"replay.capture_get":se,"replay.capture_delete":_({}),"replay.run":_({}),"interactive.resolve":_({}),"codex.inference.complete":_({model:l().min(1),value:we}),"codex.voice.transcribe":_({model:l().min(1),text:l()}),"host.list_files":Yt,"host.list_branches":_({branches:f(l()),current:l().nullable(),defaultBranch:l().nullable()}),"host.read_file":Jt,"provider.list":_({providers:f(le)}),"provider.list_models":_({models:f(ge),selectedOnlyModels:f(ge)}),"environment.provision":he.extend({transcript:f(Oe)}),"environment.destroy":_({}),"workspace.status":_({workspaceStatus:xe}),"workspace.diff":_({diff:Ee}),"workspace.commit":_({commitSha:l().min(1),commitSubject:l().min(1)}),"workspace.squash_merge":_({merged:g(),commitSha:l().min(1),commitSubject:l().min(1)})},Zt=_({id:l().min(1),cursor:u().int().nonnegative(),command:qt}),U=_({sessionId:l().min(1),commandId:l().min(1),completedAt:u().int().nonnegative()});function Qt(e,t){return[U.extend({type:v(e),ok:v(!0),result:t}),U.extend({type:v(e),ok:v(!1),errorCode:l().min(1),errorMessage:l().min(1)})]}function $t(e){return r(`ok`,Qt(e,Xt[e]))}var en=U.extend({type:l().min(1),ok:v(!1),errorCode:v(`unknown_command`),errorMessage:l().min(1)}),tn=U.extend({type:l().min(1),ok:g()}),nn=new Map(R.map(e=>[e,$t(e)]));Be(e=>{let t=tn.safeParse(e);if(!t.success)return!1;if(!ht(t.data.type))return en.safeParse(e).success;let n=nn.get(t.data.type);return n?n.safeParse(e).success:!1});var W=l().regex(/^\d+$/),rn=_({threadId:l().min(1)}),an=_({environmentId:l().min(1),threadId:l().min(1)});_({hostId:l().min(1),instanceId:l().min(1),hostName:l().min(1),hostType:x,dataDir:l().min(1),protocolVersion:v(17),activeThreads:f(rn)}),_({hostId:l().min(1),hostName:l().min(1),hostType:x}).strict(),_({hostId:l().min(1),hostKey:l().min(1)}).strict(),_({sessionId:l().min(1),heartbeatIntervalMs:u().int().positive(),leaseTimeoutMs:u().int().positive(),trackedThreadTargets:f(an)}).strict(),_({sessionId:l().min(1),limit:W,waitMs:W}),_({sessionId:l().min(1),threadId:l().min(1),projectId:l().min(1),path:l().min(1)}),_({commands:f(Zt)});var on=_({producerEventId:S,threadId:l().min(1),event:ye}).strict();_({sessionId:l().min(1),events:f(on)});var sn=d([`thread_not_owned_by_host`]),cn=_({producerEventId:S,threadId:l().min(1),reason:sn}).strict();_({acceptedEvents:f(_({producerEventId:S,threadId:l().min(1),sequence:u().int().nonnegative()}).strict()),rejectedEvents:f(cn)}).strict(),_({ok:v(!0)}).strict();var ln=d(ve).extract([`work-status-changed`,`git-refs-changed`,`thread-storage-changed`]),un=_({environmentId:l().min(1),change:ln});_({sessionId:l().min(1),...un.shape}),_({bufferDepth:u().int().nonnegative(),lastCommandCursor:u().int().nonnegative().nullable()});var dn=d([`replaced`,`expired`,`daemon-disconnect`]),G=l().min(1),K=l().min(1),fn=d([`user`,`process-exit`,`daemon-disconnect`,`environment-destroyed`,`thread-archived`,`thread-deleted`,`open-timeout`]),pn=_({seq:u().int().nonnegative(),dataBase64:T}).strict(),mn=_({type:v(`terminal.open`),requestId:K,terminalId:G,threadId:l().min(1),environmentId:l().min(1),workspaceContext:z,cols:n,rows:p}).strict(),hn=_({type:v(`terminal.attach`),requestId:K,terminalId:G,sinceSeq:u().int().nonnegative()}).strict(),gn=_({type:v(`terminal.input`),terminalId:G,dataBase64:T}).strict(),_n=_({type:v(`terminal.resize`),terminalId:G,cols:n,rows:p}).strict(),vn=_({type:v(`terminal.close`),terminalId:G,reason:fn}).strict();r(`type`,[_({type:v(`commands-available`)}).strict(),_({type:v(`session-close`),reason:dn}).strict(),mn,hn,gn,_n,vn]),r(`type`,[_({type:v(`heartbeat`)}).strict(),_({type:v(`terminal.opened`),requestId:K,terminalId:G,shell:l().min(1),title:l().min(1),initialCwd:l().min(1),currentCwd:l().min(1).nullable(),cols:n,rows:p}).strict(),_({type:v(`terminal.output`),terminalId:G,chunk:pn}).strict(),_({type:v(`terminal.replay`),requestId:K,terminalId:G,chunks:f(pn),nextSeq:u().int().nonnegative()}).strict(),_({type:v(`terminal.exited`),terminalId:G,exitCode:u().int().nullable(),closeReason:fn}).strict(),_({type:v(`terminal.error`),requestId:K,terminalId:G,code:l().min(1),message:l().min(1)}).strict()]),i.pick({threadId:!0,providerThreadId:!0,turnId:!0,callId:!0,tool:!0,arguments:!0}).extend({sessionId:l().min(1)}),_({sessionId:l().min(1),interaction:o}),r(`outcome`,[_({outcome:v(`created`),interactionId:l().min(1),status:m}),_({outcome:v(`existing`),interactionId:l().min(1),status:m}),_({outcome:v(`rejected`),reason:l().min(1)})]),_({sessionId:l().min(1),providerId:l().min(1),threadIds:f(l().min(1)).min(1),reason:l().min(1)}),_({ok:v(!0),interactionIds:f(l().min(1))});var q=null,yn=null,bn=_({message:l().min(1)});function J(e){return(!q||yn!==e)&&(q=ft(`http://${ct}:${e}`),yn=e),q}async function xn(e){try{let t=await J(e).status.$get();return t.ok?await t.json():null}catch{return null}}async function Sn(e){let t=await J(e)[`workspace-open-targets`].$get(),n=Number(t.status);if(n===404)return[];if(!t.ok)throw Error(`Workspace open target discovery failed: HTTP ${n}`);return lt.parse(await t.json()).targets}async function Cn(e,t){let n=await J(e)[`open-in-target`].$post({json:t});if(!n.ok){let e=Number(n.status);throw Error(await wn(n,`Failed to open target: HTTP ${e}`))}}async function wn(e,t){let n=(await e.text().catch(()=>``)).trim();if(n===``)return t;try{let e=bn.safeParse(JSON.parse(n));if(e.success)return e.data.message}catch{return n}return n}async function Tn(e){let t=await J(e)[`pick-folder`].$post({});return t.ok?(await t.json()).path:null}async function En(e,t){if(t.length===0)return{};let n=await J(e).paths.exist.$post({json:{paths:t}});if(!n.ok)throw Error(`Path existence check failed: HTTP ${n.status}`);return(await n.json()).existence}var Dn=`bb.workspaceOpenTarget`;function On(e){return e.find(e=>e.kind===`editor`)??e[0]??null}function kn(e){return L.safeParse(e).success}var An=Ue(Dn,null,He(kn),{getOnInit:!0});function jn(e){if(e.preferredTargetId!==null){let t=e.targets.find(t=>t.id===e.preferredTargetId);if(t)return t}return On(e.targets)}function Mn(){return F(An)}var Nn={featureFlags:{askUserQuestion:!1,terminals:!1},hostDaemonPort:null,voiceTranscriptionEnabled:!1},Y=null;function Pn(){Y=`failed`}function Fn(){Y=`succeeded`}function In(){return Y===`failed`}async function Ln(){try{let e=await re.system.config.$get();return e.ok?(Fn(),await e.json()):(Pn(),Nn)}catch{return Pn(),Nn}}var Rn=D(0);Rn.onMount=e=>{let t=E.onConnected(({reconnected:t})=>{!t&&!In()||e(e=>e+1)}),n=E.onChanged(t=>{t.entity===`system`&&t.changes.includes(`config-changed`)&&e(e=>e+1)});return()=>{t(),n()}};var X=D(async e=>(e(Rn),Ln())),zn=D(0);zn.onMount=e=>{let t=()=>{e(e=>e+1)},n=E.onConnected(()=>{t()}),r=E.onChanged(e=>{e.entity===`host`&&t()});return()=>{n(),r()}};var Z=D(async e=>{e(zn);let t=await e(X);return t.hostDaemonPort?xn(t.hostDaemonPort):null}),Bn=D(async e=>{let t=await e(Z);return t?.connected?t.hostId:null}),Q=D(async e=>{if(!(await e(Z))?.connected)return[];let t=await e(X);return t.hostDaemonPort?Sn(t.hostDaemonPort):[]});D(async e=>jn({preferredTargetId:e(An),targets:await e(Q)}));var Vn=D(async e=>(await e(X)).hostDaemonPort),Hn=D(async e=>(await e(X)).featureFlags.terminals);function Un(){let e=N(Z),t=N(Bn),n=N(Vn),r=t!=null,i=e?.supportsNativeFolderPicker??!1;return{localHostId:t,hasDaemon:r,supportsNativeFolderPicker:i,platform:e?.platform??null,isLocalHost:(0,O.useCallback)(e=>!t||!e?!1:e===t,[t]),pickFolder:(0,O.useMemo)(()=>{if(!t||!n||!i)return null;let e=n;return()=>Tn(e)},[t,n,i])}}var Wn=[`hireProjectManager`];function Gn(){let e=y();return w({meta:{errorMessage:`Failed to create project.`},mutationFn:e=>Ce(e),onSuccess:()=>{qe({queryClient:e})}})}function Kn(){let e=y();return w({mutationKey:Wn,meta:{errorMessage:`Failed to hire manager.`,showErrorToast:!1},mutationFn:({projectId:e,name:t,providerId:n,model:r,reasoningLevel:i,environment:a})=>be(e,{name:t,...n?{providerId:n}:{},...r?{model:r}:{},...i?{reasoningLevel:i}:{},environment:a}),onSuccess:t=>{e.setQueryData(Te(t.id),t),Ge(e,t),Ye({queryClient:e})}})}function qn(){let e=y();return w({meta:{errorMessage:`Failed to update project.`},mutationFn:({id:e,...t})=>Se(e,t),onSuccess:(t,n)=>{Je({projectId:n.id,queryClient:e})}})}function Jn(){let e=y();return w({meta:{errorMessage:`Failed to remove project.`},mutationFn:e=>ee(e),onSuccess:()=>{Xe({queryClient:e})}})}function Yn(){let e=y();return w({meta:{errorMessage:`Failed to add local source.`},mutationFn:({projectId:e,hostId:t,path:n})=>s(e,{type:`local_path`,hostId:t,path:n}),onSuccess:(t,n)=>{Ke({projectId:n.projectId,queryClient:e})}})}function Xn(){let e=y();return w({meta:{errorMessage:`Failed to update local source.`},mutationFn:({projectId:e,sourceId:t,path:n})=>ie(e,t,{type:`local_path`,path:n}),onSuccess:(t,n)=>{Ke({projectId:n.projectId,queryClient:e})}})}function Zn(){return w({meta:{errorMessage:`Failed to upload attachment.`,showErrorToast:!1},mutationFn:({projectId:e,file:t})=>oe(e,t),retry:!1})}function Qn(){let[e,t]=(0,O.useState)(null),n=(0,O.useCallback)(e=>{t(e)},[]),r=(0,O.useCallback)(()=>{t(null)},[]),i=(0,O.useCallback)(e=>{e||t(null)},[]);return(0,O.useMemo)(()=>({isOpen:e!==null,onClose:r,onOpen:n,onOpenChange:i,setTarget:t,target:e}),[r,n,i,t,e])}var $n=`Laptop`;function er(e){return $n}var $=Le(),tr={primary:`bg-surface-selected text-primary`,muted:`bg-muted text-muted-foreground`};function nr({variant:e,className:t,children:n}){return(0,$.jsx)(`span`,{className:Me(`inline-flex items-center rounded-full px-1.5 py-px text-xs font-medium leading-none`,tr[e],t),children:(0,$.jsx)(`span`,{className:`min-w-0 truncate`,children:n})})}function rr(){return(0,$.jsx)(nr,{variant:`primary`,className:`shrink-0`,children:`localhost`})}export{P as A,at as C,nt as D,et as E,F as O,Cn as S,rt as T,Q as _,Qn as a,Mn as b,Gn as c,Xn as d,qn as f,Bn as g,Vn as h,er as i,k as j,N as k,Jn as l,Un as m,nr as n,Wn as o,Zn as p,$n as r,Yn as s,rr as t,Kn as u,Hn as v,it as w,En as x,jn as y};
@@ -1,3 +1,3 @@
1
1
  import{Ki as e,Vi as t,ri as n,vi as r}from"./page-shell-Dglk9LmR.js";var i=e(t(),1),a=`modulepreload`,o=function(e){return`/`+e},s={},c=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),c=i?.nonce||i?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=l(t.map(t=>{if(t=o(t,n),t in s)return;s[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let l=document.createElement(`link`);if(l.rel=r?`stylesheet`:a,r||(l.as=`script`),l.crossOrigin=``,l.href=t,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),r)return new Promise((e,n)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},l=`popstate`;function u(e={}){function t(e,t){let{pathname:n,search:r,hash:i}=e.location;return h(``,{pathname:n,search:r,hash:i},t.state&&t.state.usr||null,t.state&&t.state.key||`default`)}function n(e,t){return typeof t==`string`?t:g(t)}return v(t,n,null,e)}function d(e,t){if(e===!1||e==null)throw Error(t)}function f(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function p(){return Math.random().toString(36).substring(2,10)}function m(e,t){return{usr:e.state,key:e.key,idx:t}}function h(e,t,n=null,r){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?_(t):t,state:n,key:t&&t.key||r||p()}}function g({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function _(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function v(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,u=d();u??(u=0,o.replaceState({...o.state,idx:u},``));function d(){return(o.state||{idx:null}).idx}function f(){s=`POP`;let e=d(),t=e==null?null:e-u;u=e,c&&c({action:s,location:v.location,delta:t})}function p(e,t){s=`PUSH`;let r=h(v.location,e,t);n&&n(r,e),u=d()+1;let l=m(r,u),f=v.createHref(r);try{o.pushState(l,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:v.location,delta:1})}function g(e,t){s=`REPLACE`;let r=h(v.location,e,t);n&&n(r,e),u=d();let i=m(r,u),l=v.createHref(r);o.replaceState(i,``,l),a&&c&&c({action:s,location:v.location,delta:0})}function _(e){return y(e)}let v={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(l,f),c=e,()=>{i.removeEventListener(l,f),c=null}},createHref(e){return t(i,e)},createURL:_,encodeLocation(e){let t=_(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:p,replace:g,go(e){return o.go(e)}};return v}function y(e,t=!1){let n=`http://localhost`;typeof window<`u`&&(n=window.location.origin===`null`?window.location.href:window.location.origin),d(n,`No window.location.(origin|href) available to create URL`);let r=typeof e==`string`?e:g(e);return r=r.replace(/ $/,`%20`),!t&&r.startsWith(`//`)&&(r=n+r),new URL(r,n)}function b(e,t,n=`/`){return x(e,t,n,!1)}function x(e,t,n,r){let i=D((typeof t==`string`?_(t):t).pathname||`/`,n);if(i==null)return null;let a=C(e);T(a);let o=null;for(let e=0;o==null&&e<a.length;++e){let t=de(i);o=le(a[e],t,r)}return o}function S(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function C(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;d(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=A([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(d(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),C(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:se(l,e.index),routesMeta:u})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of w(e.path))a(e,t,!0,n)}),t}function w(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=w(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function T(e){e.sort((e,t)=>e.score===t.score?ce(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var ee=/^:[\w-]+$/,te=3,ne=2,re=1,ie=10,ae=-2,oe=e=>e===`*`;function se(e,t){let n=e.split(`/`),r=n.length;return n.some(oe)&&(r+=ae),t&&(r+=ne),n.filter(e=>!oe(e)).reduce((e,t)=>e+(ee.test(t)?te:t===``?re:ie),r)}function ce(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function le(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u=E({path:s.relativePath,caseSensitive:s.caseSensitive,end:c},l),d=s.route;if(!u&&c&&n&&!r[r.length-1].route.index&&(u=E({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!u)return null;Object.assign(i,u.params),o.push({params:i,pathname:A([a,u.pathname]),pathnameBase:_e(A([a,u.pathnameBase])),route:d}),u.pathnameBase!==`/`&&(a=A([a,u.pathnameBase]))}return o}function E(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=ue(e.path,e.caseSensitive,e.end),i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function ue(e,t=!1,n=!0){f(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n)=>(r.push({paramName:t,isOptional:n!=null}),n?`/?([^\\/]+)?`:`/([^\\/]+)`)).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function de(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return f(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function D(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}var fe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function pe(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?_(e):e,a;return n?(n=n.replace(/\/\/+/g,`/`),a=n.startsWith(`/`)?me(n.substring(1),`/`):me(n,t)):a=t,{pathname:a,search:ve(r),hash:ye(i)}}function me(e,t){let n=t.replace(/\/+$/,``).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function O(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function he(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function ge(e){let t=he(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function k(e,t,n,r=!1){let i;typeof e==`string`?i=_(e):(i={...e},d(!i.pathname||!i.pathname.includes(`?`),O(`?`,`pathname`,`search`,i)),d(!i.pathname||!i.pathname.includes(`#`),O(`#`,`pathname`,`hash`,i)),d(!i.search||!i.search.includes(`#`),O(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=pe(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var A=e=>e.join(`/`).replace(/\/\/+/g,`/`),_e=e=>e.replace(/\/+$/,``).replace(/^\/*/,`/`),ve=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,ye=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,be=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function xe(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Se(e){return e.map(e=>e.route.path).filter(Boolean).join(`/`).replace(/\/\/*/g,`/`)||`/`}var Ce=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function we(e,t){let n=e;if(typeof n!=`string`||!fe.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(Ce)try{let e=new URL(window.location.href),r=n.startsWith(`//`)?new URL(e.protocol+n):new URL(n),a=D(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{f(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Te=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Te);var Ee=[`GET`,...Te];new Set(Ee);var j=i.createContext(null);j.displayName=`DataRouter`;var M=i.createContext(null);M.displayName=`DataRouterState`;var De=i.createContext(!1),Oe=i.createContext({isTransitioning:!1});Oe.displayName=`ViewTransition`;var ke=i.createContext(new Map);ke.displayName=`Fetchers`;var Ae=i.createContext(null);Ae.displayName=`Await`;var N=i.createContext(null);N.displayName=`Navigation`;var P=i.createContext(null);P.displayName=`Location`;var F=i.createContext({outlet:null,matches:[],isDataRoute:!1});F.displayName=`Route`;var I=i.createContext(null);I.displayName=`RouteError`;var je=`REACT_ROUTER_ERROR`,Me=`REDIRECT`,Ne=`ROUTE_ERROR_RESPONSE`;function Pe(e){if(e.startsWith(`${je}:${Me}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Fe(e){if(e.startsWith(`${je}:${Ne}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new be(t.status,t.statusText,t.data)}catch{}}function Ie(e,{relative:t}={}){d(L(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=i.useContext(N),{hash:a,pathname:o,search:s}=B(e,{relative:t}),c=o;return n!==`/`&&(c=o===`/`?n:A([n,o])),r.createHref({pathname:c,search:s,hash:a})}function L(){return i.useContext(P)!=null}function R(){return d(L(),`useLocation() may be used only in the context of a <Router> component.`),i.useContext(P).location}function Le(e){d(L(),`useMatch() may be used only in the context of a <Router> component.`);let{pathname:t}=R();return i.useMemo(()=>E(e,de(t)),[t,e])}var Re=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function ze(e){i.useContext(N).static||i.useLayoutEffect(e)}function z(){let{isDataRoute:e}=i.useContext(F);return e?nt():Be()}function Be(){d(L(),`useNavigate() may be used only in the context of a <Router> component.`);let e=i.useContext(j),{basename:t,navigator:n}=i.useContext(N),{matches:r}=i.useContext(F),{pathname:a}=R(),o=JSON.stringify(ge(r)),s=i.useRef(!1);return ze(()=>{s.current=!0}),i.useCallback((r,i={})=>{if(f(s.current,Re),!s.current)return;if(typeof r==`number`){n.go(r);return}let c=k(r,JSON.parse(o),a,i.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:A([t,c.pathname])),(i.replace?n.replace:n.push)(c,i.state,i)},[t,n,o,a,e])}i.createContext(null);function Ve(){let{matches:e}=i.useContext(F),t=e[e.length-1];return t?t.params:{}}function B(e,{relative:t}={}){let{matches:n}=i.useContext(F),{pathname:r}=R(),a=JSON.stringify(ge(n));return i.useMemo(()=>k(e,JSON.parse(a),r,t===`path`),[e,a,r,t])}function He(e,t){return Ue(e,t)}function Ue(e,t,n,r,a){d(L(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:o}=i.useContext(N),{matches:s}=i.useContext(F),c=s[s.length-1],l=c?c.params:{},u=c?c.pathname:`/`,p=c?c.pathnameBase:`/`,m=c&&c.route;{let e=m&&m.path||``;it(u,!m||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${u}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
2
2
 
3
- Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let h=R(),g;if(t){let e=typeof t==`string`?_(t):t;d(p===`/`||e.pathname?.startsWith(p),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${p}" but pathname "${e.pathname}" was given in the \`location\` prop.`),g=e}else g=h;let v=g.pathname||`/`,y=v;if(p!==`/`){let e=p.replace(/^\//,``).split(`/`);y=`/`+v.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let x=b(e,{pathname:y});f(m||x!=null,`No routes matched location "${g.pathname}${g.search}${g.hash}" `),f(x==null||x[x.length-1].route.element!==void 0||x[x.length-1].route.Component!==void 0||x[x.length-1].route.lazy!==void 0,`Matched leaf route at location "${g.pathname}${g.search}${g.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let S=Ye(x&&x.map(e=>Object.assign({},e,{params:Object.assign({},l,e.params),pathname:A([p,o.encodeLocation?o.encodeLocation(e.pathname.replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?p:A([p,o.encodeLocation?o.encodeLocation(e.pathnameBase.replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),s,n,r,a);return t&&S?i.createElement(P.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,...g},navigationType:`POP`}},S):S}function We(){let e=tt(),t=xe(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,a={padding:`0.5rem`,backgroundColor:r},o={padding:`2px 4px`,backgroundColor:r},s=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),s=i.createElement(i.Fragment,null,i.createElement(`p`,null,`💿 Hey developer 👋`),i.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,i.createElement(`code`,{style:o},`ErrorBoundary`),` or`,` `,i.createElement(`code`,{style:o},`errorElement`),` prop on your route.`)),i.createElement(i.Fragment,null,i.createElement(`h2`,null,`Unexpected Application Error!`),i.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?i.createElement(`pre`,{style:a},n):null,s)}var Ge=i.createElement(We,null),Ke=class extends i.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Fe(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:i.createElement(F.Provider,{value:this.props.routeContext},i.createElement(I.Provider,{value:e,children:this.props.component}));return this.context?i.createElement(qe,{error:e},t):t}};Ke.contextType=De;var V=new WeakMap;function qe({children:e,error:t}){let{basename:n}=i.useContext(N);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Pe(t.digest);if(e){let r=V.get(t);if(r)throw r;let a=we(e.location,n);if(Ce&&!V.get(t))if(a.isExternal||e.reloadDocument)window.location.href=a.absoluteURL||a.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:e.replace}));throw V.set(t,n),n}return i.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${a.absoluteURL||a.to}`})}}return e}function Je({routeContext:e,match:t,children:n}){let r=i.useContext(j);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),i.createElement(F.Provider,{value:e},n)}function Ye(e,t=[],n=null,r=null,a=null){if(e==null){if(!n)return null;if(n.errors)e=n.matches;else if(t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let o=e,s=n?.errors;if(s!=null){let e=o.findIndex(e=>e.route.id&&s?.[e.route.id]!==void 0);d(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(`,`)}`),o=o.slice(0,Math.min(o.length,e+1))}let c=!1,l=-1;if(n)for(let e=0;e<o.length;e++){let t=o[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(l=e),t.route.id){let{loaderData:e,errors:r}=n,i=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!r||r[t.route.id]===void 0);if(t.route.lazy||i){c=!0,o=l>=0?o.slice(0,l+1):[o[0]];break}}}let u=n&&r?(e,t)=>{r(e,{location:n.location,params:n.matches?.[0]?.params??{},unstable_pattern:Se(n.matches),errorInfo:t})}:void 0;return o.reduceRight((e,r,a)=>{let d,f=!1,p=null,m=null;n&&(d=s&&r.route.id?s[r.route.id]:void 0,p=r.route.errorElement||Ge,c&&(l<0&&a===0?(it(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),f=!0,m=null):l===a&&(f=!0,m=r.route.hydrateFallbackElement||null)));let h=t.concat(o.slice(0,a+1)),g=()=>{let t;return t=d?p:f?m:r.route.Component?i.createElement(r.route.Component,null):r.route.element?r.route.element:e,i.createElement(Je,{match:r,routeContext:{outlet:e,matches:h,isDataRoute:n!=null},children:t})};return n&&(r.route.ErrorBoundary||r.route.errorElement||a===0)?i.createElement(Ke,{location:n.location,revalidation:n.revalidation,component:p,error:d,children:g(),routeContext:{outlet:null,matches:h,isDataRoute:!0},onError:u}):g()},null)}function H(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Xe(e){let t=i.useContext(j);return d(t,H(e)),t}function U(e){let t=i.useContext(M);return d(t,H(e)),t}function Ze(e){let t=i.useContext(F);return d(t,H(e)),t}function W(e){let t=Ze(e),n=t.matches[t.matches.length-1];return d(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Qe(){return W(`useRouteId`)}function $e(){return U(`useNavigation`).navigation}function et(){let{matches:e,loaderData:t}=U(`useMatches`);return i.useMemo(()=>e.map(e=>S(e,t)),[e,t])}function tt(){let e=i.useContext(I),t=U(`useRouteError`),n=W(`useRouteError`);return e===void 0?t.errors?.[n]:e}function nt(){let{router:e}=Xe(`useNavigate`),t=W(`useNavigate`),n=i.useRef(!1);return ze(()=>{n.current=!0}),i.useCallback(async(r,i={})=>{f(n.current,Re),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var rt={};function it(e,t,n){!t&&!rt[e]&&(rt[e]=!0,f(!1,n))}i.memo(at);function at({routes:e,future:t,state:n,onError:r}){return Ue(e,void 0,n,r,t)}function ot({to:e,replace:t,state:n,relative:r}){d(L(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:a}=i.useContext(N);f(!a,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:o}=i.useContext(F),{pathname:s}=R(),c=z(),l=k(e,ge(o),s,r===`path`),u=JSON.stringify(l);return i.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function st(e){d(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function ct({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:a,static:o=!1,unstable_useTransitions:s}){d(!L(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let c=e.replace(/^\/*/,`/`),l=i.useMemo(()=>({basename:c,navigator:a,static:o,unstable_useTransitions:s,future:{}}),[c,a,o,s]);typeof n==`string`&&(n=_(n));let{pathname:u=`/`,search:p=``,hash:m=``,state:h=null,key:g=`default`}=n,v=i.useMemo(()=>{let e=D(u,c);return e==null?null:{location:{pathname:e,search:p,hash:m,state:h,key:g},navigationType:r}},[c,u,p,m,h,g,r]);return f(v!=null,`<Router basename="${c}"> is not able to match the URL "${u}${p}${m}" because it does not start with the basename, so the <Router> won't render anything.`),v==null?null:i.createElement(N.Provider,{value:l},i.createElement(P.Provider,{children:t,value:v}))}function lt({children:e,location:t}){return He(G(e),t)}i.Component;function G(e,t=[]){let n=[];return i.Children.forEach(e,(e,r)=>{if(!i.isValidElement(e))return;let a=[...t,r];if(e.type===i.Fragment){n.push.apply(n,G(e.props.children,a));return}d(e.type===st,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),d(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let o={id:e.props.id||a.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(o.children=G(e.props.children,a)),n.push(o)}),n}var K=`get`,q=`application/x-www-form-urlencoded`;function J(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function ut(e){return J(e)&&e.tagName.toLowerCase()===`button`}function dt(e){return J(e)&&e.tagName.toLowerCase()===`form`}function ft(e){return J(e)&&e.tagName.toLowerCase()===`input`}function pt(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function mt(e,t){return e.button===0&&(!t||t===`_self`)&&!pt(e)}function Y(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function ht(e,t){let n=Y(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var X=null;function gt(){if(X===null)try{new FormData(document.createElement(`form`),0),X=!1}catch{X=!0}return X}var _t=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function vt(e){return e!=null&&!_t.has(e)?(f(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${q}"`),null):e}function yt(e,t){let n,r,i,a,o;if(dt(e)){let o=e.getAttribute(`action`);r=o?D(o,t):null,n=e.getAttribute(`method`)||K,i=vt(e.getAttribute(`enctype`))||q,a=new FormData(e)}else if(ut(e)||ft(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?D(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||K,i=vt(e.getAttribute(`formenctype`))||vt(o.getAttribute(`enctype`))||q,a=new FormData(o,e),!gt()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(J(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=K,r=null,i=q,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var bt={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},xt=/[&><\u2028\u2029]/g;function St(e){return e.replace(xt,e=>bt[e])}function Ct(e,t){if(e===!1||e==null)throw Error(t)}function wt(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&D(i.pathname,t)===`/`?i.pathname=`${t.replace(/\/$/,``)}/_root.${r}`:i.pathname=`${i.pathname.replace(/\/$/,``)}.${r}`,i}async function Tt(e,t){if(e.id in t)return t[e.id];try{let n=await c(()=>import(e.module),[]);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Et(e){return e!=null&&typeof e.page==`string`}function Dt(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Ot(e,t,n){return Nt((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Tt(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Dt).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function kt(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function At(e,t,{includeHydrateFallback:n}={}){return jt(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function jt(e){return[...new Set(e)]}function Mt(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Nt(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Et(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Mt(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Pt(){let e=i.useContext(j);return Ct(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Ft(){let e=i.useContext(M);return Ct(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Z=i.createContext(void 0);Z.displayName=`FrameworkContext`;function It(){let e=i.useContext(Z);return Ct(e,`You must render this element inside a <HydratedRouter> element`),e}function Lt(e,t){let n=i.useContext(Z),[r,a]=i.useState(!1),[o,s]=i.useState(!1),{onFocus:c,onBlur:l,onMouseEnter:u,onMouseLeave:d,onTouchStart:f}=t,p=i.useRef(null);i.useEffect(()=>{if(e===`render`&&s(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{s(e.isIntersecting)})},{threshold:.5});return p.current&&e.observe(p.current),()=>{e.disconnect()}}},[e]),i.useEffect(()=>{if(r){let e=setTimeout(()=>{s(!0)},100);return()=>{clearTimeout(e)}}},[r]);let m=()=>{a(!0)},h=()=>{a(!1),s(!1)};return n?e===`intent`?[o,p,{onFocus:Q(c,m),onBlur:Q(l,h),onMouseEnter:Q(u,m),onMouseLeave:Q(d,h),onTouchStart:Q(f,m)}]:[o,p,{}]:[!1,p,{}]}function Q(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Rt({page:e,...t}){let{router:n}=Pt(),r=i.useMemo(()=>b(n.routes,e,n.basename),[n.routes,e,n.basename]);return r?i.createElement(Bt,{page:e,matches:r,...t}):null}function zt(e){let{manifest:t,routeModules:n}=It(),[r,a]=i.useState([]);return i.useEffect(()=>{let r=!1;return Ot(e,t,n).then(e=>{r||a(e)}),()=>{r=!0}},[e,t,n]),r}function Bt({page:e,matches:t,...n}){let r=R(),{future:a,manifest:o,routeModules:s}=It(),{basename:c}=Pt(),{loaderData:l,matches:u}=Ft(),d=i.useMemo(()=>kt(e,t,u,o,r,`data`),[e,t,u,o,r]),f=i.useMemo(()=>kt(e,t,u,o,r,`assets`),[e,t,u,o,r]),p=i.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,i=!1;if(t.forEach(e=>{let t=o.routes[e.route.id];!t||!t.hasLoader||(!d.some(t=>t.route.id===e.route.id)&&e.route.id in l&&s[e.route.id]?.shouldRevalidate||t.hasClientLoader?i=!0:n.add(e.route.id))}),n.size===0)return[];let u=wt(e,c,a.unstable_trailingSlashAwareDataRequests,`data`);return i&&n.size>0&&u.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[u.pathname+u.search]},[c,a.unstable_trailingSlashAwareDataRequests,l,r,o,d,t,e,s]),m=i.useMemo(()=>At(f,o),[f,o]),h=zt(f);return i.createElement(i.Fragment,null,p.map(e=>i.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>i.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),h.map(({key:e,link:t})=>i.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Vt(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}i.Component;var Ht=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Ht&&(window.__reactRouterVersion=`7.13.0`)}catch{}function Ut({basename:e,children:t,unstable_useTransitions:n,window:r}){let a=i.useRef();a.current??=u({window:r,v5Compat:!0});let o=a.current,[s,c]=i.useState({action:o.action,location:o.location}),l=i.useCallback(e=>{n===!1?c(e):i.startTransition(()=>c(e))},[n]);return i.useLayoutEffect(()=>o.listen(l),[o,l]),i.createElement(ct,{basename:e,children:t,location:s.location,navigationType:s.action,navigator:o,unstable_useTransitions:n})}function Wt({basename:e,children:t,history:n,unstable_useTransitions:r}){let[a,o]=i.useState({action:n.action,location:n.location}),s=i.useCallback(e=>{r===!1?o(e):i.startTransition(()=>o(e))},[r]);return i.useLayoutEffect(()=>n.listen(s),[n,s]),i.createElement(ct,{basename:e,children:t,location:a.location,navigationType:a.action,navigator:n,unstable_useTransitions:r})}Wt.displayName=`unstable_HistoryRouter`;var Gt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Kt=i.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:a,replace:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m){let{basename:h,unstable_useTransitions:g}=i.useContext(N),_=typeof l==`string`&&Gt.test(l),v=we(l,h);l=v.to;let y=Ie(l,{relative:r}),[b,x,S]=Lt(n,p),C=$t(l,{replace:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,unstable_defaultShouldRevalidate:f,unstable_useTransitions:g});function w(t){e&&e(t),t.defaultPrevented||C(t)}let T=i.createElement(`a`,{...p,...S,href:v.absoluteURL||y,onClick:v.isExternal||a?e:w,ref:Vt(m,x),target:c,"data-discover":!_&&t===`render`?`true`:void 0});return b&&!_?i.createElement(i.Fragment,null,T,i.createElement(Rt,{page:y})):T});Kt.displayName=`Link`;var qt=i.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:a,to:o,viewTransition:s,children:c,...l},u){let d=B(o,{relative:l.relative}),f=R(),p=i.useContext(M),{navigator:m,basename:h}=i.useContext(N),g=p!=null&&un(d)&&s===!0,_=m.encodeLocation?m.encodeLocation(d).pathname:d.pathname,v=f.pathname,y=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;t||(v=v.toLowerCase(),y=y?y.toLowerCase():null,_=_.toLowerCase()),y&&h&&(y=D(y,h)||y);let b=_!==`/`&&_.endsWith(`/`)?_.length-1:_.length,x=v===_||!r&&v.startsWith(_)&&v.charAt(b)===`/`,S=y!=null&&(y===_||!r&&y.startsWith(_)&&y.charAt(_.length)===`/`),C={isActive:x,isPending:S,isTransitioning:g},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,g?`transitioning`:null].filter(Boolean).join(` `);let ee=typeof a==`function`?a(C):a;return i.createElement(Kt,{...l,"aria-current":w,className:T,ref:u,style:ee,to:o,viewTransition:s},typeof c==`function`?c(C):c)});qt.displayName=`NavLink`;var Jt=i.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:a,state:o,method:s=K,action:c,onSubmit:l,relative:u,preventScrollReset:d,viewTransition:f,unstable_defaultShouldRevalidate:p,...m},h)=>{let{unstable_useTransitions:g}=i.useContext(N),_=rn(),v=an(c,{relative:u}),y=s.toLowerCase()===`get`?`get`:`post`,b=typeof c==`string`&&Gt.test(c);return i.createElement(`form`,{ref:h,method:y,action:v,onSubmit:r?l:e=>{if(l&&l(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,c=r?.getAttribute(`formmethod`)||s,m=()=>_(r||e.currentTarget,{fetcherKey:t,method:c,navigate:n,replace:a,state:o,relative:u,preventScrollReset:d,viewTransition:f,unstable_defaultShouldRevalidate:p});g&&n!==!1?i.startTransition(()=>m()):m()},...m,"data-discover":!b&&e===`render`?`true`:void 0})});Jt.displayName=`Form`;function Yt({getKey:e,storageKey:t,...n}){let r=i.useContext(Z),{basename:a}=i.useContext(N),o=R(),s=et();cn({getKey:e,storageKey:t});let c=i.useMemo(()=>{if(!r||!e)return null;let t=sn(o,s,a,e);return t===o.key?null:t},[]);if(!r||r.isSpaMode)return null;let l=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return i.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${l})(${St(JSON.stringify(t||on))}, ${St(JSON.stringify(c))})`}})}Yt.displayName=`ScrollRestoration`;function Xt(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Zt(e){let t=i.useContext(j);return d(t,Xt(e)),t}function Qt(e){let t=i.useContext(M);return d(t,Xt(e)),t}function $t(e,{target:t,replace:n,state:r,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c,unstable_useTransitions:l}={}){let u=z(),d=R(),f=B(e,{relative:o});return i.useCallback(p=>{if(mt(p,t)){p.preventDefault();let t=n===void 0?g(d)===g(f):n,m=()=>u(e,{replace:t,state:r,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c});l?i.startTransition(()=>m()):m()}},[d,u,f,n,r,t,e,a,o,s,c,l])}function en(e){f(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=i.useRef(Y(e)),n=i.useRef(!1),r=R(),a=i.useMemo(()=>ht(r.search,n.current?null:t.current),[r.search]),o=z();return[a,i.useCallback((e,t)=>{let r=Y(typeof e==`function`?e(new URLSearchParams(a)):e);n.current=!0,o(`?`+r,t)},[o,a])]}var tn=0,nn=()=>`__${String(++tn)}__`;function rn(){let{router:e}=Zt(`useSubmit`),{basename:t}=i.useContext(N),n=Qe(),r=e.fetch,a=e.navigate;return i.useCallback(async(e,i={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=yt(e,t);i.navigate===!1?await r(i.fetcherKey||nn(),n,i.action||o,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:l,body:u,formMethod:i.method||s,formEncType:i.encType||c,flushSync:i.flushSync}):await a(i.action||o,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:l,body:u,formMethod:i.method||s,formEncType:i.encType||c,replace:i.replace,state:i.state,fromRouteId:n,flushSync:i.flushSync,viewTransition:i.viewTransition})},[r,a,t,n])}function an(e,{relative:t}={}){let{basename:n}=i.useContext(N),r=i.useContext(F);d(r,`useFormAction must be used inside a RouteContext`);let[a]=r.matches.slice(-1),o={...B(e||`.`,{relative:t})},s=R();if(e==null){o.search=s.search;let e=new URLSearchParams(o.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();o.search=n?`?${n}`:``}}return(!e||e===`.`)&&a.route.index&&(o.search=o.search?o.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(o.pathname=o.pathname===`/`?n:A([n,o.pathname])),g(o)}var on=`react-router-scroll-positions`,$={};function sn(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:D(e.pathname,n)||e.pathname},t)),i??=e.key,i}function cn({getKey:e,storageKey:t}={}){let{router:n}=Zt(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:a}=Qt(`useScrollRestoration`),{basename:o}=i.useContext(N),s=R(),c=et(),l=$e();i.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),ln(i.useCallback(()=>{if(l.state===`idle`){let t=sn(s,c,o,e);$[t]=window.scrollY}try{sessionStorage.setItem(t||on,JSON.stringify($))}catch(e){f(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[l.state,e,o,s,c,t])),typeof document<`u`&&(i.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||on);e&&($=JSON.parse(e))}catch{}},[t]),i.useLayoutEffect(()=>{let t=n?.enableScrollRestoration($,()=>window.scrollY,e?(t,n)=>sn(t,n,o,e):void 0);return()=>t&&t()},[n,o,e]),i.useLayoutEffect(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(s.hash){let e=document.getElementById(decodeURIComponent(s.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{f(!1,`"${s.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}a!==!0&&window.scrollTo(0,0)}},[s,r,a]))}function ln(e,t){let{capture:n}=t||{};i.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function un(e,{relative:t}={}){let n=i.useContext(Oe);d(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Zt(`useViewTransitionState`),a=B(e,{relative:t});if(!n.isTransitioning)return!1;let o=D(n.currentLocation.pathname,r)||n.currentLocation.pathname,s=D(n.nextLocation.pathname,r)||n.nextLocation.pathname;return E(a.pathname,s)!=null||E(a.pathname,o)!=null}var dn=r(),fn={default:`border-transparent bg-primary text-primary-foreground`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-white`,outline:`border-border bg-background text-foreground`,emphasis:`border-transparent bg-foreground text-background`};function pn({variant:e,className:t,children:r}){return(0,dn.jsx)(`span`,{className:n(`inline-flex items-center rounded-sm border px-1.5 py-0 text-xs leading-none`,fn[e],t),children:(0,dn.jsx)(`span`,{className:`min-w-0 truncate`,children:r})})}export{ot as a,E as c,z as d,Ve as f,qt as i,R as l,c as m,Ut as n,st as o,en as p,Kt as r,lt as s,pn as t,Le as u};
3
+ Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let h=R(),g;if(t){let e=typeof t==`string`?_(t):t;d(p===`/`||e.pathname?.startsWith(p),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${p}" but pathname "${e.pathname}" was given in the \`location\` prop.`),g=e}else g=h;let v=g.pathname||`/`,y=v;if(p!==`/`){let e=p.replace(/^\//,``).split(`/`);y=`/`+v.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let x=b(e,{pathname:y});f(m||x!=null,`No routes matched location "${g.pathname}${g.search}${g.hash}" `),f(x==null||x[x.length-1].route.element!==void 0||x[x.length-1].route.Component!==void 0||x[x.length-1].route.lazy!==void 0,`Matched leaf route at location "${g.pathname}${g.search}${g.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let S=Ye(x&&x.map(e=>Object.assign({},e,{params:Object.assign({},l,e.params),pathname:A([p,o.encodeLocation?o.encodeLocation(e.pathname.replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?p:A([p,o.encodeLocation?o.encodeLocation(e.pathnameBase.replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),s,n,r,a);return t&&S?i.createElement(P.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,...g},navigationType:`POP`}},S):S}function We(){let e=tt(),t=xe(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,a={padding:`0.5rem`,backgroundColor:r},o={padding:`2px 4px`,backgroundColor:r},s=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),s=i.createElement(i.Fragment,null,i.createElement(`p`,null,`💿 Hey developer 👋`),i.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,i.createElement(`code`,{style:o},`ErrorBoundary`),` or`,` `,i.createElement(`code`,{style:o},`errorElement`),` prop on your route.`)),i.createElement(i.Fragment,null,i.createElement(`h2`,null,`Unexpected Application Error!`),i.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?i.createElement(`pre`,{style:a},n):null,s)}var Ge=i.createElement(We,null),Ke=class extends i.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Fe(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:i.createElement(F.Provider,{value:this.props.routeContext},i.createElement(I.Provider,{value:e,children:this.props.component}));return this.context?i.createElement(qe,{error:e},t):t}};Ke.contextType=De;var V=new WeakMap;function qe({children:e,error:t}){let{basename:n}=i.useContext(N);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Pe(t.digest);if(e){let r=V.get(t);if(r)throw r;let a=we(e.location,n);if(Ce&&!V.get(t))if(a.isExternal||e.reloadDocument)window.location.href=a.absoluteURL||a.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:e.replace}));throw V.set(t,n),n}return i.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${a.absoluteURL||a.to}`})}}return e}function Je({routeContext:e,match:t,children:n}){let r=i.useContext(j);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),i.createElement(F.Provider,{value:e},n)}function Ye(e,t=[],n=null,r=null,a=null){if(e==null){if(!n)return null;if(n.errors)e=n.matches;else if(t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let o=e,s=n?.errors;if(s!=null){let e=o.findIndex(e=>e.route.id&&s?.[e.route.id]!==void 0);d(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(`,`)}`),o=o.slice(0,Math.min(o.length,e+1))}let c=!1,l=-1;if(n)for(let e=0;e<o.length;e++){let t=o[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(l=e),t.route.id){let{loaderData:e,errors:r}=n,i=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!r||r[t.route.id]===void 0);if(t.route.lazy||i){c=!0,o=l>=0?o.slice(0,l+1):[o[0]];break}}}let u=n&&r?(e,t)=>{r(e,{location:n.location,params:n.matches?.[0]?.params??{},unstable_pattern:Se(n.matches),errorInfo:t})}:void 0;return o.reduceRight((e,r,a)=>{let d,f=!1,p=null,m=null;n&&(d=s&&r.route.id?s[r.route.id]:void 0,p=r.route.errorElement||Ge,c&&(l<0&&a===0?(it(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),f=!0,m=null):l===a&&(f=!0,m=r.route.hydrateFallbackElement||null)));let h=t.concat(o.slice(0,a+1)),g=()=>{let t;return t=d?p:f?m:r.route.Component?i.createElement(r.route.Component,null):r.route.element?r.route.element:e,i.createElement(Je,{match:r,routeContext:{outlet:e,matches:h,isDataRoute:n!=null},children:t})};return n&&(r.route.ErrorBoundary||r.route.errorElement||a===0)?i.createElement(Ke,{location:n.location,revalidation:n.revalidation,component:p,error:d,children:g(),routeContext:{outlet:null,matches:h,isDataRoute:!0},onError:u}):g()},null)}function H(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Xe(e){let t=i.useContext(j);return d(t,H(e)),t}function U(e){let t=i.useContext(M);return d(t,H(e)),t}function Ze(e){let t=i.useContext(F);return d(t,H(e)),t}function W(e){let t=Ze(e),n=t.matches[t.matches.length-1];return d(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Qe(){return W(`useRouteId`)}function $e(){return U(`useNavigation`).navigation}function et(){let{matches:e,loaderData:t}=U(`useMatches`);return i.useMemo(()=>e.map(e=>S(e,t)),[e,t])}function tt(){let e=i.useContext(I),t=U(`useRouteError`),n=W(`useRouteError`);return e===void 0?t.errors?.[n]:e}function nt(){let{router:e}=Xe(`useNavigate`),t=W(`useNavigate`),n=i.useRef(!1);return ze(()=>{n.current=!0}),i.useCallback(async(r,i={})=>{f(n.current,Re),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var rt={};function it(e,t,n){!t&&!rt[e]&&(rt[e]=!0,f(!1,n))}i.memo(at);function at({routes:e,future:t,state:n,onError:r}){return Ue(e,void 0,n,r,t)}function ot({to:e,replace:t,state:n,relative:r}){d(L(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:a}=i.useContext(N);f(!a,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:o}=i.useContext(F),{pathname:s}=R(),c=z(),l=k(e,ge(o),s,r===`path`),u=JSON.stringify(l);return i.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function st(e){d(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function ct({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:a,static:o=!1,unstable_useTransitions:s}){d(!L(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let c=e.replace(/^\/*/,`/`),l=i.useMemo(()=>({basename:c,navigator:a,static:o,unstable_useTransitions:s,future:{}}),[c,a,o,s]);typeof n==`string`&&(n=_(n));let{pathname:u=`/`,search:p=``,hash:m=``,state:h=null,key:g=`default`}=n,v=i.useMemo(()=>{let e=D(u,c);return e==null?null:{location:{pathname:e,search:p,hash:m,state:h,key:g},navigationType:r}},[c,u,p,m,h,g,r]);return f(v!=null,`<Router basename="${c}"> is not able to match the URL "${u}${p}${m}" because it does not start with the basename, so the <Router> won't render anything.`),v==null?null:i.createElement(N.Provider,{value:l},i.createElement(P.Provider,{children:t,value:v}))}function lt({children:e,location:t}){return He(G(e),t)}i.Component;function G(e,t=[]){let n=[];return i.Children.forEach(e,(e,r)=>{if(!i.isValidElement(e))return;let a=[...t,r];if(e.type===i.Fragment){n.push.apply(n,G(e.props.children,a));return}d(e.type===st,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),d(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let o={id:e.props.id||a.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(o.children=G(e.props.children,a)),n.push(o)}),n}var K=`get`,q=`application/x-www-form-urlencoded`;function J(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function ut(e){return J(e)&&e.tagName.toLowerCase()===`button`}function dt(e){return J(e)&&e.tagName.toLowerCase()===`form`}function ft(e){return J(e)&&e.tagName.toLowerCase()===`input`}function pt(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function mt(e,t){return e.button===0&&(!t||t===`_self`)&&!pt(e)}function Y(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function ht(e,t){let n=Y(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var X=null;function gt(){if(X===null)try{new FormData(document.createElement(`form`),0),X=!1}catch{X=!0}return X}var _t=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function vt(e){return e!=null&&!_t.has(e)?(f(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${q}"`),null):e}function yt(e,t){let n,r,i,a,o;if(dt(e)){let o=e.getAttribute(`action`);r=o?D(o,t):null,n=e.getAttribute(`method`)||K,i=vt(e.getAttribute(`enctype`))||q,a=new FormData(e)}else if(ut(e)||ft(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?D(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||K,i=vt(e.getAttribute(`formenctype`))||vt(o.getAttribute(`enctype`))||q,a=new FormData(o,e),!gt()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(J(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=K,r=null,i=q,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var bt={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},xt=/[&><\u2028\u2029]/g;function St(e){return e.replace(xt,e=>bt[e])}function Ct(e,t){if(e===!1||e==null)throw Error(t)}function wt(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&D(i.pathname,t)===`/`?i.pathname=`${t.replace(/\/$/,``)}/_root.${r}`:i.pathname=`${i.pathname.replace(/\/$/,``)}.${r}`,i}async function Tt(e,t){if(e.id in t)return t[e.id];try{let n=await c(()=>import(e.module),[]);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Et(e){return e!=null&&typeof e.page==`string`}function Dt(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Ot(e,t,n){return Nt((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Tt(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Dt).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function kt(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function At(e,t,{includeHydrateFallback:n}={}){return jt(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function jt(e){return[...new Set(e)]}function Mt(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Nt(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Et(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Mt(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Pt(){let e=i.useContext(j);return Ct(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Ft(){let e=i.useContext(M);return Ct(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Z=i.createContext(void 0);Z.displayName=`FrameworkContext`;function It(){let e=i.useContext(Z);return Ct(e,`You must render this element inside a <HydratedRouter> element`),e}function Lt(e,t){let n=i.useContext(Z),[r,a]=i.useState(!1),[o,s]=i.useState(!1),{onFocus:c,onBlur:l,onMouseEnter:u,onMouseLeave:d,onTouchStart:f}=t,p=i.useRef(null);i.useEffect(()=>{if(e===`render`&&s(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{s(e.isIntersecting)})},{threshold:.5});return p.current&&e.observe(p.current),()=>{e.disconnect()}}},[e]),i.useEffect(()=>{if(r){let e=setTimeout(()=>{s(!0)},100);return()=>{clearTimeout(e)}}},[r]);let m=()=>{a(!0)},h=()=>{a(!1),s(!1)};return n?e===`intent`?[o,p,{onFocus:Q(c,m),onBlur:Q(l,h),onMouseEnter:Q(u,m),onMouseLeave:Q(d,h),onTouchStart:Q(f,m)}]:[o,p,{}]:[!1,p,{}]}function Q(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Rt({page:e,...t}){let{router:n}=Pt(),r=i.useMemo(()=>b(n.routes,e,n.basename),[n.routes,e,n.basename]);return r?i.createElement(Bt,{page:e,matches:r,...t}):null}function zt(e){let{manifest:t,routeModules:n}=It(),[r,a]=i.useState([]);return i.useEffect(()=>{let r=!1;return Ot(e,t,n).then(e=>{r||a(e)}),()=>{r=!0}},[e,t,n]),r}function Bt({page:e,matches:t,...n}){let r=R(),{future:a,manifest:o,routeModules:s}=It(),{basename:c}=Pt(),{loaderData:l,matches:u}=Ft(),d=i.useMemo(()=>kt(e,t,u,o,r,`data`),[e,t,u,o,r]),f=i.useMemo(()=>kt(e,t,u,o,r,`assets`),[e,t,u,o,r]),p=i.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,i=!1;if(t.forEach(e=>{let t=o.routes[e.route.id];!t||!t.hasLoader||(!d.some(t=>t.route.id===e.route.id)&&e.route.id in l&&s[e.route.id]?.shouldRevalidate||t.hasClientLoader?i=!0:n.add(e.route.id))}),n.size===0)return[];let u=wt(e,c,a.unstable_trailingSlashAwareDataRequests,`data`);return i&&n.size>0&&u.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[u.pathname+u.search]},[c,a.unstable_trailingSlashAwareDataRequests,l,r,o,d,t,e,s]),m=i.useMemo(()=>At(f,o),[f,o]),h=zt(f);return i.createElement(i.Fragment,null,p.map(e=>i.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>i.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),h.map(({key:e,link:t})=>i.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Vt(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}i.Component;var Ht=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Ht&&(window.__reactRouterVersion=`7.13.0`)}catch{}function Ut({basename:e,children:t,unstable_useTransitions:n,window:r}){let a=i.useRef();a.current??=u({window:r,v5Compat:!0});let o=a.current,[s,c]=i.useState({action:o.action,location:o.location}),l=i.useCallback(e=>{n===!1?c(e):i.startTransition(()=>c(e))},[n]);return i.useLayoutEffect(()=>o.listen(l),[o,l]),i.createElement(ct,{basename:e,children:t,location:s.location,navigationType:s.action,navigator:o,unstable_useTransitions:n})}function Wt({basename:e,children:t,history:n,unstable_useTransitions:r}){let[a,o]=i.useState({action:n.action,location:n.location}),s=i.useCallback(e=>{r===!1?o(e):i.startTransition(()=>o(e))},[r]);return i.useLayoutEffect(()=>n.listen(s),[n,s]),i.createElement(ct,{basename:e,children:t,location:a.location,navigationType:a.action,navigator:n,unstable_useTransitions:r})}Wt.displayName=`unstable_HistoryRouter`;var Gt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Kt=i.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:a,replace:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m){let{basename:h,unstable_useTransitions:g}=i.useContext(N),_=typeof l==`string`&&Gt.test(l),v=we(l,h);l=v.to;let y=Ie(l,{relative:r}),[b,x,S]=Lt(n,p),C=$t(l,{replace:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,unstable_defaultShouldRevalidate:f,unstable_useTransitions:g});function w(t){e&&e(t),t.defaultPrevented||C(t)}let T=i.createElement(`a`,{...p,...S,href:v.absoluteURL||y,onClick:v.isExternal||a?e:w,ref:Vt(m,x),target:c,"data-discover":!_&&t===`render`?`true`:void 0});return b&&!_?i.createElement(i.Fragment,null,T,i.createElement(Rt,{page:y})):T});Kt.displayName=`Link`;var qt=i.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:a,to:o,viewTransition:s,children:c,...l},u){let d=B(o,{relative:l.relative}),f=R(),p=i.useContext(M),{navigator:m,basename:h}=i.useContext(N),g=p!=null&&un(d)&&s===!0,_=m.encodeLocation?m.encodeLocation(d).pathname:d.pathname,v=f.pathname,y=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;t||(v=v.toLowerCase(),y=y?y.toLowerCase():null,_=_.toLowerCase()),y&&h&&(y=D(y,h)||y);let b=_!==`/`&&_.endsWith(`/`)?_.length-1:_.length,x=v===_||!r&&v.startsWith(_)&&v.charAt(b)===`/`,S=y!=null&&(y===_||!r&&y.startsWith(_)&&y.charAt(_.length)===`/`),C={isActive:x,isPending:S,isTransitioning:g},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,g?`transitioning`:null].filter(Boolean).join(` `);let ee=typeof a==`function`?a(C):a;return i.createElement(Kt,{...l,"aria-current":w,className:T,ref:u,style:ee,to:o,viewTransition:s},typeof c==`function`?c(C):c)});qt.displayName=`NavLink`;var Jt=i.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:a,state:o,method:s=K,action:c,onSubmit:l,relative:u,preventScrollReset:d,viewTransition:f,unstable_defaultShouldRevalidate:p,...m},h)=>{let{unstable_useTransitions:g}=i.useContext(N),_=rn(),v=an(c,{relative:u}),y=s.toLowerCase()===`get`?`get`:`post`,b=typeof c==`string`&&Gt.test(c);return i.createElement(`form`,{ref:h,method:y,action:v,onSubmit:r?l:e=>{if(l&&l(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,c=r?.getAttribute(`formmethod`)||s,m=()=>_(r||e.currentTarget,{fetcherKey:t,method:c,navigate:n,replace:a,state:o,relative:u,preventScrollReset:d,viewTransition:f,unstable_defaultShouldRevalidate:p});g&&n!==!1?i.startTransition(()=>m()):m()},...m,"data-discover":!b&&e===`render`?`true`:void 0})});Jt.displayName=`Form`;function Yt({getKey:e,storageKey:t,...n}){let r=i.useContext(Z),{basename:a}=i.useContext(N),o=R(),s=et();cn({getKey:e,storageKey:t});let c=i.useMemo(()=>{if(!r||!e)return null;let t=sn(o,s,a,e);return t===o.key?null:t},[]);if(!r||r.isSpaMode)return null;let l=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return i.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${l})(${St(JSON.stringify(t||on))}, ${St(JSON.stringify(c))})`}})}Yt.displayName=`ScrollRestoration`;function Xt(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Zt(e){let t=i.useContext(j);return d(t,Xt(e)),t}function Qt(e){let t=i.useContext(M);return d(t,Xt(e)),t}function $t(e,{target:t,replace:n,state:r,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c,unstable_useTransitions:l}={}){let u=z(),d=R(),f=B(e,{relative:o});return i.useCallback(p=>{if(mt(p,t)){p.preventDefault();let t=n===void 0?g(d)===g(f):n,m=()=>u(e,{replace:t,state:r,preventScrollReset:a,relative:o,viewTransition:s,unstable_defaultShouldRevalidate:c});l?i.startTransition(()=>m()):m()}},[d,u,f,n,r,t,e,a,o,s,c,l])}function en(e){f(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=i.useRef(Y(e)),n=i.useRef(!1),r=R(),a=i.useMemo(()=>ht(r.search,n.current?null:t.current),[r.search]),o=z();return[a,i.useCallback((e,t)=>{let r=Y(typeof e==`function`?e(new URLSearchParams(a)):e);n.current=!0,o(`?`+r,t)},[o,a])]}var tn=0,nn=()=>`__${String(++tn)}__`;function rn(){let{router:e}=Zt(`useSubmit`),{basename:t}=i.useContext(N),n=Qe(),r=e.fetch,a=e.navigate;return i.useCallback(async(e,i={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=yt(e,t);i.navigate===!1?await r(i.fetcherKey||nn(),n,i.action||o,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:l,body:u,formMethod:i.method||s,formEncType:i.encType||c,flushSync:i.flushSync}):await a(i.action||o,{unstable_defaultShouldRevalidate:i.unstable_defaultShouldRevalidate,preventScrollReset:i.preventScrollReset,formData:l,body:u,formMethod:i.method||s,formEncType:i.encType||c,replace:i.replace,state:i.state,fromRouteId:n,flushSync:i.flushSync,viewTransition:i.viewTransition})},[r,a,t,n])}function an(e,{relative:t}={}){let{basename:n}=i.useContext(N),r=i.useContext(F);d(r,`useFormAction must be used inside a RouteContext`);let[a]=r.matches.slice(-1),o={...B(e||`.`,{relative:t})},s=R();if(e==null){o.search=s.search;let e=new URLSearchParams(o.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();o.search=n?`?${n}`:``}}return(!e||e===`.`)&&a.route.index&&(o.search=o.search?o.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(o.pathname=o.pathname===`/`?n:A([n,o.pathname])),g(o)}var on=`react-router-scroll-positions`,$={};function sn(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:D(e.pathname,n)||e.pathname},t)),i??=e.key,i}function cn({getKey:e,storageKey:t}={}){let{router:n}=Zt(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:a}=Qt(`useScrollRestoration`),{basename:o}=i.useContext(N),s=R(),c=et(),l=$e();i.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),ln(i.useCallback(()=>{if(l.state===`idle`){let t=sn(s,c,o,e);$[t]=window.scrollY}try{sessionStorage.setItem(t||on,JSON.stringify($))}catch(e){f(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[l.state,e,o,s,c,t])),typeof document<`u`&&(i.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||on);e&&($=JSON.parse(e))}catch{}},[t]),i.useLayoutEffect(()=>{let t=n?.enableScrollRestoration($,()=>window.scrollY,e?(t,n)=>sn(t,n,o,e):void 0);return()=>t&&t()},[n,o,e]),i.useLayoutEffect(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(s.hash){let e=document.getElementById(decodeURIComponent(s.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{f(!1,`"${s.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}a!==!0&&window.scrollTo(0,0)}},[s,r,a]))}function ln(e,t){let{capture:n}=t||{};i.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function un(e,{relative:t}={}){let n=i.useContext(Oe);d(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Zt(`useViewTransitionState`),a=B(e,{relative:t});if(!n.isTransitioning)return!1;let o=D(n.currentLocation.pathname,r)||n.currentLocation.pathname,s=D(n.nextLocation.pathname,r)||n.nextLocation.pathname;return E(a.pathname,s)!=null||E(a.pathname,o)!=null}var dn=r(),fn={default:`border-transparent bg-primary text-primary-foreground`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground`,outline:`border-border bg-background text-foreground`,emphasis:`border-transparent bg-foreground text-background`};function pn({variant:e,className:t,children:r}){return(0,dn.jsx)(`span`,{className:n(`inline-flex items-center rounded-sm border px-1.5 py-0 text-xs leading-none`,fn[e],t),children:(0,dn.jsx)(`span`,{className:`min-w-0 truncate`,children:r})})}export{ot as a,E as c,z as d,Ve as f,qt as i,R as l,c as m,Ut as n,st as o,en as p,Kt as r,lt as s,pn as t,Le as u};
@@ -1 +1 @@
1
- import{Ki as e,Vi as t,Xr as n,ni as r,ri as i,vi as a}from"./page-shell-Dglk9LmR.js";import{Nt as o,c as s,d as c,i as l,l as u,o as d,u as f}from"./effective-hosts-BWRuszG7.js";var p=e(t(),1),m=a(),h=o;function g({primaryAction:e,secondaryActions:t,disabled:a=!1,className:o,triggerLabel:g=`More actions`,mobileTitle:_,defaultOpen:v,modal:y}){let b=i(n({variant:`outline`,size:`sm`}),h,o);return(0,m.jsxs)(`div`,{className:`inline-flex items-center`,children:[(0,m.jsx)(`button`,{type:`button`,disabled:a,className:i(b,`rounded-r-none border-r-0 pr-1 focus-visible:z-10`),"aria-label":e.label,title:e.label,onClick:e.onSelect,children:e.content??e.label}),(0,m.jsxs)(l,{defaultOpen:v,modal:y,children:[(0,m.jsx)(c,{asChild:!0,children:(0,m.jsx)(`button`,{type:`button`,disabled:a,className:i(b,`rounded-l-none border-l-0 px-1 pl-0 focus-visible:z-10`,`data-[state=open]:bg-state-active data-[state=open]:text-foreground`),"aria-label":g,title:g,children:(0,m.jsx)(r,{name:`ChevronDown`,className:`size-3`})})}),(0,m.jsx)(d,{align:`end`,sideOffset:2,mobileTitle:_,children:t.map((e,n)=>{let r=t[n-1];return(0,m.jsxs)(p.Fragment,{children:[e.groupLabel!==void 0&&e.groupLabel!==r?.groupLabel?(0,m.jsxs)(m.Fragment,{children:[n>0?(0,m.jsx)(f,{}):null,(0,m.jsx)(u,{children:e.groupLabel})]}):null,(0,m.jsx)(s,{onSelect:e.onSelect,textValue:e.label,children:e.content??e.label})]},e.label)})})]})]})}export{g as t};
1
+ import{Ki as e,Vi as t,Xr as n,ni as r,ri as i,vi as a}from"./page-shell-Dglk9LmR.js";import{Nt as o,c as s,d as c,i as l,l as u,o as d,u as f}from"./effective-hosts-ps3WYS_d.js";var p=e(t(),1),m=a(),h=o;function g({primaryAction:e,secondaryActions:t,disabled:a=!1,className:o,triggerLabel:g=`More actions`,mobileTitle:_,defaultOpen:v,modal:y}){let b=i(n({variant:`outline`,size:`sm`}),h,o);return(0,m.jsxs)(`div`,{className:`inline-flex items-center`,children:[(0,m.jsx)(`button`,{type:`button`,disabled:a,className:i(b,`rounded-r-none border-r-0 pr-1 focus-visible:z-10`),"aria-label":e.label,title:e.label,onClick:e.onSelect,children:e.content??e.label}),(0,m.jsxs)(l,{defaultOpen:v,modal:y,children:[(0,m.jsx)(c,{asChild:!0,children:(0,m.jsx)(`button`,{type:`button`,disabled:a,className:i(b,`rounded-l-none border-l-0 px-1 pl-0 focus-visible:z-10`,`data-[state=open]:bg-state-active data-[state=open]:text-foreground`),"aria-label":g,title:g,children:(0,m.jsx)(r,{name:`ChevronDown`,className:`size-3`})})}),(0,m.jsx)(d,{align:`end`,sideOffset:2,mobileTitle:_,children:t.map((e,n)=>{let r=t[n-1];return(0,m.jsxs)(p.Fragment,{children:[e.groupLabel!==void 0&&e.groupLabel!==r?.groupLabel?(0,m.jsxs)(m.Fragment,{children:[n>0?(0,m.jsx)(f,{}):null,(0,m.jsx)(u,{children:e.groupLabel})]}):null,(0,m.jsx)(s,{onSelect:e.onSelect,textValue:e.label,children:e.content??e.label})]},e.label)})})]})]})}export{g as t};
@@ -37,15 +37,15 @@
37
37
  });
38
38
  })();
39
39
  </script>
40
- <script type="module" crossorigin src="/assets/index-D_DARDfc.js"></script>
40
+ <script type="module" crossorigin src="/assets/index-B8UIxEOk.js"></script>
41
41
  <link rel="modulepreload" crossorigin href="/assets/page-shell-Dglk9LmR.js">
42
- <link rel="modulepreload" crossorigin href="/assets/pill-BHnTA2D7.js">
43
- <link rel="modulepreload" crossorigin href="/assets/effective-hosts-BWRuszG7.js">
44
- <link rel="modulepreload" crossorigin href="/assets/dialog-CxN4lDeD.js">
42
+ <link rel="modulepreload" crossorigin href="/assets/pill-DYYeHA29.js">
43
+ <link rel="modulepreload" crossorigin href="/assets/effective-hosts-ps3WYS_d.js">
44
+ <link rel="modulepreload" crossorigin href="/assets/dialog-CaQY-B8P.js">
45
45
  <link rel="modulepreload" crossorigin href="/assets/mutation-cache-effects-BQHFwGL7.js">
46
- <link rel="modulepreload" crossorigin href="/assets/localhost-badge-BBCmn0GW.js">
46
+ <link rel="modulepreload" crossorigin href="/assets/localhost-badge-C9iEqET9.js">
47
47
  <link rel="modulepreload" crossorigin href="/assets/thread-queries-BOTfj5Vv.js">
48
- <link rel="stylesheet" crossorigin href="/assets/index-NyQy721J.css">
48
+ <link rel="stylesheet" crossorigin href="/assets/index-Ct4fTclZ.css">
49
49
  </head>
50
50
  <body>
51
51
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bb-app",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "bb app launcher for npx",
5
5
  "keywords": [
6
6
  "bb",
@@ -1 +0,0 @@
1
- import{An as e,At as t,Bn as n,Ft as r,Ki as i,Ot as a,Tt as o,Vi as s,Yr as c,_i as l,ii as u,ni as d,ri as f,t as p,vi as m}from"./page-shell-Dglk9LmR.js";import{c as h,d as g,i as _,n as v,o as y,xt as b}from"./effective-hosts-BWRuszG7.js";import{a as x,g as S,i as C,o as w,r as T,s as E,t as D}from"./dialog-CxN4lDeD.js";import{Bt as O,Rt as k,Vt as A,Xt as j,nn as M,rn as N}from"./index-D_DARDfc.js";import{i as P,n as F,r as I,t as ee}from"./settings-section-CZi6DvBs.js";var L=i(s(),1),R=`size-2 shrink-0 rounded-full ring-1 ring-inset transition-all bg-success ring-success/25 shadow-[0_0_0_4px_color-mix(in_oklch,var(--color-success)_16%,transparent)]`,z=m();function B({target:e,pending:t,onOpenChange:n,onDelete:r}){return(0,z.jsx)(D,{open:e!==null,onOpenChange:n,children:(0,z.jsx)(T,{children:e?(0,z.jsx)(V,{target:e,pending:t,onDelete:r}):null})})}function V({target:e,pending:t,onDelete:n}){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`Remove host?`}),(0,z.jsx)(C,{children:`Remove "${e.name}" and all of its project sources? This cannot be undone.`})]}),(0,z.jsx)(x,{children:(0,z.jsx)(c,{type:`button`,variant:`destructive`,disabled:t,onClick:()=>n(e.id),children:`Remove host`})})]})}function H({target:e,pending:t,onOpenChange:n,onRename:r}){return(0,z.jsx)(D,{open:e!==null,onOpenChange:n,children:(0,z.jsx)(T,{children:e?(0,z.jsx)(U,{target:e,pending:t,onRename:r},e.id):null})})}function U({target:e,pending:t,onRename:n}){let r=(0,L.useId)(),[i,a]=(0,L.useState)(e.currentName),[o,s]=(0,L.useState)(null);return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`Rename host`}),(0,z.jsx)(C,{children:`Choose a new name for this host.`})]}),(0,z.jsxs)(`form`,{className:`space-y-4`,onSubmit:r=>{if(r.preventDefault(),t)return;let a=i.trim();if(!a){s(`Host name cannot be empty.`);return}n(e.id,a)},children:[(0,z.jsxs)(`div`,{className:`space-y-2`,children:[(0,z.jsx)(S,{id:r,"aria-label":`Host name`,value:i,autoFocus:!0,disabled:t,onChange:e=>{a(e.target.value),o&&s(null)}}),o?(0,z.jsx)(`p`,{className:`text-sm text-destructive`,children:o}):null]}),(0,z.jsx)(x,{children:(0,z.jsx)(c,{type:`submit`,disabled:t,children:`Rename host`})})]})]})}function W({open:e,onOpenChange:t}){return(0,z.jsx)(D,{open:e,onOpenChange:t,children:(0,z.jsx)(T,{className:`sm:max-w-2xl`,children:(0,z.jsx)(G,{})})})}function G(){return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`Unable to add new host`}),(0,z.jsx)(C,{children:`You need to specify the URL that allows the new host to talk to the server.`})]}),(0,z.jsxs)(`div`,{className:`min-w-0 space-y-2 text-sm text-foreground`,children:[(0,z.jsx)(`p`,{children:`Run this on the server machine, then restart bb:`}),(0,z.jsx)(`pre`,{className:`min-w-0 overflow-x-auto rounded-md border border-border bg-muted/40 px-3 py-2 font-mono text-xs leading-5`,children:(0,z.jsx)(`code`,{children:`npx bb-app config BB_APP_URL http://<your-machine>.<tailnet>.ts.net:38886`})})]})]})}function K(e){return new Date(e).toLocaleTimeString(void 0,{hour:`numeric`,minute:`2-digit`})}function q({host:e,open:t,target:n,onOpenChange:r}){let i=t&&n!==null;return(0,z.jsx)(D,{open:i,onOpenChange:r,children:(0,z.jsx)(T,{className:`sm:max-w-2xl`,children:i&&n?(0,z.jsx)(J,{host:e,target:n}):null})})}function J({host:e,target:t}){let[n,r]=(0,L.useState)(()=>t.expiresAt<=Date.now()),i=e?.status===`connected`,a=!i&&!n,o=i?`Host connected`:n?`Join command expired`:`Waiting for host`;return(0,L.useEffect)(()=>{let e=t.expiresAt-Date.now();if(e<=0){r(!0);return}r(!1);let n=window.setTimeout(()=>r(!0),e);return()=>window.clearTimeout(n)},[t.expiresAt]),(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(w,{children:[(0,z.jsx)(E,{children:`New host`}),(0,z.jsx)(C,{children:`Run this command from the new host.`})]}),(0,z.jsxs)(`div`,{className:`min-w-0 space-y-3`,children:[(0,z.jsxs)(`div`,{className:`relative min-w-0 rounded-md border border-border bg-muted/40`,children:[(0,z.jsx)(`pre`,{className:`max-h-56 min-w-0 overflow-y-auto whitespace-pre-wrap break-all px-3 py-2.5 pr-10 text-xs leading-5`,children:(0,z.jsx)(`code`,{children:t.joinCommand})}),(0,z.jsx)(A,{text:t.joinCommand,label:`Copy host command`,className:`absolute right-2 top-2`})]}),(0,z.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 text-xs text-muted-foreground`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`,children:[i?(0,z.jsx)(d,{name:`CircleCheck`,className:`size-4 text-success`,"aria-hidden":`true`}):n?(0,z.jsx)(d,{name:`AlertCircle`,className:`size-4 text-destructive`,"aria-hidden":`true`}):null,(0,z.jsx)(`span`,{className:a?`animate-shine font-medium`:`font-medium text-foreground`,children:o}),a?(0,z.jsxs)(`span`,{children:[`· Expires at `,K(t.expiresAt)]}):null]})]})]})}var Y=[{label:`System`,value:`system`},{label:`Light`,value:`light`},{label:`Dark`,value:`dark`}],X={dark:`Dark`,light:`Light`,system:`System`};function Z(){let i=O(),{data:s=[],isLoading:m}=v(),x=l(),[S,C]=(0,L.useState)(null),[w,T]=(0,L.useState)(null),[E,D]=(0,L.useState)(null),[A,V]=(0,L.useState)(!1),[U,G]=(0,L.useState)(!1),K=u({meta:{errorMessage:`Failed to rename host.`},mutationFn:({id:t,name:n})=>e(t,{name:n}),onSuccess:()=>{M({queryClient:x}),C(null)}}),J=u({meta:{errorMessage:`Failed to remove host.`},mutationFn:({id:e})=>r(e),onSuccess:()=>{N({queryClient:x}),T(null)}}),Z=u({meta:{errorMessage:`Failed to create host join command.`,showErrorToast:!1},mutationFn:()=>t(),onSuccess:e=>{M({queryClient:x}),D(e),V(!0)},onError:e=>{if(e instanceof o&&e.code===`app_url_required`){G(!0);return}j({error:e,fallbackMessage:`Failed to create host join command.`})}}),Q=u({meta:{errorMessage:`Failed to cancel host join.`},mutationFn:({id:e})=>a(e),onSuccess:(e,t)=>{M({queryClient:x}),D(e=>e?.hostId===t.id?null:e),V(!1)}}),$=E===null?null:s.find(e=>e.id===E.hostId)??null,te=Z.isPending||Q.isPending;async function ne(){if(E!==null&&E.expiresAt>Date.now()&&$?.status!==`connected`){V(!0);return}if(E!==null&&$?.status!==`connected`)try{await Q.mutateAsync({id:E.hostId})}catch{return}Z.mutate()}(0,L.useEffect)(()=>{if(!A||$?.status!==`connected`)return;let e=window.setTimeout(()=>{D(null),V(!1)},1500);return()=>window.clearTimeout(e)},[A,$?.status]);function re(e){if(e){V(!0);return}E!==null&&$?.status!==`connected`&&Q.mutate({id:E.hostId}),D(null),V(!1)}return(0,z.jsxs)(p,{contentClassName:`pt-4 md:pt-5`,children:[(0,z.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl space-y-6`,children:[(0,z.jsx)(I,{title:`Appearance`,children:(0,z.jsx)(P,{label:`Theme`,children:(0,z.jsxs)(_,{children:[(0,z.jsx)(g,{asChild:!0,children:(0,z.jsxs)(c,{variant:`outline`,size:`sm`,className:`w-full justify-between sm:w-48`,"aria-label":`Theme`,children:[X[i],(0,z.jsx)(d,{name:`ChevronDown`,className:`size-3.5 text-muted-foreground`})]})}),(0,z.jsx)(y,{align:`end`,className:`w-48`,children:Y.map(e=>(0,z.jsxs)(h,{onSelect:()=>k(e.value),children:[e.label,(0,z.jsx)(d,{name:`Check`,className:f(`ml-auto`,i!==e.value&&`opacity-0`,b)})]},e.value))})]})})}),(0,z.jsx)(I,{title:`Hosts`,description:`Persistent hosts`,action:(0,z.jsxs)(c,{type:`button`,size:`sm`,variant:`ghost`,disabled:te,onClick:()=>{ne()},children:[(0,z.jsx)(d,{name:`Plus`,className:`size-3.5`}),`New host`]}),children:m?(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading…`}):s.length===0?(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No registered hosts.`}):(0,z.jsx)(F,{children:s.map(e=>{let t=e.status===`connected`;return(0,z.jsxs)(ee,{children:[(0,z.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[e.name,(0,z.jsx)(`span`,{className:`ml-1.5 text-xs text-muted-foreground`,children:e.id})]}),t?(0,z.jsx)(`span`,{className:R,title:`Connected`}):e.lastSeenAt===null?(0,z.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:`Never connected`}):(0,z.jsxs)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:[`Offline · `,n(e.lastSeenAt)]}),(0,z.jsxs)(_,{children:[(0,z.jsx)(g,{asChild:!0,children:(0,z.jsx)(c,{variant:`ghost`,size:`icon`,className:`h-7 w-7 shrink-0`,"aria-label":`Host actions`,children:(0,z.jsx)(d,{name:`MoreHorizontal`,className:`size-4`})})}),(0,z.jsxs)(y,{align:`end`,className:`w-40`,children:[(0,z.jsx)(h,{onSelect:()=>C({id:e.id,currentName:e.name}),children:`Rename`}),(0,z.jsx)(h,{className:`text-destructive focus:text-destructive`,onSelect:()=>T({id:e.id,name:e.name}),children:`Remove`})]})]})]},e.id)})})})]}),(0,z.jsx)(H,{target:S,pending:K.isPending,onOpenChange:e=>{e||C(null)},onRename:(e,t)=>K.mutate({id:e,name:t})}),(0,z.jsx)(B,{target:w,pending:J.isPending,onOpenChange:e=>{e||T(null)},onDelete:e=>J.mutate({id:e})}),(0,z.jsx)(q,{open:A,target:E,host:$,onOpenChange:re}),(0,z.jsx)(W,{open:U,onOpenChange:G})]})}export{Z as AppSettingsView};
@@ -1 +0,0 @@
1
- import{Ki as e,Lt as t,Tn as n,Vi as r,Yr as i,_i as a,ai as o,et as s,ii as c,ln as l,ni as u,ri as d,t as f,vi as p}from"./page-shell-Dglk9LmR.js";import{n as m}from"./effective-hosts-BWRuszG7.js";import{r as h,t as g}from"./pill-BHnTA2D7.js";import{C as _,M as v,in as y,j as b}from"./index-D_DARDfc.js";import{t as x}from"./split-button-CeV-MQ2f.js";var S=e(r(),1),C=p(),w=1,T=[.5,1,2,5,10],E=`block min-w-0 truncate text-foreground underline underline-offset-2 transition-colors hover:text-foreground/80`;function D(e){return`${e}×`}function O(e){return new Date(e).toLocaleString()}function k(){let e=a(),[r,p]=(0,S.useState)(()=>new Set),k=e=>{p(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},A=o({queryKey:s(),queryFn:()=>l()}),{data:j=[]}=m(),M=(0,S.useMemo)(()=>new Map(j.map(e=>[e.id,e.name])),[j]),N=c({mutationFn:e=>t(e),onSuccess:()=>{y({queryClient:e})}}),P=c({mutationFn:({captureId:e,speed:t})=>n(e,{speed:t}),onSuccess:e=>{window.open(`/projects/${e.projectId}/threads/${e.replayThreadId}`,`_blank`,`noopener`)}}),F=A.data?.captures??[];return(0,C.jsx)(f,{contentClassName:`pt-4 md:pt-5`,children:(0,C.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl space-y-4`,children:[(0,C.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-border/70 bg-muted/20 px-3 py-2 text-sm text-muted-foreground`,children:[(0,C.jsx)(u,{name:`Info`,className:`mt-0.5 size-4 shrink-0`}),(0,C.jsxs)(`p`,{className:`m-0`,children:[`Replay previously captured conversations in a fresh thread. To record new captures, create threads with`,` `,(0,C.jsx)(`code`,{className:`font-mono text-xs`,children:`BB_DEV_REPLAY_CAPTURE=true pnpm dev`}),`.`]})]}),A.isLoading?(0,C.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading…`}):A.isError?(0,C.jsx)(`p`,{className:`text-sm text-destructive`,children:`Failed to load replay captures.`}):F.length===0?(0,C.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-4 text-sm text-muted-foreground`,children:`No replay captures found on any connected host.`}):(0,C.jsx)(`div`,{className:`space-y-1`,children:F.map(e=>{let t=e.userInputPreview||e.captureId,n=e.kind===`thread-start`,a=n?`new`:`follow-up`,o=_(e.providerId),s=o?.icon,c=r.has(e.captureId),l=N.isPending&&N.variables===e.captureId,f=P.isPending&&P.variables?.captureId===e.captureId,p=P.isError&&P.variables?.captureId===e.captureId,m=e.eventCounts.rawProviderEvents===0,y={label:`Start replay at ${D(w)}`,onSelect:()=>P.mutate({captureId:e.captureId,speed:w}),content:(0,C.jsxs)(C.Fragment,{children:[f?(0,C.jsx)(u,{name:`Spinner`,className:`size-3 animate-spin`}):null,`Replay`]})},S=T.map(t=>({label:`Start replay at ${D(t)}`,onSelect:()=>P.mutate({captureId:e.captureId,speed:t}),content:(0,C.jsx)(`span`,{children:D(t)})}));return(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`div`,{className:`flex h-9 items-center gap-3 text-sm`,children:[(0,C.jsxs)(`button`,{type:`button`,onClick:()=>k(e.captureId),"aria-expanded":c,className:`flex min-w-0 flex-1 items-center gap-2 text-left`,children:[(0,C.jsx)(u,{name:`ChevronRight`,className:d(`size-3 shrink-0 text-muted-foreground transition-transform`,c&&`rotate-90`)}),(0,C.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,C.jsx)(`span`,{className:`min-w-0 max-w-xs truncate`,children:t}),e.title?(0,C.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:e.title}):null,(0,C.jsx)(g,{variant:n?`secondary`:`outline`,className:`shrink-0`,children:a}),s?(0,C.jsx)(s,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-label":o?.ariaLabel}):(0,C.jsx)(`span`,{className:`shrink-0 text-xs text-muted-foreground`,children:e.providerId})]})]}),(0,C.jsx)(x,{disabled:f||m,primaryAction:y,secondaryActions:S,triggerLabel:`Choose replay speed`,mobileTitle:`Replay speed`}),(0,C.jsx)(i,{type:`button`,variant:`ghost`,size:`icon`,"aria-label":`Delete replay capture`,title:`Delete replay capture`,disabled:l,onClick:()=>N.mutate(e.captureId),className:`size-6`,children:l?(0,C.jsx)(u,{name:`Spinner`,className:`size-3 animate-spin`}):(0,C.jsx)(u,{name:`Trash2`,className:`size-3`})})]}),c?(0,C.jsxs)(`div`,{className:`space-y-2 pb-3 pt-2`,children:[(0,C.jsxs)(b,{children:[(0,C.jsx)(v,{label:`Capture`,valueClassName:`min-w-0 truncate font-mono`,children:e.captureId}),(0,C.jsx)(v,{label:`Host`,valueClassName:`min-w-0 truncate`,children:M.get(e.hostId)??e.hostId}),(0,C.jsx)(v,{label:`Provider`,valueClassName:`min-w-0 truncate`,children:e.providerId}),(0,C.jsx)(v,{label:`Project`,valueClassName:`min-w-0`,children:(0,C.jsx)(h,{to:`/projects/${e.projectId}`,className:E,children:e.projectName??e.projectId})}),(0,C.jsx)(v,{label:`Thread`,valueClassName:`min-w-0`,children:(0,C.jsx)(h,{to:`/projects/${e.projectId}/threads/${e.threadId}`,className:d(E,!e.title&&`font-mono`),children:e.title??e.threadId})}),(0,C.jsx)(v,{label:`Captured`,valueClassName:`min-w-0 truncate`,children:O(e.capturedAt)}),(0,C.jsx)(v,{label:`Raw events`,valueClassName:`min-w-0 truncate`,children:e.eventCounts.rawProviderEvents})]}),p?(0,C.jsx)(`p`,{className:`text-xs text-destructive`,children:`Failed to start replay.`}):null]}):null]},`${e.hostId}:${e.captureId}`)})})]})})}export{k as InternalReplayListView};
@@ -1 +0,0 @@
1
- import{Jr as e,Ki as t,Vi as n,Yr as r,t as i,vi as a}from"./page-shell-Dglk9LmR.js";import{S as o,n as s,w as c}from"./thread-queries-BOTfj5Vv.js";import{f as l,r as u,t as d}from"./pill-BHnTA2D7.js";import{t as f}from"./ThreadUnarchiveButton-EqnpnszW.js";var p=t(n(),1),m=a(),h=[{value:`all`,label:`All`},{value:`manager`,label:`Managers`},{value:`managed`,label:`Managed`},{value:`unmanaged`,label:`Unmanaged`}];function g(e){return e.type===`manager`?`manager`:e.parentThreadId===null?null:`managed`}function _(){let{projectId:t}=l(),[n,a]=(0,p.useState)(`all`),_=s({projectId:t,kind:n}),v=o(),y=(0,p.useMemo)(()=>(_.data?.pages??[]).flat().filter(e=>e.archivedAt!=null),[_.data]);if(!t)return(0,m.jsx)(i,{contentClassName:`min-h-full items-center justify-center`,children:(0,m.jsx)(`p`,{className:`py-12 text-center text-sm text-muted-foreground`,children:`Project not found`})});let b=_.isPending,x=!b&&y.length===0;return(0,m.jsx)(i,{contentClassName:`pt-0`,children:(0,m.jsxs)(`div`,{className:`mx-auto w-full max-w-3xl`,children:[(0,m.jsxs)(`div`,{className:`sticky top-0 z-10 -mx-4 bg-background px-4 pt-4 md:-mx-5 md:px-5 md:pt-5`,children:[(0,m.jsx)(e,{placement:`below`,tone:`background`}),(0,m.jsx)(`div`,{className:`inline-flex items-center gap-1 rounded-lg border border-border/70 p-0.5`,role:`tablist`,"aria-label":`Filter archived threads`,children:h.map(e=>{let t=n===e.value;return(0,m.jsx)(r,{type:`button`,variant:`ghost`,size:`sm`,role:`tab`,"aria-selected":t,"aria-pressed":t,className:`h-7 rounded-md px-2 text-xs font-medium text-muted-foreground sm:px-3`,onClick:()=>a(e.value),children:e.label},e.value)})})]}),(0,m.jsxs)(`div`,{className:`space-y-3 pt-3`,children:[b?(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading archived threads…`}):x?(0,m.jsx)(`p`,{className:`rounded-md border border-dashed border-border px-3 py-4 text-sm text-muted-foreground`,children:`No archived threads yet.`}):(0,m.jsx)(`div`,{className:`space-y-1`,children:y.map(e=>{let n=g(e);return(0,m.jsxs)(`div`,{className:`group flex h-9 items-center gap-3 rounded-md px-3 text-sm transition-colors hover:bg-state-hover`,children:[(0,m.jsx)(u,{to:`/projects/${t}/threads/${e.id}`,className:`min-w-0 flex-1`,children:(0,m.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,m.jsx)(`span`,{className:`truncate`,children:c(e)}),n?(0,m.jsx)(d,{variant:`outline`,className:`shrink-0`,children:n}):null]})}),(0,m.jsx)(f,{isPending:v.isPending&&v.variables?.id===e.id,onUnarchive:()=>{v.mutate({id:e.id})},threadType:e.type,className:`hover:bg-accent-foreground/15`})]},e.id)})}),_.hasNextPage?(0,m.jsx)(r,{type:`button`,variant:`ghost`,onClick:()=>{_.fetchNextPage()},disabled:_.isFetchingNextPage,className:`h-9 w-full justify-center rounded-md px-3 text-sm font-normal text-muted-foreground`,children:_.isFetchingNextPage?`Loading…`:`Load more`}):null]})]})})}export{_ as ProjectArchivedThreadsView};