llm-simple-router 0.2.0 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/admin/monitor.d.ts +7 -0
  2. package/dist/admin/monitor.js +25 -0
  3. package/dist/admin/providers.d.ts +4 -0
  4. package/dist/admin/providers.js +57 -9
  5. package/dist/admin/retry-rules.js +6 -3
  6. package/dist/admin/routes.d.ts +4 -0
  7. package/dist/admin/routes.js +3 -1
  8. package/dist/admin/setup.js +8 -5
  9. package/dist/cli.js +0 -0
  10. package/dist/db/index.d.ts +1 -1
  11. package/dist/db/index.js +1 -1
  12. package/dist/db/mappings.js +6 -2
  13. package/dist/db/migrations/017_add_provider_concurrency.sql +3 -0
  14. package/dist/db/providers.d.ts +12 -1
  15. package/dist/db/providers.js +8 -3
  16. package/dist/db/retry-rules.js +4 -1
  17. package/dist/db/router-keys.js +3 -1
  18. package/dist/index.js +36 -5
  19. package/dist/metrics/sse-metrics-transform.d.ts +17 -1
  20. package/dist/metrics/sse-metrics-transform.js +33 -2
  21. package/dist/middleware/auth.js +5 -4
  22. package/dist/monitor/request-tracker.d.ts +49 -0
  23. package/dist/monitor/request-tracker.js +279 -0
  24. package/dist/monitor/runtime-collector.d.ts +11 -0
  25. package/dist/monitor/runtime-collector.js +41 -0
  26. package/dist/monitor/stats-aggregator.d.ts +22 -0
  27. package/dist/monitor/stats-aggregator.js +166 -0
  28. package/dist/monitor/types.d.ts +84 -0
  29. package/dist/monitor/types.js +1 -0
  30. package/dist/proxy/anthropic.d.ts +4 -0
  31. package/dist/proxy/anthropic.js +10 -2
  32. package/dist/proxy/enhancement-handler.js +3 -1
  33. package/dist/proxy/mapping-resolver.js +6 -2
  34. package/dist/proxy/openai.d.ts +4 -0
  35. package/dist/proxy/openai.js +10 -2
  36. package/dist/proxy/proxy-core.d.ts +6 -0
  37. package/dist/proxy/proxy-core.js +176 -85
  38. package/dist/proxy/retry.d.ts +1 -1
  39. package/dist/proxy/retry.js +3 -2
  40. package/dist/proxy/semaphore.d.ts +27 -0
  41. package/dist/proxy/semaphore.js +125 -0
  42. package/dist/utils/password.js +2 -1
  43. package/frontend-dist/assets/CardContent-B40ArIqh.js +1 -0
  44. package/frontend-dist/assets/{CardHeader-D5lVaeAA.js → CardHeader-BjkSQf27.js} +1 -1
  45. package/frontend-dist/assets/CardTitle-DjG2kSF3.js +1 -0
  46. package/frontend-dist/assets/Checkbox-Cw0rq2D9.js +1 -0
  47. package/frontend-dist/assets/CollapsibleTrigger-BvYqNbGA.js +1 -0
  48. package/frontend-dist/assets/Collection-CQ4pV54w.js +3 -0
  49. package/frontend-dist/assets/Dashboard-CsOTBnSa.js +3 -0
  50. package/frontend-dist/assets/DialogTitle-PS2W-IfG.js +1 -0
  51. package/frontend-dist/assets/Input-toxjzsir.js +1 -0
  52. package/frontend-dist/assets/Label-fZNDEQjf.js +1 -0
  53. package/frontend-dist/assets/LogResponseViewer-B9kSncNr.js +3 -0
  54. package/frontend-dist/assets/Login-DRm9DHq1.js +1 -0
  55. package/frontend-dist/assets/Logs-NHxebwmP.js +1 -0
  56. package/frontend-dist/assets/ModelMappings-DV0RPnO2.js +1 -0
  57. package/frontend-dist/assets/Monitor-B5TYWb2n.js +1 -0
  58. package/frontend-dist/assets/PopperContent-BvKlcZEO.js +1 -0
  59. package/frontend-dist/assets/Providers-D1Rauu-D.js +1 -0
  60. package/frontend-dist/assets/ProxyEnhancement-B2OliarO.js +5 -0
  61. package/frontend-dist/assets/RetryRules-BWu2gicT.js +1 -0
  62. package/frontend-dist/assets/RouterKeys-BP6XJCVa.js +1 -0
  63. package/frontend-dist/assets/RovingFocusItem-DHfpgdA0.js +1 -0
  64. package/frontend-dist/assets/SelectValue-CFf_mD9E.js +1 -0
  65. package/frontend-dist/assets/Setup-BMjCT-Tl.js +1 -0
  66. package/frontend-dist/assets/Switch-BGCQ7puL.js +1 -0
  67. package/frontend-dist/assets/TableHeader-DAOs6nSA.js +1 -0
  68. package/frontend-dist/assets/TabsTrigger-DBAYM66g.js +1 -0
  69. package/frontend-dist/assets/VisuallyHidden-Dh7svQf3.js +1 -0
  70. package/frontend-dist/assets/VisuallyHiddenInput-BOaRSEmd.js +1 -0
  71. package/frontend-dist/assets/alert-dialog-CUNSZqpB.js +1 -0
  72. package/frontend-dist/assets/button-CfQs66fX.js +1 -0
  73. package/frontend-dist/assets/client-DvdghFBq.js +12 -0
  74. package/frontend-dist/assets/createLucideIcon-DCD7INQf.js +1 -0
  75. package/frontend-dist/assets/dialog-DQFRGKR6.js +1 -0
  76. package/frontend-dist/assets/index--5JhZIwi.js +1 -0
  77. package/frontend-dist/assets/index-Bx15k8FA.css +1 -0
  78. package/frontend-dist/assets/lib-BJNsNHLO.js +1 -0
  79. package/frontend-dist/assets/ohash.D__AXeF1-CNudYmrX.js +1 -0
  80. package/frontend-dist/assets/useClipboard-aPMKfK25.js +1 -0
  81. package/frontend-dist/assets/useForwardExpose-u2vjohek.js +1 -0
  82. package/frontend-dist/assets/useNonce-ClXGIm-8.js +1 -0
  83. package/frontend-dist/assets/x-ILQhskuj.js +1 -0
  84. package/frontend-dist/index.html +7 -6
  85. package/package.json +1 -1
  86. package/dist/admin/services.d.ts +0 -7
  87. package/dist/admin/services.js +0 -63
  88. package/frontend-dist/assets/CardContent-BE9fukPi.js +0 -1
  89. package/frontend-dist/assets/CardTitle-H-zwhi3Z.js +0 -1
  90. package/frontend-dist/assets/Checkbox--1gw0dYW.js +0 -1
  91. package/frontend-dist/assets/CollapsibleTrigger-D_ptA35Y.js +0 -1
  92. package/frontend-dist/assets/Dashboard-D4AwkULO.js +0 -3
  93. package/frontend-dist/assets/Label-GiPfoz7u.js +0 -1
  94. package/frontend-dist/assets/Login-BUet1sbM.js +0 -1
  95. package/frontend-dist/assets/Logs-yztb_F9t.js +0 -3
  96. package/frontend-dist/assets/ModelMappings-MbZhdPNv.js +0 -1
  97. package/frontend-dist/assets/Providers-BjsqH6A2.js +0 -1
  98. package/frontend-dist/assets/RetryRules-C2vvJvLr.js +0 -1
  99. package/frontend-dist/assets/RouterKeys-DavrgpAQ.js +0 -1
  100. package/frontend-dist/assets/RovingFocusItem-DnIa_lwH.js +0 -1
  101. package/frontend-dist/assets/SelectValue-BB0Ckbjh.js +0 -1
  102. package/frontend-dist/assets/TableHeader-D2GkiqRx.js +0 -1
  103. package/frontend-dist/assets/alert-dialog-CWjBke-O.js +0 -1
  104. package/frontend-dist/assets/badge-_ZHrMEpC.js +0 -3
  105. package/frontend-dist/assets/button-C4_mChkc.js +0 -1
  106. package/frontend-dist/assets/client-BWw0R36V.js +0 -12
  107. package/frontend-dist/assets/dialog-CUHMcTqp.js +0 -1
  108. package/frontend-dist/assets/index-DEl48bm9.css +0 -1
  109. package/frontend-dist/assets/index-UZK1BnPG.js +0 -1
  110. package/frontend-dist/assets/lib-Qs8xoTas.js +0 -1
  111. package/frontend-dist/assets/useForwardExpose-B-xauF1X.js +0 -1
  112. package/frontend-dist/assets/x-JBJB26JV.js +0 -1
