@visulima/dev-toolbar 1.0.0-alpha.3 → 1.0.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/apps/a11y/a11y-store.d.ts +12 -16
  3. package/dist/apps/a11y/index.js +2 -21
  4. package/dist/apps/inspector/index.js +1 -17
  5. package/dist/apps/module-graph/index.js +1 -20
  6. package/dist/apps/more/index.js +2 -19
  7. package/dist/apps/performance/index.js +1 -17
  8. package/dist/apps/seo/index.js +1 -17
  9. package/dist/apps/settings/index.js +1 -17
  10. package/dist/apps/tailwind/index.js +6 -6
  11. package/dist/apps/timeline/index.js +1 -18
  12. package/dist/apps/vite-config/index.js +1 -16
  13. package/dist/client/overlay.js +1 -1
  14. package/dist/hooks/create-hook.d.ts +7 -5
  15. package/dist/hooks/events.d.ts +4 -2
  16. package/dist/hooks/global-hook.d.ts +6 -6
  17. package/dist/index.d.ts +2 -1
  18. package/dist/index.js +1 -1
  19. package/dist/packem_chunks/inject-source.js +1 -1
  20. package/dist/packem_shared/Popover-CLt7YhUF.js +1 -0
  21. package/dist/packem_shared/Tabs-CXERaeAp.js +1 -0
  22. package/dist/packem_shared/Tooltip-tlBN-NdK.js +1 -0
  23. package/dist/packem_shared/createClientRPCContext-DgRxrllw.js +1 -0
  24. package/dist/packem_shared/createDevToolbarHook-4bZZiHPI.js +1 -0
  25. package/dist/packem_shared/createServerRPCContext-CEm1Ymkn.js +1 -0
  26. package/dist/packem_shared/getTimelineStore-B1cfjWV8.js +1 -0
  27. package/dist/packem_shared/{setupGlobalHook-CFuxsCyl.js → setupGlobalHook-CCf9Logv.js} +1 -1
  28. package/dist/packem_shared/sharedToolbarStylesheet-DOV-Jwcm.js +2 -0
  29. package/dist/packem_shared/store-DaUtLjf3.js +1 -0
  30. package/dist/packem_shared/{use-theme-CX1gG6Sv.js → use-theme-BOw3dPpY.js} +1 -1
  31. package/dist/performance/monitor.d.ts +27 -26
  32. package/dist/rpc/client.d.ts +6 -4
  33. package/dist/rpc/functions/open-in-editor.d.ts +7 -5
  34. package/dist/rpc/functions/tailwind-config.d.ts +7 -4
  35. package/dist/rpc/functions/vite-config.d.ts +6 -4
  36. package/dist/rpc/server.d.ts +9 -6
  37. package/dist/timeline/capture.d.ts +3 -1
  38. package/dist/timeline/index.d.ts +2 -1
  39. package/dist/timeline/store.d.ts +12 -22
  40. package/dist/toolbar/app-manager.d.ts +45 -43
  41. package/dist/toolbar/components/app-canvas.d.ts +1 -1
  42. package/dist/toolbar/components/toolbar-container.d.ts +1 -1
  43. package/dist/toolbar/components/vite-overlay-button.d.ts +2 -2
  44. package/dist/toolbar/context/toolbar-context.d.ts +20 -19
  45. package/dist/toolbar/global-api.d.ts +3 -3
  46. package/dist/toolbar/helpers.d.ts +5 -3
  47. package/dist/toolbar/hooks/use-apps.d.ts +5 -3
  48. package/dist/toolbar/hooks/use-frame-state.d.ts +16 -10
  49. package/dist/toolbar/hooks/use-panel-visible.d.ts +9 -7
  50. package/dist/toolbar/hooks/use-position.d.ts +7 -5
  51. package/dist/toolbar/hooks/use-theme.d.ts +6 -4
  52. package/dist/toolbar/hooks/use-toolbar.d.ts +4 -2
  53. package/dist/toolbar/index.d.ts +8 -14
  54. package/dist/toolbar/index.js +3 -3
  55. package/dist/toolbar/settings.d.ts +7 -7
  56. package/dist/toolbar/stylesheet.d.ts +3 -1
  57. package/dist/toolbar/utils/index.d.ts +3 -3
  58. package/dist/types/global-api.d.ts +22 -33
  59. package/dist/types/hooks.d.ts +32 -34
  60. package/dist/types/messaging.d.ts +2 -2
  61. package/dist/types/rpc.d.ts +3 -6
  62. package/dist/types/timeline.d.ts +3 -3
  63. package/dist/types/toolbar.d.ts +1 -1
  64. package/dist/ui/components/icon.d.ts +3 -4
  65. package/dist/ui/components/popover.d.ts +1 -1
  66. package/dist/ui/components/tabs.d.ts +1 -1
  67. package/dist/ui/components/tooltip.d.ts +1 -1
  68. package/dist/ui/index.js +1 -1
  69. package/dist/utils/cn.d.ts +3 -3
  70. package/dist/vite/inject-source.d.ts +0 -1
  71. package/dist/vite/matcher.d.ts +2 -1
  72. package/dist/vite-plugin.d.ts +5 -5
  73. package/dist/vite-plugin.js +2 -2
  74. package/package.json +4 -3
  75. package/dist/packem_shared/Popover-o3Vkvndp.js +0 -1
  76. package/dist/packem_shared/Tabs-BBc4S-2T.js +0 -1
  77. package/dist/packem_shared/TimelineStore-BgBrirKd.js +0 -1
  78. package/dist/packem_shared/Tooltip-BwK-2I9P.js +0 -1
  79. package/dist/packem_shared/createClientRPCContext-DzKQpKTk.js +0 -1
  80. package/dist/packem_shared/createDevToolbarHook-DGNxqk8N.js +0 -1
  81. package/dist/packem_shared/createServerRPCContext-CRd6VAWp.js +0 -1
  82. package/dist/packem_shared/sharedToolbarStylesheet-DHHoFz2-.js +0 -2
  83. package/dist/packem_shared/store-BxE0w51s.js +0 -1
