@tapflowio/relay 0.24.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/RelayServer.d.ts +45 -0
- package/dist/RelayServer.d.ts.map +1 -1
- package/dist/RelayServer.js +245 -30
- package/dist/RelayServer.js.map +1 -1
- package/dist/api/apps.d.ts.map +1 -1
- package/dist/api/apps.js +6 -16
- package/dist/api/apps.js.map +1 -1
- package/dist/api/auth.d.ts.map +1 -1
- package/dist/api/auth.js +3 -12
- package/dist/api/auth.js.map +1 -1
- package/dist/api/builds.d.ts.map +1 -1
- package/dist/api/builds.js +7 -5
- package/dist/api/builds.js.map +1 -1
- package/dist/api/comments.d.ts.map +1 -1
- package/dist/api/comments.js +41 -15
- package/dist/api/comments.js.map +1 -1
- package/dist/api/invitations.d.ts +1 -1
- package/dist/api/invitations.d.ts.map +1 -1
- package/dist/api/invitations.js +7 -3
- package/dist/api/invitations.js.map +1 -1
- package/dist/api/passwordReset.js +2 -2
- package/dist/api/team.d.ts +2 -2
- package/dist/api/team.d.ts.map +1 -1
- package/dist/api/team.js +6 -2
- package/dist/api/team.js.map +1 -1
- package/dist/api/tokens.d.ts +1 -1
- package/dist/api/tokens.d.ts.map +1 -1
- package/dist/api/tokens.js +26 -7
- package/dist/api/tokens.js.map +1 -1
- package/dist/api/webhooks.d.ts.map +1 -1
- package/dist/api/webhooks.js +11 -5
- package/dist/api/webhooks.js.map +1 -1
- package/dist/lib/clientAddress.d.ts +7 -0
- package/dist/lib/clientAddress.d.ts.map +1 -1
- package/dist/lib/clientAddress.js +15 -0
- package/dist/lib/clientAddress.js.map +1 -1
- package/dist/lib/connectionAuth.d.ts +57 -2
- package/dist/lib/connectionAuth.d.ts.map +1 -1
- package/dist/lib/connectionAuth.js +65 -6
- package/dist/lib/connectionAuth.js.map +1 -1
- package/dist/middleware/auth.d.ts +44 -4
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +99 -27
- package/dist/middleware/auth.js.map +1 -1
- package/package.json +3 -3
- package/public/assets/AppCenter-D_1rFI40.js +26 -0
- package/public/assets/AppCenter-D_1rFI40.js.br +0 -0
- package/public/assets/AppCenter-D_1rFI40.js.gz +0 -0
- package/public/assets/Default-DF_X2_3I.js +1 -0
- package/public/assets/Default-DF_X2_3I.js.br +0 -0
- package/public/assets/Default-DF_X2_3I.js.gz +0 -0
- package/public/assets/{Invite-EVMTsuNz.js → Invite-DETTWdYp.js} +1 -1
- package/public/assets/Invite-DETTWdYp.js.br +0 -0
- package/public/assets/Invite-DETTWdYp.js.gz +0 -0
- package/public/assets/{MacResources-fCn40Tf5.js → MacResources--1Enisxs.js} +1 -1
- package/public/assets/MacResources--1Enisxs.js.br +0 -0
- package/public/assets/MacResources--1Enisxs.js.gz +0 -0
- package/public/assets/{QASession-CL-eyFxG.js → QASession-BjoD9Toj.js} +3 -3
- package/public/assets/QASession-BjoD9Toj.js.br +0 -0
- package/public/assets/QASession-BjoD9Toj.js.gz +0 -0
- package/public/assets/{ResetPassword-D-SFg4ap.js → ResetPassword-B9miyXTP.js} +1 -1
- package/public/assets/ResetPassword-B9miyXTP.js.br +0 -0
- package/public/assets/ResetPassword-B9miyXTP.js.gz +0 -0
- package/public/assets/{Setup-ULjvIfAi.js → Setup-CywZCqHU.js} +1 -1
- package/public/assets/Setup-CywZCqHU.js.br +0 -0
- package/public/assets/Setup-CywZCqHU.js.gz +0 -0
- package/public/assets/{Team-DH91GD4w.js → Team-CxdX_9mY.js} +2 -2
- package/public/assets/Team-CxdX_9mY.js.br +0 -0
- package/public/assets/Team-CxdX_9mY.js.gz +0 -0
- package/public/assets/Tokens-BQnnawvG.js +1 -0
- package/public/assets/Tokens-BQnnawvG.js.br +0 -0
- package/public/assets/Tokens-BQnnawvG.js.gz +0 -0
- package/public/assets/alert-dialog-CuPdBkxF.js +1 -0
- package/public/assets/alert-dialog-CuPdBkxF.js.br +0 -0
- package/public/assets/alert-dialog-CuPdBkxF.js.gz +0 -0
- package/public/assets/{badge-B4QAWrzA.js → badge-CSVsKOK_.js} +1 -1
- package/public/assets/badge-CSVsKOK_.js.br +0 -0
- package/public/assets/badge-CSVsKOK_.js.gz +0 -0
- package/public/assets/{build-format-CtmRXihN.js → build-format-l9BrlbZl.js} +1 -1
- package/public/assets/build-format-l9BrlbZl.js.br +0 -0
- package/public/assets/build-format-l9BrlbZl.js.gz +0 -0
- package/public/assets/{dialog-BAFN_ONP.js → dialog-B6jt7-2f.js} +3 -3
- package/public/assets/dialog-B6jt7-2f.js.br +0 -0
- package/public/assets/dialog-B6jt7-2f.js.gz +0 -0
- package/public/assets/{index-COOWQXpW.js → index-Cm17I31a.js} +32 -32
- package/public/assets/index-Cm17I31a.js.br +0 -0
- package/public/assets/index-Cm17I31a.js.gz +0 -0
- package/public/assets/index-D_P99bPX.css +1 -0
- package/public/assets/index-D_P99bPX.css.br +0 -0
- package/public/assets/{index-ozCdBYxk.css.gz → index-D_P99bPX.css.gz} +0 -0
- package/public/assets/{list-view-Rrqp8TkG.js → list-view-Bp6pvsde.js} +1 -1
- package/public/assets/list-view-Bp6pvsde.js.br +0 -0
- package/public/assets/list-view-Bp6pvsde.js.gz +0 -0
- package/public/assets/{pencil-CAHyK7Qf.js → pencil-g-WiK1F2.js} +1 -1
- package/public/assets/pencil-g-WiK1F2.js.br +0 -0
- package/public/assets/pencil-g-WiK1F2.js.gz +0 -0
- package/public/assets/resource-health-BbeyA8an.js +1 -0
- package/public/assets/resource-health-BbeyA8an.js.br +0 -0
- package/public/assets/resource-health-BbeyA8an.js.gz +0 -0
- package/public/assets/{trash-CkO-5TRA.js → trash-DHPg15P4.js} +1 -1
- package/public/assets/trash-DHPg15P4.js.br +0 -0
- package/public/assets/trash-DHPg15P4.js.gz +0 -0
- package/public/index.html +2 -2
- package/public/index.html.br +0 -0
- package/public/index.html.gz +0 -0
- package/public/assets/AppCenter-BHz6vh5p.js +0 -26
- package/public/assets/AppCenter-BHz6vh5p.js.br +0 -0
- package/public/assets/AppCenter-BHz6vh5p.js.gz +0 -0
- package/public/assets/Default-bCqU0Qz9.js +0 -1
- package/public/assets/Default-bCqU0Qz9.js.br +0 -0
- package/public/assets/Default-bCqU0Qz9.js.gz +0 -0
- package/public/assets/Invite-EVMTsuNz.js.br +0 -0
- package/public/assets/Invite-EVMTsuNz.js.gz +0 -0
- package/public/assets/MacResources-fCn40Tf5.js.br +0 -0
- package/public/assets/MacResources-fCn40Tf5.js.gz +0 -0
- package/public/assets/QASession-CL-eyFxG.js.br +0 -0
- package/public/assets/QASession-CL-eyFxG.js.gz +0 -0
- package/public/assets/ResetPassword-D-SFg4ap.js.br +0 -0
- package/public/assets/ResetPassword-D-SFg4ap.js.gz +0 -0
- package/public/assets/Setup-ULjvIfAi.js.br +0 -0
- package/public/assets/Setup-ULjvIfAi.js.gz +0 -0
- package/public/assets/Team-DH91GD4w.js.br +0 -0
- package/public/assets/Team-DH91GD4w.js.gz +0 -0
- package/public/assets/Tokens-DImLpOVZ.js +0 -1
- package/public/assets/Tokens-DImLpOVZ.js.br +0 -0
- package/public/assets/Tokens-DImLpOVZ.js.gz +0 -0
- package/public/assets/alert-dialog-CwcUyDZQ.js +0 -1
- package/public/assets/alert-dialog-CwcUyDZQ.js.br +0 -0
- package/public/assets/alert-dialog-CwcUyDZQ.js.gz +0 -0
- package/public/assets/badge-B4QAWrzA.js.br +0 -0
- package/public/assets/badge-B4QAWrzA.js.gz +0 -0
- package/public/assets/build-format-CtmRXihN.js.br +0 -0
- package/public/assets/build-format-CtmRXihN.js.gz +0 -0
- package/public/assets/dialog-BAFN_ONP.js.br +0 -0
- package/public/assets/dialog-BAFN_ONP.js.gz +0 -0
- package/public/assets/index-COOWQXpW.js.br +0 -0
- package/public/assets/index-COOWQXpW.js.gz +0 -0
- package/public/assets/index-ozCdBYxk.css +0 -1
- package/public/assets/index-ozCdBYxk.css.br +0 -0
- package/public/assets/list-view-Rrqp8TkG.js.br +0 -0
- package/public/assets/list-view-Rrqp8TkG.js.gz +0 -0
- package/public/assets/pencil-CAHyK7Qf.js.br +0 -0
- package/public/assets/pencil-CAHyK7Qf.js.gz +0 -0
- package/public/assets/resource-health-BRpSwarg.js +0 -1
- package/public/assets/resource-health-BRpSwarg.js.br +0 -0
- package/public/assets/resource-health-BRpSwarg.js.gz +0 -0
- package/public/assets/trash-CkO-5TRA.js.br +0 -0
- package/public/assets/trash-CkO-5TRA.js.gz +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-standard-normal-BwkfbSeq.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-standard-normal-DpK-iCPk.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 98%;--foreground: 0 0% 9%;--card: 0 0% 100%;--card-foreground: 0 0% 9%;--popover: 0 0% 100%;--popover-foreground: 0 0% 9%;--primary: 0 0% 9%;--primary-foreground: 0 0% 100%;--secondary: 0 0% 96%;--secondary-foreground: 0 0% 9%;--muted: 0 0% 96%;--muted-foreground: 0 0% 53%;--accent: 0 0% 96%;--accent-foreground: 0 0% 9%;--destructive: 0 100% 47%;--destructive-foreground: 0 0% 100%;--border: 0 0% 92%;--input: 0 0% 92%;--ring: 0 0% 9%;--radius: .5rem;--avatar-1-bg: 353 90% 82%;--avatar-1-fg: 353 80% 28%;--avatar-2-bg: 25 100% 76%;--avatar-2-fg: 25 90% 25%;--avatar-3-bg: 48 100% 72%;--avatar-3-fg: 31 85% 25%;--avatar-4-bg: 151 70% 70%;--avatar-4-fg: 151 80% 18%;--avatar-5-bg: 216 90% 78%;--avatar-5-fg: 216 85% 25%;--avatar-6-bg: 278 75% 84%;--avatar-6-fg: 278 75% 28%;--sidebar-background: 0 0% 98%;--sidebar-foreground: 0 0% 30%;--sidebar-primary: 0 0% 9%;--sidebar-primary-foreground: 0 0% 100%;--sidebar-accent: 0 0% 96%;--sidebar-accent-foreground: 0 0% 9%;--sidebar-border: 0 0% 92%;--sidebar-ring: 211 100% 48%;--chart-1: 216 85% 55%;--chart-2: 262 65% 58%;--chart-3: 30 80% 55%;--chart-4: 151 65% 45%;--chart-5: 340 75% 55%}.dark{--background: 0 0% 9%;--foreground: 0 0% 98%;--card: 0 0% 11%;--card-foreground: 0 0% 98%;--popover: 0 0% 11%;--popover-foreground: 0 0% 98%;--primary: 0 0% 98%;--primary-foreground: 0 0% 9%;--secondary: 0 0% 15%;--secondary-foreground: 0 0% 98%;--muted: 0 0% 15%;--muted-foreground: 0 0% 65%;--accent: 0 0% 15%;--accent-foreground: 0 0% 98%;--destructive: 0 70% 62%;--destructive-foreground: 0 0% 98%;--border: 0 0% 18%;--input: 0 0% 18%;--ring: 0 0% 98%;--avatar-1-bg: 353 40% 32%;--avatar-1-fg: 353 60% 78%;--avatar-2-bg: 25 42% 32%;--avatar-2-fg: 25 65% 78%;--avatar-3-bg: 48 42% 32%;--avatar-3-fg: 48 65% 78%;--avatar-4-bg: 151 36% 28%;--avatar-4-fg: 151 50% 72%;--avatar-5-bg: 216 42% 32%;--avatar-5-fg: 216 60% 78%;--avatar-6-bg: 278 38% 32%;--avatar-6-fg: 278 55% 78%;--sidebar-background: 0 0% 7%;--sidebar-foreground: 0 0% 80%;--sidebar-primary: 0 0% 98%;--sidebar-primary-foreground: 0 0% 9%;--sidebar-accent: 0 0% 13%;--sidebar-accent-foreground: 0 0% 98%;--sidebar-border: 0 0% 18%;--sidebar-ring: 211 100% 48%;--chart-1: 216 80% 65%;--chart-2: 262 60% 68%;--chart-3: 30 75% 65%;--chart-4: 151 60% 55%;--chart-5: 340 70% 65%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-feature-settings:"ss01","ss02";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button:not([aria-haspopup]):not(:disabled),[role=button]:not([aria-haspopup]):not(:disabled){transition-property:color,background-color,border-color,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.12s}button:active:not([aria-haspopup]):not(:disabled),[role=button]:active:not([aria-haspopup]):not(:disabled){transform:translateY(1px)}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-3\.5{top:.875rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50,.z-\[50\]{z-index:50}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-ml-1{margin-left:-.25rem}.-mr-4{margin-right:-1rem}.-mt-1{margin-top:-.25rem}.mb-1{margin-bottom:.25rem}.ml-0\.5{margin-left:.125rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.\!hidden{display:none!important}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.size-3{width:.75rem;height:.75rem}.size-3\.5{width:.875rem;height:.875rem}.size-4{width:1rem;height:1rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[220px\]{height:220px}.h-\[32px\]{height:32px}.h-\[52px\]{height:52px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-48{max-height:12rem}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\]{max-height:var(--radix-dropdown-menu-content-available-height)}.min-h-0{min-height:0px}.min-h-16{min-height:4rem}.min-h-\[100px\]{min-height:100px}.min-h-\[80px\]{min-height:80px}.min-h-full{min-height:100%}.min-h-svh{min-height:100svh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[1px\]{width:1px}.w-\[300px\]{width:300px}.w-\[500px\]{width:500px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-5{min-width:1.25rem}.min-w-6{min-width:1.5rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-\[--skeleton-width\]{max-width:var(--skeleton-width)}.max-w-\[500px\]{max-width:500px}.max-w-\[900px\]{max-width:900px}.max-w-lg{max-width:32rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\[--radix-dropdown-menu-content-transform-origin\]{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x: -1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-px{--tw-translate-x: 1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-0{--tw-rotate: 0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-0{--tw-scale-x: 0;--tw-scale-y: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[12px\]{gap:12px}.gap-\[4px\]{gap:4px}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){border-color:hsl(var(--border))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.\!rounded-\[18px\]{border-radius:18px!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-pill{border-radius:100px}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-border{border-color:hsl(var(--border))}.border-input{border-color:hsl(var(--input))}.border-sidebar-border{border-color:hsl(var(--sidebar-border))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-background{background-color:hsl(var(--background))}.bg-background\/90{background-color:hsl(var(--background) / .9)}.bg-black\/80{background-color:#000c}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-foreground\/85{background-color:hsl(var(--foreground) / .85)}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/40{background-color:hsl(var(--muted-foreground) / .4)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-sidebar{background-color:hsl(var(--sidebar-background))}.bg-sidebar-border{background-color:hsl(var(--sidebar-border))}.bg-sky-50{--tw-bg-opacity: 1;background-color:rgb(240 249 255 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-violet-400{--tw-bg-opacity: 1;background-color:rgb(167 139 250 / var(--tw-bg-opacity, 1))}.bg-zinc-100{--tw-bg-opacity: 1;background-color:rgb(244 244 245 / var(--tw-bg-opacity, 1))}.bg-zinc-700{--tw-bg-opacity: 1;background-color:rgb(63 63 70 / var(--tw-bg-opacity, 1))}.fill-current{fill:currentColor}.fill-muted-foreground{fill:hsl(var(--muted-foreground))}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-\[10px\]{padding:10px}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[7px\]{padding-left:7px;padding-right:7px}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-\[1px\]{padding-bottom:1px}.pl-1{padding-left:.25rem}.pl-8{padding-left:2rem}.pl-\[4px\]{padding-left:4px}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,monospace}.font-sans{font-family:Inter,ui-sans-serif,system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-display-md{letter-spacing:-.96px}.tracking-display-sm{letter-spacing:-.6px}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-500\/60{color:#f59e0b99}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-background{color:hsl(var(--background))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/70{color:hsl(var(--foreground) / .7)}.text-foreground\/75{color:hsl(var(--foreground) / .75)}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/40{color:hsl(var(--muted-foreground) / .4)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}.text-sidebar-foreground{color:hsl(var(--sidebar-foreground))}.text-sidebar-foreground\/70{color:hsl(var(--sidebar-foreground) / .7)}.text-sky-700{--tw-text-opacity: 1;color:rgb(3 105 161 / var(--tw-text-opacity, 1))}.text-zinc-600{--tw-text-opacity: 1;color:rgb(82 82 91 / var(--tw-text-opacity, 1))}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-border));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-card-1{--tw-shadow: inset 0 0 0 1px rgba(0,0,0,.08);--tw-shadow-colored: inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-card-2{--tw-shadow: 0px 1px 1px rgba(0,0,0,.02), 0px 2px 2px rgba(0,0,0,.04), inset 0 0 0 1px rgba(0,0,0,.08);--tw-shadow-colored: 0px 1px 1px var(--tw-shadow-color), 0px 2px 2px var(--tw-shadow-color), inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-card-3{--tw-shadow: 0px 2px 2px rgba(0,0,0,.04), 0px 8px 8px -8px rgba(0,0,0,.04), inset 0 0 0 1px rgba(0,0,0,.08);--tw-shadow-colored: 0px 2px 2px var(--tw-shadow-color), 0px 8px 8px -8px var(--tw-shadow-color), inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-card-4{--tw-shadow: 0px 2px 2px rgba(0,0,0,.04), 0px 8px 16px -4px rgba(0,0,0,.04), inset 0 0 0 1px rgba(0,0,0,.08);--tw-shadow-colored: 0px 2px 2px var(--tw-shadow-color), 0px 8px 16px -4px var(--tw-shadow-color), inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-sidebar-ring{--tw-ring-color: hsl(var(--sidebar-ring))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);top:-.5rem;right:-.5rem;bottom:-.5rem;left:-.5rem}.after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.first\:pt-0:first-child{padding-top:0}.last\:pb-0:last-child{padding-bottom:0}.focus-within\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-within\:ring-ring:focus-within{--tw-ring-color: hsl(var(--ring))}.focus-within\:ring-offset-2:focus-within{--tw-ring-offset-width: 2px}.hover\:border-primary:hover{border-color:hsl(var(--primary))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-destructive\/20:hover{background-color:hsl(var(--destructive) / .2)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-sidebar-accent:hover{background-color:hsl(var(--sidebar-accent))}.hover\:bg-transparent:hover{background-color:transparent}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-amber-500:hover{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.hover\:text-sidebar-accent-foreground:hover{color:hsl(var(--sidebar-accent-foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:\!opacity-100:hover{opacity:1!important}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent));--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:hsl(var(--sidebar-border))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-destructive:focus{color:hsl(var(--destructive))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:\!opacity-100:focus-visible{opacity:1!important}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-offset-\[-2px\]:focus-visible{outline-offset:-2px}.focus-visible\:outline-ring:focus-visible{outline-color:hsl(var(--ring))}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset: inset}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-sidebar-ring:focus-visible{--tw-ring-color: hsl(var(--sidebar-ring))}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width: 0px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:bg-sidebar-accent:active{background-color:hsl(var(--sidebar-accent))}.active\:text-sidebar-accent-foreground:active{color:hsl(var(--sidebar-accent-foreground))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100{opacity:1}.group:focus-within .group-focus-within\:opacity-50{opacity:.5}.group\/menu-item:hover .group-hover\/menu-item\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-50{opacity:.5}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.peer\/menu-button:hover~.peer-hover\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.has-\[\[data-variant\=inset\]\]\:bg-sidebar:has([data-variant=inset]){background-color:hsl(var(--sidebar-background))}.group\/menu-item:has([data-sidebar=menu-action]) .group-has-\[\[data-sidebar\=menu-action\]\]\/menu-item\:pr-8{padding-right:2rem}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x: 1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:hsl(var(--sidebar-accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[active\=true\]\:font-medium[data-active=true]{font-weight:500}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:hsl(var(--sidebar-accent-foreground))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[state\=open\]\:hover\:bg-sidebar-accent:hover[data-state=open]{background-color:hsl(var(--sidebar-accent))}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground:hover[data-state=open]{color:hsl(var(--sidebar-accent-foreground))}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]{left:calc(var(--sidebar-width) * -1)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]{right:calc(var(--sidebar-width) * -1)}.group[data-side=left] .group-data-\[side\=left\]\:-right-4{right:-1rem}.group[data-side=right] .group-data-\[side\=right\]\:left-0{left:0}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:-mt-8{margin-top:-2rem}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:hidden{display:none}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!size-8{width:2rem!important;height:2rem!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[--sidebar-width-icon\]{width:var(--sidebar-width-icon)}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)\)\]{width:calc(var(--sidebar-width-icon) + 1rem)}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)_\+_theme\(spacing\.4\)_\+2px\)\]{width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:w-0{width:0px}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\[side\=right\]\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:justify-center{justify-content:center}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\[variant\=floating\]\:rounded-lg{border-radius:var(--radius)}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border{border-width:1px}.group[data-side=left] .group-data-\[side\=left\]\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\[side\=right\]\:border-l{border-left-width:1px}.group[data-variant=floating] .group-data-\[variant\=floating\]\:border-sidebar-border{border-color:hsl(var(--sidebar-border))}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-0{padding:0!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:\!p-2{padding:.5rem!important}.group[data-collapsible=icon] .group-data-\[collapsible\=icon\]\:opacity-0{opacity:0}.group[data-variant=floating] .group-data-\[variant\=floating\]\:shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:after\:left-full:after{content:var(--tw-content);left:100%}.group[data-collapsible=offcanvas] .group-data-\[collapsible\=offcanvas\]\:hover\:bg-sidebar:hover{background-color:hsl(var(--sidebar-background))}.peer\/menu-button[data-size=default]~.peer-data-\[size\=default\]\/menu-button\:top-1\.5{top:.375rem}.peer\/menu-button[data-size=lg]~.peer-data-\[size\=lg\]\/menu-button\:top-2\.5{top:.625rem}.peer\/menu-button[data-size=sm]~.peer-data-\[size\=sm\]\/menu-button\:top-1{top:.25rem}.peer\/menu-button[data-active=true]~.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground{color:hsl(var(--sidebar-accent-foreground))}.dark\:-rotate-90:is(.dark *){--tw-rotate: -90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:rotate-0:is(.dark *){--tw-rotate: 0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-0:is(.dark *){--tw-scale-x: 0;--tw-scale-y: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-100:is(.dark *){--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-emerald-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(2 44 34 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-red-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-sky-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(8 47 73 / var(--tw-bg-opacity, 1))}.dark\:bg-zinc-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1))}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-emerald-300:is(.dark *){--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-sky-300:is(.dark *){--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity, 1))}.dark\:text-zinc-400:is(.dark *){--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity, 1))}@media(min-width:640px){.sm\:mt-0{margin-top:0}.sm\:flex{display:flex}.sm\:max-w-\[440px\]{max-width:440px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2\.5{gap:.625rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}@media(min-width:768px){.md\:block{display:block}.md\:flex{display:flex}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:opacity-0{opacity:0}.after\:md\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:m-2{margin:.5rem}.peer[data-state=collapsed][data-variant=inset]~.md\:peer-data-\[state\=collapsed\]\:peer-data-\[variant\=inset\]\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:ml-0{margin-left:0}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:rounded-xl{border-radius:.75rem}.peer[data-variant=inset]~.md\:peer-data-\[variant\=inset\]\:shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1536px){.\32xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.\[\&\>svg\]\:h-3\.5>svg{height:.875rem}.\[\&\>svg\]\:w-3\.5>svg{width:.875rem}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:hsl(var(--sidebar-accent-foreground))}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:.75rem;height:.75rem}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=left] .\[\[data-side\=left\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}[data-side=right] .\[\[data-side\=right\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/20{background-color:hsl(var(--background) / .2)}[data-slot=tooltip-content] .\[\[data-slot\=tooltip-content\]_\&\]\:text-background{color:hsl(var(--background))}[data-slot=tooltip-content] .dark\:\[\[data-slot\=tooltip-content\]_\&\]\:bg-background\/10:is(.dark *){background-color:hsl(var(--background) / .1)}
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{k as c,f as n,j as i}from"./vendor-react-BlPSzrEe.js";import{
|
|
1
|
+
import{k as c,f as n,j as i}from"./vendor-react-BlPSzrEe.js";import{W as d,B as x}from"./index-Cm17I31a.js";const N=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("w-full caption-bottom text-sm",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("div",{className:"relative w-full overflow-auto",children:i.jsx("table",{ref:a,className:l,...s})}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});N.displayName="Table";const T=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("[&_tr]:border-b",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("thead",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});T.displayName="TableHeader";const h=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("[&_tr:last-child]:border-0",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("tbody",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});h.displayName="TableBody";const w=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("tfoot",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});w.displayName="TableFooter";const b=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("tr",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});b.displayName="TableRow";const g=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("th",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});g.displayName="TableHead";const u=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("p-4 align-middle [&:has([role=checkbox])]:pr-0",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("td",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});u.displayName="TableCell";const j=c.forwardRef((r,a)=>{const e=n.c(9);let t,s;e[0]!==r?({className:t,...s}=r,e[0]=r,e[1]=t,e[2]=s):(t=e[1],s=e[2]);let l;e[3]!==t?(l=d("mt-4 text-sm text-muted-foreground",t),e[3]=t,e[4]=l):l=e[4];let o;return e[5]!==s||e[6]!==a||e[7]!==l?(o=i.jsx("caption",{ref:a,className:l,...s}),e[5]=s,e[6]=a,e[7]=l,e[8]=o):o=e[8],o});j.displayName="TableCaption";function $(r){const a=n.c(7),{view:e,colSpan:t,noun:s,emptyText:l,onRetry:o}=r;if(e==="list")return null;const f=e==="loading"?"Loading…":e==="empty"?l:`Couldn't load ${s}.`;let m;a[0]!==o||a[1]!==e?(m=e==="error"&&i.jsx(x,{variant:"outline",size:"sm",className:"ml-3",onClick:o,children:"Try again"}),a[0]=o,a[1]=e,a[2]=m):m=a[2];let p;return a[3]!==t||a[4]!==f||a[5]!==m?(p=i.jsx(b,{className:"hover:bg-transparent",children:i.jsxs(u,{colSpan:t,className:"h-20 text-center text-muted-foreground",children:[f,m]})}),a[3]=t,a[4]=f,a[5]=m,a[6]=p):p=a[6],p}function v(r){return r.data?r.data.length>0?"list":"empty":r.isError?"error":"loading"}export{$ as L,N as T,h as a,u as b,g as c,T as d,b as e,v as l};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as C,k as u,j as f}from"./vendor-react-BlPSzrEe.js";import{w as M,v as _,a4 as L,s as U,Y as E,a0 as V,aD as G,aC as H,aG as F,u as K,W as S}from"./index-Cm17I31a.js";function W(){const t=new Uint8Array(16);return crypto.getRandomValues(t),Array.from(t,n=>n.toString(16).padStart(2,"0")).join("")}const Y=location.protocol==="https:"?"wss:":"ws:",q=`${Y}//${location.host}`,J=2e3,z=W();function B(){const t=new URL(q);return t.searchParams.set("client",z),t.toString()}function be(t,n){const e=C.c(9),o=u.useRef(null),[a,s]=u.useState(!1),r=u.useRef(t),i=u.useRef(n);let d,b;e[0]!==n||e[1]!==t?(d=()=>{r.current=t,i.current=n},b=[t,n],e[0]=n,e[1]=t,e[2]=d,e[3]=b):(d=e[2],b=e[3]),u.useLayoutEffect(d,b);let m,l;e[4]===Symbol.for("react.memo_cache_sentinel")?(m=()=>{let T=!1;const R=()=>{if(T)return;const p=new WebSocket(B());p.binaryType="arraybuffer",o.current=p,p.onopen=()=>s(!0),p.onclose=()=>{s(!1),T||setTimeout(R,J)},p.onmessage=x=>{var A;if(x.data instanceof ArrayBuffer){(A=i.current)==null||A.call(i,x.data);return}try{r.current(JSON.parse(x.data))}catch{}}};return R(),()=>{var p;T=!0,(p=o.current)==null||p.close()}},l=[],e[4]=m,e[5]=l):(m=e[4],l=e[5]),u.useEffect(m,l);let c;e[6]===Symbol.for("react.memo_cache_sentinel")?(c=T=>{var R;((R=o.current)==null?void 0:R.readyState)===WebSocket.OPEN&&o.current.send(JSON.stringify(T))},e[6]=c):c=e[6];const g=c;let y;return e[7]!==a?(y={send:g,connected:a},e[7]=a,e[8]=y):y=e[8],y}var Q=Object.defineProperty,v=(t,n)=>Q(t,"name",{value:n,configurable:!0}),h="Tabs",[X,me]=V(h,[L]),$=L(),[Z,w]=X(h),ee=u.forwardRef(v(function(n,e){const{__scopeTabs:o,value:a,onValueChange:s,defaultValue:r,orientation:i="horizontal",dir:d,activationMode:b="automatic",...m}=n,l=G(d),[c,g]=H({prop:a,onChange:s,defaultProp:r??"",caller:h});return f.jsx(Z,{scope:o,baseId:F(),value:c,onValueChange:g,orientation:i,dir:l,activationMode:b,children:f.jsx(_.div,{dir:l,"data-orientation":i,...m,ref:e})})},"Tabs")),te="TabsList",ne=u.forwardRef(v(function(n,e){const{__scopeTabs:o,loop:a=!0,...s}=n,r=w(te,o),i=$(o);return f.jsx(M,{asChild:!0,...i,orientation:r.orientation,dir:r.dir,loop:a,children:f.jsx(_.div,{role:"tablist","aria-orientation":r.orientation,...s,ref:e})})},"TabsList")),ae="TabsTrigger",se=u.forwardRef(v(function(n,e){const{__scopeTabs:o,value:a,disabled:s=!1,...r}=n,i=w(ae,o),d=$(o),b=N(i.baseId,a),m=I(i.baseId,a),l=a===i.value;return f.jsx(U,{asChild:!0,...d,focusable:!s,active:l,children:f.jsx(_.button,{type:"button",role:"tab","aria-selected":l,"aria-controls":m,"data-state":l?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:b,...r,ref:e,onMouseDown:E(n.onMouseDown,c=>{!s&&c.button===0&&c.ctrlKey===!1?i.onValueChange(a):c.preventDefault()}),onKeyDown:E(n.onKeyDown,c=>{s||c.target!==c.currentTarget||[" ","Enter"].includes(c.key)&&i.onValueChange(a)}),onFocus:E(n.onFocus,()=>{const c=i.activationMode!=="manual";!l&&!s&&c&&i.onValueChange(a)})})})},"TabsTrigger")),oe="TabsContent",re=u.forwardRef(v(function(n,e){const{__scopeTabs:o,value:a,forceMount:s,children:r,...i}=n,d=w(oe,o),b=N(d.baseId,a),m=I(d.baseId,a),l=a===d.value,c=u.useRef(l);return u.useEffect(()=>{const g=requestAnimationFrame(()=>c.current=!1);return()=>cancelAnimationFrame(g)},[]),f.jsx(K,{present:s||l,children:({present:g})=>f.jsx(_.div,{"data-state":l?"active":"inactive","data-orientation":d.orientation,role:"tabpanel","aria-labelledby":b,hidden:!g,id:m,tabIndex:0,...i,ref:e,style:{...n.style,animationDuration:c.current?"0s":void 0},children:g&&r})})},"TabsContent"));function N(t,n){return`${t}-trigger-${n}`}v(N,"makeTriggerId");function I(t,n){return`${t}-content-${n}`}v(I,"makeContentId");var ie=ee,k=ne,D=se,O=re;const ge=ie,ce=u.forwardRef((t,n)=>{const e=C.c(9);let o,a;e[0]!==t?({className:o,...a}=t,e[0]=t,e[1]=o,e[2]=a):(o=e[1],a=e[2]);let s;e[3]!==o?(s=S("inline-flex h-9 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",o),e[3]=o,e[4]=s):s=e[4];let r;return e[5]!==a||e[6]!==n||e[7]!==s?(r=f.jsx(k,{ref:n,className:s,...a}),e[5]=a,e[6]=n,e[7]=s,e[8]=r):r=e[8],r});ce.displayName=k.displayName;const le=u.forwardRef((t,n)=>{const e=C.c(9);let o,a;e[0]!==t?({className:o,...a}=t,e[0]=t,e[1]=o,e[2]=a):(o=e[1],a=e[2]);let s;e[3]!==o?(s=S("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm",o),e[3]=o,e[4]=s):s=e[4];let r;return e[5]!==a||e[6]!==n||e[7]!==s?(r=f.jsx(D,{ref:n,className:s,...a}),e[5]=a,e[6]=n,e[7]=s,e[8]=r):r=e[8],r});le.displayName=D.displayName;const ue=u.forwardRef((t,n)=>{const e=C.c(9);let o,a;e[0]!==t?({className:o,...a}=t,e[0]=t,e[1]=o,e[2]=a):(o=e[1],a=e[2]);let s;e[3]!==o?(s=S("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",o),e[3]=o,e[4]=s):s=e[4];let r;return e[5]!==a||e[6]!==n||e[7]!==s?(r=f.jsx(O,{ref:n,className:s,...a}),e[5]=a,e[6]=n,e[7]=s,e[8]=r):r=e[8],r});ue.displayName=O.displayName;const P=70,j=80,pe=3e4;function ve(t,n){if(!t||n)return"unknown";const e=t.memUsedMB/t.memTotalMB*100;return t.cpuPercent>j||e>j?"overloaded":t.cpuPercent>=P||e>=P?"warning":"healthy"}export{pe as R,ge as T,ue as a,ce as b,le as c,ve as g,W as n,be as u};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/public/index.html
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
|
|
7
7
|
<title>tapflow</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-Cm17I31a.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-BlPSzrEe.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/vendor-router-B_lVHrKl.js">
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/index-D_P99bPX.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="root"></div>
|
package/public/index.html.br
CHANGED
|
Binary file
|
package/public/index.html.gz
CHANGED
|
Binary file
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
var Ue=a=>{throw TypeError(a)};var Fe=(a,e,s)=>e.has(a)||Ue("Cannot "+s);var N=(a,e,s)=>(Fe(a,e,"read from private field"),s?s.call(a):e.get(a)),ye=(a,e,s)=>e.has(a)?Ue("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(a):e.set(a,s),ve=(a,e,s,l)=>(Fe(a,e,"write to private field"),l?l.call(a,s):e.set(a,s),s),ge=(a,e,s)=>(Fe(a,e,"access private method"),s);import{k as c,f as Se,j as t}from"./vendor-react-BlPSzrEe.js";import{y as ft,aq as mt,ai as Ve,aa as pt,am as Ze,aH as et,al as xt,ar as gt,a0 as ke,at as oe,B as pe,L as Ce,O as bt,I as He,F as jt,W as yt,S as vt,G as St,z as Nt,E as wt,T as Dt,f as Ct,aG as Je,ah as kt,N as _t,ap as At,av as It,a5 as Ot,ak as Et,a8 as Rt}from"./index-COOWQXpW.js";import{f as Tt,d as Pe,S as Ft,P as $t,b as Mt,e as Pt}from"./build-format-CtmRXihN.js";import{f as tt,d as st,e as lt,i as Oe,j as Ee,g as Re,h as E,S as Te,a as at,D as nt,C as Bt}from"./dialog-BAFN_ONP.js";import{P as zt,T as Lt}from"./trash-CkO-5TRA.js";import{B as $e}from"./badge-B4QAWrzA.js";import{f as qt,g as Kt,d as Qt,b as Ut,c as Vt,e as Ht,a as Jt,A as Gt}from"./alert-dialog-CwcUyDZQ.js";import{u as Wt}from"./useFocusAfterSwap-BY3N9f9v.js";import{b as Xt,c as Yt}from"./vendor-router-B_lVHrKl.js";var ce,me,$,de,le,De,Be,Ye,Zt=(Ye=class extends ft{constructor(e,s){super();ye(this,le);ye(this,ce);ye(this,me);ye(this,$);ye(this,de);ve(this,ce,e),this.setOptions(s),this.bindMethods(),ge(this,le,De).call(this)}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){var l;const s=this.options;this.options=N(this,ce).defaultMutationOptions(e),mt(this.options,s)||N(this,ce).getMutationCache().notify({type:"observerOptionsUpdated",mutation:N(this,$),observer:this}),s!=null&&s.mutationKey&&this.options.mutationKey&&Ve(s.mutationKey)!==Ve(this.options.mutationKey)?this.reset():((l=N(this,$))==null?void 0:l.state.status)==="pending"&&N(this,$).setOptions(this.options)}onSubscribe(){this.listeners.size===1&&N(this,$)&&(N(this,$).addObserver(this),ge(this,le,De).call(this))}onUnsubscribe(){var e;this.hasListeners()||(e=N(this,$))==null||e.removeObserver(this)}onMutationUpdate(e){ge(this,le,De).call(this),ge(this,le,Be).call(this,e)}getCurrentResult(){return N(this,me)}reset(){var e;(e=N(this,$))==null||e.removeObserver(this),ve(this,$,void 0),ge(this,le,De).call(this),ge(this,le,Be).call(this)}mutate(e,s){var l;return ve(this,de,s),(l=N(this,$))==null||l.removeObserver(this),ve(this,$,N(this,ce).getMutationCache().build(N(this,ce),this.options)),N(this,$).addObserver(this),N(this,$).execute(e)}},ce=new WeakMap,me=new WeakMap,$=new WeakMap,de=new WeakMap,le=new WeakSet,De=function(){var s;const e=((s=N(this,$))==null?void 0:s.state)??pt();ve(this,me,{...e,isPending:e.status==="pending",isSuccess:e.status==="success",isError:e.status==="error",isIdle:e.status==="idle",mutate:this.mutate,reset:this.reset})},Be=function(e){Ze.batch(()=>{var s,l,i,g,o,y,d,j;if(N(this,de)&&this.hasListeners()){const x=N(this,me).variables,r=N(this,me).context,p={client:N(this,ce),meta:this.options.meta,mutationKey:this.options.mutationKey};if((e==null?void 0:e.type)==="success"){try{(l=(s=N(this,de)).onSuccess)==null||l.call(s,e.data,x,r,p)}catch(b){Promise.reject(b)}try{(g=(i=N(this,de)).onSettled)==null||g.call(i,e.data,null,x,r,p)}catch(b){Promise.reject(b)}}else if((e==null?void 0:e.type)==="error"){try{(y=(o=N(this,de)).onError)==null||y.call(o,e.error,x,r,p)}catch(b){Promise.reject(b)}try{(j=(d=N(this,de)).onSettled)==null||j.call(d,void 0,e.error,x,r,p)}catch(b){Promise.reject(b)}}}this.listeners.forEach(x=>{x(N(this,me))})})},Ye);function Me(a,e){const s=et(),[l]=c.useState(()=>new Zt(s,a));c.useEffect(()=>{l.setOptions(a)},[l,a]);const i=c.useSyncExternalStore(c.useCallback(o=>l.subscribe(Ze.batchCalls(o)),[l]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),g=c.useCallback((...o)=>{l.mutate(o[0],o[1]).catch(xt)},[l]);if(i.error&>(l.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:g,mutateAsync:i.mutate}}/**
|
|
2
|
-
* @license lucide-react v1.47.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const it={name:"ban",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}]]};it.node;const es=ke(it);/**
|
|
7
|
-
* @license lucide-react v1.47.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const rt={name:"layers",size:24,node:[["path",{d:"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",key:"zw3jo"}],["path",{d:"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",key:"1wduqc"}],["path",{d:"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",key:"kqbvx6"}]],aliases:["layers-3"]};rt.node;const ts=ke(rt);/**
|
|
12
|
-
* @license lucide-react v1.47.0 - ISC
|
|
13
|
-
*
|
|
14
|
-
* This source code is licensed under the ISC license.
|
|
15
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const ot={name:"package",size:24,node:[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]};ot.node;const ss=ke(ot);/**
|
|
17
|
-
* @license lucide-react v1.47.0 - ISC
|
|
18
|
-
*
|
|
19
|
-
* This source code is licensed under the ISC license.
|
|
20
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const ct={name:"timer-off",size:24,node:[["path",{d:"M10 2h4",key:"n1abiw"}],["path",{d:"M4.6 11a8 8 0 0 0 1.7 8.7 8 8 0 0 0 8.7 1.7",key:"10he05"}],["path",{d:"M7.4 7.4a8 8 0 0 1 10.3 1 8 8 0 0 1 .9 10.2",key:"15f7sh"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M12 12v-2",key:"fwoke6"}]]};ct.node;const ls=ke(ct);/**
|
|
22
|
-
* @license lucide-react v1.47.0 - ISC
|
|
23
|
-
*
|
|
24
|
-
* This source code is licensed under the ISC license.
|
|
25
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
-
*/const dt={name:"upload",size:24,node:[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]]};dt.node;const as=ke(dt);function ns(a){const e=Se.c(36),{onSuccess:s,appId:l}=a,[i,g]=c.useState(!1),[o,y]=c.useState(null),[d,j]=c.useState("none"),x=c.useRef(null);let r;e[0]!==l||e[1]!==o||e[2]!==s||e[3]!==d?(r=function(D){if(D.preventDefault(),!o)return;const q=new FormData;q.append("file",o),d!=="none"&&q.append("status",d),l&&q.append("app_id",String(l));const ae=fetch("/api/v1/builds",{method:"POST",credentials:"include",body:q}).then(async ue=>{if(!ue.ok){const ee=await ue.json().catch(os);throw new Error(ee.error??"Upload failed. Check the file format.")}s()});oe.promise(ae,{loading:"Uploading build…",success:"Build uploaded",error:rs}),g(!1),y(null),j("none")},e[0]=l,e[1]=o,e[2]=s,e[3]=d,e[4]=r):r=e[4];const p=r;let b;e[5]===Symbol.for("react.memo_cache_sentinel")?(b=function(D){g(D),D||(y(null),j("none"))},e[5]=b):b=e[5];const h=b;let v;e[6]===Symbol.for("react.memo_cache_sentinel")?(v=t.jsx(tt,{asChild:!0,children:t.jsxs(pe,{size:"sm",children:[t.jsx(as,{className:"mr-2 h-4 w-4"}),"Upload build"]})}),e[6]=v):v=e[6];let C;e[7]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx(st,{children:t.jsx(lt,{children:"Upload build"})}),e[7]=C):C=e[7];let f;e[8]===Symbol.for("react.memo_cache_sentinel")?(f=t.jsx(Ce,{children:"File"}),e[8]=f):f=e[8];let k;e[9]===Symbol.for("react.memo_cache_sentinel")?(k=()=>{var w;return(w=x.current)==null?void 0:w.click()},e[9]=k):k=e[9];let O;e[10]===Symbol.for("react.memo_cache_sentinel")?(O=w=>{w.preventDefault();const D=w.dataTransfer.files[0];D&&y(D)},e[10]=O):O=e[10];const M=o?o.name:"Click or drag to upload";let R;e[11]!==M?(R=t.jsx("div",{className:"flex h-24 cursor-pointer items-center justify-center rounded-md border-2 border-dashed text-sm text-muted-foreground hover:border-primary",onClick:k,onDragOver:is,onDrop:O,children:M}),e[11]=M,e[12]=R):R=e[12];let T;e[13]===Symbol.for("react.memo_cache_sentinel")?(T=t.jsx("input",{ref:x,type:"file",accept:".zip,.apk,.tgz,.tar.gz,application/gzip,application/x-gzip",className:"hidden",onChange:w=>{var D;return y(((D=w.target.files)==null?void 0:D[0])??null)}}),e[13]=T):T=e[13];let z;e[14]===Symbol.for("react.memo_cache_sentinel")?(z=t.jsx("code",{children:".app.zip"}),e[14]=z):z=e[14];let Y;e[15]===Symbol.for("react.memo_cache_sentinel")?(Y=t.jsx("code",{children:".tar.gz"}),e[15]=Y):Y=e[15];let K;e[16]===Symbol.for("react.memo_cache_sentinel")?(K=t.jsx("code",{children:".tgz"}),e[16]=K):K=e[16];let G;e[17]===Symbol.for("react.memo_cache_sentinel")?(G=t.jsxs("p",{className:"text-xs text-muted-foreground",children:["iOS: ",z," or ",Y," / ",K," (e.g. an EAS simulator build) · Android: ",t.jsx("code",{children:".apk"})]}),e[17]=G):G=e[17];let V;e[18]!==R?(V=t.jsxs("div",{className:"grid gap-2",children:[f,R,T,G]}),e[18]=R,e[19]=V):V=e[19];let L;e[20]===Symbol.for("react.memo_cache_sentinel")?(L=t.jsxs(Ce,{children:["Status ",t.jsx("span",{className:"text-muted-foreground",children:"(optional)"})]}),e[20]=L):L=e[20];let Z;e[21]===Symbol.for("react.memo_cache_sentinel")?(Z=t.jsx(Oe,{children:t.jsx(Ee,{})}),e[21]=Z):Z=e[21];let Q;e[22]===Symbol.for("react.memo_cache_sentinel")?(Q=t.jsxs(Re,{children:[t.jsx(E,{value:"none",children:"None"}),t.jsx(E,{value:"Backlog",children:"Backlog"}),t.jsx(E,{value:"In Progress",children:"In Progress"}),t.jsx(E,{value:"Done",children:"Done"}),t.jsx(E,{value:"Rejected",children:"Rejected"})]}),e[22]=Q):Q=e[22];let P;e[23]!==d?(P=t.jsxs("div",{className:"grid gap-2",children:[L,t.jsxs(Te,{value:d,onValueChange:j,children:[Z,Q]})]}),e[23]=d,e[24]=P):P=e[24];let U;e[25]===Symbol.for("react.memo_cache_sentinel")?(U=t.jsx(pe,{type:"button",variant:"outline",className:"w-24",onClick:()=>g(!1),children:"Cancel"}),e[25]=U):U=e[25];const A=!o;let B;e[26]!==A?(B=t.jsxs("div",{className:"flex justify-end gap-2",children:[U,t.jsx(pe,{type:"submit",className:"w-24",disabled:A,children:"Upload"})]}),e[26]=A,e[27]=B):B=e[27];let I;e[28]!==p||e[29]!==V||e[30]!==P||e[31]!==B?(I=t.jsxs(at,{className:"sm:max-w-md",children:[C,t.jsxs("form",{onSubmit:p,className:"flex flex-col gap-4 pt-2",children:[V,P,B]})]}),e[28]=p,e[29]=V,e[30]=P,e[31]=B,e[32]=I):I=e[32];let F;return e[33]!==i||e[34]!==I?(F=t.jsxs(nt,{open:i,onOpenChange:h,children:[v,I]}),e[33]=i,e[34]=I,e[35]=F):F=e[35],F}function is(a){return a.preventDefault()}function rs(a){return a instanceof Error?a.message:"Failed to upload build"}function os(){return{}}function Ie(a){const e=Se.c(8);let s,l;e[0]!==a?({className:s,...l}=a,e[0]=a,e[1]=s,e[2]=l):(s=e[1],l=e[2]);let i;e[3]!==s?(i=bt("font-mono text-xs tabular-nums tracking-tight",s),e[3]=s,e[4]=i):i=e[4];let g;return e[5]!==l||e[6]!==i?(g=t.jsx("span",{className:i,...l}),e[5]=l,e[6]=i,e[7]=g):g=e[7],g}function cs({onSuccess:a}){const[e,s]=c.useState(!1),[l,i]=c.useState(""),[g,o]=c.useState(""),[y,d]=c.useState("ios"),[j,x]=c.useState(""),[r,p]=c.useState(!1);async function b(h){h.preventDefault(),x(""),p(!0);try{const v=await yt({name:l.trim(),bundle_id_key:g.trim(),platform:y});if(!v){x("Failed to create app");return}if("error"in v){x(v.error);return}s(!1),i(""),o(""),d("ios"),oe.success("App created"),a()}catch{x("Failed to create app — check your network"),oe.error("Failed to create app — check your network")}finally{p(!1)}}return t.jsxs(nt,{open:e,onOpenChange:s,children:[t.jsx(tt,{asChild:!0,children:t.jsxs("button",{className:"flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-sm text-muted-foreground hover:bg-accent hover:text-foreground transition-colors",children:[t.jsx(zt,{className:"size-3.5 shrink-0"}),t.jsx("span",{children:"Add App"})]})}),t.jsxs(at,{className:"sm:max-w-sm",children:[t.jsx(st,{children:t.jsx(lt,{children:"Add App"})}),t.jsxs("form",{onSubmit:b,className:"flex flex-col gap-4 pt-2",children:[t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx(Ce,{htmlFor:"app-name",children:"Name"}),t.jsx(He,{id:"app-name",value:l,onChange:h=>i(h.target.value),placeholder:"My App",required:!0})]}),t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx(Ce,{htmlFor:"bundle-id",children:"Bundle ID"}),t.jsx(He,{id:"bundle-id",value:g,onChange:h=>o(h.target.value),placeholder:"com.example.myapp",required:!0})]}),t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx(Ce,{htmlFor:"platform",children:"Platform"}),t.jsxs(Te,{value:y,onValueChange:h=>d(h),children:[t.jsx(Oe,{id:"platform",children:t.jsx(Ee,{})}),t.jsxs(Re,{children:[t.jsx(E,{value:"ios",children:"iOS"}),t.jsx(E,{value:"android",children:"Android"}),t.jsx(E,{value:"both",children:"Both"})]})]})]}),t.jsx(jt,{assertive:!0,id:"add-app-error",message:j||void 0}),t.jsx(pe,{type:"submit",disabled:r,className:"w-full",children:r?"Creating…":"Create App"})]})]})]})}function ds(a){const e=Se.c(16),{apps:s,selectedAppId:l,onSelect:i,onAdd:g}=a;let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsx("span",{className:"px-2 pb-1 font-mono text-xs font-medium text-muted-foreground uppercase tracking-wider",children:"Apps"}),e[0]=o):o=e[0];let y;e[1]!==s.length?(y=s.length===0&&t.jsx("span",{className:"px-2 text-sm text-muted-foreground",children:"No apps yet"}),e[1]=s.length,e[2]=y):y=e[2];let d;if(e[3]!==s||e[4]!==i||e[5]!==l){let r;e[7]!==i||e[8]!==l?(r=p=>t.jsxs("button",{onClick:()=>i(p.id),className:["flex flex-col gap-0.5 rounded-md px-2 py-2 text-left text-sm hover:bg-accent overflow-hidden",p.id===l?"bg-accent font-medium":""].join(" "),children:[t.jsx("span",{className:"truncate",children:p.name}),t.jsx(Ie,{className:"text-muted-foreground truncate",children:p.bundle_id_key})]},p.id),e[7]=i,e[8]=l,e[9]=r):r=e[9],d=s.map(r),e[3]=s,e[4]=i,e[5]=l,e[6]=d}else d=e[6];let j;e[10]!==g?(j=t.jsx("div",{className:"mt-1 border-t pt-1",children:t.jsx(cs,{onSuccess:g})}),e[10]=g,e[11]=j):j=e[11];let x;return e[12]!==y||e[13]!==d||e[14]!==j?(x=t.jsxs("aside",{className:"w-64 shrink-0 border-r flex flex-col gap-1 p-3 overflow-y-auto",children:[o,y,d,j]}),e[12]=y,e[13]=d,e[14]=j,e[15]=x):x=e[15],x}function us(a){const e=Se.c(82),{build:s,isLast:l,onNavigate:i,onStatusChange:g,onScheduleDeletion:o,onCancelDeletion:y,statusDescribedBy:d}=a,[j,x]=c.useState(!1),r=c.useRef(null),p=s.status_label==="Done";let b;e[0]!==s.delete_after?(b=s.delete_after?Tt(s.delete_after):null,e[0]=s.delete_after,e[1]=b):b=e[1];const h=b;let v;e[2]!==s?(v=Pe(s),e[2]=s,e[3]=v):v=e[3];const C=v;let f;e[4]!==s.id||e[5]!==g?(f=function(fe){g(s.id,fe==="none"?null:fe)},e[4]=s.id,e[5]=g,e[6]=f):f=e[6];const k=f;let O;e[7]===Symbol.for("react.memo_cache_sentinel")?(O=we=>{var fe;we.preventDefault(),(fe=r.current)==null||fe.focus()},e[7]=O):O=e[7];let M;e[8]===Symbol.for("react.memo_cache_sentinel")?(M=t.jsxs(qt,{children:[t.jsx(Kt,{children:"Schedule deletion?"}),t.jsx(Qt,{children:"Build files will be deleted after 7 days. You can cancel the scheduled deletion anytime before then."})]}),e[8]=M):M=e[8];let R;e[9]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx(Ut,{children:"Cancel"}),e[9]=R):R=e[9];let T;e[10]!==s.id||e[11]!==o?(T=t.jsxs(Vt,{onCloseAutoFocus:O,children:[M,t.jsxs(Ht,{children:[R,t.jsx(Jt,{onClick:()=>{o(s.id),x(!1)},children:"Schedule deletion"})]})]}),e[10]=s.id,e[11]=o,e[12]=T):T=e[12];let z;e[13]!==j||e[14]!==T?(z=t.jsx(Gt,{open:j,onOpenChange:x,children:T}),e[13]=j,e[14]=T,e[15]=z):z=e[15];const Y=l?"":"border-b";let K;e[16]!==Y?(K=["flex items-center gap-3 px-4 py-3",Y],e[16]=Y,e[17]=K):K=e[17];const G=K.join(" "),V=s.build_number??"—";let L;e[18]!==V?(L=t.jsxs("span",{className:"text-sm font-medium",children:["build ",t.jsx(Ie,{children:V})]}),e[18]=V,e[19]=L):L=e[19];const Z=s.platform==="ios"?"ios":"android";let Q;e[20]!==s.platform||e[21]!==Z?(Q=t.jsx($e,{tone:Z,className:"text-xs capitalize",children:s.platform}),e[20]=s.platform,e[21]=Z,e[22]=Q):Q=e[22];let P;e[23]!==s.status_label?(P=s.status_label&&t.jsx($e,{tone:Ft[s.status_label],className:"text-xs",children:s.status_label}),e[23]=s.status_label,e[24]=P):P=e[24];let U;e[25]!==h?(U=h&&t.jsx($e,{tone:h.urgent?"rejected":"backlog",className:"text-xs",children:h.label}),e[25]=h,e[26]=U):U=e[26];let A;e[27]!==L||e[28]!==Q||e[29]!==P||e[30]!==U?(A=t.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[L,Q,P,U]}),e[27]=L,e[28]=Q,e[29]=P,e[30]=U,e[31]=A):A=e[31];let B;e[32]===Symbol.for("react.memo_cache_sentinel")?(B={display:"flex",flexDirection:"row",gap:"14px",marginTop:"0.7rem",alignItems:"center"},e[32]=B):B=e[32];let I;e[33]!==s.uploader?(I=s.uploader&&t.jsxs(t.Fragment,{children:[t.jsx("span",{children:s.uploader}),t.jsx(vt,{orientation:"vertical",className:"h-3"})]}),e[33]=s.uploader,e[34]=I):I=e[34];let F;e[35]!==s.uploaded_at?(F=new Date(s.uploaded_at).toLocaleDateString(),e[35]=s.uploaded_at,e[36]=F):F=e[36];let w;e[37]!==F?(w=t.jsx(Ie,{children:F}),e[37]=F,e[38]=w):w=e[38];let D;e[39]!==I||e[40]!==w?(D=t.jsxs("div",{style:B,className:"text-xs text-muted-foreground",children:[I,w]}),e[39]=I,e[40]=w,e[41]=D):D=e[41];let q;e[42]!==A||e[43]!==D?(q=t.jsxs("div",{className:"flex-1 min-w-0",children:[A,D]}),e[42]=A,e[43]=D,e[44]=q):q=e[44];const ae=s.status_label??"none",ue=`Status for ${C}`;let ee;e[45]===Symbol.for("react.memo_cache_sentinel")?(ee=t.jsx(Ee,{}),e[45]=ee):ee=e[45];let he;e[46]!==s.id||e[47]!==d||e[48]!==ue?(he=t.jsx(Oe,{className:"h-9 w-32 text-xs","aria-label":ue,"aria-describedby":d,"data-status-trigger":s.id,children:ee}),e[46]=s.id,e[47]=d,e[48]=ue,e[49]=he):he=e[49];let xe;e[50]===Symbol.for("react.memo_cache_sentinel")?(xe=t.jsxs(Re,{children:[t.jsx(E,{value:"none",children:t.jsx("span",{className:"text-muted-foreground",children:"—"})}),t.jsx(E,{value:"Backlog",children:"Backlog"}),t.jsx(E,{value:"In Progress",children:"In Progress"}),t.jsx(E,{value:"Done",children:"Done"}),t.jsx(E,{value:"Rejected",children:"Rejected"})]}),e[50]=xe):xe=e[50];let H;e[51]!==k||e[52]!==ae||e[53]!==he?(H=t.jsxs(Te,{value:ae,onValueChange:k,children:[he,xe]}),e[51]=k,e[52]=ae,e[53]=he,e[54]=H):H=e[54];let ne;e[55]!==s.id||e[56]!==h||e[57]!==y||e[58]!==C?(ne=t.jsx(St,{asChild:!0,children:h?t.jsx(pe,{ref:r,size:"icon-sm",variant:"outline",onClick:()=>y(s.id),"aria-label":`Cancel scheduled deletion of ${C}`,children:t.jsx(ls,{className:"h-3.5 w-3.5","aria-hidden":!0})}):t.jsx(pe,{ref:r,size:"icon-sm",variant:"destructive",onClick:()=>x(!0),"aria-label":`Schedule deletion of ${C}`,children:t.jsx(Lt,{className:"h-3.5 w-3.5","aria-hidden":!0})})}),e[55]=s.id,e[56]=h,e[57]=y,e[58]=C,e[59]=ne):ne=e[59];const be=h?"Cancel scheduled deletion":"Schedule deletion";let J;e[60]!==be?(J=t.jsx(Nt,{children:be}),e[60]=be,e[61]=J):J=e[61];let te;e[62]!==ne||e[63]!==J?(te=t.jsx(wt,{delayDuration:400,children:t.jsxs(Dt,{children:[ne,J]})}),e[62]=ne,e[63]=J,e[64]=te):te=e[64];let ie;e[65]!==s.id||e[66]!==i?(ie=()=>i(s.id),e[65]=s.id,e[66]=i,e[67]=ie):ie=e[67];const Ne=`Start QA on ${C}`;let se;e[68]===Symbol.for("react.memo_cache_sentinel")?(se=t.jsx($t,{className:"mr-1.5 h-3.5 w-3.5"}),e[68]=se):se=e[68];let W;e[69]!==p||e[70]!==ie||e[71]!==Ne?(W=t.jsxs(pe,{size:"sm",onClick:ie,disabled:p,"aria-label":Ne,children:[se,"Start QA"]}),e[69]=p,e[70]=ie,e[71]=Ne,e[72]=W):W=e[72];let re;e[73]!==G||e[74]!==q||e[75]!==H||e[76]!==te||e[77]!==W?(re=t.jsxs("div",{className:G,children:[q,H,te,W]}),e[73]=G,e[74]=q,e[75]=H,e[76]=te,e[77]=W,e[78]=re):re=e[78];let je;return e[79]!==re||e[80]!==z?(je=t.jsxs(t.Fragment,{children:[z,re]}),e[79]=re,e[80]=z,e[81]=je):je=e[81],je}function hs(a){const e=Se.c(28),{versionName:s,builds:l,isOpen:i,onToggle:g,onNavigate:o,onStatusChange:y,onScheduleDeletion:d,onCancelDeletion:j,describedBy:x,rowNote:r}=a,p=c.useId(),b=i?p:void 0;let h;e[0]!==i?(h=i?t.jsx(Bt,{className:"h-4 w-4 shrink-0 text-muted-foreground"}):t.jsx(Ct,{className:"h-4 w-4 shrink-0 text-muted-foreground"}),e[0]=i,e[1]=h):h=e[1];let v;e[2]!==s?(v=t.jsx(Ie,{className:"font-medium text-sm text-foreground",children:s}),e[2]=s,e[3]=v):v=e[3];const C=l.length>1?"s":"";let f;e[4]!==l.length||e[5]!==C?(f=t.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",l.length," build",C,")"]}),e[4]=l.length,e[5]=C,e[6]=f):f=e[6];let k;e[7]!==x||e[8]!==i||e[9]!==g||e[10]!==b||e[11]!==h||e[12]!==v||e[13]!==f||e[14]!==s?(k=t.jsx("h2",{children:t.jsxs("button",{className:"flex w-full items-center gap-2 px-4 py-3 text-left hover:bg-accent/50 bg-card focus-visible:outline-none focus-visible:outline-offset-[-2px] focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",onClick:g,"aria-expanded":i,"aria-controls":b,"aria-describedby":x,"data-release-header":s,children:[h,v,f]})}),e[7]=x,e[8]=i,e[9]=g,e[10]=b,e[11]=h,e[12]=v,e[13]=f,e[14]=s,e[15]=k):k=e[15];let O;e[16]!==l||e[17]!==i||e[18]!==j||e[19]!==o||e[20]!==d||e[21]!==y||e[22]!==p||e[23]!==r?(O=i&&t.jsx("div",{id:p,className:"border-t bg-card",children:l.map((R,T)=>t.jsx(us,{build:R,isLast:T===l.length-1,onNavigate:o,onStatusChange:y,onScheduleDeletion:d,onCancelDeletion:j,statusDescribedBy:(r==null?void 0:r.buildId)===R.id?r.id:void 0},R.id))}),e[16]=l,e[17]=i,e[18]=j,e[19]=o,e[20]=d,e[21]=y,e[22]=p,e[23]=r,e[24]=O):O=e[24];let M;return e[25]!==k||e[26]!==O?(M=t.jsxs("div",{className:"rounded-lg shadow-card-2 overflow-hidden",children:[k,O]}),e[25]=k,e[26]=O,e[27]=M):M=e[27],M}const ut="tapflow-app-center-releases:";function fs(a){try{const e=JSON.parse(localStorage.getItem(ut+a)??"[]");return Array.isArray(e)?e.filter(s=>Array.isArray(s)&&s.length===2&&typeof s[0]=="string"&&typeof s[1]=="boolean"):[]}catch{return[]}}function ms(a,e){try{localStorage.setItem(ut+a,JSON.stringify(e))}catch{}}function ps(a,e){const s=Se.c(13),[l,i]=c.useState(xs);let g;s[0]!==a||s[1]!==l?(g=a===null?[]:l.get(a)??fs(a),s[0]=a,s[1]=l,s[2]=g):g=s[2];const o=g,y=e[0];let d;s[3]!==y||s[4]!==o?(d=b=>{var h;return((h=o.find(v=>{const[C]=v;return C===b}))==null?void 0:h[1])??b===y},s[3]=y,s[4]=o,s[5]=d):d=s[5];const j=d;let x;s[6]!==a||s[7]!==j||s[8]!==o?(x=b=>{if(a===null)return;const h=[...o.filter(v=>{const[C]=v;return C!==b}),[b,!j(b)]].slice(-200);ms(a,h),i(v=>new Map(v).set(a,h))},s[6]=a,s[7]=j,s[8]=o,s[9]=x):x=s[9];const r=x;let p;return s[10]!==j||s[11]!==r?(p={isOpen:j,toggle:r},s[10]=j,s[11]=r,s[12]=p):p=s[12],p}function xs(){return new Map}const _e=a=>`row:${a}`,Ae=a=>`release:${a}`;function Ge(a){return a instanceof HTMLElement?a.dataset.statusTrigger!==void 0?_e(Number(a.dataset.statusTrigger)):a.dataset.releaseHeader!==void 0?Ae(a.dataset.releaseHeader):null:null}function We(a,e){const s=new Set(JSON.parse(e));return a.find(l=>s.has(l))??null}function Xe(a,e){return a.map((s,l)=>({item:s,d:l>e?2*(l-e)-1:2*(e-l)})).filter(({d:s})=>s>0).sort((s,l)=>s.d-l.d).map(({item:s})=>s)}function ks(){var Ke;const a=Xt(),[e,s]=Yt(),l=et(),[i,g]=c.useState(""),[o,y]=c.useState(""),[d,j]=c.useState("all");c.useEffect(()=>{const n=setTimeout(()=>y(i),250);return()=>clearTimeout(n)},[i]);const x=e.get("appId"),r=x!==null&&/^[1-9][0-9]*$/.test(x)?Number(x):null,p=Je({queryKey:["apps"],queryFn:Ot}),b=p.data??[],h=b.find(n=>n.id===r)??null,v=["builds",r,o,d],C=JSON.stringify(v),f=Je({queryKey:v,queryFn:()=>Rt({appId:r,search:o,statusFilter:d}),enabled:r!==null,placeholderData:Et}),k=f.data??[];c.useEffect(()=>{!p.data||e.get("appId")||p.data.length===0||s({appId:String(p.data[0].id)},{replace:!0})},[p.data,e,s]);const[O,M]=c.useState(null),[R,T]=c.useState(!1);c.useEffect(()=>{f.isRefetchError&&oe.error("Couldn't refresh builds — showing the last list",{id:"builds:refresh"})},[f.isRefetchError]);const z=c.useRef(null);c.useEffect(()=>{r===null||f.isPlaceholderData||!f.data||z.current!==r&&(z.current=r,M(r))},[r,f.isPlaceholderData,f.data]);function Y(n){s({appId:String(n)})}function K(n,m){return{onMutate:async u=>{const S=v;await l.cancelQueries({queryKey:S});const _=l.getQueryData(S);return l.setQueryData(S,X=>X&&n(X,u)),{previous:_,key:S}},onError:(u,S,_)=>{_!=null&&_.previous&&l.setQueryData(_.key,_.previous),oe.error(m)},onSettled:()=>{l.invalidateQueries({queryKey:["builds"]})}}}const G=K((n,m)=>n.map(u=>u.id===m.buildId?{...u,status_label:m.status}:u),"Failed to update status"),V=Me({mutationFn:({buildId:n,status:m})=>It(n,m),...G,onError:(n,m,u)=>{var S;G.onError(n,m,u),((S=I.current)==null?void 0:S.leaving)===m.buildId&&(I.current=null,D(null))}}),L=(n,m)=>{var S;const u=(S=l.getQueryData(n))==null?void 0:S.find(_=>_.id===m);return u?Pe(u):"the build"},Z=Me({mutationFn:n=>At(n),...K((n,m)=>n.map(u=>u.id===m?{...u,delete_after:new Date().toISOString()}:u),"Failed to schedule deletion"),onSuccess:(n,m,u)=>{u&&(l.setQueryData(u.key,S=>S==null?void 0:S.map(_=>_.id===m?{..._,delete_after:n}:_)),oe.success(`Deletion scheduled for ${L(u.key,m)} — it will be deleted ${Pt(n)}`))}}),Q=Me({mutationFn:n=>_t(n),...K((n,m)=>n.map(u=>u.id===m?{...u,delete_after:null}:u),"Failed to cancel scheduled deletion"),onSuccess:(n,m,u)=>{oe.success(`Scheduled deletion cancelled for ${u?L(u.key,m):"the build"}`)}}),P=n=>Z.mutate(n),U=n=>Q.mutate(n),A=kt(k),B=ps(((Ke=k[0])==null?void 0:Ke.app_id)??null,A.map(n=>n.versionName)),I=c.useRef(null),F=c.useRef(null),[w,D]=c.useState(null),q=c.useRef(null),ae=c.useId();function ue(n){const m=A.findIndex(S=>S.builds.some(_=>_.id===n));if(m<0)return[];const u=A[m].builds;return[...Xe(u,u.findIndex(S=>S.id===n)).map(S=>_e(S.id)),...Xe(A,m).map(S=>Ae(S.versionName))]}const ee=JSON.stringify(A.flatMap(n=>[Ae(n.versionName),...B.isOpen(n.versionName)?n.builds.map(m=>_e(m.id)):[]])),he=(n,m)=>{const u=k.find(X=>X.id===n),_=d!=="all"&&m!==d?ue(n):[];if(u&&_.length>0){const X=`${Pe(u)} was set to ${m??"no status"}, so the ${d} filter no longer shows it.`,Qe={leaving:n,candidates:_,text:X,key:C};I.current=Qe,F.current=null,D(Qe)}V.mutate({buildId:n,status:m})},xe=w!==null&&!k.some(n=>n.id===w.leaving),H=xe?We(w.candidates,ee):null,ne=f.data,be=f.isRefetchError;c.useLayoutEffect(()=>{var _;const n=I.current;if(!n)return;if(n.key!==C||be){I.current=null,D(null);return}if((ne??[]).some(X=>X.id===n.leaving))return;I.current=null;const m=We(n.candidates,ee);if(!m||document.activeElement!==null&&document.activeElement!==document.body){oe.success(n.text),D(null);return}const u=((_=q.current)==null?void 0:_.querySelectorAll("[data-status-trigger], [data-release-header]"))??[],S=Array.from(u).find(X=>Ge(X)===m);S instanceof HTMLElement?(F.current=m,S.focus()):(oe.success(n.text),D(null))},[C,be,ne,ee]),c.useEffect(()=>{if(!w)return;const n=m=>{const u=Ge(m.target);if(F.current!==null){u!==F.current&&D(null);return}u!==_e(w.leaving)&&(u===null||!w.candidates.includes(u))&&D(null)};return document.addEventListener("focusin",n),()=>document.removeEventListener("focusin",n)},[w]);const J=(h==null?void 0:h.name)??"this app",te=o!==""||d!=="all",ie=f.isPlaceholderData&&O!==r,Ne=f.isFetchedAfterMount&&(f.isPlaceholderData||f.isLoading),se=R||Ne,W=f.isLoadingError||se?"error":f.isLoading||A.length===0&&ie?"loading":A.length===0?"empty":"list",re=c.useRef(null),je=Wt(W,re),we=c.useId(),fe=c.useId(),ze=c.useId(),Le=c.useId(),qe=c.useId(),ht=r===null?"":f.isLoadingError?`Couldn't load builds for ${J}`:f.isLoading||ie||se?`Loading builds for ${J}`:A.length>0?`Showing ${k.length} build${k.length===1?"":"s"} for ${J}`:te?`No builds match the current filters for ${J}`:`No builds for ${J}`;return t.jsxs("div",{className:"flex h-full gap-0",children:[t.jsx(ds,{apps:b,selectedAppId:r,onSelect:Y,onAdd:()=>l.invalidateQueries({queryKey:["apps"]})}),t.jsxs("div",{className:"flex-1 flex flex-col gap-4 p-4 overflow-y-auto min-w-0",children:[t.jsxs("div",{className:"flex items-center justify-between flex-wrap gap-2",children:[t.jsx("h1",{className:"text-xl font-semibold tracking-display-sm",children:h?h.name:"App Center"}),t.jsx(ns,{onSuccess:()=>{l.invalidateQueries({queryKey:["apps"]}),l.invalidateQueries({queryKey:["builds"]})},appId:r})]}),t.jsx("p",{id:qe,role:"status",className:"sr-only",children:ht}),r===null?t.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center",children:[t.jsx(ts,{className:"w-8 h-8 text-muted-foreground/40"}),t.jsx("p",{className:"text-sm font-medium",children:"No app selected"}),t.jsx("p",{className:"text-sm text-muted-foreground",children:"Choose an app from the sidebar to view its builds."})]}):t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.jsx(Mt,{ref:re,"aria-describedby":`${Le} ${ze}`,"aria-label":"Search versions",placeholder:"Search version…",value:i,onChange:g}),t.jsxs(Te,{value:d,onValueChange:j,children:[t.jsx(Oe,{className:"h-8 w-36","aria-label":"Filter by status",children:t.jsx(Ee,{placeholder:"Status"})}),t.jsxs(Re,{children:[t.jsx(E,{value:"all",children:"All statuses"}),t.jsx(E,{value:"Backlog",children:"Backlog"}),t.jsx(E,{value:"In Progress",children:"In Progress"}),t.jsx(E,{value:"Done",children:"Done"}),t.jsx(E,{value:"Rejected",children:"Rejected"})]})]}),f.isRefetchError&&t.jsx("p",{className:"text-sm text-muted-foreground self-center",children:"Showing the last list — refresh failed."})]}),t.jsx("div",{...je,className:"contents",children:W==="error"?t.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center",children:[t.jsx(es,{className:"w-8 h-8 text-muted-foreground/40"}),t.jsx("p",{id:we,className:"text-sm font-medium",children:"Couldn't load builds"}),t.jsx("p",{id:fe,className:"text-sm text-muted-foreground",children:"Check that the relay is reachable."}),t.jsx(pe,{variant:"outline",size:"sm",className:"mt-1 aria-disabled:opacity-50","aria-describedby":`${we} ${fe}`,"aria-disabled":se,onClick:()=>{se||(T(!0),f.refetch().finally(()=>T(!1)))},children:se?"Trying…":"Try again"})]}):W==="loading"?t.jsx("p",{id:Le,className:"text-sm text-muted-foreground",children:"Loading…"}):W==="empty"?t.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center",children:[t.jsx(ss,{className:"w-8 h-8 text-muted-foreground/40"}),t.jsx("p",{id:ze,className:"text-sm font-medium",children:te?"No matching builds":"No builds yet"}),t.jsx("p",{className:"text-sm text-muted-foreground",children:te?"No build matches the search and status filters.":"Upload the first build to get started."})]}):t.jsxs("div",{ref:q,className:"flex flex-col gap-2","aria-busy":f.isPlaceholderData,children:[xe&&t.jsx("p",{id:ae,hidden:!0,children:w.text}),A.map(({versionName:n,builds:m},u)=>t.jsx(hs,{describedBy:[u===0&&!f.isPlaceholderData?qe:null,H===Ae(n)?ae:null].filter(Boolean).join(" ")||void 0,rowNote:H!=null&&H.startsWith("row:")?{buildId:Number(H.slice(4)),id:ae}:void 0,versionName:n,builds:m,isOpen:B.isOpen(n),onToggle:()=>B.toggle(n),onNavigate:S=>a(`/app-center/build?id=${S}`),onStatusChange:he,onScheduleDeletion:P,onCancelDeletion:U},n))]})})]})]})]})}export{ks as AppCenter};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as m,j as e}from"./vendor-react-BlPSzrEe.js";import{aM as ce,aw as me,aH as ue,aG as J,aD as A,au as k,aJ as pe,C as y,c as b,d as N,a as S,L as c,I as u,F as p,S as G,h as Y,at as i,B as f,H as ge,O as fe,K as he,ao as g,an as F,_ as Z,as as h,ae as xe,a5 as je}from"./index-COOWQXpW.js";import{B as ve}from"./badge-B4QAWrzA.js";import{A as we,h as ye,c as be,f as Ne,g as Se,d as Pe,e as Ce,b as Ae,a as ke}from"./alert-dialog-CwcUyDZQ.js";import{P as X}from"./pencil-CAHyK7Qf.js";import"./vendor-router-B_lVHrKl.js";const Fe=F({teamName:h().min(1,"Team name is required"),logo:Z(File).nullable().optional()}),De=F({displayName:h().min(1,"Display name is required"),avatar:Z(File).nullable().optional()}),qe=F({currentPassword:h().min(1,"Enter your current password"),newPassword:h().min(8,"Password must be at least 8 characters"),confirmPassword:h()}).refine(x=>x.newPassword===x.confirmPassword,{message:"Passwords do not match",path:["confirmPassword"]});function Be(){var O,U,H,M,V,W,$;const{resolvedTheme:x}=ce(),I=x==="dark"?"/logo-dark.svg":"/logo.svg",{user:o}=me(),D=(o==null?void 0:o.role)==="Admin",q=(o==null?void 0:o.role)==="Admin"||(o==null?void 0:o.role)==="Developer",j=ue(),P=J({queryKey:g.settings,queryFn:xe,enabled:D}),[ee,se]=m.useState(null),re=ee??((O=P.data)==null?void 0:O.logo_url)??null,T=m.useRef(null),d=A({resolver:k(Fe),defaultValues:{teamName:"",logo:null},values:P.data?{teamName:P.data.team_name,logo:null}:void 0,resetOptions:{keepDirtyValues:!0}});async function ae(s){const r=new FormData;r.append("team_name",s.teamName),s.logo&&r.append("logo",s.logo);try{if(!(await fetch("/api/v1/settings",{method:"PATCH",credentials:"include",body:r})).ok){i.error("Failed to update workspace");return}i.success("Workspace updated"),j.invalidateQueries({queryKey:g.settings})}catch{i.error("Failed to update workspace")}}const[te,oe]=m.useState(null),E=te??(o==null?void 0:o.avatarUrl)??null,L=m.useRef(null),l=A({resolver:k(De),defaultValues:{displayName:"",avatar:null},values:o?{displayName:o.displayName??"",avatar:null}:void 0,resetOptions:{keepDirtyValues:!0}});async function ie(s){const r=new FormData;r.append("display_name",s.displayName),s.avatar&&r.append("avatar",s.avatar);try{if(!(await fetch("/api/v1/profile",{method:"PATCH",credentials:"include",body:r})).ok){i.error("Failed to update profile");return}i.success("Profile updated"),j.invalidateQueries({queryKey:g.me})}catch{i.error("Failed to update profile")}}const t=A({resolver:k(qe)});async function ne(s){try{const r=await fetch("/api/v1/auth/change-password",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({currentPassword:s.currentPassword,newPassword:s.newPassword})});if(!r.ok){const a=await r.json();t.setError("root",{message:a.error??"Failed to change password"});return}t.reset(),i.success("Password changed")}catch{t.setError("root",{message:"Network error"})}}const C=J({queryKey:g.apps,queryFn:je,enabled:q}).data??[],[Q,_]=m.useState({}),[z,R]=m.useState({}),[B,K]=m.useState({});async function le(s){K(r=>({...r,[s]:!0}));try{if(!(await fetch(`/api/v1/apps/${s}`,{method:"DELETE",credentials:"include"})).ok){i.error("Failed to delete app");return}j.invalidateQueries({queryKey:g.apps}),i.success("App deleted")}catch{i.error("Failed to delete app")}finally{K(r=>({...r,[s]:!1}))}}async function de(s){var r;R(a=>({...a,[s]:!0}));try{if(!(await fetch(`/api/v1/apps/${s}`,{method:"PATCH",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:Q[s]??((r=C.find(n=>n.id===s))==null?void 0:r.name)})})).ok){i.error("Failed to update app");return}i.success("App updated"),_(({[s]:n,...w})=>w),j.invalidateQueries({queryKey:g.apps})}catch{i.error("Failed to update app")}finally{R(a=>({...a,[s]:!1}))}}const v=pe({control:l.control,name:"displayName"});return e.jsxs("div",{className:"flex flex-col gap-6 max-w-[900px] mx-auto w-full p-6",children:[e.jsx("h1",{className:"text-xl font-semibold tracking-display-sm",children:"Settings"}),D&&e.jsxs(y,{children:[e.jsx(b,{children:e.jsx(N,{children:"Workspace"})}),e.jsx(S,{children:e.jsxs("form",{onSubmit:d.handleSubmit(ae),className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"team-name",children:"Team name"}),e.jsx(u,{id:"team-name",placeholder:"My QA Team","aria-required":"true","aria-invalid":!!d.formState.errors.teamName,"aria-describedby":d.formState.errors.teamName?"teamName-error":void 0,...d.register("teamName")}),e.jsx(p,{id:"teamName-error",message:(U=d.formState.errors.teamName)==null?void 0:U.message})]}),e.jsx(G,{}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(c,{children:["Logo ",e.jsx("span",{className:"text-muted-foreground text-xs",children:"(png · jpg, max 2MB)"})]}),e.jsx(Y,{name:"logo",control:d.control,render:({field:s})=>e.jsxs("div",{className:"relative w-16 h-16",children:[e.jsx("img",{src:re??I,alt:"Workspace logo",className:"w-16 h-16 rounded-lg object-contain"}),e.jsx("button",{type:"button","aria-label":"Change logo",onClick:()=>{var r;return(r=T.current)==null?void 0:r.click()},className:"absolute bottom-0 right-0 w-6 h-6 rounded-full bg-background border border-border shadow-sm flex items-center justify-center hover:bg-accent transition-colors",children:e.jsx(X,{className:"w-3 h-3","aria-hidden":"true"})}),e.jsx("input",{ref:T,type:"file",accept:".png,.jpg,.jpeg",className:"hidden",onChange:r=>{var n;const a=(n=r.target.files)==null?void 0:n[0];if(a&&a.size>2*1024*1024){i.error("Image must be 2MB or less");return}a&&(s.onChange(a),se(URL.createObjectURL(a)))}})]})})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx(f,{type:"submit",size:"sm",disabled:d.formState.isSubmitting,children:d.formState.isSubmitting?"Saving…":"Save changes"})})]})})]}),e.jsxs(y,{children:[e.jsx(b,{children:e.jsx(N,{children:"Profile"})}),e.jsx(S,{children:e.jsxs("form",{onSubmit:l.handleSubmit(ie),className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"display-name",children:"Nickname"}),e.jsx(u,{id:"display-name",placeholder:"Your name","aria-required":"true","aria-invalid":!!l.formState.errors.displayName,"aria-describedby":l.formState.errors.displayName?"displayName-error":void 0,...l.register("displayName")}),e.jsx(p,{id:"displayName-error",message:(H=l.formState.errors.displayName)==null?void 0:H.message})]}),e.jsx(G,{}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs(c,{children:["Avatar ",e.jsx("span",{className:"text-muted-foreground text-xs",children:"(png · jpg, max 2MB)"})]}),e.jsx(Y,{name:"avatar",control:l.control,render:({field:s})=>{var r;return e.jsxs("div",{className:"relative w-14 h-14",children:[E?e.jsx("img",{src:E,alt:"Profile avatar",className:"w-14 h-14 rounded-full object-cover border"}):e.jsx("div",{className:"w-14 h-14 rounded-full flex items-center justify-center text-lg font-medium",style:(()=>{const a=ge(v||(o==null?void 0:o.email)||"");return{backgroundColor:a.bg,color:a.fg}})(),children:((r=v==null?void 0:v[0])==null?void 0:r.toUpperCase())??"?"}),e.jsx("button",{type:"button","aria-label":"Change avatar",onClick:()=>{var a;return(a=L.current)==null?void 0:a.click()},className:"absolute bottom-0 right-0 w-6 h-6 rounded-full bg-background border border-border shadow-sm flex items-center justify-center hover:bg-accent transition-colors",children:e.jsx(X,{className:"w-3 h-3","aria-hidden":"true"})}),e.jsx("input",{ref:L,type:"file",accept:".png,.jpg,.jpeg",className:"hidden",onChange:a=>{var w;const n=(w=a.target.files)==null?void 0:w[0];if(n&&n.size>2*1024*1024){i.error("Image must be 2MB or less");return}n&&(s.onChange(n),oe(URL.createObjectURL(n)))}})]})}})]}),e.jsx("div",{className:"flex justify-end",children:e.jsx(f,{type:"submit",size:"sm",disabled:l.formState.isSubmitting,children:l.formState.isSubmitting?"Saving…":"Save changes"})})]})})]}),e.jsxs(y,{children:[e.jsx(b,{children:e.jsx(N,{children:"Password"})}),e.jsx(S,{children:e.jsxs("form",{onSubmit:t.handleSubmit(ne),className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"current-password",children:"Current password"}),e.jsx(u,{id:"current-password",type:"password","aria-required":"true",autoComplete:"current-password","aria-invalid":!!t.formState.errors.currentPassword,"aria-describedby":t.formState.errors.currentPassword?"currentPassword-error":void 0,...t.register("currentPassword")}),e.jsx(p,{id:"currentPassword-error",message:(M=t.formState.errors.currentPassword)==null?void 0:M.message})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"new-password",children:"New password"}),e.jsx(u,{id:"new-password",type:"password","aria-required":"true",autoComplete:"new-password","aria-invalid":!!t.formState.errors.newPassword,"aria-describedby":t.formState.errors.newPassword?"newPassword-error":void 0,...t.register("newPassword")}),e.jsx(p,{id:"newPassword-error",message:(V=t.formState.errors.newPassword)==null?void 0:V.message})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(c,{htmlFor:"confirm-password",children:"Confirm new password"}),e.jsx(u,{id:"confirm-password",type:"password","aria-required":"true",autoComplete:"new-password","aria-invalid":!!t.formState.errors.confirmPassword,"aria-describedby":t.formState.errors.confirmPassword?"confirmPassword-error":void 0,...t.register("confirmPassword")}),e.jsx(p,{id:"confirmPassword-error",message:(W=t.formState.errors.confirmPassword)==null?void 0:W.message})]}),e.jsx(p,{assertive:!0,id:"default-error",message:($=t.formState.errors.root)==null?void 0:$.message}),e.jsx("div",{className:"flex justify-end",children:e.jsx(f,{type:"submit",size:"sm",disabled:t.formState.isSubmitting,children:t.formState.isSubmitting?"Saving…":"Change password"})})]})})]}),q&&C.length>0&&e.jsxs(y,{children:[e.jsx(b,{children:e.jsx(N,{children:"Apps"})}),e.jsx(S,{children:e.jsx("div",{className:"flex flex-col divide-y divide-border",children:C.map(s=>e.jsxs("div",{className:"flex flex-col gap-2 py-4 first:pt-0 last:pb-0",children:[e.jsx(c,{htmlFor:`app-${s.id}`,children:"App Name"}),e.jsx(u,{id:`app-${s.id}`,value:Q[s.id]??s.name,onChange:r=>_(a=>({...a,[s.id]:r.target.value}))}),e.jsxs("div",{className:"flex flex-col gap-1.5 mt-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-xs text-muted-foreground font-mono",children:s.bundle_id_key}),e.jsx(ve,{tone:s.platform==="ios"?"ios":s.platform==="android"?"android":void 0,variant:s.platform==="both"?"secondary":void 0,className:"capitalize",children:s.platform})]}),e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(f,{size:"sm",variant:"outline",disabled:z[s.id],onClick:()=>de(s.id),children:z[s.id]?"Saving…":"Save"}),e.jsxs(we,{children:[e.jsx(ye,{asChild:!0,children:e.jsx(f,{size:"sm",variant:"destructive",disabled:B[s.id],children:B[s.id]?"Deleting…":"Delete"})}),e.jsxs(be,{children:[e.jsxs(Ne,{children:[e.jsx(Se,{children:"Delete app?"}),e.jsxs(Pe,{children:["This will permanently delete ",e.jsx("strong",{children:s.name})," and all its builds. This action cannot be undone."]})]}),e.jsxs(Ce,{children:[e.jsx(Ae,{className:"w-24",children:"Cancel"}),e.jsx(ke,{className:fe(he({variant:"destructive"}),"w-24"),onClick:()=>le(s.id),children:"Delete"})]})]})]})]})]})]},s.id))})})]})]})}export{Be as DefaultSettings};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as a,j as e}from"./vendor-react-BlPSzrEe.js";import{aH as X,aG as Y,aD as Z,au as ee,B as d,I as h,at as t,L as y,F as L,C as se,c as ae,d as te,b as re,a as ne,an as oe,as as P,ao as q,ag as ie}from"./index-COOWQXpW.js";import{B as O}from"./badge-B4QAWrzA.js";import{A as le,c as ce,f as de,g as xe,d as ue,e as me,b as he}from"./alert-dialog-CwcUyDZQ.js";import{D as pe,f as je,a as ge,d as fe,e as ye,S as ke,i as ve,j as be,g as we,h as H}from"./dialog-BAFN_ONP.js";import{l as Ne,T as Te,d as De,e as Q,c as x,a as Ce,L as Se,b as u}from"./list-view-Rrqp8TkG.js";import{l as Ae}from"./publicLink-D6zKS_wu.js";import{u as Fe}from"./useFocusAfterSwap-BY3N9f9v.js";import{P as Re,T as Ie}from"./trash-CkO-5TRA.js";import"./vendor-router-B_lVHrKl.js";const Ee=oe({name:P().min(1,"Give the token a name"),expiresDays:P().refine(p=>{const r=parseInt(p,10);return!isNaN(r)&&r>=1&&r<=365},{message:"Must be between 1 and 365"})});function We(){var E,B;const p=X(),r=Y({queryKey:q.tokens,queryFn:ie}),V=r.data??[],k=Ne(r),v=a.useRef(null),z=Fe(k,v),[K,W]=a.useState(!1),[n,b]=a.useState(""),[c,w]=a.useState("api"),[N,T]=a.useState(""),[j,g]=a.useState(null),D=a.useId(),C=a.useId(),f=a.useRef(null),[_,o]=a.useState(""),{register:S,handleSubmit:$,reset:G,formState:{errors:i,isSubmitting:A}}=Z({resolver:ee(Ee),defaultValues:{name:"",expiresDays:"30"}}),F=()=>{p.invalidateQueries({queryKey:q.tokens})};a.useEffect(()=>{var s;n&&((s=f.current)==null||s.focus())},[n]);async function M(s){o("");try{const m=await fetch("/api/v1/tokens",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:s.name,expires_in_days:parseInt(s.expiresDays,10),...c==="agent"?{scope:"agent"}:{}})});if(!m.ok){const l=await m.json().catch(()=>null);t.error((l==null?void 0:l.error)??"Failed to create token"),o((l==null?void 0:l.error)??"Failed to create token");return}const U=await m.json();c==="agent"&&T((await Ae()).agentWsBase),t.success("Token created"),b(U.token),F()}catch{t.error("Network error"),o("Network error")}}function R(s){W(s),s||(b(""),w("api"),T(""),o(""),G())}async function J(s){try{return(await fetch(`/api/v1/tokens/${s}`,{method:"DELETE",credentials:"include"})).ok?(t.success("Token revoked"),F(),!0):(t.error("Failed to revoke token"),!1)}catch{return t.error("Network error"),!1}}function I(s){return s.expires_at&&new Date(s.expires_at)<new Date}return e.jsxs("div",{className:"flex flex-col gap-6 max-w-[900px] mx-auto w-full p-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("h1",{className:"text-xl font-semibold",children:"Personal Access Tokens"}),e.jsxs(pe,{open:K,onOpenChange:R,children:[e.jsx(je,{asChild:!0,children:e.jsxs(d,{ref:v,size:"sm",children:[e.jsx(Re,{className:"mr-2 h-4 w-4"}),"New token"]})}),e.jsxs(ge,{className:"sm:max-w-md",children:[e.jsx(fe,{children:e.jsx(ye,{children:"Create token"})}),e.jsx("p",{role:"status",className:"sr-only",children:_}),n?e.jsxs("div",{className:"flex flex-col gap-3 pt-2",children:[e.jsx("p",{id:D,className:"text-sm text-muted-foreground",children:"Copy this token now — it won't be shown again."}),e.jsx(h,{ref:f,readOnly:!0,value:n,"aria-labelledby":D,onFocus:s=>s.currentTarget.select(),className:"font-mono text-xs"}),c==="agent"&&N&&e.jsxs(e.Fragment,{children:[e.jsx("p",{id:C,className:"text-sm text-muted-foreground",children:"Run this on the agent Mac to connect it to this relay:"}),e.jsx(h,{readOnly:!0,value:`tapflow agent start --relay ${N} --token ${n}`,"aria-labelledby":C,onFocus:s=>s.currentTarget.select(),className:"font-mono text-xs"})]}),e.jsx(d,{onClick:()=>{o(""),(navigator.clipboard?navigator.clipboard.writeText(n):Promise.reject(new Error("no clipboard"))).then(()=>{t.success("Token copied to clipboard"),R(!1)}).catch(()=>{var s;t.error("Failed to copy — copy manually"),o("Could not copy the token. Select it and copy it by hand."),(s=f.current)==null||s.focus()})},children:"Copy & close"})]}):e.jsxs("form",{onSubmit:$(M),className:"flex flex-col gap-4 pt-2",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"token-name",children:"Name"}),e.jsx(h,{id:"token-name",placeholder:"e.g. ci-deploy","aria-required":"true","aria-invalid":!!i.name,"aria-describedby":i.name?"name-error":void 0,...S("name")}),e.jsx(L,{id:"name-error",message:(E=i.name)==null?void 0:E.message})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"expires",children:"Expires in (days)"}),e.jsx(h,{id:"expires",type:"number","aria-required":"true","aria-invalid":!!i.expiresDays,"aria-describedby":i.expiresDays?"expiresDays-error":void 0,...S("expiresDays")}),e.jsx(L,{id:"expiresDays-error",message:(B=i.expiresDays)==null?void 0:B.message})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"token-type",children:"Type"}),e.jsxs(ke,{value:c,onValueChange:s=>w(s),children:[e.jsx(ve,{id:"token-type",children:e.jsx(be,{})}),e.jsxs(we,{children:[e.jsx(H,{value:"api",children:"API — CI uploads & API access"}),e.jsx(H,{value:"agent",children:"Agent — connect remote device agents (Admin only)"})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Scope: ",e.jsx(O,{variant:"secondary",children:c==="agent"?"agent":"view, builds:write"})]}),e.jsx(d,{type:"submit",disabled:A,children:A?"Creating…":"Create token"})]})]})]})]}),e.jsxs(se,{children:[e.jsxs(ae,{children:[e.jsx(te,{children:"Active tokens"}),e.jsxs(re,{children:["Use these tokens with ",e.jsx("code",{className:"text-xs",children:"Authorization: Bearer <token>"})," for API deployments."]})]}),e.jsx(ne,{className:"px-4 pt-0 pb-2",children:e.jsxs(Te,{children:[e.jsx(De,{children:e.jsxs(Q,{children:[e.jsx(x,{children:"Name"}),e.jsx(x,{children:"Scope"}),e.jsx(x,{children:"Last used"}),e.jsx(x,{children:"Expires"}),e.jsx(x,{className:"w-10"})]})}),e.jsxs(Ce,{...z,children:[e.jsx(Se,{view:k,colSpan:5,noun:"tokens",emptyText:"No tokens yet.",onRetry:()=>{r.refetch()}}),V.map(s=>e.jsxs(Q,{className:"hover:bg-transparent",children:[e.jsx(u,{className:"font-medium",children:s.name}),e.jsx(u,{children:e.jsx(O,{variant:"secondary",children:s.scope})}),e.jsx(u,{className:"text-muted-foreground text-sm",children:s.last_used_at?new Date(s.last_used_at).toLocaleDateString():"Never"}),e.jsx(u,{children:s.expires_at?e.jsx("span",{className:I(s)?"text-destructive text-sm":"text-muted-foreground text-sm",children:I(s)?"Expired":new Date(s.expires_at).toLocaleDateString()}):e.jsx("span",{className:"text-muted-foreground text-sm",children:"Never"})}),e.jsx(u,{children:e.jsx(d,{variant:"destructive",size:"icon",className:"h-7 w-7","aria-label":"Revoke token",onClick:()=>g(s.id),children:e.jsx(Ie,{className:"h-4 w-4"})})})]},s.id))]})]})})]}),e.jsx(le,{open:j!==null,onOpenChange:s=>{s||g(null)},children:e.jsxs(ce,{children:[e.jsxs(de,{children:[e.jsx(xe,{children:"Revoke token?"}),e.jsx(ue,{children:"Any active API calls using this token will immediately fail."})]}),e.jsxs(me,{children:[e.jsx(he,{children:"Cancel"}),e.jsx(d,{variant:"destructive",onClick:async()=>{if(j===null)return;await J(j)&&g(null)},children:"Revoke"})]})]})})]})}export{We as TokenSettings};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as n,j as i,f as d}from"./vendor-react-BlPSzrEe.js";import{m as O,az as u,j as S,Q as T,n as b,k as E,i as v,$ as x,Z as h,D as z,o as k,l as F,O as f,K as N}from"./index-COOWQXpW.js";var H=Object.defineProperty,c=(s,t)=>H(s,"name",{value:t,configurable:!0}),M="AlertDialog",[I,fe]=h(M,[x]),p=x(),K=c(s=>{const{__scopeAlertDialog:t,...e}=s,a=p(t);return i.jsx(z,{...a,...e,modal:!0})},"AlertDialog"),L=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,o=p(a);return i.jsx(k,{...o,...l,ref:e})},"AlertDialogTrigger")),Q=c(s=>{const{__scopeAlertDialog:t,...e}=s,a=p(t);return i.jsx(O,{...a,...e})},"AlertDialogPortal"),V=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,o=p(a);return i.jsx(F,{...o,...l,ref:e})},"AlertDialogOverlay")),Z="AlertDialogContent",[q,B]=I(Z),G=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,children:l,...o}=t,r=p(a),g=n.useRef(null),$=u(e,g),m=n.useRef(null);return i.jsx(q,{scope:a,cancelRef:m,children:i.jsx(S,{role:"alertdialog",...r,...o,ref:$,onOpenAutoFocus:T(o.onOpenAutoFocus,D=>{var A;D.preventDefault(),(A=m.current)==null||A.focus({preventScroll:!0})}),onPointerDownOutside:D=>D.preventDefault(),onInteractOutside:D=>D.preventDefault(),children:l})})},"AlertDialogContent")),J=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,o=p(a);return i.jsx(b,{...o,...l,ref:e})},"AlertDialogTitle")),U=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,o=p(a);return i.jsx(E,{...o,...l,ref:e})},"AlertDialogDescription")),W=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,o=p(a);return i.jsx(v,{...o,...l,ref:e})},"AlertDialogAction")),X="AlertDialogCancel",Y=n.forwardRef(c(function(t,e){const{__scopeAlertDialog:a,...l}=t,{cancelRef:o}=B(X,a),r=p(a),g=u(e,o);return i.jsx(v,{...r,...l,ref:g})},"AlertDialogCancel")),ee=K,te=L,ae=Q,_=V,y=G,j=W,R=Y,C=J,w=U;const De=ee,me=te,le=ae,P=n.forwardRef((s,t)=>{const e=d.c(9);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]!==a?(o=f("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),e[3]=a,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==t||e[7]!==o?(r=i.jsx(_,{className:o,...l,ref:t}),e[5]=l,e[6]=t,e[7]=o,e[8]=r):r=e[8],r});P.displayName=_.displayName;const oe=n.forwardRef((s,t)=>{const e=d.c(10);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(P,{}),e[3]=o):o=e[3];let r;e[4]!==a?(r=f("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",a),e[4]=a,e[5]=r):r=e[5];let g;return e[6]!==l||e[7]!==t||e[8]!==r?(g=i.jsxs(le,{children:[o,i.jsx(y,{ref:t,className:r,...l})]}),e[6]=l,e[7]=t,e[8]=r,e[9]=g):g=e[9],g});oe.displayName=y.displayName;const se=s=>{const t=d.c(8);let e,a;t[0]!==s?({className:e,...a}=s,t[0]=s,t[1]=e,t[2]=a):(e=t[1],a=t[2]);let l;t[3]!==e?(l=f("flex flex-col space-y-2 text-center sm:text-left",e),t[3]=e,t[4]=l):l=t[4];let o;return t[5]!==a||t[6]!==l?(o=i.jsx("div",{className:l,...a}),t[5]=a,t[6]=l,t[7]=o):o=t[7],o};se.displayName="AlertDialogHeader";const re=s=>{const t=d.c(8);let e,a;t[0]!==s?({className:e,...a}=s,t[0]=s,t[1]=e,t[2]=a):(e=t[1],a=t[2]);let l;t[3]!==e?(l=f("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),t[3]=e,t[4]=l):l=t[4];let o;return t[5]!==a||t[6]!==l?(o=i.jsx("div",{className:l,...a}),t[5]=a,t[6]=l,t[7]=o):o=t[7],o};re.displayName="AlertDialogFooter";const ie=n.forwardRef((s,t)=>{const e=d.c(9);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]!==a?(o=f("text-lg font-semibold",a),e[3]=a,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==t||e[7]!==o?(r=i.jsx(C,{ref:t,className:o,...l}),e[5]=l,e[6]=t,e[7]=o,e[8]=r):r=e[8],r});ie.displayName=C.displayName;const ne=n.forwardRef((s,t)=>{const e=d.c(9);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]!==a?(o=f("text-sm text-muted-foreground",a),e[3]=a,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==t||e[7]!==o?(r=i.jsx(w,{ref:t,className:o,...l}),e[5]=l,e[6]=t,e[7]=o,e[8]=r):r=e[8],r});ne.displayName=w.displayName;const ce=n.forwardRef((s,t)=>{const e=d.c(9);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]!==a?(o=f(N(),a),e[3]=a,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==t||e[7]!==o?(r=i.jsx(j,{ref:t,className:o,...l}),e[5]=l,e[6]=t,e[7]=o,e[8]=r):r=e[8],r});ce.displayName=j.displayName;const pe=n.forwardRef((s,t)=>{const e=d.c(9);let a,l;e[0]!==s?({className:a,...l}=s,e[0]=s,e[1]=a,e[2]=l):(a=e[1],l=e[2]);let o;e[3]!==a?(o=f(N({variant:"outline"}),"mt-2 sm:mt-0",a),e[3]=a,e[4]=o):o=e[4];let r;return e[5]!==l||e[6]!==t||e[7]!==o?(r=i.jsx(R,{ref:t,className:o,...l}),e[5]=l,e[6]=t,e[7]=o,e[8]=r):r=e[8],r});pe.displayName=R.displayName;export{De as A,ce as a,pe as b,oe as c,ne as d,re as e,se as f,ie as g,me as h};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|