@@ -0,0 +1 @@
1
+ @import "https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&display=swap";:root{--color-teal-50:oklch(97% .02 175);--color-teal-100:oklch(93% .04 175);--color-teal-200:oklch(87% .07 175);--color-teal-300:oklch(78% .1 175);--color-teal-400:oklch(68% .13 175);--color-teal-500:oklch(58% .14 175);--color-teal-600:oklch(48% .12 175);--color-teal-700:oklch(40% .1 175);--color-teal-800:oklch(32% .08 175);--color-teal-900:oklch(25% .06 175);--color-success:oklch(65% .17 150);--color-success-light:oklch(92% .05 150);--color-success-dark:oklch(45% .15 150);--color-warning:oklch(78% .16 80);--color-warning-light:oklch(94% .06 80);--color-warning-dark:oklch(55% .14 80);--color-danger:oklch(58% .22 25);--color-danger-light:oklch(90% .08 25);--color-danger-dark:oklch(40% .18 25);--color-info:oklch(62% .18 250);--color-info-light:oklch(91% .06 250);--color-info-dark:oklch(43% .16 250);--color-bg-page:var(--background);--color-bg-card:var(--card);--color-bg-sidebar:oklch(20.5% 0 0);--color-text-primary:var(--foreground);--color-text-secondary:var(--muted-foreground);--color-text-tertiary:oklch(65% 0 0);--color-role-user:oklch(78% .1 175);--color-role-user-bg:oklch(97% .02 175);--color-role-assistant:oklch(65% .14 260);--color-role-assistant-bg:oklch(93% .04 260);--color-role-tool:oklch(65% .14 30);--color-role-tool-bg:oklch(94% .04 30);--color-role-thinking:oklch(58% .12 290);--color-role-thinking-bg:oklch(91% .03 290);--color-sse-message-start:oklch(68% .13 175);--color-sse-content-block-start:oklch(58% .14 175);--color-sse-content-block-delta:oklch(48% .12 175);--color-sse-message-delta:oklch(40% .1 175);--color-sse-message-stop:oklch(65% .17 150);--spacing-dense-xs:.25rem;--spacing-dense-sm:.375rem;--spacing-dense-md:.5rem;--spacing-page:1.5rem;--spacing-section:1.25rem;--spacing-card:1rem;--spacing-tight:.5rem;--gap-icon-text:.375rem;--radius-pill:9999px;--color-overlay-light:oklch(0% 0 0/.1);--color-overlay:oklch(0% 0 0/.8);--shadow-card:0 1px 3px oklch(0% 0 0/.1);--shadow-elevated:0 4px 12px oklch(0% 0 0/.12);--shadow-focus:0 0 0 2px oklch(58% .14 175);--duration-fast:.15s;--duration-normal:.2s;--ease-default:cubic-bezier(.4, 0, .2, 1);--z-modal:100;--z-dropdown:150;--z-toast:200}.dark{--color-success-light:oklch(30% .05 150);--color-warning-light:oklch(32% .06 80);--color-danger-light:oklch(28% .08 25);--color-info-light:oklch(28% .06 250);--color-bg-sidebar:oklch(14.5% 0 0);--color-text-tertiary:oklch(55.6% 0 0);--color-role-user-bg:oklch(28% .04 175);--color-role-user:oklch(72% .08 175);--color-role-assistant-bg:oklch(25% .05 260);--color-role-assistant:oklch(60% .1 260);--color-role-tool-bg:oklch(25% .05 30);--color-role-tool:oklch(60% .1 30);--color-role-thinking-bg:oklch(23% .04 290);--color-role-thinking:oklch(55% .09 290)}*,:before,:after,::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:#3b82f680;--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:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family: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:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-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{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}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{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(48% .12 175);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(58% .14 175);--chart-1:oklch(87% 0 0);--chart-2:oklch(55.6% 0 0);--chart-3:oklch(43.9% 0 0);--chart-4:oklch(37.1% 0 0);--chart-5:oklch(26.9% 0 0);--radius:.375rem;--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-xl:calc(var(--radius) + 2px);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0);--font-sans:"Geist Variable", sans-serif;--font-heading:var(--font-sans);--font-mono:"JetBrains Mono", "Fira Code", ui-monospace, monospace}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(68% .13 175);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(78% .1 175);--chart-1:oklch(87% 0 0);--chart-2:oklch(55.6% 0 0);--chart-3:oklch(43.9% 0 0);--chart-4:oklch(37.1% 0 0);--chart-5:oklch(26.9% 0 0);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(68% .13 175);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground);font-family:var(--font-sans)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.left-1\/2{left:50%}.right-0{right:0}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-2{top:.5rem}.top-4{top:1rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-dropdown{z-index:var(--z-dropdown)}.z-modal{z-index:var(--z-modal)}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-mb-4{margin-bottom:-1rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.grid{display:grid}.aspect-square{aspect-ratio:1}.size-10{width:2.5rem;height:2.5rem}.size-2\.5{width:.625rem;height:.625rem}.size-4{width:1rem;height:1rem}.size-6{width:1.5rem;height:1.5rem}.size-7{width:1.75rem;height:1.75rem}.size-8{width:2rem;height:2rem}.size-9{width:2.25rem;height:2.25rem}.size-full{width:100%;height:100%}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-80{max-height:20rem}.max-h-\[40vh\]{max-height:40vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0}.min-h-screen{min-height:100vh}.w-1\/3{width:33.3333%}.w-12{width:3rem}.w-16{width:4rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[140px\]{width:140px}.w-\[260px\]{width:260px}.w-fit{width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-36{min-width:9rem}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-\[140px\]{max-width:140px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-lg{max-width:32rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(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)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(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)) skewX(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)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(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)) skewX(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:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;user-select:none}.select-all{-webkit-user-select:all;user-select:all}.scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_1fr\]{grid-template-rows:auto 1fr}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.-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)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.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))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.justify-self-end{justify-self:end}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-xl{border-radius:var(--radius-xl)}.rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-border{border-color:var(--border)}.border-danger{border-color:var(--color-danger)}.border-destructive{border-color:var(--destructive)}.border-info{border-color:var(--color-info)}.border-input{border-color:var(--input)}.border-muted{border-color:var(--muted)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-success{border-color:var(--color-success)}.border-teal-200{border-color:var(--color-teal-200)}.border-transparent{border-color:#0000}.border-warning{border-color:var(--color-warning)}.bg-background{background-color:var(--background)}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-danger-light{background-color:var(--color-danger-light)}.bg-foreground{background-color:var(--foreground)}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-info{background-color:var(--color-info)}.bg-info-light{background-color:var(--color-info-light)}.bg-muted{background-color:var(--muted)}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-overlay{background-color:var(--color-overlay)}.bg-overlay-light{background-color:var(--color-overlay-light)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-role-assistant-bg{background-color:var(--color-role-assistant-bg)}.bg-role-tool-bg{background-color:var(--color-role-tool-bg)}.bg-role-user-bg{background-color:var(--color-role-user-bg)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-sidebar-primary{background-color:var(--sidebar-primary)}.bg-success{background-color:var(--color-success)}.bg-success-light{background-color:var(--color-success-light)}.bg-teal-200{background-color:var(--color-teal-200)}.bg-teal-300{background-color:var(--color-teal-300)}.bg-teal-50{background-color:var(--color-teal-50)}.bg-teal-500{background-color:var(--color-teal-500)}.bg-teal-600{background-color:var(--color-teal-600)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning-light{background-color:var(--color-warning-light)}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.bg-clip-padding{background-clip:padding-box}.fill-foreground{fill:var(--foreground)}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-0{padding-left:0;padding-right:0}.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}.py-0{padding-top:0;padding-bottom:0}.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-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pl-1\.5{padding-left:.375rem}.pl-2\.5{padding-left:.625rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-8{padding-right:2rem}.pt-2{padding-top:.5rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.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-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-danger-dark{color:var(--color-danger-dark)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-info-dark{color:var(--color-info-dark)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-role-assistant{color:var(--color-role-assistant)}.text-role-tool{color:var(--color-role-tool)}.text-role-user{color:var(--color-role-user)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground{color:var(--sidebar-foreground)}.text-sidebar-primary{color:var(--sidebar-primary)}.text-sidebar-primary-foreground{color:var(--sidebar-primary-foreground)}.text-success{color:var(--color-success)}.text-success-dark{color:var(--color-success-dark)}.text-teal-200{color:var(--color-teal-200)}.text-teal-300{color:var(--color-teal-300)}.text-teal-700{color:var(--color-teal-700)}.text-teal-900{color:var(--color-teal-900)}.text-warning-dark{color:var(--color-warning-dark)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-25{opacity:.25}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.bg-blend-color{background-blend-mode:color}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--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)}.shadow-elevated{--tw-shadow:var(--shadow-elevated);--tw-shadow-colored:var(--shadow-elevated);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 #0000001a, 0 4px 6px -4px #0000001a;--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 #0000001a, 0 2px 4px -2px #0000001a;--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)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.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-1{--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(1px + 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-2{--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)}.ring-background{--tw-ring-color:var(--background)}.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)}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-none{transition-property:none}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-100{transition-duration:.1s}.duration-300{transition-duration:.3s}.duration-fast{transition-duration:var(--duration-fast)}.duration-normal{transition-duration:var(--duration-normal)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.duration-100{animation-duration:.1s}.duration-300{animation-duration:.3s}.duration-fast{animation-duration:var(--duration-fast)}.duration-normal{animation-duration:var(--duration-normal)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:1.5rem}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.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:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:inset-0:after{content:var(--tw-content);inset:0}.after\:-inset-x-3:after{content:var(--tw-content);left:-.75rem;right:-.75rem}.after\:-inset-y-2:after{content:var(--tw-content);top:-.5rem;bottom:-.5rem}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:border:after{content:var(--tw-content);border-width:1px}.after\:border-border:after{content:var(--tw-content);border-color:var(--border)}.after\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:mix-blend-darken:after{content:var(--tw-content);mix-blend-mode:darken}.after\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-secondary:hover{background-color:var(--secondary)}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-sidebar-foreground:hover{color:var(--sidebar-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:ring-\[3px\]: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(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)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-50{opacity:.5}.has-\[\>img\:first-child\]\:pt-0:has(>img:first-child){padding-top:0}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[size\=lg\]\:size-10[data-size=lg]{width:2.5rem;height:2.5rem}.data-\[size\=sm\]\:size-6[data-size=sm]{width:1.5rem;height:1.5rem}.data-\[orientation\=horizontal\]\:h-2\.5[data-orientation=horizontal]{height:.625rem}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[position\=popper\]\:h-\[var\(--reka-select-trigger-height\)\][data-position=popper]{height:var(--reka-select-trigger-height)}.data-\[size\=default\]\:h-8[data-size=default]{height:2rem}.data-\[size\=default\]\:h-\[18\.4px\][data-size=default]{height:18.4px}.data-\[size\=sm\]\:h-7[data-size=sm]{height:1.75rem}.data-\[size\=sm\]\:h-\[14px\][data-size=sm]{height:14px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:w-2\.5[data-orientation=vertical]{width:.625rem}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[position\=popper\]\:w-full[data-position=popper]{width:100%}.data-\[size\=default\]\:w-\[32px\][data-size=default]{width:32px}.data-\[size\=sm\]\:w-\[24px\][data-size=sm]{width:24px}.data-\[position\=popper\]\:min-w-\[var\(--reka-select-trigger-width\)\][data-position=popper]{min-width:var(--reka-select-trigger-width)}.data-\[size\=default\]\:max-w-xs[data-size=default],.data-\[size\=sm\]\:max-w-xs[data-size=sm]{max-width:20rem}.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)) skewX(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)) skewX(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)) skewX(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)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[align-trigger\=true\]\:animate-none[data-align-trigger=true]{animation:none}.data-\[disabled\]\:cursor-not-allowed[data-disabled]{cursor:not-allowed}.data-\[orientation\=horizontal\]\:flex-col[data-orientation=horizontal]{flex-direction:column}.data-\[size\=sm\]\:gap-3[data-size=sm]{gap:.75rem}.data-\[orientation\=vertical\]\:self-stretch[data-orientation=vertical]{align-self:stretch}.data-\[size\=sm\]\:rounded-md[data-size=sm]{border-radius:var(--radius-md)}.data-\[variant\=line\]\:rounded-none[data-variant=line]{border-radius:0}.data-\[orientation\=horizontal\]\:border-t[data-orientation=horizontal]{border-top-width:1px}.data-\[orientation\=vertical\]\:border-l[data-orientation=vertical]{border-left-width:1px}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[orientation\=horizontal\]\:border-t-transparent[data-orientation=horizontal]{border-top-color:#0000}.data-\[orientation\=vertical\]\:border-l-transparent[data-orientation=vertical]{border-left-color:#0000}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[size\=sm\]\:py-3[data-size=sm]{padding-top:.75rem;padding-bottom:.75rem}.data-\[state\=active\]\:text-foreground[data-state=active]{color:var(--foreground)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open],.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open],.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-.5rem}.data-\[side\=inline-end\]\:slide-in-from-left-2[data-side=inline-end]{--tw-enter-translate-x:-.5rem}.data-\[side\=inline-start\]\:slide-in-from-right-2[data-side=inline-start],.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:.5rem}.\*\:data-\[slot\=select-value\]\:line-clamp-1[data-slot=select-value]>*{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\*\:data-\[slot\=select-value\]\:flex[data-slot=select-value]>*{display:flex}.\*\:data-\[slot\=select-value\]\:items-center[data-slot=select-value]>*{align-items:center}.\*\:data-\[slot\=select-value\]\:gap-1\.5[data-slot=select-value]>*{gap:.375rem}.\*\:data-\[slot\=avatar\]\:ring-2[data-slot=avatar]>*{--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)}.\*\:data-\[slot\=avatar\]\:ring-background[data-slot=avatar]>*{--tw-ring-color:var(--background)}.group[data-disabled=true] .group-data-\[disabled\=true\]\:pointer-events-none{pointer-events:none}.group\/alert-dialog-content[data-size=sm] .group-data-\[size\=sm\]\/alert-dialog-content\:grid{display:grid}.group\/avatar[data-size=default] .group-data-\[size\=default\]\/avatar\:size-2\.5{width:.625rem;height:.625rem}.group\/switch[data-size=default] .group-data-\[size\=default\]\/switch\:size-4{width:1rem;height:1rem}.group\/avatar[data-size=lg] .group-data-\[size\=lg\]\/avatar\:size-3{width:.75rem;height:.75rem}.group\/avatar[data-size=sm] .group-data-\[size\=sm\]\/avatar\:size-2{width:.5rem;height:.5rem}.group\/switch[data-size=sm] .group-data-\[size\=sm\]\/switch\:size-3{width:.75rem;height:.75rem}.group\/tabs[data-orientation=horizontal] .group-data-\[orientation\=horizontal\]\/tabs\:h-8{height:2rem}.group\/tabs[data-orientation=vertical] .group-data-\[orientation\=vertical\]\/tabs\:h-fit{height:fit-content}.group\/tabs[data-orientation=vertical] .group-data-\[orientation\=vertical\]\/tabs\:w-full{width:100%}.group\/alert-dialog-content[data-size=sm] .group-data-\[size\=sm\]\/alert-dialog-content\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.group\/tabs[data-orientation=vertical] .group-data-\[orientation\=vertical\]\/tabs\:flex-col{flex-direction:column}.group\/tabs[data-orientation=vertical] .group-data-\[orientation\=vertical\]\/tabs\:justify-start{justify-content:flex-start}.group\/tabs-list[data-variant=line] .group-data-\[variant\=line\]\/tabs-list\:bg-transparent{background-color:#0000}.group\/card[data-size=sm] .group-data-\[size\=sm\]\/card\:p-3{padding:.75rem}.group\/card[data-size=sm] .group-data-\[size\=sm\]\/card\:px-3{padding-left:.75rem;padding-right:.75rem}.group\/avatar[data-size=sm] .group-data-\[size\=sm\]\/avatar\:text-xs{font-size:.75rem;line-height:1rem}.group\/card[data-size=sm] .group-data-\[size\=sm\]\/card\:text-sm{font-size:.875rem;line-height:1.25rem}.group[data-disabled=true] .group-data-\[disabled\=true\]\:opacity-50{opacity:.5}.group\/tabs[data-orientation=horizontal] .group-data-\[orientation\=horizontal\]\/tabs\:after\:inset-x-0:after{content:var(--tw-content);left:0;right:0}.group\/tabs[data-orientation=vertical] .group-data-\[orientation\=vertical\]\/tabs\:after\:inset-y-0:after{content:var(--tw-content);top:0;bottom:0}.group\/tabs[data-orientation=horizontal] .group-data-\[orientation\=horizontal\]\/tabs\:after\:bottom-\[-5px\]:after{content:var(--tw-content);bottom:-5px}.group\/tabs[data-orientation=vertical] .group-data-\[orientation\=vertical\]\/tabs\:after\:-right-1:after{content:var(--tw-content);right:-.25rem}.group\/tabs[data-orientation=horizontal] .group-data-\[orientation\=horizontal\]\/tabs\:after\:h-0\.5:after{content:var(--tw-content);height:.125rem}.group\/tabs[data-orientation=vertical] .group-data-\[orientation\=vertical\]\/tabs\:after\:w-0\.5:after{content:var(--tw-content);width:.125rem}.group\/switch[data-size=default] .group-data-\[size\=default\]\/switch\:data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x:calc(100% - 2px);transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/switch[data-size=default] .group-data-\[size\=default\]\/switch\: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)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/switch[data-size=sm] .group-data-\[size\=sm\]\/switch\:data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x:calc(100% - 2px);transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/switch[data-size=sm] .group-data-\[size\=sm\]\/switch\: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)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/tabs-list[data-variant=line] .group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent[data-state=active]{background-color:#0000}.group\/tabs-list[data-variant=default] .group-data-\[variant\=default\]\/tabs-list\:data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 2px 0 #0000000d;--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)}.group\/tabs-list[data-variant=line] .group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:shadow-none[data-state=active]{--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)}.group\/tabs-list[data-variant=line] .group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:after\:opacity-100[data-state=active]:after{content:var(--tw-content);opacity:1}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:border-teal-800:is(.dark *){border-color:var(--color-teal-800)}.dark\:bg-teal-600:is(.dark *){background-color:var(--color-teal-600)}.dark\:bg-teal-700:is(.dark *){background-color:var(--color-teal-700)}.dark\:bg-teal-800:is(.dark *){background-color:var(--color-teal-800)}.dark\:bg-teal-900:is(.dark *){background-color:var(--color-teal-900)}.dark\:text-danger:is(.dark *){color:var(--color-danger)}.dark\:text-green-400:is(.dark *){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.dark\:text-info:is(.dark *){color:var(--color-info)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-orange-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dark\:text-success:is(.dark *){color:var(--color-success)}.dark\:text-teal-100:is(.dark *){color:var(--color-teal-100)}.dark\:text-teal-200:is(.dark *){color:var(--color-teal-200)}.dark\:text-teal-300:is(.dark *){color:var(--color-teal-300)}.dark\:text-warning:is(.dark *){color:var(--color-warning)}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.dark\:after\:mix-blend-lighten:is(.dark *):after{content:var(--tw-content);mix-blend-mode:lighten}.dark\:hover\:text-foreground:hover:is(.dark *){color:var(--foreground)}.dark\:data-\[state\=active\]\:border-input[data-state=active]:is(.dark *){border-color:var(--input)}.dark\:data-\[state\=checked\]\:bg-primary[data-state=checked]:is(.dark *){background-color:var(--primary)}.dark\:data-\[state\=checked\]\:bg-primary-foreground[data-state=checked]:is(.dark *){background-color:var(--primary-foreground)}.dark\:data-\[state\=unchecked\]\:bg-foreground[data-state=unchecked]:is(.dark *){background-color:var(--foreground)}.dark\:data-\[state\=active\]\:text-foreground[data-state=active]:is(.dark *){color:var(--foreground)}.group\/tabs-list[data-variant=line] .dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:border-transparent[data-state=active]:is(.dark *){border-color:#0000}.group\/tabs-list[data-variant=line] .dark\:group-data-\[variant\=line\]\/tabs-list\:data-\[state\=active\]\:bg-transparent[data-state=active]:is(.dark *){background-color:#0000}@media (width>=640px){.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:rounded-lg{border-radius:var(--radius-lg)}.data-\[size\=default\]\:sm\:max-w-sm[data-size=default]{max-width:24rem}.group\/alert-dialog-content[data-size=default] .sm\:group-data-\[size\=default\]\/alert-dialog-content\:row-span-2{grid-row:span 2/span 2}.group\/alert-dialog-content[data-size=default] .sm\:group-data-\[size\=default\]\/alert-dialog-content\:place-items-start{place-items:start}.group\/alert-dialog-content[data-size=default] .sm\:group-data-\[size\=default\]\/alert-dialog-content\:text-left{text-align:left}}@media (width>=768px){.md\:w-full{width:100%}.md\:text-pretty{text-wrap:pretty}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (width>=1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:size-4>svg{width:1rem;height:1rem}.group\/avatar[data-size=sm] .group-data-\[size\=sm\]\/avatar\:\[\&\>svg\]\:hidden>svg{display:none}.group\/avatar[data-size=default] .group-data-\[size\=default\]\/avatar\:\[\&\>svg\]\:size-2>svg,.group\/avatar[data-size=lg] .group-data-\[size\=lg\]\/avatar\:\[\&\>svg\]\:size-2>svg{width:.5rem;height:.5rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0}.\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-3 svg:not([class*=size-]){width:.75rem;height:.75rem}.\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-3\.5 svg:not([class*=size-]){width:.875rem;height:.875rem}.\[\&_svg\:not\(\[class\*\=size-\]\)\]\:size-4 svg:not([class*=size-]){width:1rem;height:1rem}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}
@@ -0,0 +1 @@
1
+ import{A as e,B as t,D as n,F as r,H as i,K as a,L as o,M as s,R as c,S as l,Y as u,_ as d,_t as f,b as p,f as m,g as h,gt as g,h as _,j as ee,k as v,mt as y,ot as b,q as x,v as S,vt as C,x as w,y as T,yt as E}from"./client-DvdghFBq.js";import{D,b as O,i as k,r as A}from"./button-CfQs66fX.js";var j=l({__name:`Badge`,props:{asChild:{type:Boolean},as:{},variant:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=O(t,`class`);return(i,a)=>(r(),d(y(k),v({"data-slot":`badge`,"data-variant":e.variant,class:y(A)(y(M)({variant:e.variant}),t.class)},y(n)),{default:u(()=>[c(i.$slots,`default`)]),_:3},16,[`data-variant`,`class`]))}}),M=D(`h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! group/badge inline-flex w-fit shrink-0 items-center justify-center overflow-hidden whitespace-nowrap focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,secondary:`bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80`,destructive:`bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20`,outline:`border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground`,ghost:`hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50`,link:`text-primary underline-offset-4 hover:underline`}},defaultVariants:{variant:`default`}}),N=1,P=new class{subscribers;toasts;dismissedToasts;constructor(){this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)});publish=e=>{this.subscribers.forEach(t=>t(e))};addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]};create=e=>{let{message:t,...n}=e,r=typeof e.id==`number`||e.id&&e.id?.length>0?e.id:N++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r};dismiss=e=>(e?(this.dismissedToasts.add(e),requestAnimationFrame(()=>this.subscribers.forEach(t=>t({id:e,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),e);message=(e,t)=>this.create({...t,message:e,type:`default`});error=(e,t)=>this.create({...t,type:`error`,message:e});success=(e,t)=>this.create({...t,type:`success`,message:e});info=(e,t)=>this.create({...t,type:`info`,message:e});warning=(e,t)=>this.create({...t,type:`warning`,message:e});loading=(e,t)=>this.create({...t,type:`loading`,message:e});promise=(e,t)=>{if(!t)return;let r;t.loading!==void 0&&(r=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let i=Promise.resolve(e instanceof Function?e():e),a=r!==void 0,o,s=i.then(async e=>{if(o=[`resolve`,e],n(e))a=!1,this.create({id:r,type:`default`,message:e});else if(I(e)&&!e.ok){a=!1;let i=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,o=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description,s=typeof i==`object`&&!n(i)?i:{message:i||``,id:r||``};this.create({id:r,type:`error`,description:o,...s})}else if(e instanceof Error){a=!1;let i=typeof t.error==`function`?await t.error(e):t.error,o=typeof t.description==`function`?await t.description(e):t.description,s=typeof i==`object`&&!n(i)?i:{message:i||``,id:r||``};this.create({id:r,type:`error`,description:o,...s})}else if(t.success!==void 0){a=!1;let i=typeof t.success==`function`?await t.success(e):t.success,o=typeof t.description==`function`?await t.description(e):t.description,s=typeof i==`object`&&!n(i)?i:{message:i||``,id:r||``};this.create({id:r,type:`success`,description:o,...s})}}).catch(async e=>{if(o=[`reject`,e],t.error!==void 0){a=!1;let i=typeof t.error==`function`?await t.error(e):t.error,o=typeof t.description==`function`?await t.description(e):t.description,s=typeof i==`object`&&!n(i)?i:{message:i||``,id:r||``};this.create({id:r,type:`error`,description:o,...s})}}).finally(()=>{a&&(this.dismiss(r),r=void 0),t.finally?.()}),c=()=>new Promise((e,t)=>s.then(()=>o[0]===`reject`?t(o[1]):e(o[1])).catch(t));return typeof r!=`string`&&typeof r!=`number`?{unwrap:c}:Object.assign(r,{unwrap:c})};custom=(e,t)=>{let n=t?.id||N++,r=this.toasts.find(e=>e.id===n),i=t?.dismissible===void 0?!0:t.dismissible;return this.dismissedToasts.has(n)&&this.dismissedToasts.delete(n),r?this.toasts=this.toasts.map(r=>r.id===n?(this.publish({...r,component:e,dismissible:i,id:n,...t}),{...r,component:e,dismissible:i,id:n,...t}):r):this.addToast({component:e,dismissible:i,id:n,...t}),n};getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id))};function F(e,t){let n=t?.id||N++;return P.create({message:e,id:n,type:`default`,...t}),n}var I=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,L=Object.assign(F,{success:P.success,info:P.info,warning:P.warning,error:P.error,custom:P.custom,message:P.message,promise:P.promise,dismiss:P.dismiss,loading:P.loading},{getHistory:()=>P.toasts,getToasts:()=>P.getActiveToasts()});function R(e){return e.label!==void 0}var z=3,B=`24px`,V=`16px`,H=4e3,te=356,U=14,ne=45,re=200;function ie(){let e=b(!1);return x(()=>{let t=()=>{e.value=document.hidden};return document.addEventListener(`visibilitychange`,t),()=>window.removeEventListener(`visibilitychange`,t)}),{isDocumentHidden:e}}function W(...e){return e.filter(Boolean).join(` `)}function ae(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}function G(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?V:B;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var oe=[`data-rich-colors`,`data-styled`,`data-mounted`,`data-promise`,`data-swiped`,`data-removed`,`data-visible`,`data-y-position`,`data-x-position`,`data-index`,`data-front`,`data-swiping`,`data-dismissible`,`data-type`,`data-invert`,`data-swipe-out`,`data-swipe-direction`,`data-expanded`,`data-testid`],se=[`aria-label`,`data-disabled`,`data-close-button-position`],ce=l({__name:`Toast`,props:{toast:{},toasts:{},index:{},swipeDirections:{},expanded:{type:Boolean},invert:{type:Boolean},heights:{},gap:{},position:{},closeButtonPosition:{},visibleToasts:{},expandByDefault:{type:Boolean},closeButton:{type:Boolean},interacting:{type:Boolean},style:{},cancelButtonStyle:{},actionButtonStyle:{},duration:{},class:{},unstyled:{type:Boolean},descriptionClass:{},loadingIcon:{},classes:{},icons:{},closeButtonAriaLabel:{},defaultRichColors:{type:Boolean}},emits:[`update:heights`,`update:height`,`removeToast`],setup(n,{emit:i}){let o=n,l=i,u=b(null),w=b(null),D=b(!1),O=b(!1),k=b(!1),A=b(!1),j=b(!1),M=b(0),N=b(0),P=b(o.toast.duration||o.duration||H),F=b(null),I=b(null),L=_(()=>o.index===0),z=_(()=>o.index+1<=o.visibleToasts),B=_(()=>o.toast.type),V=_(()=>o.toast.dismissible!==!1),te=_(()=>o.toast.class||``),U=_(()=>o.descriptionClass||``),G=_(()=>{let e=o.toast.position||o.position,t=o.heights.filter(t=>t.position===e).findIndex(e=>e.toastId===o.toast.id);return t>=0?t:0}),ce=_(()=>{let e=o.toast.position||o.position;return o.heights.filter(t=>t.position===e).reduce((e,t,n)=>n>=G.value?e:e+t.height,0)}),K=_(()=>G.value*o.gap+ce.value||0),le=_(()=>o.toast.closeButton??o.closeButton),ue=_(()=>o.toast.duration||o.duration||H),q=b(0),J=b(0),Y=b(null),X=_(()=>o.position.split(`-`)),de=_(()=>X.value[0]),fe=_(()=>X.value[1]),pe=_(()=>typeof o.toast.title!=`string`),me=_(()=>typeof o.toast.description!=`string`),{isDocumentHidden:Z}=ie(),Q=_(()=>B.value&&B.value===`loading`);s(()=>{D.value=!0,P.value=ue.value}),x(async()=>{if(!D.value||!I.value)return;await e();let t=I.value,n=t.style.height;t.style.height=`auto`;let r=t.getBoundingClientRect().height;t.style.height=n,N.value=r,l(`update:height`,{toastId:o.toast.id,height:r,position:o.toast.position||o.position})});function $(){O.value=!0,M.value=K.value,setTimeout(()=>{l(`removeToast`,o.toast)},re)}function he(){if(Q.value||!V.value)return{};$(),o.toast.onDismiss?.(o.toast)}function ge(e){e.button!==2&&(Q.value||!V.value||(F.value=new Date,M.value=K.value,e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(k.value=!0,Y.value={x:e.clientX,y:e.clientY})))}function _e(){if(A.value||!V.value)return;Y.value=null;let e=Number(I.value?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),t=Number(I.value?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),n=new Date().getTime()-(F.value?.getTime()||0),r=u.value===`x`?e:t,i=Math.abs(r)/n;if(Math.abs(r)>=ne||i>.11){M.value=K.value,o.toast.onDismiss?.(o.toast),u.value===`x`?w.value=e>0?`right`:`left`:w.value=t>0?`down`:`up`,$(),A.value=!0;return}else I.value?.style.setProperty(`--swipe-amount-x`,`0px`),I.value?.style.setProperty(`--swipe-amount-y`,`0px`);j.value=!1,k.value=!1,u.value=null}function ve(e){if(!Y.value||!V.value||(window?.getSelection()?.toString()?.length??!1))return;let t=e.clientY-Y.value.y,n=e.clientX-Y.value.x,r=o.swipeDirections??ae(o.position);!u.value&&(Math.abs(n)>1||Math.abs(t)>1)&&(u.value=Math.abs(n)>Math.abs(t)?`x`:`y`);let i={x:0,y:0},a=e=>1/(1.5+Math.abs(e)/20);if(u.value===`y`){if(r.includes(`top`)||r.includes(`bottom`))if(r.includes(`top`)&&t<0||r.includes(`bottom`)&&t>0)i.y=t;else{let e=t*a(t);i.y=Math.abs(e)<Math.abs(t)?e:t}}else if(u.value===`x`&&(r.includes(`left`)||r.includes(`right`)))if(r.includes(`left`)&&n<0||r.includes(`right`)&&n>0)i.x=n;else{let e=n*a(n);i.x=Math.abs(e)<Math.abs(n)?e:n}(Math.abs(i.x)>0||Math.abs(i.y)>0)&&(j.value=!0),I.value?.style.setProperty(`--swipe-amount-x`,`${i.x}px`),I.value?.style.setProperty(`--swipe-amount-y`,`${i.y}px`)}s(()=>{if(D.value=!0,!I.value)return;let e=I.value.getBoundingClientRect().height;N.value=e,l(`update:heights`,[{toastId:o.toast.id,height:e,position:o.toast.position},...o.heights])}),ee(()=>{I.value&&l(`removeToast`,o.toast)}),x(e=>{if(o.toast.promise&&B.value===`loading`||o.toast.duration===1/0||o.toast.type===`loading`)return;let t;o.expanded||o.interacting||Z.value?(()=>{if(J.value<q.value){let e=new Date().getTime()-q.value;P.value-=e}J.value=new Date().getTime()})():P.value!==1/0&&(q.value=new Date().getTime(),t=setTimeout(()=>{o.toast.onAutoClose?.(o.toast),$()},P.value)),e(()=>{clearTimeout(t)})}),a(()=>o.toast.delete,e=>{e!==void 0&&e&&($(),o.toast.onDismiss?.(o.toast))},{deep:!0});function ye(){k.value=!1,u.value=null,Y.value=null}return(e,n)=>(r(),T(`li`,{tabindex:`0`,ref_key:`toastRef`,ref:I,class:g(y(W)(o.class,te.value,e.classes?.toast,e.toast.classes?.toast,e.classes?.[B.value],e.toast?.classes?.[B.value])),"data-sonner-toast":``,"data-rich-colors":e.toast.richColors??e.defaultRichColors,"data-styled":!(e.toast.component||e.toast?.unstyled||e.unstyled),"data-mounted":D.value,"data-promise":!!e.toast.promise,"data-swiped":j.value,"data-removed":O.value,"data-visible":z.value,"data-y-position":de.value,"data-x-position":fe.value,"data-index":e.index,"data-front":L.value,"data-swiping":k.value,"data-dismissible":V.value,"data-type":B.value,"data-invert":e.toast.invert||e.invert,"data-swipe-out":A.value,"data-swipe-direction":w.value,"data-expanded":!!(e.expanded||e.expandByDefault&&D.value),"data-testid":e.toast.testId,style:C({"--index":e.index,"--toasts-before":e.index,"--z-index":e.toasts.length-e.index,"--offset":`${O.value?M.value:K.value}px`,"--initial-height":e.expandByDefault?`auto`:`${N.value}px`,...e.style,...o.toast.style}),onDragend:ye,onPointerdown:ge,onPointerup:_e,onPointermove:ve},[le.value&&!e.toast.component&&B.value!==`loading`?(r(),T(`button`,{key:0,"aria-label":e.closeButtonAriaLabel||`Close toast`,"data-disabled":Q.value,"data-close-button":`true`,"data-close-button-position":e.closeButtonPosition,class:g(y(W)(e.classes?.closeButton,e.toast?.classes?.closeButton)),onClick:he},[e.icons?.close?(r(),d(t(e.icons?.close),{key:0})):c(e.$slots,`close-icon`,{key:1})],10,se)):S(`v-if`,!0),e.toast.component?(r(),d(t(e.toast.component),v({key:1},e.toast.componentProps,{onCloseToast:he,isPaused:e.$props.expanded||e.$props.interacting||y(Z)}),null,16,[`isPaused`])):(r(),T(m,{key:2},[B.value!==`default`||e.toast.icon||e.toast.promise?(r(),T(`div`,{key:0,"data-icon":``,class:g(y(W)(e.classes?.icon,e.toast?.classes?.icon))},[e.toast.icon?(r(),d(t(e.toast.icon),{key:0})):(r(),T(m,{key:1},[B.value===`loading`?c(e.$slots,`loading-icon`,{key:0}):B.value===`success`?c(e.$slots,`success-icon`,{key:1}):B.value===`error`?c(e.$slots,`error-icon`,{key:2}):B.value===`warning`?c(e.$slots,`warning-icon`,{key:3}):B.value===`info`?c(e.$slots,`info-icon`,{key:4}):S(`v-if`,!0)],64))],2)):S(`v-if`,!0),h(`div`,{"data-content":``,class:g(y(W)(e.classes?.content,e.toast?.classes?.content))},[h(`div`,{"data-title":``,class:g(y(W)(e.classes?.title,e.toast.classes?.title))},[pe.value?(r(),d(t(e.toast.title),f(v({key:0},e.toast.componentProps)),null,16)):(r(),T(m,{key:1},[p(E(e.toast.title),1)],64))],2),e.toast.description?(r(),T(`div`,{key:0,"data-description":``,class:g(y(W)(e.descriptionClass,U.value,e.classes?.description,e.toast.classes?.description))},[me.value?(r(),d(t(e.toast.description),f(v({key:0},e.toast.componentProps)),null,16)):(r(),T(m,{key:1},[p(E(e.toast.description),1)],64))],2)):S(`v-if`,!0)],2),e.toast.cancel?(r(),T(`button`,{key:1,style:C(e.toast.cancelButtonStyle||e.cancelButtonStyle),class:g(y(W)(e.classes?.cancelButton,e.toast.classes?.cancelButton)),"data-button":``,"data-cancel":``,onClick:n[0]||=t=>{y(R)(e.toast.cancel)&&V.value&&(e.toast.cancel.onClick?.(t),$())}},E(y(R)(e.toast.cancel)?e.toast.cancel?.label:e.toast.cancel),7)):S(`v-if`,!0),e.toast.action?(r(),T(`button`,{key:2,style:C(e.toast.actionButtonStyle||e.actionButtonStyle),class:g(y(W)(e.classes?.actionButton,e.toast.classes?.actionButton)),"data-button":``,"data-action":``,onClick:n[1]||=t=>{y(R)(e.toast.action)&&(e.toast.action.onClick?.(t),!t.defaultPrevented&&$())}},E(y(R)(e.toast.action)?e.toast.action?.label:e.toast.action),7)):S(`v-if`,!0)],64))],46,oe))}}),K=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},le={},ue={xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stoke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`};function q(e,t){return r(),T(`svg`,ue,t[0]||=[h(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`},null,-1),h(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`},null,-1)])}var J=K(le,[[`render`,q]]),Y=[`data-visible`],X={class:`sonner-spinner`},de=l({__name:`Loader`,props:{visible:{type:Boolean}},setup(e){let t=Array(12).fill(0);return(e,n)=>(r(),T(`div`,{class:`sonner-loading-wrapper`,"data-visible":e.visible},[h(`div`,X,[(r(!0),T(m,null,o(y(t),e=>(r(),T(`div`,{key:`spinner-bar-${e}`,class:`sonner-loading-bar`}))),128))])],8,Y))}}),fe={},pe={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function me(e,t){return r(),T(`svg`,pe,t[0]||=[h(`path`,{"fill-rule":`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,"clip-rule":`evenodd`},null,-1)])}var Z=K(fe,[[`render`,me]]),Q={},$={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function he(e,t){return r(),T(`svg`,$,t[0]||=[h(`path`,{"fill-rule":`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,"clip-rule":`evenodd`},null,-1)])}var ge=K(Q,[[`render`,he]]),_e={},ve={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`};function ye(e,t){return r(),T(`svg`,ve,t[0]||=[h(`path`,{"fill-rule":`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,"clip-rule":`evenodd`},null,-1)])}var be=K(_e,[[`render`,ye]]),xe={},Se={xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`};function Ce(e,t){return r(),T(`svg`,Se,t[0]||=[h(`path`,{"fill-rule":`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,"clip-rule":`evenodd`},null,-1)])}var we=K(xe,[[`render`,Ce]]),Te=[`aria-label`],Ee=[`data-sonner-theme`,`dir`,`data-theme`,`data-rich-colors`,`data-y-position`,`data-x-position`],De=typeof window<`u`&&typeof document<`u`;function Oe(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}var ke=l({name:`Toaster`,inheritAttrs:!1,__name:`Toaster`,props:{id:{},invert:{type:Boolean,default:!1},theme:{default:`light`},position:{default:`bottom-right`},closeButtonPosition:{default:`top-left`},hotkey:{default:()=>[`altKey`,`KeyT`]},richColors:{type:Boolean,default:!1},expand:{type:Boolean,default:!1},duration:{},gap:{default:U},visibleToasts:{default:z},closeButton:{type:Boolean,default:!1},toastOptions:{default:()=>({})},class:{default:``},style:{},offset:{default:B},mobileOffset:{default:V},dir:{default:`auto`},swipeDirections:{},icons:{},containerAriaLabel:{default:`Notifications`}},setup(t){let n=t,a=i(),s=b([]),l=_(()=>n.id?s.value.filter(e=>e.toasterId===n.id):s.value.filter(e=>!e.toasterId));function f(e,t){return l.value.filter(n=>!n.position&&t===0||n.position===e)}let p=_(()=>{let e=l.value.filter(e=>e.position).map(e=>e.position);return e.length>0?Array.from(new Set([n.position].concat(e))):[n.position]}),ee=_(()=>{let e={};return p.value.forEach(t=>{e[t]=s.value.filter(e=>e.position===t)}),e}),E=b([]),D=b({}),O=b(!1);x(()=>{p.value.forEach(e=>{e in D.value||(D.value[e]=!1)})});let k=b(n.theme===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:n.theme),A=b(null),j=b(null),M=b(!1),N=n.hotkey.join(`+`).replace(/Key/g,``).replace(/Digit/g,``);function F(e){s.value.find(t=>t.id===e.id)?.delete||P.dismiss(e.id),s.value=s.value.filter(({id:t})=>t!==e.id),setTimeout(()=>{s.value.find(t=>t.id===e.id)||(E.value=E.value.filter(t=>t.toastId!==e.id))},re+50)}function I(e){M.value&&!e.currentTarget?.contains?.(e.relatedTarget)&&(M.value=!1,j.value&&=(j.value.focus({preventScroll:!0}),null))}function L(e){e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||M.value||(M.value=!0,j.value=e.relatedTarget)}function R(e){e.target&&e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||(O.value=!0)}x(t=>{t(P.subscribe(t=>{if(t.dismiss){requestAnimationFrame(()=>{s.value=s.value.map(e=>e.id===t.id?{...e,delete:!0}:e)});return}e(()=>{let e=s.value.findIndex(e=>e.id===t.id);e===-1?s.value=[t,...s.value]:s.value=[...s.value.slice(0,e),{...s.value[e],...t},...s.value.slice(e+1)]})}))}),x(e=>{if(typeof window>`u`)return;if(n.theme!==`system`){k.value=n.theme;return}let t=window.matchMedia(`(prefers-color-scheme: dark)`),r=e=>{k.value=e?`dark`:`light`};r(t.matches);let i=e=>{r(e.matches)};try{t.addEventListener(`change`,i)}catch{t.addListener(i)}e(()=>{try{t.removeEventListener(`change`,i)}catch{t.removeListener(i)}})}),x(()=>{A.value&&j.value&&(j.value.focus({preventScroll:!0}),j.value=null,M.value=!1)}),x(()=>{s.value.length<=1&&Object.keys(D.value).forEach(e=>{D.value[e]=!1})}),x(e=>{function t(e){let t=n.hotkey.every(t=>e[t]||e.code===t),r=Array.isArray(A.value)?A.value[0]:A.value;t&&(p.value.forEach(e=>{D.value[e]=!0}),r?.focus());let i=document.activeElement===A.value||r?.contains(document.activeElement);e.code===`Escape`&&i&&p.value.forEach(e=>{D.value[e]=!1})}De&&(document.addEventListener(`keydown`,t),e(()=>{document.removeEventListener(`keydown`,t)}))});function z(e){let t=e.currentTarget,n=t.getAttribute(`data-y-position`)+`-`+t.getAttribute(`data-x-position`);D.value[n]=!0}function B(e){if(!O.value){let t=e.currentTarget,n=t.getAttribute(`data-y-position`)+`-`+t.getAttribute(`data-x-position`);D.value[n]=!1}}function V(){Object.keys(D.value).forEach(e=>{D.value[e]=!1})}function H(){O.value=!1}function U(e){E.value=e}function ne(e){let t=E.value.findIndex(t=>t.toastId===e.toastId);if(t!==-1)E.value[t]=e;else{let t=E.value.findIndex(t=>t.position===e.position);t===-1?E.value.unshift(e):E.value.splice(t,0,e)}}return(e,t)=>(r(),T(m,null,[S(` Remove item from normal navigation flow, only available via hotkey `),h(`section`,{"aria-label":`${e.containerAriaLabel} ${y(N)}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`},[(r(!0),T(m,null,o(p.value,(t,i)=>(r(),T(`ol`,v({key:t,ref_for:!0,ref_key:`listRef`,ref:A,"data-sonner-toaster":``,"data-sonner-theme":k.value,class:n.class,dir:e.dir===`auto`?Oe():e.dir,tabIndex:-1,"data-theme":e.theme,"data-rich-colors":e.richColors,"data-y-position":t.split(`-`)[0],"data-x-position":t.split(`-`)[1],style:{"--front-toast-height":`${E.value[0]?.height||0}px`,"--width":`${y(te)}px`,"--gap":`${e.gap}px`,...e.style,...y(a).style,...y(G)(e.offset,e.mobileOffset)}},{ref_for:!0},e.$attrs,{onBlur:I,onFocus:L,onMouseenter:z,onMousemove:z,onMouseleave:B,onDragend:V,onPointerdown:R,onPointerup:H}),[(r(!0),T(m,null,o(f(t,i),(i,a)=>(r(),d(ce,{key:i.id,heights:E.value,icons:e.icons,index:a,toast:i,defaultRichColors:e.richColors,duration:e.toastOptions?.duration??e.duration,class:g(e.toastOptions?.class??``),descriptionClass:e.toastOptions?.descriptionClass,invert:e.invert,visibleToasts:e.visibleToasts,closeButton:e.toastOptions?.closeButton??e.closeButton,interacting:O.value,position:t,closeButtonPosition:e.toastOptions?.closeButtonPosition??e.closeButtonPosition,style:C(e.toastOptions?.style),unstyled:e.toastOptions?.unstyled,classes:e.toastOptions?.classes,cancelButtonStyle:e.toastOptions?.cancelButtonStyle,actionButtonStyle:e.toastOptions?.actionButtonStyle,"close-button-aria-label":e.toastOptions?.closeButtonAriaLabel,toasts:ee.value[t],expandByDefault:e.expand,gap:e.gap,expanded:D.value[t]||!1,swipeDirections:n.swipeDirections,"onUpdate:heights":U,"onUpdate:height":ne,onRemoveToast:F},{"close-icon":u(()=>[c(e.$slots,`close-icon`,{},()=>[w(J)])]),"loading-icon":u(()=>[c(e.$slots,`loading-icon`,{},()=>[w(de,{visible:i.type===`loading`},null,8,[`visible`])])]),"success-icon":u(()=>[c(e.$slots,`success-icon`,{},()=>[w(Z)])]),"error-icon":u(()=>[c(e.$slots,`error-icon`,{},()=>[w(we)])]),"warning-icon":u(()=>[c(e.$slots,`warning-icon`,{},()=>[w(be)])]),"info-icon":u(()=>[c(e.$slots,`info-icon`,{},()=>[w(ge)])]),_:2},1032,[`heights`,`icons`,`index`,`toast`,`defaultRichColors`,`duration`,`class`,`descriptionClass`,`invert`,`visibleToasts`,`closeButton`,`interacting`,`position`,`closeButtonPosition`,`style`,`unstyled`,`classes`,`cancelButtonStyle`,`actionButtonStyle`,`close-button-aria-label`,`toasts`,`expandByDefault`,`gap`,`expanded`,`swipeDirections`]))),128))],16,Ee))),128))],8,Te)],2112))}});export{L as n,j as r,ke as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-DCD7INQf.js";var t=e(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]);function n(e){return typeof e==`string`?`'${e}'`:new r().serialize(e)}var r=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;e<n.length;e++){let[t,i]=n[e];r+=`${this.serialize(t,!0)}:${this.serialize(i)}`,e<n.length-1&&(r+=`,`)}return r+`}`}$object(e){let t=this.#e.get(e);return t===void 0&&(this.#e.set(e,`#${this.#e.size}`),t=this.serializeObject(e),this.#e.set(e,t)),t}$function(e){let t=Function.prototype.toString.call(e);return t.slice(-15)===`[native code] }`?`${e.name||``}()[native]`:`${e.name}(${e.length})${t.replace(/\s*\n\s*/g,``)}`}$Array(e){let t=`[`;for(let n=0;n<e.length;n++)t+=this.serialize(e[n]),n<e.length-1&&(t+=`,`);return t+`]`}$Date(e){try{return`Date(${e.toISOString()})`}catch{return`Date(null)`}}$ArrayBuffer(e){return`ArrayBuffer[${new Uint8Array(e).join(`,`)}]`}$Set(e){return`Set${this.$Array(Array.from(e).sort((e,t)=>this.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}();function i(e,t){return e===t||n(e)===n(t)}export{t as n,i as t};
@@ -0,0 +1 @@
1
+ import{ot as e}from"./client-DvdghFBq.js";var t=2e3;function n(){let n=e(!1);async function i(e){try{return navigator.clipboard?.writeText?await navigator.clipboard.writeText(e):r(e),n.value=!0,setTimeout(()=>{n.value=!1},t),!0}catch{try{return r(e),n.value=!0,setTimeout(()=>{n.value=!1},t),!0}catch{return!1}}}return{copied:n,copy:i}}function r(e){let t=document.createElement(`textarea`);if(t.value=e,t.style.cssText=`position:fixed;left:-9999px;opacity:0`,document.body.appendChild(t),t.select(),!document.execCommand(`copy`))throw Error(`execCommand copy failed`);document.body.removeChild(t)}export{n as t};
@@ -0,0 +1 @@
1
+ import{C as e,P as t,h as n,ot as r,pt as i}from"./client-DvdghFBq.js";import{l as a}from"./button-CfQs66fX.js";function o(){let o=e(),s=r(),c=n(()=>l());t(()=>{c.value!==l()&&i(s)});function l(){return s.value&&`$el`in s.value&&[`#text`,`#comment`].includes(s.value.$el.nodeName)?s.value.$el.nextElementSibling:a(s)}let u=Object.assign({},o.exposed),d={};for(let e in o.props)Object.defineProperty(d,e,{enumerable:!0,configurable:!0,get:()=>o.props[e]});if(Object.keys(u).length>0)for(let e in u)Object.defineProperty(d,e,{enumerable:!0,configurable:!0,get:()=>u[e]});Object.defineProperty(d,`$el`,{enumerable:!0,configurable:!0,get:()=>o.vnode.el}),o.exposed=d;function f(e){if(s.value=e,e&&(Object.defineProperty(d,`$el`,{enumerable:!0,configurable:!0,get:()=>e instanceof Element?e:e.$el}),!(e instanceof Element)&&!Object.hasOwn(e,`$el`))){let t=e.$.exposed,n=Object.assign({},d);for(let e in t)Object.defineProperty(n,e,{enumerable:!0,configurable:!0,get:()=>t[e]});o.exposed=n}}return{forwardRef:f,currentRef:s,currentElement:c}}export{o as t};
@@ -0,0 +1 @@
1
+ import{h as e,ot as t}from"./client-DvdghFBq.js";import{v as n}from"./Collection-CQ4pV54w.js";function r(e,t=-1/0,n=1/0){return Math.min(n,Math.max(t,e))}function i(r){let i=n({nonce:t()});return e(()=>r?.value||i.nonce?.value)}export{r as n,i as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-DCD7INQf.js";var t=e(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
@@ -5,12 +5,13 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/admin/favicon.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>frontend</title>
8
- <script type="module" crossorigin src="/admin/assets/index-UZK1BnPG.js"></script>
9
- <link rel="modulepreload" crossorigin href="/admin/assets/client-BWw0R36V.js">
10
- <link rel="modulepreload" crossorigin href="/admin/assets/button-C4_mChkc.js">
11
- <link rel="modulepreload" crossorigin href="/admin/assets/lib-Qs8xoTas.js">
12
- <link rel="modulepreload" crossorigin href="/admin/assets/x-JBJB26JV.js">
13
- <link rel="stylesheet" crossorigin href="/admin/assets/index-DEl48bm9.css">
8
+ <script type="module" crossorigin src="/admin/assets/index--5JhZIwi.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/admin/assets/client-DvdghFBq.js">
10
+ <link rel="modulepreload" crossorigin href="/admin/assets/button-CfQs66fX.js">
11
+ <link rel="modulepreload" crossorigin href="/admin/assets/createLucideIcon-DCD7INQf.js">
12
+ <link rel="modulepreload" crossorigin href="/admin/assets/x-ILQhskuj.js">
13
+ <link rel="modulepreload" crossorigin href="/admin/assets/lib-BJNsNHLO.js">
14
+ <link rel="stylesheet" crossorigin href="/admin/assets/index-Bx15k8FA.css">
14
15
  </head>
15
16
  <body>
16
17
  <div id="app"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "llm-simple-router",
3
- "version": "0.2.0",
3
+ "version": "0.3.5",
4
4
  "description": "LLM API proxy router with OpenAI/Anthropic support, model mapping, retry strategies, and admin dashboard",
5
5
  "license": "MIT",
6
6
  "author": "ZZzzswszzZZ",
@@ -1,7 +0,0 @@
1
- import { FastifyPluginCallback } from "fastify";
2
- interface ServiceRoutesOptions {
3
- db: any;
4
- encryptionKey: string;
5
- }
6
- export declare const adminServiceRoutes: FastifyPluginCallback<ServiceRoutesOptions>;
7
- export {};
@@ -1,63 +0,0 @@
1
- import { getAllBackendServices, getBackendServiceById, createBackendService, updateBackendService, deleteBackendService } from "../db/index.js";
2
- import { decrypt, encrypt } from "../utils/crypto.js";
3
- function maskApiKey(encrypted, key) {
4
- const decrypted = decrypt(encrypted, key);
5
- if (decrypted.length <= 8)
6
- return "****";
7
- return `${decrypted.slice(0, 4)}...${decrypted.slice(-4)}`;
8
- }
9
- export const adminServiceRoutes = (app, options, done) => {
10
- const { db, encryptionKey } = options;
11
- app.get("/admin/api/services", async (_request, reply) => {
12
- const services = getAllBackendServices(db);
13
- return reply.send(services.map((s) => ({
14
- ...s,
15
- api_key: maskApiKey(s.api_key, encryptionKey),
16
- })));
17
- });
18
- app.post("/admin/api/services", async (request, reply) => {
19
- const body = request.body;
20
- if (!body.name || !body.api_type || !body.base_url || !body.api_key) {
21
- return reply.code(400).send({ error: { message: "Missing required fields: name, api_type, base_url, api_key" } });
22
- }
23
- if (!["openai", "anthropic"].includes(body.api_type)) {
24
- return reply.code(400).send({ error: { message: "api_type must be 'openai' or 'anthropic'" } });
25
- }
26
- const encryptedKey = encrypt(body.api_key, encryptionKey);
27
- const id = createBackendService(db, {
28
- name: body.name,
29
- api_type: body.api_type,
30
- base_url: body.base_url,
31
- api_key: encryptedKey,
32
- is_active: body.is_active ?? 1,
33
- });
34
- return reply.code(201).send({ id });
35
- });
36
- app.put("/admin/api/services/:id", async (request, reply) => {
37
- const { id } = request.params;
38
- const existing = getBackendServiceById(db, id);
39
- if (!existing) {
40
- return reply.code(404).send({ error: { message: "Service not found" } });
41
- }
42
- const body = request.body;
43
- const fields = {};
44
- if (body.name !== undefined)
45
- fields.name = body.name;
46
- if (body.api_type !== undefined)
47
- fields.api_type = body.api_type;
48
- if (body.base_url !== undefined)
49
- fields.base_url = body.base_url;
50
- if (body.is_active !== undefined)
51
- fields.is_active = body.is_active;
52
- if (body.api_key)
53
- fields.api_key = encrypt(body.api_key, encryptionKey);
54
- updateBackendService(db, id, fields);
55
- return reply.send({ success: true });
56
- });
57
- app.delete("/admin/api/services/:id", async (request, reply) => {
58
- const { id } = request.params;
59
- deleteBackendService(db, id);
60
- return reply.send({ success: true });
61
- });
62
- done();
63
- };
@@ -1 +0,0 @@
1
- import{C as e,I as t,ht as n,pt as r,y as i,z as a}from"./client-BWw0R36V.js";import{r as o}from"./button-C4_mChkc.js";var s=[`data-size`],c=e({__name:`Card`,props:{class:{type:[Boolean,null,String,Object,Array]},size:{default:`default`}},setup(e){let c=e;return(l,u)=>(t(),i(`div`,{"data-slot":`card`,"data-size":e.size,class:n(r(o)(`ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-lg py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-lg *:[img:last-child]:rounded-b-lg group/card flex flex-col`,c.class))},[a(l.$slots,`default`)],10,s))}}),l=e({__name:`CardContent`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let s=e;return(e,c)=>(t(),i(`div`,{"data-slot":`card-content`,class:n(r(o)(`px-4 group-data-[size=sm]/card:px-3`,s.class))},[a(e.$slots,`default`)],2))}});export{c as n,l as t};
@@ -1 +0,0 @@
1
- import{C as e,I as t,ht as n,pt as r,y as i,z as a}from"./client-BWw0R36V.js";import{r as o}from"./button-C4_mChkc.js";var s=e({__name:`CardTitle`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let s=e;return(e,c)=>(t(),i(`div`,{"data-slot":`card-title`,class:n(r(o)(`text-base leading-snug font-medium group-data-[size=sm]/card:text-sm cn-font-heading`,s.class))},[a(e.$slots,`default`)],2))}});export{s as t};
@@ -1 +0,0 @@
1
- import{A as e,C as t,G as n,I as r,J as i,R as a,S as o,T as s,V as c,_ as l,f as u,gt as d,h as f,l as p,pt as m,u as h,v as g,y as _,z as v}from"./client-BWw0R36V.js";import{C as y,T as b,b as x,h as S,l as C,n as w,p as T,u as E,w as D}from"./badge-_ZHrMEpC.js";import{i as O,r as k}from"./button-C4_mChkc.js";import{c as A,m as j,t as M}from"./useForwardExpose-B-xauF1X.js";import{t as N}from"./RovingFocusItem-DnIa_lwH.js";function P(e,t){return x(e)?!1:Array.isArray(e)?e.some(e=>D(e,t)):D(e,t)}var F=t({inheritAttrs:!1,__name:`VisuallyHiddenInputBubble`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(t){let i=t,{primitiveElement:a,currentElement:o}=C();return n(f(()=>i.checked??i.value),(e,t)=>{if(!o.value)return;let n=o.value,r=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(r,`value`).set;if(i&&e!==t){let t=new Event(`input`,{bubbles:!0}),r=new Event(`change`,{bubbles:!0});i.call(n,e),n.dispatchEvent(t),n.dispatchEvent(r)}}),(t,n)=>(r(),l(w,e({ref_key:`primitiveElement`,ref:a},{...i,...t.$attrs},{as:`input`}),null,16))}}),I=t({inheritAttrs:!1,__name:`VisuallyHiddenInput`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(t){let n=t,i=f(()=>typeof n.value==`object`&&Array.isArray(n.value)&&n.value.length===0&&n.required),o=f(()=>typeof n.value==`string`||typeof n.value==`number`||typeof n.value==`boolean`||n.value===null||n.value===void 0?[{name:n.name,value:n.value}]:typeof n.value==`object`&&Array.isArray(n.value)?n.value.flatMap((e,t)=>typeof e==`object`?Object.entries(e).map(([e,r])=>({name:`${n.name}[${t}][${e}]`,value:r})):{name:`${n.name}[${t}]`,value:e}):n.value!==null&&typeof n.value==`object`&&!Array.isArray(n.value)?Object.entries(n.value).map(([e,t])=>({name:`${n.name}[${e}]`,value:t})):[]);return(t,s)=>(r(),_(u,null,[g(` We render single input if it's required `),i.value?(r(),l(F,e({key:t.name},{...n,...t.$attrs},{name:t.name,value:t.value}),null,16,[`name`,`value`])):(r(!0),_(u,{key:1},a(o.value,i=>(r(),l(F,e({key:i.name},{ref_for:!0},{...n,...t.$attrs},{name:i.name,value:i.value}),null,16,[`name`,`value`]))),128))],2112))}}),[L,R]=y(`CheckboxGroupRoot`);function z(e){return e===`indeterminate`}function B(e){return z(e)?`indeterminate`:e?`checked`:`unchecked`}var[V,H]=y(`CheckboxRoot`),U=t({inheritAttrs:!1,__name:`CheckboxRoot`,props:{defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},disabled:{type:Boolean,required:!1},value:{type:null,required:!1,default:`on`},id:{type:String,required:!1},trueValue:{type:null,required:!1,default:()=>!0},falseValue:{type:null,required:!1,default:()=>!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`],setup(t,{emit:n}){let a=t,o=n,{forwardRef:s,currentElement:u}=M(),d=L(null),_=A(a,`modelValue`,o,{defaultValue:a.defaultValue??a.falseValue,passive:a.modelValue===void 0}),y=f(()=>d?.disabled.value||a.disabled),b=f(()=>D(_.value,a.trueValue)),C=f(()=>x(d?.modelValue.value)?_.value===`indeterminate`?`indeterminate`:b.value:P(d.modelValue.value,a.value));function w(){if(x(d?.modelValue.value))_.value===`indeterminate`?_.value=a.trueValue:_.value=b.value?a.falseValue:a.trueValue;else{let e=[...d.modelValue.value||[]];if(P(e,a.value)){let t=e.findIndex(e=>D(e,a.value));e.splice(t,1)}else e.push(a.value);d.modelValue.value=e}}let T=S(u),E=f(()=>a.id&&u.value?document.querySelector(`[for="${a.id}"]`)?.innerText:void 0);return H({disabled:y,state:C}),(t,n)=>(r(),l(c(m(d)?.rovingFocus.value?m(N):m(O)),e(t.$attrs,{id:t.id,ref:m(s),role:`checkbox`,"as-child":t.asChild,as:t.as,type:t.as===`button`?`button`:void 0,"aria-checked":m(z)(C.value)?`mixed`:C.value,"aria-required":t.required,"aria-label":t.$attrs[`aria-label`]||E.value,"data-state":m(B)(C.value),"data-disabled":y.value?``:void 0,disabled:y.value,focusable:m(d)?.rovingFocus.value?!y.value:void 0,onKeydown:p(h(()=>{},[`prevent`]),[`enter`]),onClick:w}),{default:i(()=>[v(t.$slots,`default`,{modelValue:m(_),state:C.value}),m(T)&&t.name&&!m(d)?(r(),l(m(I),{key:0,type:`checkbox`,checked:!!C.value,name:t.name,value:t.value,disabled:y.value,required:t.required},null,8,[`checked`,`name`,`value`,`disabled`,`required`])):g(`v-if`,!0)]),_:3},16,[`id`,`as-child`,`as`,`type`,`aria-checked`,`aria-required`,`aria-label`,`data-state`,`data-disabled`,`disabled`,`focusable`,`onKeydown`]))}}),W=t({__name:`CheckboxIndicator`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(t){let{forwardRef:n}=M(),a=V();return(t,s)=>(r(),l(m(E),{present:t.forceMount||m(z)(m(a).state.value)||m(a).state.value===!0},{default:i(()=>[o(m(O),e({ref:m(n),"data-state":m(B)(m(a).state.value),"data-disabled":m(a).disabled.value?``:void 0,style:{pointerEvents:`none`},"as-child":t.asChild,as:t.as},t.$attrs),{default:i(()=>[v(t.$slots,`default`)]),_:3},16,[`data-state`,`data-disabled`,`as-child`,`as`])]),_:3},8,[`present`]))}}),G=t({__name:`Checkbox`,props:{defaultValue:{},modelValue:{},disabled:{type:Boolean},value:{},id:{},trueValue:{},falseValue:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:[`update:modelValue`],setup(t,{emit:n}){let a=t,c=n,u=T(j(a,`class`),c);return(t,n)=>(r(),l(m(U),e({"data-slot":`checkbox`},m(u),{class:m(k)(`border-input dark:bg-input/30 data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-checked:border-primary aria-invalid:aria-checked:border-primary aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 flex size-4 items-center justify-center rounded-md border transition-colors group-has-disabled/field:opacity-50 focus-visible:ring-3 aria-invalid:ring-3 peer relative shrink-0 outline-none after:absolute after:-inset-x-3 after:-inset-y-2 disabled:cursor-not-allowed disabled:opacity-50`,a.class)}),{default:i(e=>[o(m(W),{"data-slot":`checkbox-indicator`,class:`[&>svg]:size-3.5 grid place-content-center text-current transition-none`},{default:i(()=>[v(t.$slots,`default`,d(s(e)),()=>[o(m(b))])]),_:2},1024)]),_:3},16,[`class`]))}});export{G as t};
@@ -1 +0,0 @@
1
- import{A as e,C as t,G as n,I as r,J as i,N as a,S as o,T as s,_ as c,at as l,gt as u,h as d,j as f,pt as p,ut as m,v as h,z as g}from"./client-BWw0R36V.js";import{C as _,d as v,p as y,u as b}from"./badge-_ZHrMEpC.js";import{i as x}from"./button-C4_mChkc.js";import{a as S,c as C,t as w}from"./useForwardExpose-B-xauF1X.js";var[T,E]=_(`CollapsibleRoot`),D=t({__name:`CollapsibleRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!1},open:{type:Boolean,required:!1,default:void 0},disabled:{type:Boolean,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:open`],setup(e,{expose:t,emit:n}){let a=e,o=C(a,`open`,n,{defaultValue:a.defaultOpen,passive:a.open===void 0}),{disabled:s,unmountOnHide:l}=m(a);return E({contentId:``,disabled:s,open:o,unmountOnHide:l,onOpenToggle:()=>{s.value||(o.value=!o.value)}}),t({open:o}),w(),(e,t)=>(r(),c(p(x),{as:e.as,"as-child":a.asChild,"data-state":p(o)?`open`:`closed`,"data-disabled":p(s)?``:void 0},{default:i(()=>[g(e.$slots,`default`,{open:p(o)})]),_:3},8,[`as`,`as-child`,`data-state`,`data-disabled`]))}}),O=t({inheritAttrs:!1,__name:`CollapsibleContent`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`contentFound`],setup(t,{emit:s}){let u=t,m=s,_=T();_.contentId||=v(void 0,`reka-collapsible-content`);let y=l(),{forwardRef:C,currentElement:E}=w(),D=l(0),O=l(0),k=d(()=>_.open.value),A=l(k.value),j=l();n(()=>[k.value,y.value?.present],async()=>{await f();let e=E.value;if(!e)return;j.value=j.value||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration=`0s`,e.style.animationName=`none`;let t=e.getBoundingClientRect();O.value=t.height,D.value=t.width,A.value||(e.style.transitionDuration=j.value.transitionDuration,e.style.animationName=j.value.animationName)},{immediate:!0});let M=d(()=>A.value&&_.open.value);return a(()=>{requestAnimationFrame(()=>{A.value=!1})}),S(E,`beforematch`,e=>{requestAnimationFrame(()=>{_.onOpenToggle(),m(`contentFound`)})}),(t,n)=>(r(),c(p(b),{ref_key:`presentRef`,ref:y,present:t.forceMount||p(_).open.value,"force-mount":!0},{default:i(({present:n})=>[o(p(x),e(t.$attrs,{id:p(_).contentId,ref:p(C),"as-child":u.asChild,as:t.as,hidden:n?void 0:p(_).unmountOnHide.value?``:`until-found`,"data-state":M.value?void 0:p(_).open.value?`open`:`closed`,"data-disabled":p(_).disabled?.value?``:void 0,style:{"--reka-collapsible-content-height":`${O.value}px`,"--reka-collapsible-content-width":`${D.value}px`}}),{default:i(()=>[!p(_).unmountOnHide.value||n?g(t.$slots,`default`,{key:0}):h(`v-if`,!0)]),_:2},1040,[`id`,`as-child`,`as`,`hidden`,`data-state`,`data-disabled`,`style`])]),_:3},8,[`present`]))}}),k=t({__name:`CollapsibleTrigger`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let t=e;w();let n=T();return(e,a)=>(r(),c(p(x),{type:e.as===`button`?`button`:void 0,as:e.as,"as-child":t.asChild,"aria-controls":p(n).contentId,"aria-expanded":p(n).open.value,"data-state":p(n).open.value?`open`:`closed`,"data-disabled":p(n).disabled?.value?``:void 0,disabled:p(n).disabled?.value,onClick:p(n).onOpenToggle},{default:i(()=>[g(e.$slots,`default`)]),_:3},8,[`type`,`as`,`as-child`,`aria-controls`,`aria-expanded`,`data-state`,`data-disabled`,`disabled`,`onClick`]))}}),A=t({__name:`Collapsible`,props:{defaultOpen:{type:Boolean},open:{type:Boolean},disabled:{type:Boolean},unmountOnHide:{type:Boolean},asChild:{type:Boolean},as:{}},emits:[`update:open`],setup(t,{emit:n}){let a=y(t,n);return(t,n)=>(r(),c(p(D),e({"data-slot":`collapsible`},p(a)),{default:i(e=>[g(t.$slots,`default`,u(s(e)))]),_:3},16))}}),j=t({__name:`CollapsibleContent`,props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{}},setup(t){let n=t;return(t,a)=>(r(),c(p(O),e({"data-slot":`collapsible-content`},n),{default:i(()=>[g(t.$slots,`default`)]),_:3},16))}}),M=t({__name:`CollapsibleTrigger`,props:{asChild:{type:Boolean},as:{}},setup(t){let n=t;return(t,a)=>(r(),c(p(k),e({"data-slot":`collapsible-trigger`},n),{default:i(()=>[g(t.$slots,`default`)]),_:3},16))}});export{j as n,A as r,M as t};