@@ -0,0 +1,2 @@
1
+ var e=Object.defineProperty;var a=(r,o)=>e(r,"name",{value:o,configurable:!0});var t=`/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-sky-500:oklch(68.5% .169 237.323);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:#f2f2f2;--color-foreground:#18181b;--color-card:#fff;--color-card-foreground:#18181b;--color-popover:#fff;--color-popover-foreground:#18181b;--color-primary:#7c3aed;--color-primary-foreground:#fff;--color-secondary:#e4e4e7;--color-secondary-foreground:#18181b;--color-muted:#e4e4e7;--color-muted-foreground:#52525b;--color-accent:#e4e4e7;--color-destructive:oklch(55% .22 25);--color-destructive-foreground:oklch(98% .01 25);--color-border:#d4d4d8;--color-input:#d4d4d8;--color-ring:#71717a;--color-info:oklch(45% .2 240);--color-info-foreground:oklch(35% .2 240);--color-success:oklch(48% .18 155);--color-success-foreground:oklch(38% .17 155);--color-warning:oklch(58% .18 65);--color-warning-foreground:oklch(45% .16 65)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--color-border);outline-color:#71717a80}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--color-ring) 50%, transparent)}}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-0\\.5{top:calc(var(--spacing) * -.5)}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:calc(var(--spacing) * 0)}.top-1\\.5{top:calc(var(--spacing) * 1.5)}.top-1\\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.top-14{top:calc(var(--spacing) * 14)}.top-\\[-5px\\]{top:-5px}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:calc(var(--spacing) * 0)}.right-1\\.5{right:calc(var(--spacing) * 1.5)}.right-2\\.5{right:calc(var(--spacing) * 2.5)}.right-14{right:calc(var(--spacing) * 14)}.right-\\[-5px\\]{right:-5px}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-1\\.5{bottom:calc(var(--spacing) * 1.5)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-14{bottom:calc(var(--spacing) * 14)}.bottom-\\[-5px\\]{bottom:-5px}.left-0{left:calc(var(--spacing) * 0)}.left-1\\.5{left:calc(var(--spacing) * 1.5)}.left-1\\/2{left:50%}.left-14{left:calc(var(--spacing) * 14)}.left-\\[-5px\\]{left:-5px}.left-\\[calc\\(100\\%\\+0\\.5rem\\)\\]{left:calc(100% + .5rem)}.z-10{z-index:10}.z-50{z-index:50}.z-\\[2147483646\\]{z-index:2147483646}.z-\\[2147483647\\]{z-index:2147483647}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-0\\.5{margin-inline:calc(var(--spacing) * .5)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\\.5{margin-right:calc(var(--spacing) * 1.5)}.-mb-1{margin-bottom:calc(var(--spacing) * -1)}.-mb-px{margin-bottom:-1px}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.-ml-1{margin-left:calc(var(--spacing) * -1)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-1\\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\\[1200\\/630\\]{aspect-ratio:1200/630}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3\\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-4\\.5{width:calc(var(--spacing) * 4.5);height:calc(var(--spacing) * 4.5)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.h-1\\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-\\[1px\\]{height:1px}.h-auto{height:auto}.h-full{height:100%}.max-h-48{max-height:calc(var(--spacing) * 48)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-48{min-height:calc(var(--spacing) * 48)}.min-h-\\[60px\\]{min-height:60px}.w-2\\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-12\\.5{width:calc(var(--spacing) * 12.5)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-44{width:calc(var(--spacing) * 44)}.w-62\\.5{width:calc(var(--spacing) * 62.5)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-\\[1px\\]{width:1px}.w-\\[240px\\]{width:240px}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-12\\!{max-width:calc(var(--spacing) * 12)!important}.max-w-\\[160px\\]{max-width:160px}.max-w-\\[220px\\]{max-width:220px}.max-w-\\[240px\\]{max-width:240px}.max-w-\\[300px\\]{max-width:300px}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-3\\.5{min-width:calc(var(--spacing) * 3.5)}.min-w-\\[1\\.1rem\\]{min-width:1.1rem}.min-w-\\[200px\\]{min-width:200px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.origin-\\[bottom_center\\]{transform-origin:bottom}.origin-\\[left_center\\]{transform-origin:0}.origin-\\[right_center\\]{transform-origin:100%}.origin-\\[top_center\\]{transform-origin:top}.origin-center{transform-origin:50%}.-translate-x-1{--tw-translate-x:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-2{--tw-translate-x:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-2{--tw-translate-x:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\\[-2px\\]{--tw-translate-x:-2px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-2{--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-1{--tw-translate-y:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\\[0\\.97\\]{scale:.97}.scale-\\[0\\.99\\]{scale:.99}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-none\\!{animation:none!important}.animate-pulse{animation:var(--animate-pulse)}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-ns-resize{cursor:ns-resize}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-px{gap:1px}:where(.space-y-0\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--color-border)}:where(.divide-border\\/20>:not(:last-child)){border-color:#d4d4d833}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\\/20>:not(:last-child)){border-color:color-mix(in oklab, var(--color-border) 20%, transparent)}}:where(.divide-border\\/30>:not(:last-child)){border-color:#d4d4d84d}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\\/30>:not(:last-child)){border-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}:where(.divide-border\\/50>:not(:last-child)){border-color:#d4d4d880}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\\/50>:not(:last-child)){border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x-0{border-inline-style:var(--tw-border-style);border-inline-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-background{border-color:var(--color-background)}.border-black\\/10{border-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.border-black\\/10{border-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.border-blue-500\\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab, red, red)){.border-blue-500\\/30{border-color:color-mix(in oklab, var(--color-blue-500) 30%, transparent)}}.border-blue-600\\/30{border-color:#155dfc4d}@supports (color:color-mix(in lab, red, red)){.border-blue-600\\/30{border-color:color-mix(in oklab, var(--color-blue-600) 30%, transparent)}}.border-border{border-color:var(--color-border)}.border-border\\/20{border-color:#d4d4d833}@supports (color:color-mix(in lab, red, red)){.border-border\\/20{border-color:color-mix(in oklab, var(--color-border) 20%, transparent)}}.border-border\\/30{border-color:#d4d4d84d}@supports (color:color-mix(in lab, red, red)){.border-border\\/30{border-color:color-mix(in oklab, var(--color-border) 30%, transparent)}}.border-border\\/40{border-color:#d4d4d866}@supports (color:color-mix(in lab, red, red)){.border-border\\/40{border-color:color-mix(in oklab, var(--color-border) 40%, transparent)}}.border-border\\/50{border-color:#d4d4d880}@supports (color:color-mix(in lab, red, red)){.border-border\\/50{border-color:color-mix(in oklab, var(--color-border) 50%, transparent)}}.border-border\\/60{border-color:#d4d4d899}@supports (color:color-mix(in lab, red, red)){.border-border\\/60{border-color:color-mix(in oklab, var(--color-border) 60%, transparent)}}.border-cyan-500\\/20{border-color:#00b7d733}@supports (color:color-mix(in lab, red, red)){.border-cyan-500\\/20{border-color:color-mix(in oklab, var(--color-cyan-500) 20%, transparent)}}.border-destructive\\/25{border-color:#d4092440}@supports (color:color-mix(in lab, red, red)){.border-destructive\\/25{border-color:color-mix(in oklab, var(--color-destructive) 25%, transparent)}}.border-destructive\\/30{border-color:#d409244d}@supports (color:color-mix(in lab, red, red)){.border-destructive\\/30{border-color:color-mix(in oklab, var(--color-destructive) 30%, transparent)}}.border-destructive\\/50{border-color:#d4092480}@supports (color:color-mix(in lab, red, red)){.border-destructive\\/50{border-color:color-mix(in oklab, var(--color-destructive) 50%, transparent)}}.border-emerald-500\\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab, red, red)){.border-emerald-500\\/30{border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)}}.border-foreground\\/20{border-color:#18181b33}@supports (color:color-mix(in lab, red, red)){.border-foreground\\/20{border-color:color-mix(in oklab, var(--color-foreground) 20%, transparent)}}.border-green-500\\/30{border-color:#00c7584d}@supports (color:color-mix(in lab, red, red)){.border-green-500\\/30{border-color:color-mix(in oklab, var(--color-green-500) 30%, transparent)}}.border-indigo-500\\/30{border-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\\/30{border-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.border-info\\/50{border-color:#005b9380}@supports (color:color-mix(in lab, red, red)){.border-info\\/50{border-color:color-mix(in oklab, var(--color-info) 50%, transparent)}}.border-input{border-color:var(--color-input)}.border-orange-500\\/30{border-color:#fe6e004d}@supports (color:color-mix(in lab, red, red)){.border-orange-500\\/30{border-color:color-mix(in oklab, var(--color-orange-500) 30%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-primary\\/15{border-color:#7c3aed26}@supports (color:color-mix(in lab, red, red)){.border-primary\\/15{border-color:color-mix(in oklab, var(--color-primary) 15%, transparent)}}.border-primary\\/20{border-color:#7c3aed33}@supports (color:color-mix(in lab, red, red)){.border-primary\\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.border-primary\\/25{border-color:#7c3aed40}@supports (color:color-mix(in lab, red, red)){.border-primary\\/25{border-color:color-mix(in oklab, var(--color-primary) 25%, transparent)}}.border-primary\\/30{border-color:#7c3aed4d}@supports (color:color-mix(in lab, red, red)){.border-primary\\/30{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.border-primary\\/40{border-color:#7c3aed66}@supports (color:color-mix(in lab, red, red)){.border-primary\\/40{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.border-purple-500\\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab, red, red)){.border-purple-500\\/30{border-color:color-mix(in oklab, var(--color-purple-500) 30%, transparent)}}.border-sky-500\\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab, red, red)){.border-sky-500\\/30{border-color:color-mix(in oklab, var(--color-sky-500) 30%, transparent)}}.border-success\\/30{border-color:#0073394d}@supports (color:color-mix(in lab, red, red)){.border-success\\/30{border-color:color-mix(in oklab, var(--color-success) 30%, transparent)}}.border-success\\/40{border-color:#00733966}@supports (color:color-mix(in lab, red, red)){.border-success\\/40{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.border-success\\/50{border-color:#00733980}@supports (color:color-mix(in lab, red, red)){.border-success\\/50{border-color:color-mix(in oklab, var(--color-success) 50%, transparent)}}.border-transparent{border-color:#0000}.border-warning\\/20{border-color:#af660033}@supports (color:color-mix(in lab, red, red)){.border-warning\\/20{border-color:color-mix(in oklab, var(--color-warning) 20%, transparent)}}.border-warning\\/25{border-color:#af660040}@supports (color:color-mix(in lab, red, red)){.border-warning\\/25{border-color:color-mix(in oklab, var(--color-warning) 25%, transparent)}}.border-warning\\/30{border-color:#af66004d}@supports (color:color-mix(in lab, red, red)){.border-warning\\/30{border-color:color-mix(in oklab, var(--color-warning) 30%, transparent)}}.border-warning\\/50{border-color:#af660080}@supports (color:color-mix(in lab, red, red)){.border-warning\\/50{border-color:color-mix(in oklab, var(--color-warning) 50%, transparent)}}.border-yellow-500\\/30{border-color:#edb2004d}@supports (color:color-mix(in lab, red, red)){.border-yellow-500\\/30{border-color:color-mix(in oklab, var(--color-yellow-500) 30%, transparent)}}.border-l-primary\\/20{border-left-color:#7c3aed33}@supports (color:color-mix(in lab, red, red)){.border-l-primary\\/20{border-left-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-accent{background-color:var(--color-accent)}.bg-background{background-color:var(--color-background)}.bg-blue-500\\/15{background-color:#3080ff26}@supports (color:color-mix(in lab, red, red)){.bg-blue-500\\/15{background-color:color-mix(in oklab, var(--color-blue-500) 15%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-card\\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-card\\/50{background-color:color-mix(in oklab, var(--color-card) 50%, transparent)}}.bg-card\\/95{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.bg-card\\/95{background-color:color-mix(in oklab, var(--color-card) 95%, transparent)}}.bg-cyan-500\\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab, red, red)){.bg-cyan-500\\/10{background-color:color-mix(in oklab, var(--color-cyan-500) 10%, transparent)}}.bg-destructive{background-color:var(--color-destructive)}.bg-destructive\\/10{background-color:#d409241a}@supports (color:color-mix(in lab, red, red)){.bg-destructive\\/10{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.bg-emerald-500\\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab, red, red)){.bg-emerald-500\\/15{background-color:color-mix(in oklab, var(--color-emerald-500) 15%, transparent)}}.bg-foreground\\/2{background-color:#18181b05}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/2{background-color:color-mix(in oklab, var(--color-foreground) 2%, transparent)}}.bg-foreground\\/3{background-color:#18181b08}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/3{background-color:color-mix(in oklab, var(--color-foreground) 3%, transparent)}}.bg-foreground\\/4{background-color:#18181b0a}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/4{background-color:color-mix(in oklab, var(--color-foreground) 4%, transparent)}}.bg-foreground\\/5{background-color:#18181b0d}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/5{background-color:color-mix(in oklab, var(--color-foreground) 5%, transparent)}}.bg-foreground\\/6{background-color:#18181b0f}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/6{background-color:color-mix(in oklab, var(--color-foreground) 6%, transparent)}}.bg-foreground\\/8{background-color:#18181b14}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/8{background-color:color-mix(in oklab, var(--color-foreground) 8%, transparent)}}.bg-foreground\\/12{background-color:#18181b1f}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/12{background-color:color-mix(in oklab, var(--color-foreground) 12%, transparent)}}.bg-foreground\\/15{background-color:#18181b26}@supports (color:color-mix(in lab, red, red)){.bg-foreground\\/15{background-color:color-mix(in oklab, var(--color-foreground) 15%, transparent)}}.bg-green-500\\/15{background-color:#00c75826}@supports (color:color-mix(in lab, red, red)){.bg-green-500\\/15{background-color:color-mix(in oklab, var(--color-green-500) 15%, transparent)}}.bg-info{background-color:var(--color-info)}.bg-input{background-color:var(--color-input)}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground\\/50{background-color:#52525b80}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\\/50{background-color:color-mix(in oklab, var(--color-muted-foreground) 50%, transparent)}}.bg-orange-500\\/15{background-color:#fe6e0026}@supports (color:color-mix(in lab, red, red)){.bg-orange-500\\/15{background-color:color-mix(in oklab, var(--color-orange-500) 15%, transparent)}}.bg-popover{background-color:var(--color-popover)}.bg-primary{background-color:var(--color-primary)}.bg-primary-foreground{background-color:var(--color-primary-foreground)}.bg-primary\\/4{background-color:#7c3aed0a}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/4{background-color:color-mix(in oklab, var(--color-primary) 4%, transparent)}}.bg-primary\\/5{background-color:#7c3aed0d}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\\/6{background-color:#7c3aed0f}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/6{background-color:color-mix(in oklab, var(--color-primary) 6%, transparent)}}.bg-primary\\/8{background-color:#7c3aed14}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/8{background-color:color-mix(in oklab, var(--color-primary) 8%, transparent)}}.bg-primary\\/10{background-color:#7c3aed1a}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-primary\\/12{background-color:#7c3aed1f}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/12{background-color:color-mix(in oklab, var(--color-primary) 12%, transparent)}}.bg-primary\\/20{background-color:#7c3aed33}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-primary\\/30{background-color:#7c3aed4d}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/30{background-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.bg-primary\\/50{background-color:#7c3aed80}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/50{background-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.bg-purple-500\\/15{background-color:#ac4bff26}@supports (color:color-mix(in lab, red, red)){.bg-purple-500\\/15{background-color:color-mix(in oklab, var(--color-purple-500) 15%, transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-success{background-color:var(--color-success)}.bg-success\\/8{background-color:#00733914}@supports (color:color-mix(in lab, red, red)){.bg-success\\/8{background-color:color-mix(in oklab, var(--color-success) 8%, transparent)}}.bg-success\\/10{background-color:#0073391a}@supports (color:color-mix(in lab, red, red)){.bg-success\\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning\\/10{background-color:#af66001a}@supports (color:color-mix(in lab, red, red)){.bg-warning\\/10{background-color:color-mix(in oklab, var(--color-warning) 10%, transparent)}}.bg-white{background-color:var(--color-white)}.bg-yellow-500\\/15{background-color:#edb20026}@supports (color:color-mix(in lab, red, red)){.bg-yellow-500\\/15{background-color:color-mix(in oklab, var(--color-yellow-500) 15%, transparent)}}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-0\\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pl-\\[72px\\]{padding-left:72px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.toolbar-font{font-feature-settings:"kern" 1, "liga" 1, "calt" 1, "zero" 1;font-optical-sizing:auto;font-family:JetBrains Mono,Geist Mono,ui-monospace,Cascadia Code,Fira Code,monospace}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[0\\.5rem\\]{font-size:.5rem}.text-\\[0\\.6rem\\]{font-size:.6rem}.text-\\[0\\.7rem\\]{font-size:.7rem}.text-\\[0\\.8rem\\]{font-size:.8rem}.text-\\[0\\.9rem\\]{font-size:.9rem}.text-\\[0\\.55rem\\]{font-size:.55rem}.text-\\[0\\.58rem\\]{font-size:.58rem}.text-\\[0\\.62rem\\]{font-size:.62rem}.text-\\[0\\.65rem\\]{font-size:.65rem}.text-\\[0\\.68rem\\]{font-size:.68rem}.text-\\[0\\.72rem\\]{font-size:.72rem}.text-\\[0\\.75rem\\]{font-size:.75rem}.text-\\[0\\.85rem\\]{font-size:.85rem}.text-\\[0\\.725rem\\]{font-size:.725rem}.text-\\[0\\.775rem\\]{font-size:.775rem}.text-\\[0\\.8125rem\\]{font-size:.8125rem}.text-\\[9px\\]{font-size:9px}.text-\\[13px\\]\\!{font-size:13px!important}.leading-\\[1\\.6\\]\\!{--tw-leading:1.6!important;line-height:1.6!important}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\\[-0\\.01em\\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\\[0\\.1em\\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\\[0\\.06em\\]{--tw-tracking:.06em;letter-spacing:.06em}.tracking-\\[0\\.12em\\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\\[0\\.14em\\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-blue-400{color:var(--color-blue-400)}.text-card-foreground{color:var(--color-card-foreground)}.text-cyan-600{color:var(--color-cyan-600)}.text-destructive{color:var(--color-destructive)}.text-destructive-foreground{color:var(--color-destructive-foreground)}.text-destructive\\/80{color:#d40924cc}@supports (color:color-mix(in lab, red, red)){.text-destructive\\/80{color:color-mix(in oklab, var(--color-destructive) 80%, transparent)}}.text-emerald-400{color:var(--color-emerald-400)}.text-foreground{color:var(--color-foreground)}.text-foreground\\/60{color:#18181b99}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/60{color:color-mix(in oklab, var(--color-foreground) 60%, transparent)}}.text-foreground\\/65{color:#18181ba6}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/65{color:color-mix(in oklab, var(--color-foreground) 65%, transparent)}}.text-foreground\\/70{color:#18181bb3}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/70{color:color-mix(in oklab, var(--color-foreground) 70%, transparent)}}.text-foreground\\/80{color:#18181bcc}@supports (color:color-mix(in lab, red, red)){.text-foreground\\/80{color:color-mix(in oklab, var(--color-foreground) 80%, transparent)}}.text-green-400{color:var(--color-green-400)}.text-info{color:var(--color-info)}.text-info-foreground{color:var(--color-info-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-muted-foreground\\/20{color:#52525b33}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/20{color:color-mix(in oklab, var(--color-muted-foreground) 20%, transparent)}}.text-muted-foreground\\/40{color:#52525b66}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/40{color:color-mix(in oklab, var(--color-muted-foreground) 40%, transparent)}}.text-muted-foreground\\/50{color:#52525b80}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/50{color:color-mix(in oklab, var(--color-muted-foreground) 50%, transparent)}}.text-muted-foreground\\/60{color:#52525b99}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/60{color:color-mix(in oklab, var(--color-muted-foreground) 60%, transparent)}}.text-muted-foreground\\/70{color:#52525bb3}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\\/70{color:color-mix(in oklab, var(--color-muted-foreground) 70%, transparent)}}.text-orange-400{color:var(--color-orange-400)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground{color:var(--color-primary-foreground)}.text-primary\\/30{color:#7c3aed4d}@supports (color:color-mix(in lab, red, red)){.text-primary\\/30{color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.text-primary\\/40{color:#7c3aed66}@supports (color:color-mix(in lab, red, red)){.text-primary\\/40{color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.text-primary\\/45{color:#7c3aed73}@supports (color:color-mix(in lab, red, red)){.text-primary\\/45{color:color-mix(in oklab, var(--color-primary) 45%, transparent)}}.text-primary\\/50{color:#7c3aed80}@supports (color:color-mix(in lab, red, red)){.text-primary\\/50{color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.text-primary\\/60{color:#7c3aed99}@supports (color:color-mix(in lab, red, red)){.text-primary\\/60{color:color-mix(in oklab, var(--color-primary) 60%, transparent)}}.text-primary\\/70{color:#7c3aedb3}@supports (color:color-mix(in lab, red, red)){.text-primary\\/70{color:color-mix(in oklab, var(--color-primary) 70%, transparent)}}.text-purple-400{color:var(--color-purple-400)}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-success{color:var(--color-success)}.text-success-foreground{color:var(--color-success-foreground)}.text-warning{color:var(--color-warning)}.text-warning-foreground{color:var(--color-warning-foreground)}.text-warning\\/80{color:#af6600cc}@supports (color:color-mix(in lab, red, red)){.text-warning\\/80{color:color-mix(in oklab, var(--color-warning) 80%, transparent)}}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-pill{--tw-shadow:0 4px 20px var(--tw-shadow-color,#0000001f), 0 0 0 1px var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-primary\\/40{--tw-ring-color:#7c3aed66}@supports (color:color-mix(in lab, red, red)){.ring-primary\\/40{--tw-ring-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur-\\[0\\.625rem\\]{--tw-backdrop-blur:blur(.625rem);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[left_0\\.3s_cubic-bezier\\(0\\.4\\,0\\,0\\.2\\,1\\)\\,top_0\\.3s_cubic-bezier\\(0\\.4\\,0\\,0\\.2\\,1\\)\\]{transition-property:left .3s cubic-bezier(.4,0,.2,1),top .3s cubic-bezier(.4,0,.2,1);transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-none\\!{transition-property:none!important}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-\\[cubic-bezier\\(0\\.4\\,0\\,0\\.2\\,1\\)\\]{--tw-ease:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-\\[cubic-bezier\\(0\\.23\\,1\\,0\\.32\\,1\\)\\]{--tw-ease:cubic-bezier(.23,1,.32,1);transition-timing-function:cubic-bezier(.23,1,.32,1)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.scrollbar-thin-border{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.ring-inset{--tw-ring-inset:inset}.running{animation-play-state:running}.transition-panel{transition:opacity .4s cubic-bezier(.23,1,.32,1),transform .4s cubic-bezier(.23,1,.32,1),translate .4s cubic-bezier(.23,1,.32,1),scale .4s cubic-bezier(.23,1,.32,1),width .35s cubic-bezier(.4,0,.2,1),clip-path .35s cubic-bezier(.4,0,.2,1)}.transition-pill{transition:all .6s,max-width .6s,padding .5s,transform .4s,opacity .2s}@media (hover:hover){.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\\/nav-item\\:translate-x-0:is(:where(.group\\/nav-item):hover *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\\/nav-item\\:opacity-100:is(:where(.group\\/nav-item):hover *){opacity:1}}.group-data-\\[vertical\\]\\/panel\\:rotate-\\[-90deg\\]:is(:where(.group\\/panel)[data-vertical] *){rotate:-90deg}.peer-disabled\\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.placeholder\\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}.placeholder\\:text-muted-foreground\\/40::placeholder{color:#52525b66}@supports (color:color-mix(in lab, red, red)){.placeholder\\:text-muted-foreground\\/40::placeholder{color:color-mix(in oklab, var(--color-muted-foreground) 40%, transparent)}}.placeholder\\:text-muted-foreground\\/50::placeholder{color:#52525b80}@supports (color:color-mix(in lab, red, red)){.placeholder\\:text-muted-foreground\\/50::placeholder{color:color-mix(in oklab, var(--color-muted-foreground) 50%, transparent)}}.last\\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media (hover:hover){.hover\\:z-10:hover{z-index:10}.hover\\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:border-foreground\\/30:hover{border-color:#18181b4d}@supports (color:color-mix(in lab, red, red)){.hover\\:border-foreground\\/30:hover{border-color:color-mix(in oklab, var(--color-foreground) 30%, transparent)}}.hover\\:border-primary\\/30:hover{border-color:#7c3aed4d}@supports (color:color-mix(in lab, red, red)){.hover\\:border-primary\\/30:hover{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.hover\\:border-primary\\/50:hover{border-color:#7c3aed80}@supports (color:color-mix(in lab, red, red)){.hover\\:border-primary\\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\\:bg-background\\/50:hover{background-color:#f2f2f280}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-background\\/50:hover{background-color:color-mix(in oklab, var(--color-background) 50%, transparent)}}.hover\\:bg-destructive\\/8:hover{background-color:#d4092414}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/8:hover{background-color:color-mix(in oklab, var(--color-destructive) 8%, transparent)}}.hover\\:bg-destructive\\/90:hover{background-color:#d40924e6}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-destructive\\/90:hover{background-color:color-mix(in oklab, var(--color-destructive) 90%, transparent)}}.hover\\:bg-foreground\\/3:hover{background-color:#18181b08}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/3:hover{background-color:color-mix(in oklab, var(--color-foreground) 3%, transparent)}}.hover\\:bg-foreground\\/4:hover{background-color:#18181b0a}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/4:hover{background-color:color-mix(in oklab, var(--color-foreground) 4%, transparent)}}.hover\\:bg-foreground\\/5:hover{background-color:#18181b0d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/5:hover{background-color:color-mix(in oklab, var(--color-foreground) 5%, transparent)}}.hover\\:bg-foreground\\/6:hover{background-color:#18181b0f}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/6:hover{background-color:color-mix(in oklab, var(--color-foreground) 6%, transparent)}}.hover\\:bg-foreground\\/7:hover{background-color:#18181b12}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/7:hover{background-color:color-mix(in oklab, var(--color-foreground) 7%, transparent)}}.hover\\:bg-foreground\\/8:hover{background-color:#18181b14}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/8:hover{background-color:color-mix(in oklab, var(--color-foreground) 8%, transparent)}}.hover\\:bg-foreground\\/10:hover{background-color:#18181b1a}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-foreground\\/10:hover{background-color:color-mix(in oklab, var(--color-foreground) 10%, transparent)}}.hover\\:bg-primary\\/4:hover{background-color:#7c3aed0a}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/4:hover{background-color:color-mix(in oklab, var(--color-primary) 4%, transparent)}}.hover\\:bg-primary\\/7:hover{background-color:#7c3aed12}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/7:hover{background-color:color-mix(in oklab, var(--color-primary) 7%, transparent)}}.hover\\:bg-primary\\/8:hover{background-color:#7c3aed14}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/8:hover{background-color:color-mix(in oklab, var(--color-primary) 8%, transparent)}}.hover\\:bg-primary\\/12:hover{background-color:#7c3aed1f}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/12:hover{background-color:color-mix(in oklab, var(--color-primary) 12%, transparent)}}.hover\\:bg-primary\\/90:hover{background-color:#7c3aede6}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab, var(--color-primary) 90%, transparent)}}.hover\\:bg-secondary\\/80:hover{background-color:#e4e4e7cc}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-secondary\\/80:hover{background-color:color-mix(in oklab, var(--color-secondary) 80%, transparent)}}.hover\\:text-destructive:hover{color:var(--color-destructive)}.hover\\:text-foreground:hover{color:var(--color-foreground)}.hover\\:text-muted-foreground:hover{color:var(--color-muted-foreground)}.hover\\:text-primary:hover{color:var(--color-primary)}.hover\\:underline:hover{text-decoration-line:underline}}.focus\\:border-primary\\/40:focus{border-color:#7c3aed66}@supports (color:color-mix(in lab, red, red)){.focus\\:border-primary\\/40:focus{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:border-primary\\/50:focus-visible{border-color:#7c3aed80}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:border-primary\\/50:focus-visible{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.focus-visible\\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\\:scale-90:active{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\\:scale-\\[0\\.94\\]:active{scale:.94}.active\\:scale-\\[0\\.95\\]:active{scale:.95}.active\\:scale-\\[0\\.98\\]:active{scale:.98}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.data-\\[dragging\\]\\:transition-none\\![data-dragging]{transition-property:none!important}.dark\\:border-white\\/10:where(.dark,.dark *){border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.dark\\:border-white\\/10:where(.dark,.dark *){border-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.dark\\:text-cyan-400:where(.dark,.dark *){color:var(--color-cyan-400)}@media print{.print\\:hidden{display:none}}.\\[\\&_\\*\\]\\:box-border *{box-sizing:border-box}.\\[\\&_\\*\\]\\:animate-none\\! *{animation:none!important}.\\[\\&_\\*\\]\\:transition-none\\! *{transition-property:none!important}.\\[\\&_p\\]\\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\\[\\&_svg\\]\\:size-3\\.5 svg{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\\[\\&_svg\\]\\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\\[\\&_svg\\]\\:size-4\\.5 svg{width:calc(var(--spacing) * 4.5);height:calc(var(--spacing) * 4.5)}.\\[\\&_svg\\]\\:size-5 svg{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.\\[\\&\\>svg\\]\\:absolute>svg{position:absolute}.\\[\\&\\>svg\\]\\:top-4>svg{top:calc(var(--spacing) * 4)}.\\[\\&\\>svg\\]\\:left-4>svg{left:calc(var(--spacing) * 4)}.\\[\\&\\>svg\\+div\\]\\:translate-y-\\[-3px\\]>svg+div{--tw-translate-y:-3px;translate:var(--tw-translate-x) var(--tw-translate-y)}.\\[\\&\\>svg\\~\\*\\]\\:pl-7>svg~*{padding-left:calc(var(--spacing) * 7)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root,:host{--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:rotateX(0);--tw-rotate-y:rotateY(0);--tw-rotate-z:rotateZ(0);--tw-skew-x:skewX(0);--tw-skew-y:skewY(0);--tw-space-x-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--brand-violet:#7c3aed;--brand-violet-light:#c4b5fd;--brand-white:#fff;--brand-frost:#f2f2f2;--brand-silver:#d8d8d8;--brand-graphite:#6b6b6b;--brand-iron:#3c3c3c;--brand-charcoal:#212121;--brand-black:#000}.dark{--color-background:#212121;--color-foreground:#fafafa;--color-card:#18181b;--color-card-foreground:#fafafa;--color-popover:#18181b;--color-popover-foreground:#fafafa;--color-primary:#c4b5fd;--color-primary-foreground:#09090b;--color-secondary:#27272a;--color-secondary-foreground:#fafafa;--color-muted:#27272a;--color-muted-foreground:#a1a1aa;--color-accent:#18181b;--color-accent-foreground:#fafafa;--color-destructive:oklch(65% .2 25);--color-destructive-foreground:oklch(98% .01 25);--color-border:oklch(100% 0 0/.1);--color-input:oklch(100% 0 0/.14);--color-ring:#71717a;--color-info:oklch(62% .2 240);--color-info-foreground:oklch(75% .18 240);--color-success:oklch(65% .17 155);--color-success-foreground:oklch(78% .15 155);--color-warning:oklch(78% .16 65);--color-warning-foreground:oklch(88% .15 65);--shadow-pill:0 6px 24px #000000b3, 0 2px 8px #00000080}.devtools-content-scroll::-webkit-scrollbar{width:5px;height:5px}.devtools-content-scroll::-webkit-scrollbar-track{background:0 0}.devtools-content-scroll::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.devtools-content-scroll::-webkit-scrollbar-thumb:hover{background:var(--color-muted-foreground)}.dev-toolbar-badge{border-radius:50%;width:.5rem;height:.5rem;position:absolute;top:-.25rem;right:-.375rem}.dev-toolbar-badge.info{background:var(--color-info)}.dev-toolbar-badge.warning{background:var(--color-warning)}.dev-toolbar-badge.error{background:var(--color-destructive)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}@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));filter:blur(var(--tw-enter-blur,0))}}`,i=Object.defineProperty,n=a((r,o)=>i(r,"name",{value:o,configurable:!0}),"t");const l=t,c=n(()=>{if(globalThis.window===void 0)return;const r=new CSSStyleSheet;return r.replaceSync(l),r},"createSharedStylesheet"),d=c();export{d as default,d as sharedToolbarStylesheet};
@@ -0,0 +1 @@
1
+ var u=Object.defineProperty;var o=(r,e)=>u(r,"name",{value:e,configurable:!0});const a=[{color:"#10B981",events:[],id:"hmr",label:"HMR Updates"},{color:"#3B82F6",events:[],id:"network",label:"Network"},{color:"#EF4444",events:[],id:"errors",label:"Errors"},{color:"#8B5CF6",events:[],id:"custom",label:"Custom"}];var g=Object.defineProperty,i=o((r,e)=>g(r,"name",{value:e,configurable:!0}),"s");class c{static{o(this,"l")}static{i(this,"TimelineStore")}groups;maxEvents;constructor(e=1e3){this.maxEvents=e,this.groups=new Map;for(const t of a)this.groups.set(t.id,{...t,events:[]})}addEvent(e,t){let s=this.groups.get(e);s||(s={events:[],id:e,label:e},this.groups.set(e,s)),s.events.push(t),s.events.length>this.maxEvents&&s.events.shift(),s.events=s.events.toSorted((l,v)=>l.time-v.time)}getGroups(){return[...this.groups.values()]}getGroupEvents(e){return this.groups.get(e)?.events??[]}getAllEvents(){const e=[];for(const t of this.groups.values())e.push(...t.events);return e.toSorted((t,s)=>t.time-s.time)}clearGroup(e){const t=this.groups.get(e);t&&(t.events=[])}clearAll(){for(const e of this.groups.values())e.events=[]}getEventsInRange(e,t){return this.getAllEvents().filter(s=>s.time>=e&&s.time<=t)}}let n;const h=i(()=>(n||(n=new c),n),"getTimelineStore");export{a as D,c as l,h as m};
@@ -1 +1 @@
1
- var b=Object.defineProperty;var d=(e,t)=>b(e,"name",{value:t,configurable:!0});import{addHookName as u}from"preact/devtools";import{useState as f,useEffect as _}from"preact/hooks";var p=Object.defineProperty,s=d((e,t)=>p(e,"name",{value:t,configurable:!0}),"t$1");const v={close:"Escape",toggle:"Alt+Shift+D"},y="__v_dt__frame_state",i={closeOnOutsideClick:!0,height:60,isFirstVisit:!0,isPip:!1,keybindings:v,left:50,minimizePanelInactive:5e3,open:!1,position:"bottom",preferShowFloatingPanel:!0,reduceMotion:!1,route:"/",top:0,viewMode:"default",width:80},k=s(()=>{const e=globalThis.__VISULIMA_DEV_TOOLBAR_OPTIONS__;return e?{...i,closeOnOutsideClick:e.closeOnOutsideClick??i.closeOnOutsideClick,height:e.height??i.height,keybindings:{...v,...e.keybindings},minimizePanelInactive:e.minimizePanelInactive??i.minimizePanelInactive,position:e.position??i.position,reduceMotion:e.reduceMotion??i.reduceMotion,width:e.width??i.width}:{...i}},"buildEffectiveDefaults"),O=s(()=>{const e=k();if(globalThis.window===void 0)return e;try{const t=localStorage.getItem(y);if(t){const a=JSON.parse(t);return{...e,...a,keybindings:{...e.keybindings,...a.keybindings},open:!1}}}catch{}return e},"loadState"),I=s(e=>{if(globalThis.window!==void 0)try{localStorage.setItem(y,JSON.stringify(e))}catch{}},"saveState");let l=O();const c=new Set,L=s(()=>{for(const e of c)e()},"notifyListeners"),P=s(e=>{l={...l,...e},I(l),L()},"updateSharedState"),C=s(()=>{const[,e]=u(f(0),"forceUpdate");return _(()=>{const t=s(()=>{e(a=>a+1)},"listener");return c.add(t),()=>{c.delete(t)}},[]),{state:l,updateState:P}},"useFrameState");var E=Object.defineProperty,o=d((e,t)=>E(e,"name",{value:t,configurable:!0}),"t");const w="__v_dt__theme",m=o(()=>globalThis.window===void 0?"light":globalThis.window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light","getSystemTheme"),M=o(()=>{if(globalThis.window===void 0)return"system";try{const e=localStorage.getItem(w);if(e==="light"||e==="dark"||e==="system")return e}catch(e){console.warn("[dev-toolbar] Failed to load theme:",e)}return"system"},"loadTheme"),F=o(e=>{if(globalThis.window!==void 0)try{localStorage.setItem(w,e)}catch(t){console.warn("[dev-toolbar] Failed to save theme:",t)}},"saveTheme");let r=M(),n=r==="system"?m():r;const h=new Set,S=o(()=>{for(const e of h)e()},"notifyThemeListeners"),T=o(e=>{try{localStorage.setItem("__v-o__theme",e)}catch{}const t=globalThis.__v_o__current?.shadowRoot?.querySelector("#__v_o__root");t&&t.classList.toggle("dark",e==="dark")},"syncViteOverlayTheme"),g=o(e=>{r=e,n=e==="system"?m():e,F(e),T(n),S()},"setSharedTheme");if(globalThis.window!==void 0){const e=globalThis.window.matchMedia("(prefers-color-scheme: dark)"),t=o(()=>{r==="system"&&(n=m(),T(n),S())},"handleSystemChange");e.addEventListener?e.addEventListener("change",t):e.addListener&&e.addListener(t)}const z=o(()=>{const[,e]=u(f(0),"forceUpdate");return _(()=>{const t=o(()=>{e(a=>a+1)},"listener");return h.add(t),()=>{h.delete(t)}},[]),{resolvedTheme:n,setTheme:g,theme:r,toggleTheme:o(()=>{g(n==="dark"?"light":"dark")},"toggleTheme")}},"useTheme");export{v as D,z as a,C as u};
1
+ var T=Object.defineProperty;var d=(e,t)=>T(e,"name",{value:t,configurable:!0});import{addHookName as u}from"preact/devtools";import{useState as f,useEffect as v}from"preact/hooks";var p=Object.defineProperty,s=d((e,t)=>p(e,"name",{value:t,configurable:!0}),"i$1");const _={close:"Escape",toggle:"Alt+Shift+D"},y="__v_dt__frame_state",i={closeOnOutsideClick:!0,height:60,isFirstVisit:!0,isPip:!1,keybindings:_,left:50,minimizePanelInactive:5e3,open:!1,position:"bottom",preferShowFloatingPanel:!0,reduceMotion:!1,route:"/",top:0,viewMode:"default",width:80},k=s(()=>{const e=globalThis.__VISULIMA_DEV_TOOLBAR_OPTIONS__;return e?{...i,closeOnOutsideClick:e.closeOnOutsideClick??i.closeOnOutsideClick,height:e.height??i.height,keybindings:{..._,...e.keybindings},minimizePanelInactive:e.minimizePanelInactive??i.minimizePanelInactive,position:e.position??i.position,reduceMotion:e.reduceMotion??i.reduceMotion,width:e.width??i.width}:{...i}},"buildEffectiveDefaults"),O=s(()=>{const e=k();if(globalThis.window===void 0)return e;try{const t=localStorage.getItem(y);if(t){const a=JSON.parse(t);return{...e,...a,keybindings:{...e.keybindings,...a.keybindings},open:!1}}}catch{}return e},"loadState"),I=s(e=>{if(globalThis.window!==void 0)try{localStorage.setItem(y,JSON.stringify(e))}catch{}},"saveState");let l=O();const c=new Set,L=s(()=>{for(const e of c)e()},"notifyListeners"),P=s(e=>{l={...l,...e},I(l),L()},"updateSharedState"),N=s(()=>{const[,e]=u(f(0),"forceUpdate");return v(()=>{const t=s(()=>{e(a=>a+1)},"listener");return c.add(t),()=>{c.delete(t)}},[]),{state:l,updateState:P}},"useFrameState");var M=Object.defineProperty,o=d((e,t)=>M(e,"name",{value:t,configurable:!0}),"t");const w="__v_dt__theme",m=o(()=>globalThis.window===void 0?"light":globalThis.window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light","getSystemTheme"),$=o(()=>{if(globalThis.window===void 0)return"system";try{const e=localStorage.getItem(w);if(e==="light"||e==="dark"||e==="system")return e}catch(e){console.warn("[dev-toolbar] Failed to load theme:",e)}return"system"},"loadTheme"),E=o(e=>{if(globalThis.window!==void 0)try{localStorage.setItem(w,e)}catch(t){console.warn("[dev-toolbar] Failed to save theme:",t)}},"saveTheme");let r=$(),n=r==="system"?m():r;const h=new Set,S=o(()=>{for(const e of h)e()},"notifyThemeListeners"),b=o(e=>{try{localStorage.setItem("__v-o__theme",e)}catch{}const t=globalThis.__v_o__current?.shadowRoot?.querySelector("#__v_o__root");t&&t.classList.toggle("dark",e==="dark")},"syncViteOverlayTheme"),g=o(e=>{r=e,n=e==="system"?m():e,E(e),b(n),S()},"setSharedTheme");if(globalThis.window!==void 0){const e=globalThis.window.matchMedia("(prefers-color-scheme: dark)"),t=o(()=>{r==="system"&&(n=m(),b(n),S())},"handleSystemChange");e.addEventListener?e.addEventListener("change",t):e.addListener&&e.addListener(t)}const V=o(()=>{const[,e]=u(f(0),"forceUpdate");return v(()=>{const t=o(()=>{e(a=>a+1)},"listener");return h.add(t),()=>{h.delete(t)}},[]),{resolvedTheme:n,setTheme:g,theme:r,toggleTheme:o(()=>{g(n==="dark"?"light":"dark")},"toggleTheme")}},"useTheme");export{V as _,N as h,_ as r};
@@ -2,12 +2,12 @@
2
2
  * Performance Monitor — singleton that collects browser performance metrics.
3
3
  *
4
4
  * Metrics collected:
5
- * - FPS via requestAnimationFrame circular buffer (last 60 samples)
6
- * - Memory via performance.memory (Chrome only, 1-second polling)
7
- * - Core Web Vitals: LCP, CLS, FID, FCP, TTFB (PerformanceObserver, buffered)
8
- * - Long tasks (>50 ms blocking) via PerformanceObserver
5
+ * - FPS via requestAnimationFrame circular buffer (last 60 samples)
6
+ * - Memory via performance.memory (Chrome only, 1-second polling)
7
+ * - Core Web Vitals: LCP, CLS, FID, FCP, TTFB (PerformanceObserver, buffered)
8
+ * - Long tasks (>50 ms blocking) via PerformanceObserver
9
9
  */
10
- export interface MemoryInfo {
10
+ interface MemoryInfo {
11
11
  /** JS heap size limit in bytes */
12
12
  jsHeapSizeLimit: number;
13
13
  /** Total allocated JS heap in bytes */
@@ -15,7 +15,7 @@ export interface MemoryInfo {
15
15
  /** Currently used JS heap in bytes */
16
16
  usedJSHeapSize: number;
17
17
  }
18
- export interface LongTask {
18
+ interface LongTask {
19
19
  /** Duration in milliseconds */
20
20
  duration: number;
21
21
  /** Unique id */
@@ -23,30 +23,30 @@ export interface LongTask {
23
23
  /** Start time (DOMHighResTimeStamp) */
24
24
  startTime: number;
25
25
  }
26
- export interface CoreWebVitals {
26
+ interface CoreWebVitals {
27
27
  /** Cumulative Layout Shift score */
28
- cls: null | number;
28
+ cls: number | undefined;
29
29
  /** First Contentful Paint in ms */
30
- fcp: null | number;
30
+ fcp: number | undefined;
31
31
  /** First Input Delay in ms */
32
- fid: null | number;
32
+ fid: number | undefined;
33
33
  /** Largest Contentful Paint in ms */
34
- lcp: null | number;
34
+ lcp: number | undefined;
35
35
  /** Time to First Byte in ms */
36
- ttfb: null | number;
36
+ ttfb: number | undefined;
37
37
  }
38
- export interface PerformanceSnapshot {
38
+ interface PerformanceSnapshot {
39
39
  /** Current FPS (0–60) */
40
40
  fps: number;
41
41
  /** Long tasks captured since start */
42
42
  longTasks: LongTask[];
43
- /** Memory info (Chrome only, otherwise null) */
44
- memory: MemoryInfo | null;
43
+ /** Memory info (Chrome only, otherwise undefined) */
44
+ memory: MemoryInfo | undefined;
45
45
  /** Core Web Vitals */
46
46
  vitals: CoreWebVitals;
47
47
  }
48
48
  type Listener = (snapshot: PerformanceSnapshot) => void;
49
- export declare const CWV_THRESHOLDS: {
49
+ declare const CWV_THRESHOLDS: {
50
50
  readonly cls: {
51
51
  readonly good: 0.1;
52
52
  readonly poor: 0.25;
@@ -68,9 +68,9 @@ export declare const CWV_THRESHOLDS: {
68
68
  readonly poor: 1800;
69
69
  };
70
70
  };
71
- export type CwvRating = "good" | "needs-improvement" | "poor";
72
- export declare const getCwvRating: (metric: keyof typeof CWV_THRESHOLDS, value: number) => CwvRating;
73
- export declare class PerformanceMonitor {
71
+ type CwvRating = "good" | "needs-improvement" | "poor";
72
+ declare const getCwvRating: (metric: keyof typeof CWV_THRESHOLDS, value: number) => CwvRating;
73
+ declare class PerformanceMonitor {
74
74
  private clsValue;
75
75
  private fpsSamples;
76
76
  private listeners;
@@ -83,23 +83,23 @@ export declare class PerformanceMonitor {
83
83
  private running;
84
84
  private vitals;
85
85
  /**
86
- * Remove all collected long tasks (useful for the "Clear" button in the UI).
86
+ * Removes all collected long tasks (useful for the "Clear" button in the UI).
87
87
  */
88
88
  clearLongTasks(): void;
89
89
  /**
90
- * Return a snapshot of the current metrics (no subscription).
90
+ * Returns a snapshot of the current metrics (no subscription).
91
91
  */
92
92
  getSnapshot(): PerformanceSnapshot;
93
93
  /**
94
- * Start collecting metrics. Safe to call multiple times — starts once.
94
+ * Starts collecting metrics. Safe to call multiple times — starts once.
95
95
  */
96
96
  start(): void;
97
97
  /**
98
- * Stop all observers and timers.
98
+ * Stops all observers and timers.
99
99
  */
100
100
  stop(): void;
101
101
  /**
102
- * Subscribe to metric updates. Returns an unsubscribe function.
102
+ * Subscribes to metric updates. Returns an unsubscribe function.
103
103
  */
104
104
  subscribe(listener: Listener): () => void;
105
105
  private currentFps;
@@ -111,5 +111,6 @@ export declare class PerformanceMonitor {
111
111
  private startMemory;
112
112
  private tryObserve;
113
113
  }
114
- export declare const performanceMonitor: PerformanceMonitor;
115
- export {};
114
+ declare const performanceMonitor: PerformanceMonitor;
115
+ export type { CoreWebVitals, CwvRating, LongTask, MemoryInfo, PerformanceSnapshot };
116
+ export { CWV_THRESHOLDS, getCwvRating, PerformanceMonitor, performanceMonitor };
@@ -1,7 +1,9 @@
1
1
  import type { ClientFunctions, ClientRPCContext } from "../types/rpc.d.ts";
2
2
  /**
3
- * Creates client-side RPC context
4
- * @param customFunctions Custom client functions to register
5
- * @returns Client RPC context
3
+ * Creates client-side RPC context.
4
+ * @param customFunctions Custom client functions to register.
5
+ * @returns Client RPC context.
6
6
  */
7
- export declare const createClientRPCContext: (customFunctions?: Partial<ClientFunctions>) => ClientRPCContext;
7
+ declare const createClientRPCContext: (customFunctions?: Partial<ClientFunctions>) => ClientRPCContext;
8
+ export { createClientRPCContext };
9
+ export default createClientRPCContext;
@@ -3,12 +3,14 @@ import type { ViteDevServer } from "vite";
3
3
  * Open a file in the editor at a specific line/column.
4
4
  * Uses `launch-editor` which knows the right CLI flags for each editor
5
5
  * (e.g. `--goto` for VS Code, `-l` for vim, `--line` for Emacs, etc.).
6
- * @param server Vite dev server instance
7
- * @param file File path (absolute or relative to server.config.root)
8
- * @param line Line number (1-based)
9
- * @param column Column number (1-based)
6
+ * @param server Vite dev server instance.
7
+ * @param file File path (absolute or relative to server.config.root).
8
+ * @param line Line number (1-based).
9
+ * @param column Column number (1-based).
10
10
  * @param editor Optional editor override — any value accepted by launch-editor
11
11
  * (e.g. "code", "webstorm", "vim", "/usr/local/bin/hx"). When omitted,
12
12
  * launch-editor auto-detects from EDITOR / VISUAL env vars or the running IDE.
13
13
  */
14
- export declare const openInEditor: (server: ViteDevServer, file: string, line?: number, column?: number, editor?: string) => Promise<void>;
14
+ declare const openInEditor: (server: ViteDevServer, file: string, line?: number, column?: number, editor?: string) => Promise<void>;
15
+ export { openInEditor };
16
+ export default openInEditor;
@@ -1,12 +1,15 @@
1
1
  import type { ViteDevServer } from "vite";
2
- export interface TailwindConfigResult {
3
- /** CSS files that @import tailwindcss */
2
+ interface TailwindConfigResult {
3
+ /** CSS files that \@import tailwindcss */
4
4
  cssFiles: string[];
5
- /** User-defined @theme overrides/extensions */
5
+ /** User-defined \@theme overrides/extensions */
6
6
  customTheme: Record<string, string>;
7
7
  /** Full default Tailwind theme tokens */
8
8
  defaultTheme: Record<string, string>;
9
9
  /** Detected Tailwind version */
10
10
  version: "v3" | "v4" | "unknown";
11
11
  }
12
- export declare const getTailwindConfig: (server: ViteDevServer) => Promise<TailwindConfigResult>;
12
+ declare const getTailwindConfig: (server: ViteDevServer) => Promise<TailwindConfigResult>;
13
+ export type { TailwindConfigResult };
14
+ export { getTailwindConfig };
15
+ export default getTailwindConfig;
@@ -1,7 +1,9 @@
1
1
  import type { ViteDevServer } from "vite";
2
2
  /**
3
- * Get Vite configuration
4
- * @param server Vite dev server instance
5
- * @returns Vite config object
3
+ * Gets Vite configuration from the dev server.
4
+ * @param server Vite dev server instance.
5
+ * @returns Vite config object.
6
6
  */
7
- export declare const getViteConfig: (server: ViteDevServer) => Promise<Record<string, any>>;
7
+ declare const getViteConfig: (server: ViteDevServer) => Promise<Record<string, any>>;
8
+ export { getViteConfig };
9
+ export default getViteConfig;
@@ -1,12 +1,15 @@
1
1
  import type { ViteDevServer } from "vite";
2
2
  import type { ServerFunctions, ServerRPCContext } from "../types/rpc.d.ts";
3
3
  /**
4
- * Creates server-side RPC context
5
- * @param server Vite dev server instance
6
- * @param customFunctions Custom server functions to register
7
- * @param options Additional options (e.g. which editor to launch)
8
- * @returns Server RPC context
4
+ * Creates server-side RPC context.
5
+ * @param server Vite dev server instance.
6
+ * @param customFunctions Custom server functions to register.
7
+ * @param options Additional options (e.g. which editor to launch).
8
+ * @param options.editor Editor to use for "open in editor" functionality.
9
+ * @returns Server RPC context.
9
10
  */
10
- export declare const createServerRPCContext: (server: ViteDevServer, customFunctions?: Partial<ServerFunctions>, options?: {
11
+ declare const createServerRPCContext: (server: ViteDevServer, customFunctions?: Partial<ServerFunctions>, options?: {
11
12
  editor?: string;
12
13
  }) => ServerRPCContext;
14
+ export { createServerRPCContext };
15
+ export default createServerRPCContext;
@@ -3,4 +3,6 @@
3
3
  * Intercepts HMR events, fetch requests, and JS errors and feeds them
4
4
  * into the timeline store so the Timeline app can display them.
5
5
  */
6
- export declare const startTimelineCapture: () => void;
6
+ declare const startTimelineCapture: () => void;
7
+ export { startTimelineCapture };
8
+ export default startTimelineCapture;
@@ -4,4 +4,5 @@
4
4
  export type { TimelineEvent, TimelineEventLevel, TimelineGroup } from "../types/timeline.d.ts";
5
5
  export { DEFAULT_TIMELINE_GROUPS } from "../types/timeline.d.ts";
6
6
  export { startTimelineCapture } from "./capture.d.ts";
7
- export { getTimelineStore, TimelineStore } from "./store.d.ts";
7
+ export type { TimelineStore } from "./store.d.ts";
8
+ export { getTimelineStore } from "./store.d.ts";
@@ -1,52 +1,42 @@
1
1
  import type { TimelineEvent, TimelineGroup } from "../types/timeline.d.ts";
2
2
  /**
3
- * Timeline store for managing events
3
+ * Timeline store for managing timeline events.
4
4
  */
5
- export declare class TimelineStore {
5
+ declare class TimelineStore {
6
6
  private groups;
7
7
  private maxEvents;
8
8
  constructor(maxEvents?: number);
9
9
  /**
10
- * Add an event to a group
11
- * @param groupId Group ID
12
- * @param event Timeline event
10
+ * Adds an event to a group.
13
11
  */
14
12
  addEvent(groupId: string, event: TimelineEvent): void;
15
13
  /**
16
- * Get all groups
17
- * @returns Array of timeline groups
14
+ * Gets all timeline groups.
18
15
  */
19
16
  getGroups(): TimelineGroup[];
20
17
  /**
21
- * Get events for a specific group
22
- * @param groupId Group ID
23
- * @returns Array of events or empty array
18
+ * Gets events for a specific group.
24
19
  */
25
20
  getGroupEvents(groupId: string): TimelineEvent[];
26
21
  /**
27
- * Get all events across all groups
28
- * @returns Array of all events
22
+ * Gets all events across all groups.
29
23
  */
30
24
  getAllEvents(): TimelineEvent[];
31
25
  /**
32
- * Clear events for a group
33
- * @param groupId Group ID
26
+ * Clears events for a specific group.
34
27
  */
35
28
  clearGroup(groupId: string): void;
36
29
  /**
37
- * Clear all events
30
+ * Clears all events from all groups.
38
31
  */
39
32
  clearAll(): void;
40
33
  /**
41
- * Get events within a time range
42
- * @param startTime Start timestamp
43
- * @param endTime End timestamp
44
- * @returns Array of events in range
34
+ * Gets events within a time range.
45
35
  */
46
36
  getEventsInRange(startTime: number, endTime: number): TimelineEvent[];
47
37
  }
48
38
  /**
49
- * Get or create timeline store instance
50
- * @returns Timeline store instance
39
+ * Gets or creates the timeline store singleton instance.
51
40
  */
52
- export declare const getTimelineStore: () => TimelineStore;
41
+ declare const getTimelineStore: () => TimelineStore;
42
+ export { getTimelineStore, TimelineStore };
@@ -1,102 +1,104 @@
1
1
  import type { DevToolbarApp, DevToolbarAppState } from "../types/app.d.ts";
2
2
  /**
3
- * App manager for handling app lifecycle
3
+ * Manages the lifecycle of all registered dev-toolbar apps.
4
4
  */
5
- export declare class AppManager {
5
+ declare class AppManager {
6
6
  private apps;
7
7
  private activeAppId;
8
8
  private initializedApps;
9
9
  private appCanvases;
10
10
  /**
11
- * Register an app
12
- * @param app App definition
13
- * @param builtIn Whether this is a built-in app
11
+ * Registers an app with the toolbar.
12
+ * @param app App definition.
13
+ * @param builtIn Whether this is a built-in app.
14
14
  */
15
15
  registerApp(app: DevToolbarApp, builtIn?: boolean): void;
16
16
  /**
17
- * Unregister an app
18
- * @param appId App ID
17
+ * Unregisters an app and calls its destroy hook if initialized.
18
+ * @param appId App ID to unregister.
19
19
  */
20
20
  unregisterApp(appId: string): Promise<void>;
21
21
  /**
22
- * Get an app by ID
23
- * @param appId App ID
24
- * @returns App state or undefined
22
+ * Returns the app state for a given ID.
23
+ * @param appId App ID to look up.
24
+ * @returns App state or undefined.
25
25
  */
26
26
  getApp(appId: string): DevToolbarAppState | undefined;
27
27
  /**
28
- * Get all apps
29
- * @returns Array of app states
28
+ * Returns all registered app states.
30
29
  */
31
30
  getAllApps(): DevToolbarAppState[];
32
31
  /**
33
- * Get active app
34
- * @returns Active app state or undefined
32
+ * Returns the currently active app state, or undefined if none is active.
35
33
  */
36
34
  getActiveApp(): DevToolbarAppState | undefined;
37
35
  /**
38
- * Toggle app active state
39
- * @param appId App ID
40
- * @returns Whether toggle was successful
36
+ * Toggles the active state of an app.
37
+ * @param appId App ID to toggle.
38
+ * @returns Whether the toggle was successful.
41
39
  */
42
40
  toggleApp(appId: string): Promise<boolean>;
43
41
  /**
44
- * Directly set active state for an action button without invoking callbacks.
42
+ * Directly sets the active state of an action button without invoking callbacks.
45
43
  * Use this to deactivate a button from outside the toolbar (e.g. after async work).
46
- * @param appId App ID
47
- * @param active New active state
44
+ * @param appId The unique identifier of the app whose active state to change.
45
+ * @param active New active state.
48
46
  */
49
47
  setAppActive(appId: string, active: boolean): void;
50
48
  /**
51
- * Check if an app has been initialized
52
- * @returns True when the app's init() has already been called
49
+ * Returns whether an app has already had its init() called.
50
+ * @param appId App ID to check.
53
51
  */
54
52
  isAppInitialized(appId: string): boolean;
55
53
  /**
56
- * Mark an app as initialized
57
- * @returns void
54
+ * Marks an app as having been initialized.
55
+ * @param appId App ID to mark.
58
56
  */
59
57
  markAppInitialized(appId: string): void;
60
58
  /**
61
- * Open an app
62
- * @param appId App ID
63
- * @returns Whether open was successful
59
+ * Opens an app and initializes it if necessary.
60
+ * @param appId App ID to open.
61
+ * @returns Whether the open was successful.
64
62
  */
65
63
  openApp(appId: string): Promise<boolean>;
66
64
  /**
67
- * Close an app
68
- * @param appId App ID
69
- * @returns Whether close was successful
65
+ * Closes an active app.
66
+ * @param appId App ID to close.
67
+ * @returns Whether the close was successful.
70
68
  */
71
69
  closeApp(appId: string): Promise<boolean>;
72
70
  /**
73
- * Set app notification
74
- * @param appId App ID
75
- * @param state Notification state
76
- * @param level Notification level
71
+ * Sets a notification for an app.
72
+ * @param appId The unique identifier of the app to notify.
73
+ * @param state Whether the notification is currently visible.
74
+ * @param level The severity level of the notification badge.
77
75
  */
78
76
  setNotification(appId: string, state: boolean, level?: "info" | "warning" | "error"): void;
79
77
  /**
80
- * Clear app notification
81
- * @param appId App ID
78
+ * Clears the notification for an app.
79
+ * @param appId The unique identifier of the app whose notification to clear.
82
80
  */
83
81
  clearNotification(appId: string): void;
84
82
  /**
85
- * Get app canvas element
86
- * @param appId App ID
87
- * @returns Canvas element with shadow root or null
83
+ * Returns the canvas element and shadow root for an app.
84
+ * @param appId The unique identifier of the app whose canvas to retrieve.
85
+ * @returns Canvas element with shadow root or undefined.
88
86
  */
89
87
  getAppCanvas(appId: string): {
90
88
  element: HTMLElement;
91
89
  shadowRoot: ShadowRoot;
92
- } | null;
90
+ } | undefined;
93
91
  /**
94
- * Set app canvas element (called by toolbar component)
95
- * @param appId App ID
96
- * @param canvas Canvas with shadow root
92
+ * Stores the canvas element and shadow root for an app.
93
+ * @param appId The unique identifier of the app whose canvas to store.
94
+ * @param canvas The canvas object containing the host element and its shadow root.
95
+ * @param canvas.element The host HTMLElement that wraps the app's shadow DOM.
96
+ * @param canvas.shadowRoot The ShadowRoot attached to the canvas element.
97
97
  */
98
98
  setAppCanvas(appId: string, canvas: {
99
99
  element: HTMLElement;
100
100
  shadowRoot: ShadowRoot;
101
101
  }): void;
102
102
  }
103
+ export { AppManager };
104
+ export default AppManager;