uilint-react 0.2.87 → 0.2.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import * as W from "react";
2
- import ot, { forwardRef as Li, createElement as fn, createContext as te, useRef as et, useLayoutEffect as Hl, useEffect as G, useId as Di, useContext as ht, useInsertionEffect as zi, useMemo as Q, useCallback as V, Children as Gl, isValidElement as Kl, useState as st, Fragment as xs, Component as Yl, useReducer as ws } from "react";
3
- import { createPortal as pe } from "react-dom";
2
+ import ot, { forwardRef as Li, createElement as fn, createContext as ee, useRef as et, useLayoutEffect as Hl, useEffect as G, useId as Di, useContext as ht, useInsertionEffect as zi, useMemo as Q, useCallback as V, Children as Gl, isValidElement as Kl, useState as st, Fragment as ys, Component as Yl, useReducer as xs } from "react";
3
+ import { createPortal as ge } from "react-dom";
4
4
  import { i as t0, a as e0, b as n0, s as i0 } from "./environment-DVxa60C6.js";
5
5
  import { createEmptyStyleGuide as o0, createStyleSummary as s0, extractStylesFromDOM as a0, generateStyleGuideFromStyles as l0, mergeStyleGuides as c0, parseStyleGuide as u0, serializeStyles as d0 } from "uilint-core";
6
- var Ke = { exports: {} }, we = {};
6
+ var Ke = { exports: {} }, ke = {};
7
7
  var wr;
8
8
  function ql() {
9
- if (wr) return we;
9
+ if (wr) return ke;
10
10
  wr = 1;
11
11
  var t = /* @__PURE__ */ Symbol.for("react.transitional.element"), e = /* @__PURE__ */ Symbol.for("react.fragment");
12
12
  function n(i, r, o) {
@@ -24,9 +24,9 @@ function ql() {
24
24
  props: o
25
25
  };
26
26
  }
27
- return we.Fragment = e, we.jsx = n, we.jsxs = n, we;
27
+ return ke.Fragment = e, ke.jsx = n, ke.jsxs = n, ke;
28
28
  }
29
- var ke = {};
29
+ var Se = {};
30
30
  var kr;
31
31
  function Xl() {
32
32
  return kr || (kr = 1, process.env.NODE_ENV !== "production" && (function() {
@@ -184,8 +184,8 @@ function Xl() {
184
184
  else h(D);
185
185
  if (K.call(_, "key")) {
186
186
  D = t(x);
187
- var St = Object.keys(_).filter(function(ee) {
188
- return ee !== "key";
187
+ var St = Object.keys(_).filter(function(ne) {
188
+ return ne !== "key";
189
189
  });
190
190
  P = 0 < St.length ? "{key: someKey, " + St.join(": ..., ") + ": ...}" : "{key: someKey}", ut[D + P] || (St = 0 < St.length ? "{" + St.join(": ..., ") + ": ...}" : "{}", console.error(
191
191
  `A props object containing a "key" prop is being spread into JSX:
@@ -202,8 +202,8 @@ React keys must be passed directly to JSX without using spread:
202
202
  }
203
203
  if (D = null, m !== void 0 && (n(m), D = "" + m), s(_) && (n(_.key), D = "" + _.key), "key" in _) {
204
204
  m = {};
205
- for (var Et in _)
206
- Et !== "key" && (m[Et] = _[Et]);
205
+ for (var At in _)
206
+ At !== "key" && (m[At] = _[At]);
207
207
  } else m = _;
208
208
  return D && a(
209
209
  m,
@@ -235,7 +235,7 @@ React keys must be passed directly to JSX without using spread:
235
235
  p,
236
236
  o
237
237
  )(), Y = O(i(o)), ut = {};
238
- ke.Fragment = g, ke.jsx = function(x, _, m) {
238
+ Se.Fragment = g, Se.jsx = function(x, _, m) {
239
239
  var P = 1e4 > A.recentlyCreatedOwnerStacks++;
240
240
  return u(
241
241
  x,
@@ -245,7 +245,7 @@ React keys must be passed directly to JSX without using spread:
245
245
  P ? Error("react-stack-top-frame") : S,
246
246
  P ? O(i(x)) : Y
247
247
  );
248
- }, ke.jsxs = function(x, _, m) {
248
+ }, Se.jsxs = function(x, _, m) {
249
249
  var P = 1e4 > A.recentlyCreatedOwnerStacks++;
250
250
  return u(
251
251
  x,
@@ -256,25 +256,25 @@ React keys must be passed directly to JSX without using spread:
256
256
  P ? O(i(x)) : Y
257
257
  );
258
258
  };
259
- })()), ke;
259
+ })()), Se;
260
260
  }
261
261
  var Sr;
262
262
  function Zl() {
263
263
  return Sr || (Sr = 1, process.env.NODE_ENV === "production" ? Ke.exports = ql() : Ke.exports = Xl()), Ke.exports;
264
264
  }
265
265
  var d = Zl();
266
- const At = {
266
+ const Rt = {
267
267
  floatingIconPosition: "uilint:floatingIconPosition",
268
268
  inspectorDocked: "uilint:inspectorDocked",
269
269
  inspectorWidth: "uilint:inspectorWidth",
270
270
  inspectorFloatingPosition: "uilint:inspectorFloatingPosition",
271
271
  inspectorFloatingSize: "uilint:inspectorFloatingSize"
272
272
  };
273
- function ks() {
273
+ function ws() {
274
274
  return typeof window < "u" && typeof localStorage < "u";
275
275
  }
276
- function Ae(t, e) {
277
- if (!ks()) return e;
276
+ function Re(t, e) {
277
+ if (!ws()) return e;
278
278
  try {
279
279
  const n = localStorage.getItem(t);
280
280
  return n === null ? e : JSON.parse(n);
@@ -282,8 +282,8 @@ function Ae(t, e) {
282
282
  return console.warn(`[UILint] Failed to load ${t} from localStorage:`, n), e;
283
283
  }
284
284
  }
285
- function Se(t, e) {
286
- if (ks())
285
+ function Ce(t, e) {
286
+ if (ws())
287
287
  try {
288
288
  localStorage.setItem(t, JSON.stringify(e));
289
289
  } catch (n) {
@@ -303,20 +303,20 @@ function Ql() {
303
303
  open: !1,
304
304
  panelId: null,
305
305
  data: null,
306
- docked: Ae(At.inspectorDocked, !0),
307
- width: Ae(At.inspectorWidth, Jl),
308
- floatingPosition: Ae(At.inspectorFloatingPosition, null),
309
- floatingSize: Ae(At.inspectorFloatingSize, null)
306
+ docked: Re(Rt.inspectorDocked, !0),
307
+ width: Re(Rt.inspectorWidth, Jl),
308
+ floatingPosition: Re(Rt.inspectorFloatingPosition, null),
309
+ floatingSize: Re(Rt.inspectorFloatingSize, null)
310
310
  };
311
311
  }
312
312
  const tc = (t) => (e, n) => ({
313
313
  // ============ Floating Icon ============
314
- floatingIconPosition: Ae(
315
- At.floatingIconPosition,
314
+ floatingIconPosition: Re(
315
+ Rt.floatingIconPosition,
316
316
  null
317
317
  ),
318
318
  setFloatingIconPosition: (i) => {
319
- Se(At.floatingIconPosition, i), e({ floatingIconPosition: i });
319
+ Ce(Rt.floatingIconPosition, i), e({ floatingIconPosition: i });
320
320
  },
321
321
  // ============ Alt Key Mode ============
322
322
  altKeyHeld: !1,
@@ -439,7 +439,7 @@ const tc = (t) => (e, n) => ({
439
439
  },
440
440
  toggleInspectorDocked: () => {
441
441
  const i = n().inspector, r = !i.docked;
442
- Se(At.inspectorDocked, r), e({
442
+ Ce(Rt.inspectorDocked, r), e({
443
443
  inspector: {
444
444
  ...i,
445
445
  docked: r
@@ -447,7 +447,7 @@ const tc = (t) => (e, n) => ({
447
447
  });
448
448
  },
449
449
  setInspectorWidth: (i) => {
450
- Se(At.inspectorWidth, i), e({
450
+ Ce(Rt.inspectorWidth, i), e({
451
451
  inspector: {
452
452
  ...n().inspector,
453
453
  width: i
@@ -455,7 +455,7 @@ const tc = (t) => (e, n) => ({
455
455
  });
456
456
  },
457
457
  setInspectorFloatingPosition: (i) => {
458
- Se(At.inspectorFloatingPosition, i), e({
458
+ Ce(Rt.inspectorFloatingPosition, i), e({
459
459
  inspector: {
460
460
  ...n().inspector,
461
461
  floatingPosition: i
@@ -463,7 +463,7 @@ const tc = (t) => (e, n) => ({
463
463
  });
464
464
  },
465
465
  setInspectorFloatingSize: (i) => {
466
- Se(At.inspectorFloatingSize, i), e({
466
+ Ce(Rt.inspectorFloatingSize, i), e({
467
467
  inspector: {
468
468
  ...n().inspector,
469
469
  floatingSize: i
@@ -495,741 +495,715 @@ function ic(t, e = nc) {
495
495
  const Pr = (t) => {
496
496
  const e = ec(t), n = (i) => ic(e, i);
497
497
  return Object.assign(n, e), n;
498
- }, rc = ((t) => t ? Pr(t) : Pr), oc = 3e4, sc = 3;
499
- class ac {
500
- providers = /* @__PURE__ */ new Map();
501
- cache = /* @__PURE__ */ new Map();
502
- loadingPromises = /* @__PURE__ */ new Map();
503
- services = null;
504
- options;
505
- listeners = /* @__PURE__ */ new Set();
506
- constructor(e = {}) {
507
- this.options = {
508
- cacheTTL: e.cacheTTL ?? oc,
509
- maxConcurrentLoads: e.maxConcurrentLoads ?? sc
510
- };
511
- }
512
- /**
513
- * Initialize the registry with plugin services.
514
- */
515
- initialize(e) {
516
- this.services = e;
498
+ }, rc = ((t) => t ? Pr(t) : Pr);
499
+ function ks(t) {
500
+ const e = /* @__PURE__ */ new Map();
501
+ for (const s of t)
502
+ e.set(s.id, s);
503
+ const n = [], i = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
504
+ function o(s) {
505
+ const a = s.id;
506
+ if (i.has(a))
507
+ return;
508
+ if (r.has(a))
509
+ throw new Error(
510
+ `[PluginRegistry] Circular dependency detected involving plugin: ${a}`
511
+ );
512
+ r.add(a);
513
+ const l = s.dependencies || [];
514
+ for (const c of l) {
515
+ const u = e.get(c);
516
+ u && o(u);
517
+ }
518
+ r.delete(a), i.add(a), n.push(s);
517
519
  }
520
+ for (const s of t)
521
+ o(s);
522
+ return n;
523
+ }
524
+ class oc {
525
+ plugins = /* @__PURE__ */ new Map();
526
+ services = null;
518
527
  /**
519
- * Register a category provider.
528
+ * Register a plugin with the registry.
529
+ *
530
+ * @param plugin - The plugin to register
531
+ * @throws Warning if plugin with same ID already registered
532
+ * @throws Warning if plugin dependencies are not registered
520
533
  */
521
- registerProvider(e) {
522
- if (this.providers.has(e.id)) {
534
+ register(e) {
535
+ if (console.log(`[PluginRegistry] Registering plugin: ${e.id}`), this.plugins.has(e.id)) {
523
536
  console.warn(
524
- `[CategoryRegistry] Provider "${e.id}" already registered. Skipping.`
537
+ `[PluginRegistry] Plugin "${e.id}" is already registered. Skipping duplicate registration.`
525
538
  );
526
539
  return;
527
540
  }
528
- this.providers.set(e.id, e), this.cache.set(e.id, {
529
- items: [],
530
- state: "idle",
531
- loadedAt: 0
532
- }), this.notifyListeners();
541
+ const n = e.dependencies || [], i = [];
542
+ for (const r of n)
543
+ this.plugins.has(r) || i.push(r);
544
+ i.length > 0 && console.warn(
545
+ `[PluginRegistry] Plugin "${e.id}" has unregistered dependencies: ${i.join(", ")}. These plugins should be registered first for proper initialization order.`
546
+ ), this.plugins.set(e.id, {
547
+ plugin: e,
548
+ initialized: !1
549
+ }), console.log(
550
+ `[PluginRegistry] Plugin "${e.id}" registered successfully`
551
+ );
533
552
  }
534
553
  /**
535
- * Unregister a category provider.
554
+ * Set the plugin services reference.
555
+ * Called by initializePlugins() after creating services.
556
+ *
557
+ * @param services - The plugin services
536
558
  */
537
- unregisterProvider(e) {
538
- this.providers.delete(e), this.cache.delete(e), this.loadingPromises.delete(e), this.notifyListeners();
559
+ setServices(e) {
560
+ this.services = e;
539
561
  }
540
562
  /**
541
- * Register all category providers from a plugin.
563
+ * Mark a plugin as initialized.
564
+ * Called by initializePlugins() after successfully initializing a plugin.
565
+ *
566
+ * @param pluginId - The ID of the plugin to mark as initialized
542
567
  */
543
- registerFromPlugin(e) {
544
- if (e.categoryProviders)
545
- for (const n of e.categoryProviders) {
546
- const i = {
547
- ...n,
548
- parentId: n.parentId ?? e.id
549
- };
550
- this.registerProvider(i);
551
- }
568
+ markPluginInitialized(e) {
569
+ const n = this.plugins.get(e);
570
+ n && (n.initialized = !0);
552
571
  }
553
572
  /**
554
- * Get a category provider by ID.
573
+ * Get all registered plugins.
574
+ *
575
+ * @returns Array of all registered plugins
555
576
  */
556
- getProvider(e) {
557
- return this.providers.get(e);
577
+ getPlugins() {
578
+ return Array.from(this.plugins.values()).map((e) => e.plugin);
558
579
  }
559
580
  /**
560
- * Get all registered providers.
581
+ * Get a specific plugin by ID.
582
+ *
583
+ * @param id - The plugin ID to look up
584
+ * @returns The plugin if found, undefined otherwise
561
585
  */
562
- getAllProviders() {
563
- return Array.from(this.providers.values());
586
+ getPlugin(e) {
587
+ return this.plugins.get(e)?.plugin;
564
588
  }
565
589
  /**
566
- * Get the loading state for a category.
590
+ * Aggregate all commands from all registered plugins.
591
+ *
592
+ * @returns Array of all commands from all plugins
567
593
  */
568
- getLoadingState(e) {
569
- return this.cache.get(e)?.state ?? "idle";
594
+ getAllCommands() {
595
+ const e = [];
596
+ for (const { plugin: n } of this.plugins.values())
597
+ n.commands && e.push(...n.commands);
598
+ return e;
570
599
  }
571
600
  /**
572
- * Get cached items for a category (empty if not loaded).
601
+ * Aggregate all analyzers from all registered plugins.
602
+ *
603
+ * @returns Array of all analyzers from all plugins
573
604
  */
574
- getCachedItems(e) {
575
- return this.cache.get(e)?.items ?? [];
605
+ getAllAnalyzers() {
606
+ const e = [];
607
+ for (const { plugin: n } of this.plugins.values())
608
+ n.analyzers && e.push(...n.analyzers);
609
+ return e;
576
610
  }
577
611
  /**
578
- * Check if a category's cache is still valid.
612
+ * Aggregate all inspector panels from all registered plugins.
613
+ * Panels are sorted by priority (higher priority first).
614
+ *
615
+ * @returns Array of all inspector panels, sorted by priority
579
616
  */
580
- isCacheValid(e) {
581
- const n = this.cache.get(e);
582
- return !n || n.state !== "loaded" ? !1 : Date.now() - n.loadedAt < this.options.cacheTTL;
617
+ getAllInspectorPanels() {
618
+ const e = [];
619
+ for (const { plugin: n } of this.plugins.values())
620
+ n.inspectorPanels && e.push(...n.inspectorPanels);
621
+ return e.sort((n, i) => (i.priority ?? 0) - (n.priority ?? 0));
583
622
  }
584
623
  /**
585
- * Load items for a category.
586
- * Returns cached items if valid, otherwise loads fresh data.
587
- * Handles both static and dynamic providers.
624
+ * Aggregate all toolbar actions from all registered plugins.
625
+ * Actions are sorted by priority (higher priority first).
626
+ *
627
+ * @returns Array of all toolbar actions, sorted by priority
588
628
  */
589
- async loadItems(e) {
590
- let n = this.providers.get(e);
591
- if (n || (n = this.findDynamicProvider(e)), !n)
592
- return console.warn(`[CategoryRegistry] Unknown provider: ${e}`), [];
593
- if (!this.services)
594
- return console.warn("[CategoryRegistry] Services not initialized"), [];
595
- if (this.isCacheValid(e))
596
- return this.cache.get(e).items;
597
- const i = this.loadingPromises.get(e);
598
- if (i)
599
- return i;
600
- const r = this.loadItemsInternal(e, n);
601
- this.loadingPromises.set(e, r);
602
- try {
603
- return await r;
604
- } finally {
605
- this.loadingPromises.delete(e);
606
- }
629
+ getAllToolbarActions() {
630
+ const e = [];
631
+ for (const { plugin: n } of this.plugins.values())
632
+ n.toolbarActions && e.push(...n.toolbarActions);
633
+ return e.sort((n, i) => (i.priority ?? 0) - (n.priority ?? 0));
607
634
  }
608
635
  /**
609
- * Find a dynamic provider by searching through all dynamic parent providers.
636
+ * Aggregate all toolbar action groups from all registered plugins.
637
+ * Groups are sorted by priority (higher priority first).
638
+ *
639
+ * @returns Array of all toolbar action groups, sorted by priority
610
640
  */
611
- findDynamicProvider(e) {
612
- if (this.services) {
613
- for (const n of this.providers.values())
614
- if (n.isDynamic && n.getSubCategories) {
615
- const r = n.getSubCategories(this.services).find((o) => o.id === e);
616
- if (r)
617
- return r;
618
- }
619
- }
641
+ getAllToolbarActionGroups() {
642
+ const e = [];
643
+ for (const { plugin: n } of this.plugins.values())
644
+ n.toolbarActionGroups && e.push(...n.toolbarActionGroups);
645
+ return e.sort((n, i) => (i.priority ?? 0) - (n.priority ?? 0));
620
646
  }
621
647
  /**
622
- * Internal method to load items from a provider.
648
+ * Aggregate all category providers from all registered plugins.
649
+ * Providers are sorted by priority (lower number = higher priority).
650
+ *
651
+ * @returns Array of all category providers, sorted by priority
623
652
  */
624
- async loadItemsInternal(e, n) {
625
- this.updateCache(e, { state: "loading" }), this.notifyListeners();
626
- try {
627
- const r = (await n.getItems(this.services)).sort(
628
- (o, s) => (o.priority ?? 1) - (s.priority ?? 1)
629
- );
630
- return this.updateCache(e, {
631
- items: r,
632
- state: "loaded",
633
- loadedAt: Date.now(),
634
- count: r.length,
635
- error: void 0
636
- }), this.notifyListeners(), r;
637
- } catch (i) {
638
- const r = i instanceof Error ? i.message : "Unknown error";
639
- return this.updateCache(e, {
640
- state: "error",
641
- error: r
642
- }), this.notifyListeners(), console.error(
643
- `[CategoryRegistry] Failed to load items for "${e}":`,
644
- i
645
- ), [];
646
- }
653
+ getAllCategoryProviders() {
654
+ const e = [];
655
+ for (const { plugin: n } of this.plugins.values())
656
+ n.categoryProviders && e.push(...n.categoryProviders);
657
+ return e.sort((n, i) => n.priority - i.priority);
647
658
  }
648
659
  /**
649
- * Load item count for a category without loading full items.
660
+ * Aggregate all rules from all registered plugins.
661
+ * Queries each plugin's getRules method if implemented.
662
+ *
663
+ * @returns Array of all rule definitions from all plugins
650
664
  */
651
- async loadItemCount(e) {
652
- const n = this.providers.get(e);
653
- if (!n || !this.services) return 0;
654
- const i = this.cache.get(e);
655
- if (i?.count !== void 0)
656
- return i.count;
657
- if (n.getItemCount)
658
- try {
659
- const o = await n.getItemCount(this.services);
660
- return this.updateCache(e, { count: o }), this.notifyListeners(), o;
661
- } catch (o) {
662
- return console.error(
663
- `[CategoryRegistry] Failed to get count for "${e}":`,
664
- o
665
- ), 0;
666
- }
667
- return (await this.loadItems(e)).length;
665
+ getAllRules() {
666
+ if (!this.services)
667
+ return console.warn("[PluginRegistry] Cannot get rules: services not initialized"), [];
668
+ const e = [];
669
+ for (const { plugin: n, initialized: i } of this.plugins.values())
670
+ if (i && n.getRules)
671
+ try {
672
+ const r = n.getRules(this.services);
673
+ e.push(...r);
674
+ } catch (r) {
675
+ console.error(
676
+ `[PluginRegistry] Error getting rules from plugin "${n.id}":`,
677
+ r
678
+ );
679
+ }
680
+ return e;
668
681
  }
669
682
  /**
670
- * Load categories by priority.
671
- * Loads P0 immediately, schedules P1-P3 appropriately.
683
+ * Set the severity for a specific rule.
684
+ * Finds the plugin that handles the rule and delegates to it.
685
+ *
686
+ * @param ruleId - The rule ID to configure
687
+ * @param severity - The new severity level
672
688
  */
673
- async loadByPriority(e) {
674
- if (!this.services) return;
675
- const n = this.getAllProviders(), i = /* @__PURE__ */ new Map([
676
- [0, []],
677
- [1, []],
678
- [2, []],
679
- [3, []]
680
- ]);
681
- for (const s of n) {
682
- const a = i.get(s.priority);
683
- a && a.push(s);
689
+ setRuleSeverity(e, n) {
690
+ if (!this.services) {
691
+ console.warn("[PluginRegistry] Cannot set rule severity: services not initialized");
692
+ return;
684
693
  }
685
- const r = i.get(0) ?? [];
686
- if (await Promise.all(r.map((s) => this.loadItems(s.id))), e) {
687
- const s = e.filter((a) => !this.isCacheValid(a)).map((a) => this.loadItems(a));
688
- await Promise.all(s);
694
+ for (const { plugin: i, initialized: r } of this.plugins.values())
695
+ if (r) {
696
+ if (i.handlesRules && i.handlesRules({ id: e }) && i.setRuleSeverity) {
697
+ i.setRuleSeverity(e, n, this.services);
698
+ return;
699
+ }
700
+ if (e.startsWith(`${i.id}/`) && i.setRuleSeverity) {
701
+ i.setRuleSeverity(e, n, this.services);
702
+ return;
703
+ }
704
+ }
705
+ console.warn(`[PluginRegistry] No plugin found to handle rule: ${e}`);
706
+ }
707
+ /**
708
+ * Get configuration options for a specific rule.
709
+ *
710
+ * @param ruleId - The rule ID to get config for
711
+ * @returns The rule configuration, or undefined if not found
712
+ */
713
+ getRuleConfig(e) {
714
+ if (!this.services) {
715
+ console.warn("[PluginRegistry] Cannot get rule config: services not initialized");
716
+ return;
689
717
  }
690
- const o = i.get(1) ?? [];
691
- await Promise.all(o.map((s) => this.loadItemCount(s.id))), typeof requestIdleCallback < "u" && (requestIdleCallback(() => {
692
- (i.get(2) ?? []).forEach((a) => this.loadItemCount(a.id));
693
- }), requestIdleCallback(
694
- () => {
695
- (i.get(3) ?? []).forEach((a) => this.loadItemCount(a.id));
696
- },
697
- { timeout: 5e3 }
698
- ));
718
+ for (const { plugin: n, initialized: i } of this.plugins.values())
719
+ if (i) {
720
+ if (n.handlesRules?.({ id: e }) && n.getRuleConfig)
721
+ return n.getRuleConfig(e, this.services);
722
+ if (e.startsWith(`${n.id}/`) && n.getRuleConfig)
723
+ return n.getRuleConfig(e, this.services);
724
+ }
699
725
  }
700
726
  /**
701
- * Prefetch low-priority categories during idle time.
727
+ * Set configuration options for a specific rule.
728
+ *
729
+ * @param ruleId - The rule ID to configure
730
+ * @param config - The configuration options to set
702
731
  */
703
- prefetchLowPriority() {
704
- typeof requestIdleCallback > "u" || requestIdleCallback(
705
- () => {
706
- const e = this.getAllProviders().filter(
707
- (i) => i.priority >= 2 && !this.isCacheValid(i.id)
708
- ), n = (i) => {
709
- i >= e.length || this.loadItemCount(e[i].id).then(() => {
710
- requestIdleCallback(() => n(i + 1));
711
- });
712
- };
713
- n(0);
714
- },
715
- { timeout: 1e4 }
716
- );
732
+ setRuleConfig(e, n) {
733
+ if (!this.services) {
734
+ console.warn("[PluginRegistry] Cannot set rule config: services not initialized");
735
+ return;
736
+ }
737
+ for (const { plugin: i, initialized: r } of this.plugins.values())
738
+ if (r) {
739
+ if (i.handlesRules?.({ id: e }) && i.setRuleConfig) {
740
+ i.setRuleConfig(e, n, this.services);
741
+ return;
742
+ }
743
+ if (e.startsWith(`${i.id}/`) && i.setRuleConfig) {
744
+ i.setRuleConfig(e, n, this.services);
745
+ return;
746
+ }
747
+ }
748
+ console.warn(`[PluginRegistry] No plugin found to configure rule: ${e}`);
717
749
  }
718
750
  /**
719
- * Invalidate cache for one or all categories.
751
+ * Resolve which plugin handles a specific rule.
752
+ *
753
+ * First checks for plugins that explicitly claim the rule via ruleContributions,
754
+ * then falls back to matching by rule category.
755
+ *
756
+ * @param ruleId - The rule ID to look up
757
+ * @param ruleMeta - The rule metadata
758
+ * @returns The plugin that handles this rule, or a default core plugin
720
759
  */
721
- invalidate(e) {
722
- if (e) {
723
- const n = this.cache.get(e);
724
- n && this.cache.set(e, {
725
- ...n,
726
- state: "idle",
727
- loadedAt: 0
728
- });
729
- } else
730
- for (const [n, i] of this.cache)
731
- this.cache.set(n, {
732
- ...i,
733
- state: "idle",
734
- loadedAt: 0
735
- });
736
- this.notifyListeners();
760
+ getPluginForRule(e, n) {
761
+ for (const { plugin: o } of this.plugins.values())
762
+ if (o.ruleContributions && o.ruleContributions.find(
763
+ (a) => a.ruleId === e
764
+ ))
765
+ return o;
766
+ for (const { plugin: o } of this.plugins.values())
767
+ if (e.startsWith(`${o.id}/`) || n.category && o.ruleCategories && o.ruleCategories.includes(n.category))
768
+ return o;
769
+ const i = this.plugins.get("core")?.plugin;
770
+ if (i)
771
+ return i;
772
+ const r = this.plugins.values().next().value;
773
+ return r ? r.plugin : {
774
+ id: "default",
775
+ name: "Default",
776
+ version: "1.0.0"
777
+ };
737
778
  }
738
779
  /**
739
- * Build the category tree for the sidebar.
740
- * Groups categories by parent plugin and filters out empty categories.
741
- * Expands dynamic providers to include their sub-categories.
780
+ * Get custom UI contribution for a specific rule.
781
+ *
782
+ * @param ruleId - The rule ID to look up
783
+ * @returns The rule UI contribution if found, undefined otherwise
742
784
  */
743
- getCategoryTree() {
744
- const e = [], n = /* @__PURE__ */ new Map(), i = [];
745
- for (const r of this.providers.values())
746
- if (r.isDynamic && r.getSubCategories && this.services) {
747
- const o = r.getSubCategories(this.services);
748
- for (const s of o)
749
- if (!this.providers.has(s.id)) {
750
- const a = {
751
- ...s,
752
- parentId: s.parentId ?? r.parentId
753
- };
754
- i.push(a), this.cache.has(s.id) || this.cache.set(s.id, {
755
- items: [],
756
- state: "idle",
757
- loadedAt: 0
758
- });
759
- }
760
- } else
761
- i.push(r);
762
- for (const r of i) {
763
- const o = this.cache.get(r.id), s = o?.count;
764
- if (s === 0 && o?.state === "loaded")
765
- continue;
766
- const a = {
767
- id: r.id,
768
- label: r.label,
769
- count: s,
770
- isLoading: o?.state === "loading",
771
- parentId: r.parentId,
772
- priority: r.priority
773
- };
774
- if (r.parentId) {
775
- const l = n.get(r.parentId) ?? [];
776
- l.push(a), n.set(r.parentId, l);
777
- } else
778
- e.push(a);
779
- }
780
- for (const [r, o] of n) {
781
- o.sort((a, l) => a.priority - l.priority);
782
- const s = e.find((a) => a.id === r);
783
- s ? s.children = o : e.push({
784
- id: r,
785
- label: r,
786
- // Will be replaced with plugin name in UI
787
- isLoading: !1,
788
- priority: Math.min(...o.map((a) => a.priority)),
789
- children: o
790
- });
791
- }
792
- return e.sort((r, o) => r.priority - o.priority), e;
785
+ getRuleContribution(e) {
786
+ for (const { plugin: n } of this.plugins.values())
787
+ if (n.ruleContributions) {
788
+ const i = n.ruleContributions.find(
789
+ (r) => r.ruleId === e
790
+ );
791
+ if (i)
792
+ return i;
793
+ }
793
794
  }
794
795
  /**
795
- * Search items across all categories or a specific category.
796
+ * Dispose all plugins and clean up resources.
797
+ * Calls dispose on each plugin in reverse initialization order.
796
798
  */
797
- searchItems(e, n) {
798
- const i = e.toLowerCase().trim();
799
- if (!i) return [];
800
- const r = [], o = n ? [this.providers.get(n)].filter(Boolean) : this.getAllProviders();
801
- for (const s of o) {
802
- const a = this.cache.get(s.id);
803
- if (!a || a.state !== "loaded") continue;
804
- const l = a.items.filter((c) => s.filterPredicate ? s.filterPredicate(c, i) : (s.searchKeys ?? ["title", "subtitle"]).some((h) => {
805
- const f = h === "title" ? c.title : h === "subtitle" ? c.subtitle : c.metadata?.[h];
806
- return typeof f == "string" && f.toLowerCase().includes(i);
807
- }));
808
- r.push(...l);
799
+ disposeAll() {
800
+ console.log("[PluginRegistry] Disposing all plugins...");
801
+ const e = Array.from(this.plugins.values()).map((i) => i.plugin), n = ks(e).reverse();
802
+ for (const i of n) {
803
+ const r = this.plugins.get(i.id);
804
+ if (!(!r || !r.initialized))
805
+ try {
806
+ console.log(`[PluginRegistry] Disposing plugin: ${i.id}`), i.dispose && this.services && i.dispose(this.services), r.initialized = !1, console.log(
807
+ `[PluginRegistry] Plugin "${i.id}" disposed successfully`
808
+ );
809
+ } catch (o) {
810
+ console.error(
811
+ `[PluginRegistry] Failed to dispose plugin "${i.id}":`,
812
+ o
813
+ );
814
+ }
809
815
  }
810
- return r.sort((s, a) => (s.priority ?? 1) - (a.priority ?? 1));
816
+ this.services = null, console.log("[PluginRegistry] All plugins disposed");
811
817
  }
812
818
  /**
813
- * Subscribe to registry changes.
819
+ * Check if a plugin is registered.
820
+ *
821
+ * @param id - The plugin ID to check
822
+ * @returns true if the plugin is registered
814
823
  */
815
- subscribe(e) {
816
- return this.listeners.add(e), () => {
817
- this.listeners.delete(e);
818
- };
824
+ isRegistered(e) {
825
+ return this.plugins.has(e);
819
826
  }
820
827
  /**
821
- * Update cache for a provider.
828
+ * Check if a plugin is initialized.
829
+ *
830
+ * @param id - The plugin ID to check
831
+ * @returns true if the plugin is initialized, false otherwise
822
832
  */
823
- updateCache(e, n) {
824
- const i = this.cache.get(e) ?? {
825
- items: [],
826
- state: "idle",
827
- loadedAt: 0
828
- };
829
- this.cache.set(e, { ...i, ...n });
833
+ isInitialized(e) {
834
+ return this.plugins.get(e)?.initialized ?? !1;
830
835
  }
831
836
  /**
832
- * Notify all listeners of changes.
837
+ * Get the current plugin services (available after initializeAll).
838
+ *
839
+ * @returns The plugin services, or null if not yet initialized
833
840
  */
834
- notifyListeners() {
835
- for (const e of this.listeners)
836
- e();
841
+ getServices() {
842
+ return this.services;
837
843
  }
838
844
  /**
839
- * Clear all providers and cache.
845
+ * Clear all registered plugins.
846
+ * Useful for testing or resetting the registry.
840
847
  */
841
848
  clear() {
842
- this.providers.clear(), this.cache.clear(), this.loadingPromises.clear(), this.notifyListeners();
849
+ console.log("[PluginRegistry] Clearing all plugins"), this.disposeAll(), this.plugins.clear();
843
850
  }
844
851
  }
845
- function lc(t) {
846
- return new ac(t);
847
- }
848
- const Lt = lc();
849
- function Er(t) {
850
- const e = /* @__PURE__ */ new Map();
851
- for (const s of t)
852
- e.set(s.id, s);
853
- const n = [], i = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();
854
- function o(s) {
855
- const a = s.id;
856
- if (i.has(a))
857
- return;
858
- if (r.has(a))
859
- throw new Error(
860
- `[PluginRegistry] Circular dependency detected involving plugin: ${a}`
861
- );
862
- r.add(a);
863
- const l = s.dependencies || [];
864
- for (const c of l) {
865
- const u = e.get(c);
866
- u && o(u);
867
- }
868
- r.delete(a), i.add(a), n.push(s);
869
- }
870
- for (const s of t)
871
- o(s);
872
- return n;
852
+ function sc() {
853
+ return new oc();
873
854
  }
855
+ const mt = sc(), ac = 3e4, lc = 3;
874
856
  class cc {
875
- plugins = /* @__PURE__ */ new Map();
857
+ providers = /* @__PURE__ */ new Map();
858
+ cache = /* @__PURE__ */ new Map();
859
+ loadingPromises = /* @__PURE__ */ new Map();
876
860
  services = null;
877
- categoryRegistryRef = Lt;
878
- /**
879
- * Register a plugin with the registry.
880
- *
881
- * @param plugin - The plugin to register
882
- * @throws Warning if plugin with same ID already registered
883
- * @throws Warning if plugin dependencies are not registered
884
- */
885
- register(e) {
886
- if (console.log(`[PluginRegistry] Registering plugin: ${e.id}`), this.plugins.has(e.id)) {
887
- console.warn(
888
- `[PluginRegistry] Plugin "${e.id}" is already registered. Skipping duplicate registration.`
889
- );
890
- return;
891
- }
892
- const n = e.dependencies || [], i = [];
893
- for (const r of n)
894
- this.plugins.has(r) || i.push(r);
895
- i.length > 0 && console.warn(
896
- `[PluginRegistry] Plugin "${e.id}" has unregistered dependencies: ${i.join(", ")}. These plugins should be registered first for proper initialization order.`
897
- ), this.plugins.set(e.id, {
898
- plugin: e,
899
- initialized: !1
900
- }), console.log(
901
- `[PluginRegistry] Plugin "${e.id}" registered successfully`
902
- );
861
+ options;
862
+ listeners = /* @__PURE__ */ new Set();
863
+ constructor(e = {}) {
864
+ this.options = {
865
+ cacheTTL: e.cacheTTL ?? ac,
866
+ maxConcurrentLoads: e.maxConcurrentLoads ?? lc
867
+ };
903
868
  }
904
869
  /**
905
- * Initialize all registered plugins in dependency order.
906
- *
907
- * @param services - Plugin services to pass to each plugin's initialize method
870
+ * Initialize the registry with plugin services.
908
871
  */
909
- async initializeAll(e) {
910
- console.log("[PluginRegistry] Initializing all plugins..."), this.services = e, this.categoryRegistryRef.initialize(e);
911
- const n = Array.from(this.plugins.values()).map((r) => r.plugin), i = Er(n);
912
- console.log(
913
- `[PluginRegistry] Initialization order: ${i.map((r) => r.id).join(" -> ")}`
914
- );
915
- for (const r of i) {
916
- const o = this.plugins.get(r.id);
917
- if (o) {
918
- if (o.initialized) {
919
- console.log(
920
- `[PluginRegistry] Plugin "${r.id}" already initialized, skipping`
921
- );
922
- continue;
923
- }
924
- try {
925
- console.log(`[PluginRegistry] Initializing plugin: ${r.id}`), r.initialize && await r.initialize(e), r.categoryProviders && (this.categoryRegistryRef.registerFromPlugin(r), console.log(
926
- `[PluginRegistry] Registered ${r.categoryProviders.length} category providers from "${r.id}"`
927
- )), o.initialized = !0, console.log(
928
- `[PluginRegistry] Plugin "${r.id}" initialized successfully`
929
- );
930
- } catch (s) {
931
- console.error(
932
- `[PluginRegistry] Failed to initialize plugin "${r.id}":`,
933
- s
934
- );
935
- }
936
- }
937
- }
938
- this.categoryRegistryRef.loadByPriority(), console.log("[PluginRegistry] All plugins initialized");
872
+ initialize(e) {
873
+ this.services = e;
939
874
  }
940
875
  /**
941
- * Get all registered plugins.
942
- *
943
- * @returns Array of all registered plugins
876
+ * Register a category provider.
944
877
  */
945
- getPlugins() {
946
- return Array.from(this.plugins.values()).map((e) => e.plugin);
878
+ registerProvider(e) {
879
+ if (this.providers.has(e.id)) {
880
+ console.warn(
881
+ `[CategoryRegistry] Provider "${e.id}" already registered. Skipping.`
882
+ );
883
+ return;
884
+ }
885
+ this.providers.set(e.id, e), this.cache.set(e.id, {
886
+ items: [],
887
+ state: "idle",
888
+ loadedAt: 0
889
+ }), this.notifyListeners();
947
890
  }
948
891
  /**
949
- * Get a specific plugin by ID.
950
- *
951
- * @param id - The plugin ID to look up
952
- * @returns The plugin if found, undefined otherwise
892
+ * Unregister a category provider.
953
893
  */
954
- getPlugin(e) {
955
- return this.plugins.get(e)?.plugin;
894
+ unregisterProvider(e) {
895
+ this.providers.delete(e), this.cache.delete(e), this.loadingPromises.delete(e), this.notifyListeners();
956
896
  }
957
897
  /**
958
- * Aggregate all commands from all registered plugins.
959
- *
960
- * @returns Array of all commands from all plugins
898
+ * Register all category providers from a plugin.
961
899
  */
962
- getAllCommands() {
963
- const e = [];
964
- for (const { plugin: n } of this.plugins.values())
965
- n.commands && e.push(...n.commands);
966
- return e;
900
+ registerFromPlugin(e) {
901
+ if (e.categoryProviders)
902
+ for (const n of e.categoryProviders) {
903
+ const i = {
904
+ ...n,
905
+ parentId: n.parentId ?? e.id
906
+ };
907
+ this.registerProvider(i);
908
+ }
967
909
  }
968
910
  /**
969
- * Aggregate all analyzers from all registered plugins.
970
- *
971
- * @returns Array of all analyzers from all plugins
911
+ * Get a category provider by ID.
972
912
  */
973
- getAllAnalyzers() {
974
- const e = [];
975
- for (const { plugin: n } of this.plugins.values())
976
- n.analyzers && e.push(...n.analyzers);
977
- return e;
913
+ getProvider(e) {
914
+ return this.providers.get(e);
978
915
  }
979
916
  /**
980
- * Aggregate all inspector panels from all registered plugins.
981
- * Panels are sorted by priority (higher priority first).
982
- *
983
- * @returns Array of all inspector panels, sorted by priority
917
+ * Get all registered providers.
984
918
  */
985
- getAllInspectorPanels() {
986
- const e = [];
987
- for (const { plugin: n } of this.plugins.values())
988
- n.inspectorPanels && e.push(...n.inspectorPanels);
989
- return e.sort((n, i) => (i.priority ?? 0) - (n.priority ?? 0));
919
+ getAllProviders() {
920
+ return Array.from(this.providers.values());
990
921
  }
991
922
  /**
992
- * Aggregate all toolbar actions from all registered plugins.
993
- * Actions are sorted by priority (higher priority first).
994
- *
995
- * @returns Array of all toolbar actions, sorted by priority
923
+ * Get the loading state for a category.
996
924
  */
997
- getAllToolbarActions() {
998
- const e = [];
999
- for (const { plugin: n } of this.plugins.values())
1000
- n.toolbarActions && e.push(...n.toolbarActions);
1001
- return e.sort((n, i) => (i.priority ?? 0) - (n.priority ?? 0));
925
+ getLoadingState(e) {
926
+ return this.cache.get(e)?.state ?? "idle";
1002
927
  }
1003
928
  /**
1004
- * Aggregate all toolbar action groups from all registered plugins.
1005
- * Groups are sorted by priority (higher priority first).
1006
- *
1007
- * @returns Array of all toolbar action groups, sorted by priority
929
+ * Get cached items for a category (empty if not loaded).
1008
930
  */
1009
- getAllToolbarActionGroups() {
1010
- const e = [];
1011
- for (const { plugin: n } of this.plugins.values())
1012
- n.toolbarActionGroups && e.push(...n.toolbarActionGroups);
1013
- return e.sort((n, i) => (i.priority ?? 0) - (n.priority ?? 0));
931
+ getCachedItems(e) {
932
+ return this.cache.get(e)?.items ?? [];
1014
933
  }
1015
934
  /**
1016
- * Aggregate all category providers from all registered plugins.
1017
- * Providers are sorted by priority (lower number = higher priority).
1018
- *
1019
- * @returns Array of all category providers, sorted by priority
935
+ * Check if a category's cache is still valid.
1020
936
  */
1021
- getAllCategoryProviders() {
1022
- const e = [];
1023
- for (const { plugin: n } of this.plugins.values())
1024
- n.categoryProviders && e.push(...n.categoryProviders);
1025
- return e.sort((n, i) => n.priority - i.priority);
937
+ isCacheValid(e) {
938
+ const n = this.cache.get(e);
939
+ return !n || n.state !== "loaded" ? !1 : Date.now() - n.loadedAt < this.options.cacheTTL;
1026
940
  }
1027
941
  /**
1028
- * Get the category registry instance.
1029
- *
1030
- * @returns The category registry
942
+ * Load items for a category.
943
+ * Returns cached items if valid, otherwise loads fresh data.
944
+ * Handles both static and dynamic providers.
1031
945
  */
1032
- getCategoryRegistry() {
1033
- return this.categoryRegistryRef;
946
+ async loadItems(e) {
947
+ let n = this.providers.get(e);
948
+ if (n || (n = this.findDynamicProvider(e)), !n)
949
+ return console.warn(`[CategoryRegistry] Unknown provider: ${e}`), [];
950
+ if (!this.services)
951
+ return console.warn("[CategoryRegistry] Services not initialized"), [];
952
+ if (this.isCacheValid(e))
953
+ return this.cache.get(e).items;
954
+ const i = this.loadingPromises.get(e);
955
+ if (i)
956
+ return i;
957
+ const r = this.loadItemsInternal(e, n);
958
+ this.loadingPromises.set(e, r);
959
+ try {
960
+ return await r;
961
+ } finally {
962
+ this.loadingPromises.delete(e);
963
+ }
1034
964
  }
1035
965
  /**
1036
- * Aggregate all rules from all registered plugins.
1037
- * Queries each plugin's getRules method if implemented.
1038
- *
1039
- * @returns Array of all rule definitions from all plugins
966
+ * Find a dynamic provider by searching through all dynamic parent providers.
1040
967
  */
1041
- getAllRules() {
1042
- if (!this.services)
1043
- return console.warn("[PluginRegistry] Cannot get rules: services not initialized"), [];
1044
- const e = [];
1045
- for (const { plugin: n, initialized: i } of this.plugins.values())
1046
- if (i && n.getRules)
1047
- try {
1048
- const r = n.getRules(this.services);
1049
- e.push(...r);
1050
- } catch (r) {
1051
- console.error(
1052
- `[PluginRegistry] Error getting rules from plugin "${n.id}":`,
1053
- r
1054
- );
968
+ findDynamicProvider(e) {
969
+ if (this.services) {
970
+ for (const n of this.providers.values())
971
+ if (n.isDynamic && n.getSubCategories) {
972
+ const r = n.getSubCategories(this.services).find((o) => o.id === e);
973
+ if (r)
974
+ return r;
1055
975
  }
1056
- return e;
976
+ }
1057
977
  }
1058
978
  /**
1059
- * Set the severity for a specific rule.
1060
- * Finds the plugin that handles the rule and delegates to it.
1061
- *
1062
- * @param ruleId - The rule ID to configure
1063
- * @param severity - The new severity level
979
+ * Internal method to load items from a provider.
1064
980
  */
1065
- setRuleSeverity(e, n) {
1066
- if (!this.services) {
1067
- console.warn("[PluginRegistry] Cannot set rule severity: services not initialized");
1068
- return;
981
+ async loadItemsInternal(e, n) {
982
+ this.updateCache(e, { state: "loading" }), this.notifyListeners();
983
+ try {
984
+ const r = (await n.getItems(this.services)).sort(
985
+ (o, s) => (o.priority ?? 1) - (s.priority ?? 1)
986
+ );
987
+ return this.updateCache(e, {
988
+ items: r,
989
+ state: "loaded",
990
+ loadedAt: Date.now(),
991
+ count: r.length,
992
+ error: void 0
993
+ }), this.notifyListeners(), r;
994
+ } catch (i) {
995
+ const r = i instanceof Error ? i.message : "Unknown error";
996
+ return this.updateCache(e, {
997
+ state: "error",
998
+ error: r
999
+ }), this.notifyListeners(), console.error(
1000
+ `[CategoryRegistry] Failed to load items for "${e}":`,
1001
+ i
1002
+ ), [];
1069
1003
  }
1070
- for (const { plugin: i, initialized: r } of this.plugins.values())
1071
- if (r) {
1072
- if (i.handlesRules && i.handlesRules({ id: e }) && i.setRuleSeverity) {
1073
- i.setRuleSeverity(e, n, this.services);
1074
- return;
1075
- }
1076
- if (e.startsWith(`${i.id}/`) && i.setRuleSeverity) {
1077
- i.setRuleSeverity(e, n, this.services);
1078
- return;
1079
- }
1004
+ }
1005
+ /**
1006
+ * Load item count for a category without loading full items.
1007
+ */
1008
+ async loadItemCount(e) {
1009
+ const n = this.providers.get(e);
1010
+ if (!n || !this.services) return 0;
1011
+ const i = this.cache.get(e);
1012
+ if (i?.count !== void 0)
1013
+ return i.count;
1014
+ if (n.getItemCount)
1015
+ try {
1016
+ const o = await n.getItemCount(this.services);
1017
+ return this.updateCache(e, { count: o }), this.notifyListeners(), o;
1018
+ } catch (o) {
1019
+ return console.error(
1020
+ `[CategoryRegistry] Failed to get count for "${e}":`,
1021
+ o
1022
+ ), 0;
1080
1023
  }
1081
- console.warn(`[PluginRegistry] No plugin found to handle rule: ${e}`);
1024
+ return (await this.loadItems(e)).length;
1082
1025
  }
1083
1026
  /**
1084
- * Get configuration options for a specific rule.
1085
- *
1086
- * @param ruleId - The rule ID to get config for
1087
- * @returns The rule configuration, or undefined if not found
1027
+ * Load categories by priority.
1028
+ * Loads P0 immediately, schedules P1-P3 appropriately.
1088
1029
  */
1089
- getRuleConfig(e) {
1090
- if (!this.services) {
1091
- console.warn("[PluginRegistry] Cannot get rule config: services not initialized");
1092
- return;
1030
+ async loadByPriority(e) {
1031
+ if (!this.services) return;
1032
+ const n = this.getAllProviders(), i = /* @__PURE__ */ new Map([
1033
+ [0, []],
1034
+ [1, []],
1035
+ [2, []],
1036
+ [3, []]
1037
+ ]);
1038
+ for (const s of n) {
1039
+ const a = i.get(s.priority);
1040
+ a && a.push(s);
1093
1041
  }
1094
- for (const { plugin: n, initialized: i } of this.plugins.values())
1095
- if (i) {
1096
- if (n.handlesRules?.({ id: e }) && n.getRuleConfig)
1097
- return n.getRuleConfig(e, this.services);
1098
- if (e.startsWith(`${n.id}/`) && n.getRuleConfig)
1099
- return n.getRuleConfig(e, this.services);
1100
- }
1042
+ const r = i.get(0) ?? [];
1043
+ if (await Promise.all(r.map((s) => this.loadItems(s.id))), e) {
1044
+ const s = e.filter((a) => !this.isCacheValid(a)).map((a) => this.loadItems(a));
1045
+ await Promise.all(s);
1046
+ }
1047
+ const o = i.get(1) ?? [];
1048
+ await Promise.all(o.map((s) => this.loadItemCount(s.id))), typeof requestIdleCallback < "u" && (requestIdleCallback(() => {
1049
+ (i.get(2) ?? []).forEach((a) => this.loadItemCount(a.id));
1050
+ }), requestIdleCallback(
1051
+ () => {
1052
+ (i.get(3) ?? []).forEach((a) => this.loadItemCount(a.id));
1053
+ },
1054
+ { timeout: 5e3 }
1055
+ ));
1101
1056
  }
1102
1057
  /**
1103
- * Set configuration options for a specific rule.
1104
- *
1105
- * @param ruleId - The rule ID to configure
1106
- * @param config - The configuration options to set
1058
+ * Prefetch low-priority categories during idle time.
1107
1059
  */
1108
- setRuleConfig(e, n) {
1109
- if (!this.services) {
1110
- console.warn("[PluginRegistry] Cannot set rule config: services not initialized");
1111
- return;
1112
- }
1113
- for (const { plugin: i, initialized: r } of this.plugins.values())
1114
- if (r) {
1115
- if (i.handlesRules?.({ id: e }) && i.setRuleConfig) {
1116
- i.setRuleConfig(e, n, this.services);
1117
- return;
1118
- }
1119
- if (e.startsWith(`${i.id}/`) && i.setRuleConfig) {
1120
- i.setRuleConfig(e, n, this.services);
1121
- return;
1122
- }
1123
- }
1124
- console.warn(`[PluginRegistry] No plugin found to configure rule: ${e}`);
1060
+ prefetchLowPriority() {
1061
+ typeof requestIdleCallback > "u" || requestIdleCallback(
1062
+ () => {
1063
+ const e = this.getAllProviders().filter(
1064
+ (i) => i.priority >= 2 && !this.isCacheValid(i.id)
1065
+ ), n = (i) => {
1066
+ i >= e.length || this.loadItemCount(e[i].id).then(() => {
1067
+ requestIdleCallback(() => n(i + 1));
1068
+ });
1069
+ };
1070
+ n(0);
1071
+ },
1072
+ { timeout: 1e4 }
1073
+ );
1125
1074
  }
1126
1075
  /**
1127
- * Resolve which plugin handles a specific rule.
1128
- *
1129
- * First checks for plugins that explicitly claim the rule via ruleContributions,
1130
- * then falls back to matching by rule category.
1131
- *
1132
- * @param ruleId - The rule ID to look up
1133
- * @param ruleMeta - The rule metadata
1134
- * @returns The plugin that handles this rule, or a default core plugin
1076
+ * Invalidate cache for one or all categories.
1135
1077
  */
1136
- getPluginForRule(e, n) {
1137
- for (const { plugin: o } of this.plugins.values())
1138
- if (o.ruleContributions && o.ruleContributions.find(
1139
- (a) => a.ruleId === e
1140
- ))
1141
- return o;
1142
- for (const { plugin: o } of this.plugins.values())
1143
- if (e.startsWith(`${o.id}/`) || n.category && o.ruleCategories && o.ruleCategories.includes(n.category))
1144
- return o;
1145
- const i = this.plugins.get("core")?.plugin;
1146
- if (i)
1147
- return i;
1148
- const r = this.plugins.values().next().value;
1149
- return r ? r.plugin : {
1150
- id: "default",
1151
- name: "Default",
1152
- version: "1.0.0"
1153
- };
1078
+ invalidate(e) {
1079
+ if (e) {
1080
+ const n = this.cache.get(e);
1081
+ n && this.cache.set(e, {
1082
+ ...n,
1083
+ state: "idle",
1084
+ loadedAt: 0
1085
+ });
1086
+ } else
1087
+ for (const [n, i] of this.cache)
1088
+ this.cache.set(n, {
1089
+ ...i,
1090
+ state: "idle",
1091
+ loadedAt: 0
1092
+ });
1093
+ this.notifyListeners();
1154
1094
  }
1155
1095
  /**
1156
- * Get custom UI contribution for a specific rule.
1157
- *
1158
- * @param ruleId - The rule ID to look up
1159
- * @returns The rule UI contribution if found, undefined otherwise
1096
+ * Build the category tree for the sidebar.
1097
+ * Groups categories by parent plugin and filters out empty categories.
1098
+ * Expands dynamic providers to include their sub-categories.
1160
1099
  */
1161
- getRuleContribution(e) {
1162
- for (const { plugin: n } of this.plugins.values())
1163
- if (n.ruleContributions) {
1164
- const i = n.ruleContributions.find(
1165
- (r) => r.ruleId === e
1166
- );
1167
- if (i)
1168
- return i;
1169
- }
1100
+ getCategoryTree() {
1101
+ const e = [], n = /* @__PURE__ */ new Map(), i = [];
1102
+ for (const r of this.providers.values())
1103
+ if (r.isDynamic && r.getSubCategories && this.services) {
1104
+ const o = r.getSubCategories(this.services);
1105
+ for (const s of o)
1106
+ if (!this.providers.has(s.id)) {
1107
+ const a = {
1108
+ ...s,
1109
+ parentId: s.parentId ?? r.parentId
1110
+ };
1111
+ i.push(a), this.cache.has(s.id) || this.cache.set(s.id, {
1112
+ items: [],
1113
+ state: "idle",
1114
+ loadedAt: 0
1115
+ });
1116
+ }
1117
+ } else
1118
+ i.push(r);
1119
+ for (const r of i) {
1120
+ const o = this.cache.get(r.id), s = o?.count;
1121
+ if (s === 0 && o?.state === "loaded")
1122
+ continue;
1123
+ const a = {
1124
+ id: r.id,
1125
+ label: r.label,
1126
+ count: s,
1127
+ isLoading: o?.state === "loading",
1128
+ parentId: r.parentId,
1129
+ priority: r.priority
1130
+ };
1131
+ if (r.parentId) {
1132
+ const l = n.get(r.parentId) ?? [];
1133
+ l.push(a), n.set(r.parentId, l);
1134
+ } else
1135
+ e.push(a);
1136
+ }
1137
+ for (const [r, o] of n) {
1138
+ o.sort((a, l) => a.priority - l.priority);
1139
+ const s = e.find((a) => a.id === r);
1140
+ s ? s.children = o : e.push({
1141
+ id: r,
1142
+ label: r,
1143
+ // Will be replaced with plugin name in UI
1144
+ isLoading: !1,
1145
+ priority: Math.min(...o.map((a) => a.priority)),
1146
+ children: o
1147
+ });
1148
+ }
1149
+ return e.sort((r, o) => r.priority - o.priority), e;
1170
1150
  }
1171
1151
  /**
1172
- * Dispose all plugins and clean up resources.
1173
- * Calls dispose on each plugin in reverse initialization order.
1152
+ * Search items across all categories or a specific category.
1174
1153
  */
1175
- disposeAll() {
1176
- console.log("[PluginRegistry] Disposing all plugins...");
1177
- const e = Array.from(this.plugins.values()).map((i) => i.plugin), n = Er(e).reverse();
1178
- for (const i of n) {
1179
- const r = this.plugins.get(i.id);
1180
- if (!(!r || !r.initialized))
1181
- try {
1182
- console.log(`[PluginRegistry] Disposing plugin: ${i.id}`), i.dispose && this.services && i.dispose(this.services), r.initialized = !1, console.log(
1183
- `[PluginRegistry] Plugin "${i.id}" disposed successfully`
1184
- );
1185
- } catch (o) {
1186
- console.error(
1187
- `[PluginRegistry] Failed to dispose plugin "${i.id}":`,
1188
- o
1189
- );
1190
- }
1154
+ searchItems(e, n) {
1155
+ const i = e.toLowerCase().trim();
1156
+ if (!i) return [];
1157
+ const r = [], o = n ? [this.providers.get(n)].filter(Boolean) : this.getAllProviders();
1158
+ for (const s of o) {
1159
+ const a = this.cache.get(s.id);
1160
+ if (!a || a.state !== "loaded") continue;
1161
+ const l = a.items.filter((c) => s.filterPredicate ? s.filterPredicate(c, i) : (s.searchKeys ?? ["title", "subtitle"]).some((h) => {
1162
+ const f = h === "title" ? c.title : h === "subtitle" ? c.subtitle : c.metadata?.[h];
1163
+ return typeof f == "string" && f.toLowerCase().includes(i);
1164
+ }));
1165
+ r.push(...l);
1191
1166
  }
1192
- this.services = null, console.log("[PluginRegistry] All plugins disposed");
1167
+ return r.sort((s, a) => (s.priority ?? 1) - (a.priority ?? 1));
1193
1168
  }
1194
1169
  /**
1195
- * Check if a plugin is registered.
1196
- *
1197
- * @param id - The plugin ID to check
1198
- * @returns true if the plugin is registered
1170
+ * Subscribe to registry changes.
1199
1171
  */
1200
- isRegistered(e) {
1201
- return this.plugins.has(e);
1172
+ subscribe(e) {
1173
+ return this.listeners.add(e), () => {
1174
+ this.listeners.delete(e);
1175
+ };
1202
1176
  }
1203
1177
  /**
1204
- * Check if a plugin is initialized.
1205
- *
1206
- * @param id - The plugin ID to check
1207
- * @returns true if the plugin is initialized, false otherwise
1178
+ * Update cache for a provider.
1208
1179
  */
1209
- isInitialized(e) {
1210
- return this.plugins.get(e)?.initialized ?? !1;
1180
+ updateCache(e, n) {
1181
+ const i = this.cache.get(e) ?? {
1182
+ items: [],
1183
+ state: "idle",
1184
+ loadedAt: 0
1185
+ };
1186
+ this.cache.set(e, { ...i, ...n });
1211
1187
  }
1212
1188
  /**
1213
- * Get the current plugin services (available after initializeAll).
1214
- *
1215
- * @returns The plugin services, or null if not yet initialized
1189
+ * Notify all listeners of changes.
1216
1190
  */
1217
- getServices() {
1218
- return this.services;
1191
+ notifyListeners() {
1192
+ for (const e of this.listeners)
1193
+ e();
1219
1194
  }
1220
1195
  /**
1221
- * Clear all registered plugins.
1222
- * Useful for testing or resetting the registry.
1196
+ * Clear all providers and cache.
1223
1197
  */
1224
1198
  clear() {
1225
- console.log("[PluginRegistry] Clearing all plugins"), this.disposeAll(), this.plugins.clear();
1199
+ this.providers.clear(), this.cache.clear(), this.loadingPromises.clear(), this.notifyListeners();
1226
1200
  }
1227
1201
  }
1228
- function uc() {
1229
- return new cc();
1202
+ function uc(t) {
1203
+ return new cc(t);
1230
1204
  }
1231
- const mt = uc();
1232
- let qt = null, Me = null;
1205
+ const Et = uc();
1206
+ let Xt = null, qt = null;
1233
1207
  const dc = () => ({
1234
1208
  isConnected: !1,
1235
1209
  url: "ws://localhost:9234",
@@ -1348,15 +1322,15 @@ function fc(t = {}) {
1348
1322
  }), { store: r, services: i };
1349
1323
  }
1350
1324
  function Ss(t) {
1351
- if (qt)
1352
- return qt;
1325
+ if (Xt)
1326
+ return Xt;
1353
1327
  const e = fc(t);
1354
- return qt = e.store, Me = e.services, qt;
1328
+ return Xt = e.store, qt = e.services, Xt;
1355
1329
  }
1356
1330
  function N(t) {
1357
- return qt || Ss(), t ? qt(t) : qt();
1331
+ return Xt || Ss(), t ? Xt(t) : Xt();
1358
1332
  }
1359
- function Ar(t, e, n) {
1333
+ function Er(t, e, n) {
1360
1334
  return {
1361
1335
  ...e,
1362
1336
  getState: () => n.getState().plugins[t] || {},
@@ -1378,60 +1352,67 @@ function Ar(t, e, n) {
1378
1352
  }
1379
1353
  async function pc(t) {
1380
1354
  const e = Ss(t);
1381
- if (!Me)
1382
- throw new Error("[ComposedStore] Plugin services not initialized");
1383
- const i = (t?.registry ?? mt).getPlugins();
1384
- for (const r of i)
1385
- if (r.createSlice && r.id)
1355
+ if (!qt)
1356
+ throw new Error("[initializePlugins] Plugin services not initialized");
1357
+ const n = t?.registry ?? mt;
1358
+ n.setServices(qt);
1359
+ const i = n.getPlugins(), r = ks(i);
1360
+ console.log(
1361
+ `[initializePlugins] Initialization order: ${r.map((o) => o.id).join(" -> ")}`
1362
+ ), Et.initialize(qt);
1363
+ for (const o of r)
1364
+ if (o.createSlice && o.id)
1386
1365
  try {
1387
- const o = Ar(
1388
- r.id,
1389
- Me,
1366
+ const s = Er(
1367
+ o.id,
1368
+ qt,
1390
1369
  e
1391
- ), s = r.createSlice(o);
1392
- r.id in {} ? e.getState().registerPluginSlice(
1393
- r.id,
1394
- s
1370
+ ), a = o.createSlice(s);
1371
+ o.id in {} ? e.getState().registerPluginSlice(
1372
+ o.id,
1373
+ a
1395
1374
  ) : (console.log(
1396
- `[ComposedStore] Registering unknown plugin slice: ${r.id}`
1397
- ), e.setState((a) => ({
1375
+ `[initializePlugins] Registering unknown plugin slice: ${o.id}`
1376
+ ), e.setState((l) => ({
1398
1377
  plugins: {
1399
- ...a.plugins,
1400
- [r.id]: s
1378
+ ...l.plugins,
1379
+ [o.id]: a
1401
1380
  }
1402
1381
  })));
1403
- } catch (o) {
1382
+ } catch (s) {
1404
1383
  console.error(
1405
- `[ComposedStore] Failed to create slice for plugin ${r.id}:`,
1406
- o
1384
+ `[initializePlugins] Failed to create slice for plugin ${o.id}:`,
1385
+ s
1407
1386
  );
1408
1387
  }
1409
- for (const r of i)
1410
- if (r.initialize && r.id)
1388
+ for (const o of r)
1389
+ if (o.id)
1411
1390
  try {
1412
- const o = Ar(
1413
- r.id,
1414
- Me,
1391
+ const s = Er(
1392
+ o.id,
1393
+ qt,
1415
1394
  e
1416
1395
  );
1417
- r.initialize(o);
1418
- } catch (o) {
1396
+ o.initialize && await o.initialize(s), n.markPluginInitialized(o.id), o.categoryProviders && (Et.registerFromPlugin(o), console.log(
1397
+ `[initializePlugins] Registered ${o.categoryProviders.length} category providers from "${o.id}"`
1398
+ ));
1399
+ } catch (s) {
1419
1400
  console.error(
1420
- `[ComposedStore] Failed to initialize plugin ${r.id}:`,
1421
- o
1401
+ `[initializePlugins] Failed to initialize plugin ${o.id}:`,
1402
+ s
1422
1403
  );
1423
1404
  }
1424
- console.log(
1425
- `[ComposedStore] Initialized ${i.length} plugins with slices`
1405
+ Et.loadByPriority(), console.log(
1406
+ `[initializePlugins] Initialized ${i.length} plugins`
1426
1407
  );
1427
1408
  }
1428
- function ue() {
1429
- return Me;
1409
+ function de() {
1410
+ return qt;
1430
1411
  }
1431
1412
  const gc = (t) => t.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), mc = (t) => t.replace(
1432
1413
  /^([A-Z])|[\s-_]+(\w)/g,
1433
1414
  (e, n, i) => i ? i.toUpperCase() : n.toLowerCase()
1434
- ), Rr = (t) => {
1415
+ ), Ar = (t) => {
1435
1416
  const e = mc(t);
1436
1417
  return e.charAt(0).toUpperCase() + e.slice(1);
1437
1418
  }, Cs = (...t) => t.filter((e, n, i) => !!e && e.trim() !== "" && i.indexOf(e) === n).join(" ").trim(), vc = (t) => {
@@ -1485,14 +1466,14 @@ const vt = (t, e) => {
1485
1466
  ref: o,
1486
1467
  iconNode: e,
1487
1468
  className: Cs(
1488
- `lucide-${gc(Rr(t))}`,
1469
+ `lucide-${gc(Ar(t))}`,
1489
1470
  `lucide-${t}`,
1490
1471
  i
1491
1472
  ),
1492
1473
  ...r
1493
1474
  })
1494
1475
  );
1495
- return n.displayName = Rr(t), n;
1476
+ return n.displayName = Ar(t), n;
1496
1477
  };
1497
1478
  const xc = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]], wc = vt("chevron-down", xc);
1498
1479
  const kc = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]], Sc = vt("chevron-right", kc);
@@ -1560,12 +1541,12 @@ const Nc = [
1560
1541
  const Oc = [
1561
1542
  ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
1562
1543
  ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
1563
- ], Ps = vt("x", Oc), _i = te({});
1544
+ ], Ps = vt("x", Oc), _i = ee({});
1564
1545
  function Fi(t) {
1565
1546
  const e = et(null);
1566
1547
  return e.current === null && (e.current = t()), e.current;
1567
1548
  }
1568
- const Es = typeof window < "u", As = Es ? Hl : G, Rn = /* @__PURE__ */ te(null);
1549
+ const Es = typeof window < "u", As = Es ? Hl : G, Rn = /* @__PURE__ */ ee(null);
1569
1550
  function Ni(t, e) {
1570
1551
  t.indexOf(e) === -1 && t.push(e);
1571
1552
  }
@@ -1573,14 +1554,14 @@ function Oi(t, e) {
1573
1554
  const n = t.indexOf(e);
1574
1555
  n > -1 && t.splice(n, 1);
1575
1556
  }
1576
- const Mt = (t, e, n) => n > e ? e : n < t ? t : n;
1557
+ const jt = (t, e, n) => n > e ? e : n < t ? t : n;
1577
1558
  function oi(t, e) {
1578
1559
  return e ? `${t}. For more information and steps for solving, visit https://motion.dev/troubleshooting/${e}` : t;
1579
1560
  }
1580
- let ge = () => {
1561
+ let me = () => {
1581
1562
  }, zt = () => {
1582
1563
  };
1583
- typeof process < "u" && process.env?.NODE_ENV !== "production" && (ge = (t, e, n) => {
1564
+ typeof process < "u" && process.env?.NODE_ENV !== "production" && (me = (t, e, n) => {
1584
1565
  !t && typeof console < "u" && console.warn(oi(e, n));
1585
1566
  }, zt = (t, e, n) => {
1586
1567
  if (!t)
@@ -1625,13 +1606,13 @@ class $i {
1625
1606
  this.subscriptions.length = 0;
1626
1607
  }
1627
1608
  }
1628
- const Rt = /* @__NO_SIDE_EFFECTS__ */ (t) => t * 1e3, xt = /* @__NO_SIDE_EFFECTS__ */ (t) => t / 1e3;
1609
+ const It = /* @__NO_SIDE_EFFECTS__ */ (t) => t * 1e3, xt = /* @__NO_SIDE_EFFECTS__ */ (t) => t / 1e3;
1629
1610
  function js(t, e) {
1630
1611
  return e ? t * (1e3 / e) : 0;
1631
1612
  }
1632
- const Ir = /* @__PURE__ */ new Set();
1613
+ const Rr = /* @__PURE__ */ new Set();
1633
1614
  function Wi(t, e, n) {
1634
- t || Ir.has(e) || (console.warn(oi(e, n)), Ir.add(e));
1615
+ t || Rr.has(e) || (console.warn(oi(e, n)), Rr.add(e));
1635
1616
  }
1636
1617
  const Ls = (t, e, n) => (((1 - 3 * n + 3 * e) * t + (3 * n - 6 * e)) * t + 3 * e) * t, $c = 1e-7, Wc = 12;
1637
1618
  function Uc(t, e, n, i, r) {
@@ -1647,7 +1628,7 @@ function We(t, e, n, i) {
1647
1628
  const r = (o) => Uc(o, 0, 1, t, n);
1648
1629
  return (o) => o === 0 || o === 1 ? o : Ls(r(o), e, i);
1649
1630
  }
1650
- const Ds = (t) => (e) => e <= 0.5 ? t(2 * e) / 2 : (2 - t(2 * (1 - e))) / 2, zs = (t) => (e) => 1 - t(1 - e), Vs = /* @__PURE__ */ We(0.33, 1.53, 0.69, 0.99), Ui = /* @__PURE__ */ zs(Vs), _s = /* @__PURE__ */ Ds(Ui), Fs = (t) => (t *= 2) < 1 ? 0.5 * Ui(t) : 0.5 * (2 - Math.pow(2, -10 * (t - 1))), Hi = (t) => 1 - Math.sin(Math.acos(t)), Ns = zs(Hi), Os = Ds(Hi), Hc = /* @__PURE__ */ We(0.42, 0, 1, 1), Gc = /* @__PURE__ */ We(0, 0, 0.58, 1), Bs = /* @__PURE__ */ We(0.42, 0, 0.58, 1), Kc = (t) => Array.isArray(t) && typeof t[0] != "number", $s = (t) => Array.isArray(t) && typeof t[0] == "number", Mr = {
1631
+ const Ds = (t) => (e) => e <= 0.5 ? t(2 * e) / 2 : (2 - t(2 * (1 - e))) / 2, zs = (t) => (e) => 1 - t(1 - e), Vs = /* @__PURE__ */ We(0.33, 1.53, 0.69, 0.99), Ui = /* @__PURE__ */ zs(Vs), _s = /* @__PURE__ */ Ds(Ui), Fs = (t) => (t *= 2) < 1 ? 0.5 * Ui(t) : 0.5 * (2 - Math.pow(2, -10 * (t - 1))), Hi = (t) => 1 - Math.sin(Math.acos(t)), Ns = zs(Hi), Os = Ds(Hi), Hc = /* @__PURE__ */ We(0.42, 0, 1, 1), Gc = /* @__PURE__ */ We(0, 0, 0.58, 1), Bs = /* @__PURE__ */ We(0.42, 0, 0.58, 1), Kc = (t) => Array.isArray(t) && typeof t[0] != "number", $s = (t) => Array.isArray(t) && typeof t[0] == "number", Ir = {
1651
1632
  linear: wt,
1652
1633
  easeIn: Hc,
1653
1634
  easeInOut: Bs,
@@ -1659,13 +1640,13 @@ const Ds = (t) => (e) => e <= 0.5 ? t(2 * e) / 2 : (2 - t(2 * (1 - e))) / 2, zs
1659
1640
  backInOut: _s,
1660
1641
  backOut: Vs,
1661
1642
  anticipate: Fs
1662
- }, Yc = (t) => typeof t == "string", jr = (t) => {
1643
+ }, Yc = (t) => typeof t == "string", Mr = (t) => {
1663
1644
  if ($s(t)) {
1664
1645
  zt(t.length === 4, "Cubic bezier arrays must contain four numerical values.", "cubic-bezier-length");
1665
1646
  const [e, n, i, r] = t;
1666
1647
  return We(e, n, i, r);
1667
1648
  } else if (Yc(t))
1668
- return zt(Mr[t] !== void 0, `Invalid easing type '${t}'`, "invalid-easing-type"), Mr[t];
1649
+ return zt(Ir[t] !== void 0, `Invalid easing type '${t}'`, "invalid-easing-type"), Ir[t];
1669
1650
  return t;
1670
1651
  }, Ye = [
1671
1652
  "setup",
@@ -1755,18 +1736,18 @@ const pt = {
1755
1736
  an = t, queueMicrotask(Zc);
1756
1737
  }
1757
1738
  }, Us = (t) => (e) => typeof e == "string" && e.startsWith(t), Hs = /* @__PURE__ */ Us("--"), Jc = /* @__PURE__ */ Us("var(--"), Gi = (t) => Jc(t) ? Qc.test(t.split("/*")[0].trim()) : !1, Qc = /var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;
1758
- function Lr(t) {
1739
+ function jr(t) {
1759
1740
  return typeof t != "string" ? !1 : t.split("/*")[0].includes("var(--");
1760
1741
  }
1761
- const me = {
1742
+ const ve = {
1762
1743
  test: (t) => typeof t == "number",
1763
1744
  parse: parseFloat,
1764
1745
  transform: (t) => t
1765
1746
  }, Ve = {
1766
- ...me,
1767
- transform: (t) => Mt(0, 1, t)
1747
+ ...ve,
1748
+ transform: (t) => jt(0, 1, t)
1768
1749
  }, qe = {
1769
- ...me,
1750
+ ...ve,
1770
1751
  default: 1
1771
1752
  }, je = (t) => Math.round(t * 1e5) / 1e5, Ki = /-?(?:\d+(?:\.\d+)?|\.\d+)/gu;
1772
1753
  function tu(t) {
@@ -1782,10 +1763,10 @@ const eu = /^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s
1782
1763
  [n]: parseFloat(s),
1783
1764
  alpha: a !== void 0 ? parseFloat(a) : 1
1784
1765
  };
1785
- }, nu = (t) => Mt(0, 255, t), zn = {
1786
- ...me,
1766
+ }, nu = (t) => jt(0, 255, t), zn = {
1767
+ ...ve,
1787
1768
  transform: (t) => Math.round(nu(t))
1788
- }, Xt = {
1769
+ }, Zt = {
1789
1770
  test: /* @__PURE__ */ Yi("rgb", "red"),
1790
1771
  parse: /* @__PURE__ */ Gs("red", "green", "blue"),
1791
1772
  transform: ({ red: t, green: e, blue: n, alpha: i = 1 }) => "rgba(" + zn.transform(t) + ", " + zn.transform(e) + ", " + zn.transform(n) + ", " + je(Ve.transform(i)) + ")"
@@ -1802,23 +1783,23 @@ function iu(t) {
1802
1783
  const si = {
1803
1784
  test: /* @__PURE__ */ Yi("#"),
1804
1785
  parse: iu,
1805
- transform: Xt.transform
1786
+ transform: Zt.transform
1806
1787
  }, Ue = /* @__NO_SIDE_EFFECTS__ */ (t) => ({
1807
1788
  test: (e) => typeof e == "string" && e.endsWith(t) && e.split(" ").length === 1,
1808
1789
  parse: parseFloat,
1809
1790
  transform: (e) => `${e}${t}`
1810
- }), Nt = /* @__PURE__ */ Ue("deg"), It = /* @__PURE__ */ Ue("%"), R = /* @__PURE__ */ Ue("px"), ru = /* @__PURE__ */ Ue("vh"), ou = /* @__PURE__ */ Ue("vw"), Dr = {
1811
- ...It,
1812
- parse: (t) => It.parse(t) / 100,
1813
- transform: (t) => It.transform(t * 100)
1814
- }, ie = {
1791
+ }), Nt = /* @__PURE__ */ Ue("deg"), Mt = /* @__PURE__ */ Ue("%"), R = /* @__PURE__ */ Ue("px"), ru = /* @__PURE__ */ Ue("vh"), ou = /* @__PURE__ */ Ue("vw"), Lr = {
1792
+ ...Mt,
1793
+ parse: (t) => Mt.parse(t) / 100,
1794
+ transform: (t) => Mt.transform(t * 100)
1795
+ }, re = {
1815
1796
  test: /* @__PURE__ */ Yi("hsl", "hue"),
1816
1797
  parse: /* @__PURE__ */ Gs("hue", "saturation", "lightness"),
1817
- transform: ({ hue: t, saturation: e, lightness: n, alpha: i = 1 }) => "hsla(" + Math.round(t) + ", " + It.transform(je(e)) + ", " + It.transform(je(n)) + ", " + je(Ve.transform(i)) + ")"
1798
+ transform: ({ hue: t, saturation: e, lightness: n, alpha: i = 1 }) => "hsla(" + Math.round(t) + ", " + Mt.transform(je(e)) + ", " + Mt.transform(je(n)) + ", " + je(Ve.transform(i)) + ")"
1818
1799
  }, at = {
1819
- test: (t) => Xt.test(t) || si.test(t) || ie.test(t),
1820
- parse: (t) => Xt.test(t) ? Xt.parse(t) : ie.test(t) ? ie.parse(t) : si.parse(t),
1821
- transform: (t) => typeof t == "string" ? t : t.hasOwnProperty("red") ? Xt.transform(t) : ie.transform(t),
1800
+ test: (t) => Zt.test(t) || si.test(t) || re.test(t),
1801
+ parse: (t) => Zt.test(t) ? Zt.parse(t) : re.test(t) ? re.parse(t) : si.parse(t),
1802
+ transform: (t) => typeof t == "string" ? t : t.hasOwnProperty("red") ? Zt.transform(t) : re.transform(t),
1822
1803
  getAnimatableNone: (t) => {
1823
1804
  const e = at.parse(t);
1824
1805
  return e.alpha = 0, at.transform(e);
@@ -1827,7 +1808,7 @@ const si = {
1827
1808
  function au(t) {
1828
1809
  return isNaN(t) && typeof t == "string" && (t.match(Ki)?.length || 0) + (t.match(su)?.length || 0) > 0;
1829
1810
  }
1830
- const Ks = "number", Ys = "color", lu = "var", cu = "var(", zr = "${}", uu = /var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;
1811
+ const Ks = "number", Ys = "color", lu = "var", cu = "var(", Dr = "${}", uu = /var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;
1831
1812
  function _e(t) {
1832
1813
  const e = t.toString(), n = [], i = {
1833
1814
  color: [],
@@ -1835,7 +1816,7 @@ function _e(t) {
1835
1816
  var: []
1836
1817
  }, r = [];
1837
1818
  let o = 0;
1838
- const a = e.replace(uu, (l) => (at.test(l) ? (i.color.push(o), r.push(Ys), n.push(at.parse(l))) : l.startsWith(cu) ? (i.var.push(o), r.push(lu), n.push(l)) : (i.number.push(o), r.push(Ks), n.push(parseFloat(l))), ++o, zr)).split(zr);
1819
+ const a = e.replace(uu, (l) => (at.test(l) ? (i.color.push(o), r.push(Ys), n.push(at.parse(l))) : l.startsWith(cu) ? (i.var.push(o), r.push(lu), n.push(l)) : (i.number.push(o), r.push(Ks), n.push(parseFloat(l))), ++o, Dr)).split(Dr);
1839
1820
  return { values: n, split: a, indexes: i, types: r };
1840
1821
  }
1841
1822
  function qs(t) {
@@ -1889,20 +1870,20 @@ function pn(t, e) {
1889
1870
  const it = (t, e, n) => t + (e - t) * n, _n = (t, e, n) => {
1890
1871
  const i = t * t, r = n * (e * e - i) + i;
1891
1872
  return r < 0 ? 0 : Math.sqrt(r);
1892
- }, pu = [si, Xt, ie], gu = (t) => pu.find((e) => e.test(t));
1893
- function Vr(t) {
1873
+ }, pu = [si, Zt, re], gu = (t) => pu.find((e) => e.test(t));
1874
+ function zr(t) {
1894
1875
  const e = gu(t);
1895
- if (ge(!!e, `'${t}' is not an animatable color. Use the equivalent color code instead.`, "color-not-animatable"), !e)
1876
+ if (me(!!e, `'${t}' is not an animatable color. Use the equivalent color code instead.`, "color-not-animatable"), !e)
1896
1877
  return !1;
1897
1878
  let n = e.parse(t);
1898
- return e === ie && (n = fu(n)), n;
1879
+ return e === re && (n = fu(n)), n;
1899
1880
  }
1900
- const _r = (t, e) => {
1901
- const n = Vr(t), i = Vr(e);
1881
+ const Vr = (t, e) => {
1882
+ const n = zr(t), i = zr(e);
1902
1883
  if (!n || !i)
1903
1884
  return pn(t, e);
1904
1885
  const r = { ...n };
1905
- return (o) => (r.red = _n(n.red, i.red, o), r.green = _n(n.green, i.green, o), r.blue = _n(n.blue, i.blue, o), r.alpha = it(n.alpha, i.alpha, o), Xt.transform(r));
1886
+ return (o) => (r.red = _n(n.red, i.red, o), r.green = _n(n.green, i.green, o), r.blue = _n(n.blue, i.blue, o), r.alpha = it(n.alpha, i.alpha, o), Zt.transform(r));
1906
1887
  }, ai = /* @__PURE__ */ new Set(["none", "hidden"]);
1907
1888
  function mu(t, e) {
1908
1889
  return ai.has(t) ? (n) => n <= 0 ? t : e : (n) => n >= 1 ? e : t;
@@ -1911,7 +1892,7 @@ function vu(t, e) {
1911
1892
  return (n) => it(t, e, n);
1912
1893
  }
1913
1894
  function qi(t) {
1914
- return typeof t == "number" ? vu : typeof t == "string" ? Gi(t) ? pn : at.test(t) ? _r : xu : Array.isArray(t) ? Zs : typeof t == "object" ? at.test(t) ? _r : bu : pn;
1895
+ return typeof t == "number" ? vu : typeof t == "string" ? Gi(t) ? pn : at.test(t) ? Vr : xu : Array.isArray(t) ? Zs : typeof t == "object" ? at.test(t) ? Vr : bu : pn;
1915
1896
  }
1916
1897
  function Zs(t, e) {
1917
1898
  const n = [...t], i = n.length, r = t.map((o, s) => qi(o)(o, e[s]));
@@ -1941,7 +1922,7 @@ function yu(t, e) {
1941
1922
  }
1942
1923
  const xu = (t, e) => {
1943
1924
  const n = Ut.createTransformer(e), i = _e(t), r = _e(e);
1944
- return i.indexes.var.length === r.indexes.var.length && i.indexes.color.length === r.indexes.color.length && i.indexes.number.length >= r.indexes.number.length ? ai.has(t) && !r.values.length || ai.has(e) && !i.values.length ? mu(t, e) : $e(Zs(yu(i, r), r.values), n) : (ge(!0, `Complex values '${t}' and '${e}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`, "complex-values-different"), pn(t, e));
1925
+ return i.indexes.var.length === r.indexes.var.length && i.indexes.color.length === r.indexes.color.length && i.indexes.number.length >= r.indexes.number.length ? ai.has(t) && !r.values.length || ai.has(e) && !i.values.length ? mu(t, e) : $e(Zs(yu(i, r), r.values), n) : (me(!0, `Complex values '${t}' and '${e}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`, "complex-values-different"), pn(t, e));
1945
1926
  };
1946
1927
  function Js(t, e, n) {
1947
1928
  return typeof t == "number" && typeof e == "number" && typeof n == "number" ? it(t, e, n) : qi(t)(t, e);
@@ -2016,9 +1997,9 @@ const nt = {
2016
1997
  }, Fn = 1e-3;
2017
1998
  function Cu({ duration: t = nt.duration, bounce: e = nt.bounce, velocity: n = nt.velocity, mass: i = nt.mass }) {
2018
1999
  let r, o;
2019
- ge(t <= /* @__PURE__ */ Rt(nt.maxDuration), "Spring duration must be 10 seconds or less", "spring-duration-limit");
2000
+ me(t <= /* @__PURE__ */ It(nt.maxDuration), "Spring duration must be 10 seconds or less", "spring-duration-limit");
2020
2001
  let s = 1 - e;
2021
- s = Mt(nt.minDamping, nt.maxDamping, s), t = Mt(nt.minDuration, nt.maxDuration, /* @__PURE__ */ xt(t)), s < 1 ? (r = (c) => {
2002
+ s = jt(nt.minDamping, nt.maxDamping, s), t = jt(nt.minDuration, nt.maxDuration, /* @__PURE__ */ xt(t)), s < 1 ? (r = (c) => {
2022
2003
  const u = c * s, h = u * t, f = u - n, p = li(c, s), v = Math.exp(-h);
2023
2004
  return Fn - f / p * v;
2024
2005
  }, o = (c) => {
@@ -2032,7 +2013,7 @@ function Cu({ duration: t = nt.duration, bounce: e = nt.bounce, velocity: n = nt
2032
2013
  return u * h;
2033
2014
  });
2034
2015
  const a = 5 / t, l = Pu(r, o, a);
2035
- if (t = /* @__PURE__ */ Rt(t), isNaN(l))
2016
+ if (t = /* @__PURE__ */ It(t), isNaN(l))
2036
2017
  return {
2037
2018
  stiffness: nt.stiffness,
2038
2019
  damping: nt.damping,
@@ -2058,7 +2039,7 @@ function li(t, e) {
2058
2039
  return t * Math.sqrt(1 - e * e);
2059
2040
  }
2060
2041
  const Eu = ["duration", "bounce"], Au = ["stiffness", "damping", "mass"];
2061
- function Fr(t, e) {
2042
+ function _r(t, e) {
2062
2043
  return e.some((n) => t[n] !== void 0);
2063
2044
  }
2064
2045
  function Ru(t) {
@@ -2070,9 +2051,9 @@ function Ru(t) {
2070
2051
  isResolvedFromDuration: !1,
2071
2052
  ...t
2072
2053
  };
2073
- if (!Fr(t, Au) && Fr(t, Eu))
2054
+ if (!_r(t, Au) && _r(t, Eu))
2074
2055
  if (t.visualDuration) {
2075
- const n = t.visualDuration, i = 2 * Math.PI / (n * 1.2), r = i * i, o = 2 * Mt(0.05, 1, 1 - (t.bounce || 0)) * Math.sqrt(r);
2056
+ const n = t.visualDuration, i = 2 * Math.PI / (n * 1.2), r = i * i, o = 2 * jt(0.05, 1, 1 - (t.bounce || 0)) * Math.sqrt(r);
2076
2057
  e = {
2077
2058
  ...e,
2078
2059
  mass: nt.mass,
@@ -2125,7 +2106,7 @@ function mn(t = nt.visualDuration, e = nt.bounce) {
2125
2106
  a.done = E >= h;
2126
2107
  else {
2127
2108
  let L = E === 0 ? v : 0;
2128
- b < 1 && (L = E === 0 ? /* @__PURE__ */ Rt(v) : ta(k, E, z));
2109
+ b < 1 && (L = E === 0 ? /* @__PURE__ */ It(v) : ta(k, E, z));
2129
2110
  const w = Math.abs(L) <= i, F = Math.abs(s - z) <= r;
2130
2111
  a.done = w && F;
2131
2112
  }
@@ -2142,7 +2123,7 @@ function mn(t = nt.visualDuration, e = nt.bounce) {
2142
2123
  }
2143
2124
  mn.applyToOptions = (t) => {
2144
2125
  const e = ku(t, 100, mn);
2145
- return t.ease = e.ease, t.duration = /* @__PURE__ */ Rt(e.duration), t.type = "keyframes", t;
2126
+ return t.ease = e.ease, t.duration = /* @__PURE__ */ It(e.duration), t.type = "keyframes", t;
2146
2127
  };
2147
2128
  function ci({ keyframes: t, velocity: e = 0, power: n = 0.8, timeConstant: i = 325, bounceDamping: r = 10, bounceStiffness: o = 500, modifyTarget: s, min: a, max: l, restDelta: c = 0.5, restSpeed: u }) {
2148
2129
  const h = t[0], f = {
@@ -2206,7 +2187,7 @@ function Mu(t, e, { clamp: n = !0, ease: i, mixer: r } = {}) {
2206
2187
  const f = /* @__PURE__ */ ze(t[h], t[h + 1], u);
2207
2188
  return a[h](f);
2208
2189
  };
2209
- return n ? (u) => c(Mt(t[0], t[o - 1], u)) : c;
2190
+ return n ? (u) => c(jt(t[0], t[o - 1], u)) : c;
2210
2191
  }
2211
2192
  function ju(t, e) {
2212
2193
  const n = t[t.length - 1];
@@ -2225,8 +2206,8 @@ function Du(t, e) {
2225
2206
  function zu(t, e) {
2226
2207
  return t.map(() => e || Bs).splice(0, t.length - 1);
2227
2208
  }
2228
- function re({ duration: t = 300, keyframes: e, times: n, ease: i = "easeInOut" }) {
2229
- const r = Kc(i) ? i.map(jr) : jr(i), o = {
2209
+ function oe({ duration: t = 300, keyframes: e, times: n, ease: i = "easeInOut" }) {
2210
+ const r = Kc(i) ? i.map(Mr) : Mr(i), o = {
2230
2211
  done: !1,
2231
2212
  value: e[0]
2232
2213
  }, s = Du(
@@ -2250,8 +2231,8 @@ function Zi(t, { repeat: e, repeatType: n = "loop" }, i, r = 1) {
2250
2231
  const _u = {
2251
2232
  decay: ci,
2252
2233
  inertia: ci,
2253
- tween: re,
2254
- keyframes: re,
2234
+ tween: oe,
2235
+ keyframes: oe,
2255
2236
  spring: mn
2256
2237
  };
2257
2238
  function ea(t) {
@@ -2292,10 +2273,10 @@ class Qi extends Ji {
2292
2273
  initAnimation() {
2293
2274
  const { options: e } = this;
2294
2275
  ea(e);
2295
- const { type: n = re, repeat: i = 0, repeatDelay: r = 0, repeatType: o, velocity: s = 0 } = e;
2276
+ const { type: n = oe, repeat: i = 0, repeatDelay: r = 0, repeatType: o, velocity: s = 0 } = e;
2296
2277
  let { keyframes: a } = e;
2297
- const l = n || re;
2298
- process.env.NODE_ENV !== "production" && l !== re && zt(a.length <= 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${a}`, "spring-two-frames"), l !== re && typeof a[0] != "number" && (this.mixKeyframes = $e(Fu, Js(a[0], a[1])), a = [0, 100]);
2278
+ const l = n || oe;
2279
+ process.env.NODE_ENV !== "production" && l !== oe && zt(a.length <= 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${a}`, "spring-two-frames"), l !== oe && typeof a[0] != "number" && (this.mixKeyframes = $e(Fu, Js(a[0], a[1])), a = [0, 100]);
2299
2280
  const c = l({ ...e, keyframes: a });
2300
2281
  o === "mirror" && (this.mirroredGenerator = l({
2301
2282
  ...e,
@@ -2321,7 +2302,7 @@ class Qi extends Ji {
2321
2302
  if (h) {
2322
2303
  const w = Math.min(this.currentTime, r) / a;
2323
2304
  let F = Math.floor(w), $ = w % 1;
2324
- !$ && w >= 1 && ($ = 1), $ === 1 && F--, F = Math.min(F, h + 1), F % 2 && (f === "reverse" ? ($ = 1 - $, p && ($ -= p / a)) : f === "mirror" && (I = s)), k = Mt(0, 1, $) * a;
2305
+ !$ && w >= 1 && ($ = 1), $ === 1 && F--, F = Math.min(F, h + 1), F % 2 && (f === "reverse" ? ($ = 1 - $, p && ($ -= p / a)) : f === "mirror" && (I = s)), k = jt(0, 1, $) * a;
2325
2306
  }
2326
2307
  const E = T ? { done: !1, value: u[0] } : I.next(k);
2327
2308
  o && (E.value = o(E.value));
@@ -2349,7 +2330,7 @@ class Qi extends Ji {
2349
2330
  return /* @__PURE__ */ xt(this.currentTime);
2350
2331
  }
2351
2332
  set time(e) {
2352
- e = /* @__PURE__ */ Rt(e), this.currentTime = e, this.startTime === null || this.holdTime !== null || this.playbackSpeed === 0 ? this.holdTime = e : this.driver && (this.startTime = this.driver.now() - e / this.playbackSpeed), this.driver?.start(!1);
2333
+ e = /* @__PURE__ */ It(e), this.currentTime = e, this.startTime === null || this.holdTime !== null || this.playbackSpeed === 0 ? this.holdTime = e : this.driver && (this.startTime = this.driver.now() - e / this.playbackSpeed), this.driver?.start(!1);
2353
2334
  }
2354
2335
  get speed() {
2355
2336
  return this.playbackSpeed;
@@ -2396,8 +2377,8 @@ function Nu(t) {
2396
2377
  for (let e = 1; e < t.length; e++)
2397
2378
  t[e] ?? (t[e] = t[e - 1]);
2398
2379
  }
2399
- const Zt = (t) => t * 180 / Math.PI, ui = (t) => {
2400
- const e = Zt(Math.atan2(t[1], t[0]));
2380
+ const Jt = (t) => t * 180 / Math.PI, ui = (t) => {
2381
+ const e = Jt(Math.atan2(t[1], t[0]));
2401
2382
  return di(e);
2402
2383
  }, Ou = {
2403
2384
  x: 4,
@@ -2409,25 +2390,25 @@ const Zt = (t) => t * 180 / Math.PI, ui = (t) => {
2409
2390
  scale: (t) => (Math.abs(t[0]) + Math.abs(t[3])) / 2,
2410
2391
  rotate: ui,
2411
2392
  rotateZ: ui,
2412
- skewX: (t) => Zt(Math.atan(t[1])),
2413
- skewY: (t) => Zt(Math.atan(t[2])),
2393
+ skewX: (t) => Jt(Math.atan(t[1])),
2394
+ skewY: (t) => Jt(Math.atan(t[2])),
2414
2395
  skew: (t) => (Math.abs(t[1]) + Math.abs(t[2])) / 2
2415
- }, di = (t) => (t = t % 360, t < 0 && (t += 360), t), Nr = ui, Or = (t) => Math.sqrt(t[0] * t[0] + t[1] * t[1]), Br = (t) => Math.sqrt(t[4] * t[4] + t[5] * t[5]), Bu = {
2396
+ }, di = (t) => (t = t % 360, t < 0 && (t += 360), t), Fr = ui, Nr = (t) => Math.sqrt(t[0] * t[0] + t[1] * t[1]), Or = (t) => Math.sqrt(t[4] * t[4] + t[5] * t[5]), Bu = {
2416
2397
  x: 12,
2417
2398
  y: 13,
2418
2399
  z: 14,
2419
2400
  translateX: 12,
2420
2401
  translateY: 13,
2421
2402
  translateZ: 14,
2422
- scaleX: Or,
2423
- scaleY: Br,
2424
- scale: (t) => (Or(t) + Br(t)) / 2,
2425
- rotateX: (t) => di(Zt(Math.atan2(t[6], t[5]))),
2426
- rotateY: (t) => di(Zt(Math.atan2(-t[2], t[0]))),
2427
- rotateZ: Nr,
2428
- rotate: Nr,
2429
- skewX: (t) => Zt(Math.atan(t[4])),
2430
- skewY: (t) => Zt(Math.atan(t[1])),
2403
+ scaleX: Nr,
2404
+ scaleY: Or,
2405
+ scale: (t) => (Nr(t) + Or(t)) / 2,
2406
+ rotateX: (t) => di(Jt(Math.atan2(t[6], t[5]))),
2407
+ rotateY: (t) => di(Jt(Math.atan2(-t[2], t[0]))),
2408
+ rotateZ: Fr,
2409
+ rotate: Fr,
2410
+ skewX: (t) => Jt(Math.atan(t[4])),
2411
+ skewY: (t) => Jt(Math.atan(t[1])),
2431
2412
  skew: (t) => (Math.abs(t[1]) + Math.abs(t[4])) / 2
2432
2413
  };
2433
2414
  function hi(t) {
@@ -2456,7 +2437,7 @@ const $u = (t, e) => {
2456
2437
  function Wu(t) {
2457
2438
  return parseFloat(t.trim());
2458
2439
  }
2459
- const ve = [
2440
+ const be = [
2460
2441
  "transformPerspective",
2461
2442
  "x",
2462
2443
  "y",
@@ -2474,7 +2455,7 @@ const ve = [
2474
2455
  "skew",
2475
2456
  "skewX",
2476
2457
  "skewY"
2477
- ], be = new Set(ve), $r = (t) => t === me || t === R, Uu = /* @__PURE__ */ new Set(["x", "y", "z"]), Hu = ve.filter((t) => !Uu.has(t));
2458
+ ], ye = new Set(be), Br = (t) => t === ve || t === R, Uu = /* @__PURE__ */ new Set(["x", "y", "z"]), Hu = be.filter((t) => !Uu.has(t));
2478
2459
  function Gu(t) {
2479
2460
  const e = [];
2480
2461
  return Hu.forEach((n) => {
@@ -2496,11 +2477,11 @@ const Ot = {
2496
2477
  };
2497
2478
  Ot.translateX = Ot.x;
2498
2479
  Ot.translateY = Ot.y;
2499
- const Qt = /* @__PURE__ */ new Set();
2480
+ const te = /* @__PURE__ */ new Set();
2500
2481
  let pi = !1, gi = !1, mi = !1;
2501
2482
  function na() {
2502
2483
  if (gi) {
2503
- const t = Array.from(Qt).filter((i) => i.needsMeasurement), e = new Set(t.map((i) => i.element)), n = /* @__PURE__ */ new Map();
2484
+ const t = Array.from(te).filter((i) => i.needsMeasurement), e = new Set(t.map((i) => i.element)), n = /* @__PURE__ */ new Map();
2504
2485
  e.forEach((i) => {
2505
2486
  const r = Gu(i);
2506
2487
  r.length && (n.set(i, r), i.render());
@@ -2514,10 +2495,10 @@ function na() {
2514
2495
  i.suspendedScrollY !== void 0 && window.scrollTo(0, i.suspendedScrollY);
2515
2496
  });
2516
2497
  }
2517
- gi = !1, pi = !1, Qt.forEach((t) => t.complete(mi)), Qt.clear();
2498
+ gi = !1, pi = !1, te.forEach((t) => t.complete(mi)), te.clear();
2518
2499
  }
2519
2500
  function ia() {
2520
- Qt.forEach((t) => {
2501
+ te.forEach((t) => {
2521
2502
  t.readKeyframes(), t.needsMeasurement && (gi = !0);
2522
2503
  });
2523
2504
  }
@@ -2529,7 +2510,7 @@ class tr {
2529
2510
  this.state = "pending", this.isAsync = !1, this.needsMeasurement = !1, this.unresolvedKeyframes = [...e], this.onComplete = n, this.name = i, this.motionValue = r, this.element = o, this.isAsync = s;
2530
2511
  }
2531
2512
  scheduleResolve() {
2532
- this.state = "scheduled", this.isAsync ? (Qt.add(this), pi || (pi = !0, tt.read(ia), tt.resolveKeyframes(na))) : (this.readKeyframes(), this.complete());
2513
+ this.state = "scheduled", this.isAsync ? (te.add(this), pi || (pi = !0, tt.read(ia), tt.resolveKeyframes(na))) : (this.readKeyframes(), this.complete());
2533
2514
  }
2534
2515
  readKeyframes() {
2535
2516
  const { unresolvedKeyframes: e, name: n, element: i, motionValue: r } = this;
@@ -2554,10 +2535,10 @@ class tr {
2554
2535
  measureEndState() {
2555
2536
  }
2556
2537
  complete(e = !1) {
2557
- this.state = "complete", this.onComplete(this.unresolvedKeyframes, this.finalKeyframe, e), Qt.delete(this);
2538
+ this.state = "complete", this.onComplete(this.unresolvedKeyframes, this.finalKeyframe, e), te.delete(this);
2558
2539
  }
2559
2540
  cancel() {
2560
- this.state === "scheduled" && (Qt.delete(this), this.state = "pending");
2541
+ this.state === "scheduled" && (te.delete(this), this.state = "pending");
2561
2542
  }
2562
2543
  resume() {
2563
2544
  this.state === "pending" && this.scheduleResolve();
@@ -2579,20 +2560,20 @@ const ra = /* @__PURE__ */ Ju(() => {
2579
2560
  return !1;
2580
2561
  }
2581
2562
  return !0;
2582
- }, "linearEasing"), Re = ([t, e, n, i]) => `cubic-bezier(${t}, ${e}, ${n}, ${i})`, Wr = {
2563
+ }, "linearEasing"), Ie = ([t, e, n, i]) => `cubic-bezier(${t}, ${e}, ${n}, ${i})`, $r = {
2583
2564
  linear: "linear",
2584
2565
  ease: "ease",
2585
2566
  easeIn: "ease-in",
2586
2567
  easeOut: "ease-out",
2587
2568
  easeInOut: "ease-in-out",
2588
- circIn: /* @__PURE__ */ Re([0, 0.65, 0.55, 1]),
2589
- circOut: /* @__PURE__ */ Re([0.55, 0, 1, 0.45]),
2590
- backIn: /* @__PURE__ */ Re([0.31, 0.01, 0.66, -0.59]),
2591
- backOut: /* @__PURE__ */ Re([0.33, 1.53, 0.69, 0.99])
2569
+ circIn: /* @__PURE__ */ Ie([0, 0.65, 0.55, 1]),
2570
+ circOut: /* @__PURE__ */ Ie([0.55, 0, 1, 0.45]),
2571
+ backIn: /* @__PURE__ */ Ie([0.31, 0.01, 0.66, -0.59]),
2572
+ backOut: /* @__PURE__ */ Ie([0.33, 1.53, 0.69, 0.99])
2592
2573
  };
2593
2574
  function oa(t, e) {
2594
2575
  if (t)
2595
- return typeof t == "function" ? ra() ? Qs(t, e) : "ease-out" : $s(t) ? Re(t) : Array.isArray(t) ? t.map((n) => oa(n, e) || Wr.easeOut) : Wr[t];
2576
+ return typeof t == "function" ? ra() ? Qs(t, e) : "ease-out" : $s(t) ? Ie(t) : Array.isArray(t) ? t.map((n) => oa(n, e) || $r.easeOut) : $r[t];
2596
2577
  }
2597
2578
  function Qu(t, e, n, { delay: i = 0, duration: r = 300, repeat: o = 0, repeatType: s = "loop", ease: a = "easeOut", times: l } = {}, c = void 0) {
2598
2579
  const u = {
@@ -2681,7 +2662,7 @@ class ed extends Ji {
2681
2662
  return /* @__PURE__ */ xt(Number(this.animation.currentTime) || 0);
2682
2663
  }
2683
2664
  set time(e) {
2684
- this.manualStartTime = null, this.finishedTime = null, this.animation.currentTime = /* @__PURE__ */ Rt(e);
2665
+ this.manualStartTime = null, this.finishedTime = null, this.animation.currentTime = /* @__PURE__ */ It(e);
2685
2666
  }
2686
2667
  /**
2687
2668
  * The playback speed of the animation.
@@ -2744,11 +2725,11 @@ class rd extends ed {
2744
2725
  const a = new Qi({
2745
2726
  ...s,
2746
2727
  autoplay: !1
2747
- }), l = Math.max(Nn, pt.now() - this.startTime), c = Mt(0, Nn, l - Nn);
2728
+ }), l = Math.max(Nn, pt.now() - this.startTime), c = jt(0, Nn, l - Nn);
2748
2729
  n.setWithVelocity(a.sample(Math.max(0, l - c)).value, a.sample(l).value, c), a.stop();
2749
2730
  }
2750
2731
  }
2751
- const Ur = (t, e) => e === "zIndex" ? !1 : !!(typeof t == "number" || Array.isArray(t) || typeof t == "string" && // It's animatable if we have a string
2732
+ const Wr = (t, e) => e === "zIndex" ? !1 : !!(typeof t == "number" || Array.isArray(t) || typeof t == "string" && // It's animatable if we have a string
2752
2733
  (Ut.test(t) || t === "0") && // And it contains numbers and/or colors
2753
2734
  !t.startsWith("url("));
2754
2735
  function od(t) {
@@ -2765,8 +2746,8 @@ function sd(t, e, n, i) {
2765
2746
  return !1;
2766
2747
  if (e === "display" || e === "visibility")
2767
2748
  return !0;
2768
- const o = t[t.length - 1], s = Ur(r, e), a = Ur(o, e);
2769
- return ge(s === a, `You are trying to animate ${e} from "${r}" to "${o}". "${s ? o : r}" is not an animatable value.`, "value-not-animatable"), !s || !a ? !1 : od(t) || (n === "spring" || sa(n)) && i;
2749
+ const o = t[t.length - 1], s = Wr(r, e), a = Wr(o, e);
2750
+ return me(s === a, `You are trying to animate ${e} from "${r}" to "${o}". "${s ? o : r}" is not an animatable value.`, "value-not-animatable"), !s || !a ? !1 : od(t) || (n === "spring" || sa(n)) && i;
2770
2751
  }
2771
2752
  function vi(t) {
2772
2753
  t.duration = 0, t.type = "keyframes";
@@ -2919,7 +2900,7 @@ const gd = {
2919
2900
  type: "keyframes",
2920
2901
  ease: [0.25, 0.1, 0.35, 1],
2921
2902
  duration: 0.3
2922
- }, yd = (t, { keyframes: e }) => e.length > 2 ? vd : be.has(t) ? t.startsWith("scale") ? md(e[1]) : gd : bd;
2903
+ }, yd = (t, { keyframes: e }) => e.length > 2 ? vd : ye.has(t) ? t.startsWith("scale") ? md(e[1]) : gd : bd;
2923
2904
  function xd({ when: t, delay: e, delayChildren: n, staggerChildren: i, staggerDirection: r, repeat: o, repeatType: s, repeatDelay: a, from: l, elapsed: c, ...u }) {
2924
2905
  return !!Object.keys(u).length;
2925
2906
  }
@@ -2935,7 +2916,7 @@ function ca(t, e, n, i = 0, r = 1) {
2935
2916
  const nr = (t, e, n, i = {}, r, o) => (s) => {
2936
2917
  const a = er(i, t) || {}, l = a.delay || i.delay || 0;
2937
2918
  let { elapsed: c = 0 } = i;
2938
- c = c - /* @__PURE__ */ Rt(l);
2919
+ c = c - /* @__PURE__ */ It(l);
2939
2920
  const u = {
2940
2921
  keyframes: Array.isArray(n) ? n : [null, n],
2941
2922
  ease: "easeOut",
@@ -2952,7 +2933,7 @@ const nr = (t, e, n, i = {}, r, o) => (s) => {
2952
2933
  motionValue: e,
2953
2934
  element: o ? void 0 : r
2954
2935
  };
2955
- xd(a) || Object.assign(u, yd(t, u)), u.duration && (u.duration = /* @__PURE__ */ Rt(u.duration)), u.repeatDelay && (u.repeatDelay = /* @__PURE__ */ Rt(u.repeatDelay)), u.from !== void 0 && (u.keyframes[0] = u.from);
2936
+ xd(a) || Object.assign(u, yd(t, u)), u.duration && (u.duration = /* @__PURE__ */ It(u.duration)), u.repeatDelay && (u.repeatDelay = /* @__PURE__ */ It(u.repeatDelay)), u.from !== void 0 && (u.keyframes[0] = u.from);
2956
2937
  let h = !1;
2957
2938
  if ((u.type === !1 || u.duration === 0 && !u.repeatDelay) && (vi(u), u.delay === 0 && (h = !0)), (Vt.instantAnimations || Vt.skipAnimations) && (h = !0, vi(u), u.delay = 0), u.allowFlatten = !a.type && !a.ease, h && !o && e.get() !== void 0) {
2958
2939
  const f = kd(u.keyframes, a);
@@ -2971,8 +2952,8 @@ const nr = (t, e, n, i = {}, r, o) => (s) => {
2971
2952
  "left",
2972
2953
  "right",
2973
2954
  "bottom",
2974
- ...ve
2975
- ]), Hr = 30, Sd = (t) => !isNaN(parseFloat(t));
2955
+ ...be
2956
+ ]), Ur = 30, Sd = (t) => !isNaN(parseFloat(t));
2976
2957
  class Cd {
2977
2958
  /**
2978
2959
  * @param init - The initiating value
@@ -3118,9 +3099,9 @@ class Cd {
3118
3099
  */
3119
3100
  getVelocity() {
3120
3101
  const e = pt.now();
3121
- if (!this.canTrackVelocity || this.prevFrameValue === void 0 || e - this.updatedAt > Hr)
3102
+ if (!this.canTrackVelocity || this.prevFrameValue === void 0 || e - this.updatedAt > Ur)
3122
3103
  return 0;
3123
- const n = Math.min(this.updatedAt - this.prevUpdatedAt, Hr);
3104
+ const n = Math.min(this.updatedAt - this.prevUpdatedAt, Ur);
3124
3105
  return js(parseFloat(this.current) - parseFloat(this.prevFrameValue), n);
3125
3106
  }
3126
3107
  /**
@@ -3172,10 +3153,10 @@ class Cd {
3172
3153
  this.dependents?.clear(), this.events.destroy?.notify(), this.clearListeners(), this.stop(), this.stopPassiveEffect && this.stopPassiveEffect();
3173
3154
  }
3174
3155
  }
3175
- function de(t, e) {
3156
+ function he(t, e) {
3176
3157
  return new Cd(t, e);
3177
3158
  }
3178
- function Gr(t) {
3159
+ function Hr(t) {
3179
3160
  const e = [{}, {}];
3180
3161
  return t?.values.forEach((n, i) => {
3181
3162
  e[0][i] = n.get(), e[1][i] = n.getVelocity();
@@ -3183,28 +3164,28 @@ function Gr(t) {
3183
3164
  }
3184
3165
  function ir(t, e, n, i) {
3185
3166
  if (typeof e == "function") {
3186
- const [r, o] = Gr(i);
3167
+ const [r, o] = Hr(i);
3187
3168
  e = e(n !== void 0 ? n : t.custom, r, o);
3188
3169
  }
3189
3170
  if (typeof e == "string" && (e = t.variants && t.variants[e]), typeof e == "function") {
3190
- const [r, o] = Gr(i);
3171
+ const [r, o] = Hr(i);
3191
3172
  e = e(n !== void 0 ? n : t.custom, r, o);
3192
3173
  }
3193
3174
  return e;
3194
3175
  }
3195
- function le(t, e, n) {
3176
+ function ce(t, e, n) {
3196
3177
  const i = t.getProps();
3197
3178
  return ir(i, e, n !== void 0 ? n : i.custom, t);
3198
3179
  }
3199
3180
  const bi = (t) => Array.isArray(t);
3200
3181
  function Td(t, e, n) {
3201
- t.hasValue(e) ? t.getValue(e).set(n) : t.addValue(e, de(n));
3182
+ t.hasValue(e) ? t.getValue(e).set(n) : t.addValue(e, he(n));
3202
3183
  }
3203
3184
  function Pd(t) {
3204
3185
  return bi(t) ? t[t.length - 1] || 0 : t;
3205
3186
  }
3206
3187
  function Ed(t, e) {
3207
- const n = le(t, e);
3188
+ const n = ce(t, e);
3208
3189
  let { transitionEnd: i = {}, transition: r = {}, ...o } = n || {};
3209
3190
  o = { ...o, ...i };
3210
3191
  for (const s in o) {
@@ -3269,7 +3250,7 @@ function fa(t, e, { delay: n = 0, transitionOverride: i, type: r } = {}) {
3269
3250
  }), l;
3270
3251
  }
3271
3252
  function xi(t, e, n = {}) {
3272
- const i = le(t, e, n.type === "exit" ? t.presenceContext?.custom : void 0);
3253
+ const i = ce(t, e, n.type === "exit" ? t.presenceContext?.custom : void 0);
3273
3254
  let { transition: r = t.getDefaultTransition() || {} } = i || {};
3274
3255
  n.transitionOverride && (r = n.transitionOverride);
3275
3256
  const o = i ? () => Promise.all(fa(t, i, n)) : () => Promise.resolve(), s = t.variantChildren && t.variantChildren.size ? (l = 0) => {
@@ -3300,7 +3281,7 @@ function jd(t, e, n = {}) {
3300
3281
  } else if (typeof e == "string")
3301
3282
  i = xi(t, e, n);
3302
3283
  else {
3303
- const r = typeof e == "function" ? le(t, e, n.custom) : e;
3284
+ const r = typeof e == "function" ? ce(t, e, n.custom) : e;
3304
3285
  i = Promise.all(fa(t, r, n));
3305
3286
  }
3306
3287
  return i.then(() => {
@@ -3310,7 +3291,7 @@ function jd(t, e, n = {}) {
3310
3291
  const Ld = {
3311
3292
  test: (t) => t === "auto",
3312
3293
  parse: (t) => t
3313
- }, pa = (t) => (e) => e.test(t), ga = [me, R, It, Nt, ou, ru, Ld], Kr = (t) => ga.find(pa(t));
3294
+ }, pa = (t) => (e) => e.test(t), ga = [ve, R, Mt, Nt, ou, ru, Ld], Gr = (t) => ga.find(pa(t));
3314
3295
  function Dd(t) {
3315
3296
  return typeof t == "number" ? t === 0 : t !== null ? t === "none" || t === "0" || Ms(t) : !0;
3316
3297
  }
@@ -3332,8 +3313,8 @@ const _d = /\b([a-z-]*)\(.*?\)/gu, wi = {
3332
3313
  const e = t.match(_d);
3333
3314
  return e ? e.map(Vd).join(" ") : t;
3334
3315
  }
3335
- }, Yr = {
3336
- ...me,
3316
+ }, Kr = {
3317
+ ...ve,
3337
3318
  transform: Math.round
3338
3319
  }, Fd = {
3339
3320
  rotate: Nt,
@@ -3357,8 +3338,8 @@ const _d = /\b([a-z-]*)\(.*?\)/gu, wi = {
3357
3338
  perspective: R,
3358
3339
  transformPerspective: R,
3359
3340
  opacity: Ve,
3360
- originX: Dr,
3361
- originY: Dr,
3341
+ originX: Lr,
3342
+ originY: Lr,
3362
3343
  originZ: R
3363
3344
  }, or = {
3364
3345
  // Border props
@@ -3416,11 +3397,11 @@ const _d = /\b([a-z-]*)\(.*?\)/gu, wi = {
3416
3397
  backgroundPositionX: R,
3417
3398
  backgroundPositionY: R,
3418
3399
  ...Fd,
3419
- zIndex: Yr,
3400
+ zIndex: Kr,
3420
3401
  // SVG
3421
3402
  fillOpacity: Ve,
3422
3403
  strokeOpacity: Ve,
3423
- numOctaves: Yr
3404
+ numOctaves: Kr
3424
3405
  }, Nd = {
3425
3406
  ...or,
3426
3407
  // Color props
@@ -3471,13 +3452,13 @@ class $d extends tr {
3471
3452
  }
3472
3453
  if (this.resolveNoneKeyframes(), !ua.has(i) || e.length !== 2)
3473
3454
  return;
3474
- const [r, o] = e, s = Kr(r), a = Kr(o), l = Lr(r), c = Lr(o);
3455
+ const [r, o] = e, s = Gr(r), a = Gr(o), l = jr(r), c = jr(o);
3475
3456
  if (l !== c && Ot[i]) {
3476
3457
  this.needsMeasurement = !0;
3477
3458
  return;
3478
3459
  }
3479
3460
  if (s !== a)
3480
- if ($r(s) && $r(a))
3461
+ if (Br(s) && Br(a))
3481
3462
  for (let u = 0; u < e.length; u++) {
3482
3463
  const h = e[u];
3483
3464
  typeof h == "string" && (e[u] = parseFloat(h));
@@ -3546,18 +3527,18 @@ function wa(t, e) {
3546
3527
  };
3547
3528
  return [n, r, () => i.abort()];
3548
3529
  }
3549
- function qr(t) {
3530
+ function Yr(t) {
3550
3531
  return !(t.pointerType === "touch" || xa());
3551
3532
  }
3552
3533
  function Hd(t, e, n = {}) {
3553
3534
  const [i, r, o] = wa(t, n), s = (a) => {
3554
- if (!qr(a))
3535
+ if (!Yr(a))
3555
3536
  return;
3556
3537
  const { target: l } = a, c = e(l, a);
3557
3538
  if (typeof c != "function" || !l)
3558
3539
  return;
3559
3540
  const u = (h) => {
3560
- qr(h) && (c(h), l.removeEventListener("pointerleave", u));
3541
+ Yr(h) && (c(h), l.removeEventListener("pointerleave", u));
3561
3542
  };
3562
3543
  l.addEventListener("pointerleave", u, r);
3563
3544
  };
@@ -3576,7 +3557,7 @@ function Sa(t) {
3576
3557
  return Gd.has(t.tagName) || t.isContentEditable === !0;
3577
3558
  }
3578
3559
  const ln = /* @__PURE__ */ new WeakSet();
3579
- function Xr(t) {
3560
+ function qr(t) {
3580
3561
  return (e) => {
3581
3562
  e.key === "Enter" && t(e);
3582
3563
  };
@@ -3588,28 +3569,28 @@ const Kd = (t, e) => {
3588
3569
  const n = t.currentTarget;
3589
3570
  if (!n)
3590
3571
  return;
3591
- const i = Xr(() => {
3572
+ const i = qr(() => {
3592
3573
  if (ln.has(n))
3593
3574
  return;
3594
3575
  On(n, "down");
3595
- const r = Xr(() => {
3576
+ const r = qr(() => {
3596
3577
  On(n, "up");
3597
3578
  }), o = () => On(n, "cancel");
3598
3579
  n.addEventListener("keyup", r, e), n.addEventListener("blur", o, e);
3599
3580
  });
3600
3581
  n.addEventListener("keydown", i, e), n.addEventListener("blur", () => n.removeEventListener("keydown", i), e);
3601
3582
  };
3602
- function Zr(t) {
3583
+ function Xr(t) {
3603
3584
  return ar(t) && !xa();
3604
3585
  }
3605
3586
  function Yd(t, e, n = {}) {
3606
3587
  const [i, r, o] = wa(t, n), s = (a) => {
3607
3588
  const l = a.currentTarget;
3608
- if (!Zr(a))
3589
+ if (!Xr(a))
3609
3590
  return;
3610
3591
  ln.add(l);
3611
3592
  const c = e(l, a), u = (p, v) => {
3612
- window.removeEventListener("pointerup", h), window.removeEventListener("pointercancel", f), ln.has(l) && ln.delete(l), Zr(p) && typeof c == "function" && c(p, { success: v });
3593
+ window.removeEventListener("pointerup", h), window.removeEventListener("pointercancel", f), ln.has(l) && ln.delete(l), Xr(p) && typeof c == "function" && c(p, { success: v });
3613
3594
  }, h = (p) => {
3614
3595
  u(p, l === window || l === document || n.useGlobalTarget || ka(l, p.target));
3615
3596
  }, f = (p) => {
@@ -3627,17 +3608,17 @@ function Ca(t) {
3627
3608
  function qd(t) {
3628
3609
  return Ca(t) && t.tagName === "svg";
3629
3610
  }
3630
- const Xd = [...ga, at, Ut], Zd = (t) => Xd.find(pa(t)), Jr = () => ({
3611
+ const Xd = [...ga, at, Ut], Zd = (t) => Xd.find(pa(t)), Zr = () => ({
3631
3612
  translate: 0,
3632
3613
  scale: 1,
3633
3614
  origin: 0,
3634
3615
  originPoint: 0
3635
- }), oe = () => ({
3616
+ }), se = () => ({
3617
+ x: Zr(),
3618
+ y: Zr()
3619
+ }), Jr = () => ({ min: 0, max: 0 }), ct = () => ({
3636
3620
  x: Jr(),
3637
3621
  y: Jr()
3638
- }), Qr = () => ({ min: 0, max: 0 }), ct = () => ({
3639
- x: Qr(),
3640
- y: Qr()
3641
3622
  }), ki = { current: null }, Ta = { current: !1 }, Jd = typeof window < "u";
3642
3623
  function Qd() {
3643
3624
  if (Ta.current = !0, !!Jd)
@@ -3675,21 +3656,21 @@ function eh(t, e, n) {
3675
3656
  if (ft(r))
3676
3657
  t.addValue(i, r);
3677
3658
  else if (ft(o))
3678
- t.addValue(i, de(r, { owner: t }));
3659
+ t.addValue(i, he(r, { owner: t }));
3679
3660
  else if (o !== r)
3680
3661
  if (t.hasValue(i)) {
3681
3662
  const s = t.getValue(i);
3682
3663
  s.liveStyle === !0 ? s.jump(r) : s.hasAnimated || s.set(r);
3683
3664
  } else {
3684
3665
  const s = t.getStaticValue(i);
3685
- t.addValue(i, de(s !== void 0 ? s : r, { owner: t }));
3666
+ t.addValue(i, he(s !== void 0 ? s : r, { owner: t }));
3686
3667
  }
3687
3668
  }
3688
3669
  for (const i in n)
3689
3670
  e[i] === void 0 && t.removeValue(i);
3690
3671
  return e;
3691
3672
  }
3692
- const to = [
3673
+ const Qr = [
3693
3674
  "AnimationStart",
3694
3675
  "AnimationComplete",
3695
3676
  "Update",
@@ -3752,7 +3733,7 @@ class ih {
3752
3733
  }
3753
3734
  bindToMotionValue(e, n) {
3754
3735
  this.valueSubscriptions.has(e) && this.valueSubscriptions.get(e)();
3755
- const i = be.has(e);
3736
+ const i = ye.has(e);
3756
3737
  i && this.onBindTransform && this.onBindTransform();
3757
3738
  const r = n.on("change", (s) => {
3758
3739
  this.latestValues[e] = s, this.props.onUpdate && tt.preRender(this.notifyUpdate), i && this.projection && (this.projection.isTransformDirty = !0), this.scheduleRender();
@@ -3801,8 +3782,8 @@ class ih {
3801
3782
  */
3802
3783
  update(e, n) {
3803
3784
  (e.transformTemplate || this.props.transformTemplate) && this.scheduleRender(), this.prevProps = this.props, this.props = e, this.prevPresenceContext = this.presenceContext, this.presenceContext = n;
3804
- for (let i = 0; i < to.length; i++) {
3805
- const r = to[i];
3785
+ for (let i = 0; i < Qr.length; i++) {
3786
+ const r = Qr[i];
3806
3787
  this.propEventSubscriptions[r] && (this.propEventSubscriptions[r](), delete this.propEventSubscriptions[r]);
3807
3788
  const o = "on" + r, s = e[o];
3808
3789
  s && (this.propEventSubscriptions[r] = this.on(r, s));
@@ -3863,7 +3844,7 @@ class ih {
3863
3844
  if (this.props.values && this.props.values[e])
3864
3845
  return this.props.values[e];
3865
3846
  let i = this.values.get(e);
3866
- return i === void 0 && n !== void 0 && (i = de(n === null ? void 0 : n, { owner: this }), this.addValue(e, i)), i;
3847
+ return i === void 0 && n !== void 0 && (i = he(n === null ? void 0 : n, { owner: this }), this.addValue(e, i)), i;
3867
3848
  }
3868
3849
  /**
3869
3850
  * If we're trying to animate to a previously unencountered value,
@@ -3966,25 +3947,25 @@ function Yt(t) {
3966
3947
  return Si(t) || Ia(t) || t.z || t.rotate || t.rotateX || t.rotateY || t.skewX || t.skewY;
3967
3948
  }
3968
3949
  function Ia(t) {
3969
- return eo(t.x) || eo(t.y);
3950
+ return to(t.x) || to(t.y);
3970
3951
  }
3971
- function eo(t) {
3952
+ function to(t) {
3972
3953
  return t && t !== "0%";
3973
3954
  }
3974
3955
  function bn(t, e, n) {
3975
3956
  const i = t - n, r = e * i;
3976
3957
  return n + r;
3977
3958
  }
3978
- function no(t, e, n, i, r) {
3959
+ function eo(t, e, n, i, r) {
3979
3960
  return r !== void 0 && (t = bn(t, r, i)), bn(t, n, i) + e;
3980
3961
  }
3981
3962
  function Ci(t, e = 0, n = 1, i, r) {
3982
- t.min = no(t.min, e, n, i, r), t.max = no(t.max, e, n, i, r);
3963
+ t.min = eo(t.min, e, n, i, r), t.max = eo(t.max, e, n, i, r);
3983
3964
  }
3984
3965
  function Ma(t, { x: e, y: n }) {
3985
3966
  Ci(t.x, e.translate, e.scale, e.originPoint), Ci(t.y, n.translate, n.scale, n.originPoint);
3986
3967
  }
3987
- const io = 0.999999999999, ro = 1.0000000000001;
3968
+ const no = 0.999999999999, io = 1.0000000000001;
3988
3969
  function sh(t, e, n, i = !1) {
3989
3970
  const r = n.length;
3990
3971
  if (!r)
@@ -3994,40 +3975,40 @@ function sh(t, e, n, i = !1) {
3994
3975
  for (let a = 0; a < r; a++) {
3995
3976
  o = n[a], s = o.projectionDelta;
3996
3977
  const { visualElement: l } = o.options;
3997
- l && l.props.style && l.props.style.display === "contents" || (i && o.options.layoutScroll && o.scroll && o !== o.root && ae(t, {
3978
+ l && l.props.style && l.props.style.display === "contents" || (i && o.options.layoutScroll && o.scroll && o !== o.root && le(t, {
3998
3979
  x: -o.scroll.offset.x,
3999
3980
  y: -o.scroll.offset.y
4000
- }), s && (e.x *= s.x.scale, e.y *= s.y.scale, Ma(t, s)), i && Yt(o.latestValues) && ae(t, o.latestValues));
3981
+ }), s && (e.x *= s.x.scale, e.y *= s.y.scale, Ma(t, s)), i && Yt(o.latestValues) && le(t, o.latestValues));
4001
3982
  }
4002
- e.x < ro && e.x > io && (e.x = 1), e.y < ro && e.y > io && (e.y = 1);
3983
+ e.x < io && e.x > no && (e.x = 1), e.y < io && e.y > no && (e.y = 1);
4003
3984
  }
4004
- function se(t, e) {
3985
+ function ae(t, e) {
4005
3986
  t.min = t.min + e, t.max = t.max + e;
4006
3987
  }
4007
- function oo(t, e, n, i, r = 0.5) {
3988
+ function ro(t, e, n, i, r = 0.5) {
4008
3989
  const o = it(t.min, t.max, r);
4009
3990
  Ci(t, e, n, o, i);
4010
3991
  }
4011
- function ae(t, e) {
4012
- oo(t.x, e.x, e.scaleX, e.scale, e.originX), oo(t.y, e.y, e.scaleY, e.scale, e.originY);
3992
+ function le(t, e) {
3993
+ ro(t.x, e.x, e.scaleX, e.scale, e.originX), ro(t.y, e.y, e.scaleY, e.scale, e.originY);
4013
3994
  }
4014
3995
  function ja(t, e) {
4015
3996
  return Ra(oh(t.getBoundingClientRect(), e));
4016
3997
  }
4017
3998
  function ah(t, e, n) {
4018
3999
  const i = ja(t, n), { scroll: r } = e;
4019
- return r && (se(i.x, r.offset.x), se(i.y, r.offset.y)), i;
4000
+ return r && (ae(i.x, r.offset.x), ae(i.y, r.offset.y)), i;
4020
4001
  }
4021
4002
  const lh = {
4022
4003
  x: "translateX",
4023
4004
  y: "translateY",
4024
4005
  z: "translateZ",
4025
4006
  transformPerspective: "perspective"
4026
- }, ch = ve.length;
4007
+ }, ch = be.length;
4027
4008
  function uh(t, e, n) {
4028
4009
  let i = "", r = !0;
4029
4010
  for (let o = 0; o < ch; o++) {
4030
- const s = ve[o], a = t[s];
4011
+ const s = be[o], a = t[s];
4031
4012
  if (a === void 0)
4032
4013
  continue;
4033
4014
  let l = !0;
@@ -4048,7 +4029,7 @@ function ur(t, e, n) {
4048
4029
  let s = !1, a = !1;
4049
4030
  for (const l in e) {
4050
4031
  const c = e[l];
4051
- if (be.has(l)) {
4032
+ if (ye.has(l)) {
4052
4033
  s = !0;
4053
4034
  continue;
4054
4035
  } else if (Hs(l)) {
@@ -4073,10 +4054,10 @@ function La(t, { style: e, vars: n }, i, r) {
4073
4054
  for (s in n)
4074
4055
  o.setProperty(s, n[s]);
4075
4056
  }
4076
- function so(t, e) {
4057
+ function oo(t, e) {
4077
4058
  return e.max === e.min ? 0 : t / (e.max - e.min) * 100;
4078
4059
  }
4079
- const Ce = {
4060
+ const Te = {
4080
4061
  correct: (t, e) => {
4081
4062
  if (!e.target)
4082
4063
  return t;
@@ -4085,7 +4066,7 @@ const Ce = {
4085
4066
  t = parseFloat(t);
4086
4067
  else
4087
4068
  return t;
4088
- const n = so(t, e.target.x), i = so(t, e.target.y);
4069
+ const n = oo(t, e.target.x), i = oo(t, e.target.y);
4089
4070
  return `${n}% ${i}%`;
4090
4071
  }
4091
4072
  }, dh = {
@@ -4100,7 +4081,7 @@ const Ce = {
4100
4081
  }
4101
4082
  }, Ti = {
4102
4083
  borderRadius: {
4103
- ...Ce,
4084
+ ...Te,
4104
4085
  applyTo: [
4105
4086
  "borderTopLeftRadius",
4106
4087
  "borderTopRightRadius",
@@ -4108,14 +4089,14 @@ const Ce = {
4108
4089
  "borderBottomRightRadius"
4109
4090
  ]
4110
4091
  },
4111
- borderTopLeftRadius: Ce,
4112
- borderTopRightRadius: Ce,
4113
- borderBottomLeftRadius: Ce,
4114
- borderBottomRightRadius: Ce,
4092
+ borderTopLeftRadius: Te,
4093
+ borderTopRightRadius: Te,
4094
+ borderBottomLeftRadius: Te,
4095
+ borderBottomRightRadius: Te,
4115
4096
  boxShadow: dh
4116
4097
  };
4117
4098
  function Da(t, { layout: e, layoutId: n }) {
4118
- return be.has(t) || t.startsWith("origin") || (e || n !== void 0) && (!!Ti[t] || t === "opacity");
4099
+ return ye.has(t) || t.startsWith("origin") || (e || n !== void 0) && (!!Ti[t] || t === "opacity");
4119
4100
  }
4120
4101
  function dr(t, e, n) {
4121
4102
  const i = t.style, r = e?.style, o = {};
@@ -4133,7 +4114,7 @@ class fh extends Aa {
4133
4114
  super(...arguments), this.type = "html", this.renderInstance = La;
4134
4115
  }
4135
4116
  readValueFromInstance(e, n) {
4136
- if (be.has(n))
4117
+ if (ye.has(n))
4137
4118
  return this.projection?.isProjecting ? hi(n) : $u(e, n);
4138
4119
  {
4139
4120
  const i = hh(e), r = (Hs(n) ? i.getPropertyValue(n) : i[n]) || 0;
@@ -4225,7 +4206,7 @@ function Fa(t, e, n) {
4225
4206
  const i = dr(t, e, n);
4226
4207
  for (const r in t)
4227
4208
  if (ft(t[r]) || ft(e[r])) {
4228
- const o = ve.indexOf(r) !== -1 ? "attr" + r.charAt(0).toUpperCase() + r.substring(1) : r;
4209
+ const o = be.indexOf(r) !== -1 ? "attr" + r.charAt(0).toUpperCase() + r.substring(1) : r;
4229
4210
  i[o] = t[r];
4230
4211
  }
4231
4212
  return i;
@@ -4238,7 +4219,7 @@ class yh extends Aa {
4238
4219
  return e[n];
4239
4220
  }
4240
4221
  readValueFromInstance(e, n) {
4241
- if (be.has(n)) {
4222
+ if (ye.has(n)) {
4242
4223
  const i = ma(n);
4243
4224
  return i && i.default || 0;
4244
4225
  }
@@ -4288,9 +4269,9 @@ function Sh(t) {
4288
4269
  return (e) => Promise.all(e.map(({ animation: n, options: i }) => jd(t, n, i)));
4289
4270
  }
4290
4271
  function Ch(t) {
4291
- let e = Sh(t), n = ao(), i = !0;
4272
+ let e = Sh(t), n = so(), i = !0;
4292
4273
  const r = (l) => (c, u) => {
4293
- const h = le(t, u, l === "exit" ? t.presenceContext?.custom : void 0);
4274
+ const h = ce(t, u, l === "exit" ? t.presenceContext?.custom : void 0);
4294
4275
  if (h) {
4295
4276
  const { transition: f, transitionEnd: p, ...v } = h;
4296
4277
  c = { ...c, ...v, ...p };
@@ -4339,7 +4320,7 @@ function Ch(t) {
4339
4320
  w && (!O || F) && h.push(...$.map((C) => {
4340
4321
  const S = { type: y };
4341
4322
  if (typeof C == "string" && i && !O && t.manuallyAnimateOnMount && t.parent) {
4342
- const { parent: Y } = t, ut = le(Y, C);
4323
+ const { parent: Y } = t, ut = ce(Y, C);
4343
4324
  if (Y.enteringChildren && ut) {
4344
4325
  const { delayChildren: x } = ut.transition || {};
4345
4326
  S.delay = ca(Y.enteringChildren, t, x);
@@ -4354,7 +4335,7 @@ function Ch(t) {
4354
4335
  if (f.size) {
4355
4336
  const g = {};
4356
4337
  if (typeof c.initial != "boolean") {
4357
- const y = le(t, Array.isArray(c.initial) ? c.initial[0] : c.initial);
4338
+ const y = ce(t, Array.isArray(c.initial) ? c.initial[0] : c.initial);
4358
4339
  y && y.transition && (g.transition = y.transition);
4359
4340
  }
4360
4341
  f.forEach((y) => {
@@ -4380,7 +4361,7 @@ function Ch(t) {
4380
4361
  setAnimateFunction: o,
4381
4362
  getState: () => n,
4382
4363
  reset: () => {
4383
- n = ao();
4364
+ n = so();
4384
4365
  }
4385
4366
  };
4386
4367
  }
@@ -4395,7 +4376,7 @@ function Gt(t = !1) {
4395
4376
  prevResolvedValues: {}
4396
4377
  };
4397
4378
  }
4398
- function ao() {
4379
+ function so() {
4399
4380
  return {
4400
4381
  animate: Gt(!0),
4401
4382
  whileInView: Gt(),
@@ -4413,71 +4394,71 @@ function gt(t) {
4413
4394
  function Ih(t, e, n) {
4414
4395
  return Math.abs(t - e) <= n;
4415
4396
  }
4416
- function lo(t, e, n, i = 0.5) {
4397
+ function ao(t, e, n, i = 0.5) {
4417
4398
  t.origin = i, t.originPoint = it(e.min, e.max, t.origin), t.scale = gt(n) / gt(e), t.translate = it(n.min, n.max, t.origin) - t.originPoint, (t.scale >= Ph && t.scale <= Eh || isNaN(t.scale)) && (t.scale = 1), (t.translate >= Ah && t.translate <= Rh || isNaN(t.translate)) && (t.translate = 0);
4418
4399
  }
4419
4400
  function Le(t, e, n, i) {
4420
- lo(t.x, e.x, n.x, i ? i.originX : void 0), lo(t.y, e.y, n.y, i ? i.originY : void 0);
4401
+ ao(t.x, e.x, n.x, i ? i.originX : void 0), ao(t.y, e.y, n.y, i ? i.originY : void 0);
4421
4402
  }
4422
- function co(t, e, n) {
4403
+ function lo(t, e, n) {
4423
4404
  t.min = n.min + e.min, t.max = t.min + gt(e);
4424
4405
  }
4425
4406
  function Mh(t, e, n) {
4426
- co(t.x, e.x, n.x), co(t.y, e.y, n.y);
4407
+ lo(t.x, e.x, n.x), lo(t.y, e.y, n.y);
4427
4408
  }
4428
- function uo(t, e, n) {
4409
+ function co(t, e, n) {
4429
4410
  t.min = e.min - n.min, t.max = t.min + gt(e);
4430
4411
  }
4431
4412
  function yn(t, e, n) {
4432
- uo(t.x, e.x, n.x), uo(t.y, e.y, n.y);
4413
+ co(t.x, e.x, n.x), co(t.y, e.y, n.y);
4433
4414
  }
4434
- function ho(t, e, n, i, r) {
4415
+ function uo(t, e, n, i, r) {
4435
4416
  return t -= e, t = bn(t, 1 / n, i), r !== void 0 && (t = bn(t, 1 / r, i)), t;
4436
4417
  }
4437
4418
  function jh(t, e = 0, n = 1, i = 0.5, r, o = t, s = t) {
4438
- if (It.test(e) && (e = parseFloat(e), e = it(s.min, s.max, e / 100) - s.min), typeof e != "number")
4419
+ if (Mt.test(e) && (e = parseFloat(e), e = it(s.min, s.max, e / 100) - s.min), typeof e != "number")
4439
4420
  return;
4440
4421
  let a = it(o.min, o.max, i);
4441
- t === o && (a -= e), t.min = ho(t.min, e, n, a, r), t.max = ho(t.max, e, n, a, r);
4422
+ t === o && (a -= e), t.min = uo(t.min, e, n, a, r), t.max = uo(t.max, e, n, a, r);
4442
4423
  }
4443
- function fo(t, e, [n, i, r], o, s) {
4424
+ function ho(t, e, [n, i, r], o, s) {
4444
4425
  jh(t, e[n], e[i], e[r], e.scale, o, s);
4445
4426
  }
4446
4427
  const Lh = ["x", "scaleX", "originX"], Dh = ["y", "scaleY", "originY"];
4447
- function po(t, e, n, i) {
4448
- fo(t.x, e, Lh, n ? n.x : void 0, i ? i.x : void 0), fo(t.y, e, Dh, n ? n.y : void 0, i ? i.y : void 0);
4428
+ function fo(t, e, n, i) {
4429
+ ho(t.x, e, Lh, n ? n.x : void 0, i ? i.x : void 0), ho(t.y, e, Dh, n ? n.y : void 0, i ? i.y : void 0);
4449
4430
  }
4450
- function go(t, e) {
4431
+ function po(t, e) {
4451
4432
  t.min = e.min, t.max = e.max;
4452
4433
  }
4453
4434
  function Ct(t, e) {
4454
- go(t.x, e.x), go(t.y, e.y);
4435
+ po(t.x, e.x), po(t.y, e.y);
4455
4436
  }
4456
- function mo(t, e) {
4437
+ function go(t, e) {
4457
4438
  t.translate = e.translate, t.scale = e.scale, t.originPoint = e.originPoint, t.origin = e.origin;
4458
4439
  }
4459
- function vo(t) {
4440
+ function mo(t) {
4460
4441
  return t.translate === 0 && t.scale === 1;
4461
4442
  }
4462
4443
  function Wa(t) {
4463
- return vo(t.x) && vo(t.y);
4444
+ return mo(t.x) && mo(t.y);
4464
4445
  }
4465
- function bo(t, e) {
4446
+ function vo(t, e) {
4466
4447
  return t.min === e.min && t.max === e.max;
4467
4448
  }
4468
4449
  function zh(t, e) {
4469
- return bo(t.x, e.x) && bo(t.y, e.y);
4450
+ return vo(t.x, e.x) && vo(t.y, e.y);
4470
4451
  }
4471
- function yo(t, e) {
4452
+ function bo(t, e) {
4472
4453
  return Math.round(t.min) === Math.round(e.min) && Math.round(t.max) === Math.round(e.max);
4473
4454
  }
4474
4455
  function Ua(t, e) {
4475
- return yo(t.x, e.x) && yo(t.y, e.y);
4456
+ return bo(t.x, e.x) && bo(t.y, e.y);
4476
4457
  }
4477
- function xo(t) {
4458
+ function yo(t) {
4478
4459
  return gt(t.x) / gt(t.y);
4479
4460
  }
4480
- function wo(t, e) {
4461
+ function xo(t, e) {
4481
4462
  return t.translate === e.translate && t.scale === e.scale && t.originPoint === e.originPoint;
4482
4463
  }
4483
4464
  function yt(t) {
@@ -4493,19 +4474,19 @@ function Vh(t, e, n) {
4493
4474
  const a = t.x.scale * e.x, l = t.y.scale * e.y;
4494
4475
  return (a !== 1 || l !== 1) && (i += `scale(${a}, ${l})`), i || "none";
4495
4476
  }
4496
- const Ha = ["TopLeft", "TopRight", "BottomLeft", "BottomRight"], _h = Ha.length, ko = (t) => typeof t == "string" ? parseFloat(t) : t, So = (t) => typeof t == "number" || R.test(t);
4477
+ const Ha = ["TopLeft", "TopRight", "BottomLeft", "BottomRight"], _h = Ha.length, wo = (t) => typeof t == "string" ? parseFloat(t) : t, ko = (t) => typeof t == "number" || R.test(t);
4497
4478
  function Fh(t, e, n, i, r, o) {
4498
4479
  r ? (t.opacity = it(0, n.opacity ?? 1, Nh(i)), t.opacityExit = it(e.opacity ?? 1, 0, Oh(i))) : o && (t.opacity = it(e.opacity ?? 1, n.opacity ?? 1, i));
4499
4480
  for (let s = 0; s < _h; s++) {
4500
4481
  const a = `border${Ha[s]}Radius`;
4501
- let l = Co(e, a), c = Co(n, a);
4482
+ let l = So(e, a), c = So(n, a);
4502
4483
  if (l === void 0 && c === void 0)
4503
4484
  continue;
4504
- l || (l = 0), c || (c = 0), l === 0 || c === 0 || So(l) === So(c) ? (t[a] = Math.max(it(ko(l), ko(c), i), 0), (It.test(c) || It.test(l)) && (t[a] += "%")) : t[a] = c;
4485
+ l || (l = 0), c || (c = 0), l === 0 || c === 0 || ko(l) === ko(c) ? (t[a] = Math.max(it(wo(l), wo(c), i), 0), (Mt.test(c) || Mt.test(l)) && (t[a] += "%")) : t[a] = c;
4505
4486
  }
4506
4487
  (e.rotate || n.rotate) && (t.rotate = it(e.rotate || 0, n.rotate || 0, i));
4507
4488
  }
4508
- function Co(t, e) {
4489
+ function So(t, e) {
4509
4490
  return t[e] !== void 0 ? t[e] : t.borderRadius;
4510
4491
  }
4511
4492
  const Nh = /* @__PURE__ */ Ga(0, 0.5, Ns), Oh = /* @__PURE__ */ Ga(0.5, 0.95, wt);
@@ -4526,7 +4507,7 @@ function cn(t) {
4526
4507
  return ft(t) ? t.get() : t;
4527
4508
  }
4528
4509
  function $h(t, e, n) {
4529
- const i = ft(t) ? t : de(t);
4510
+ const i = ft(t) ? t : he(t);
4530
4511
  return i.start(nr("", i, e, n)), i.animation;
4531
4512
  }
4532
4513
  const Wh = (t, e) => t.depth - e.depth;
@@ -4666,7 +4647,7 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
4666
4647
  h = window.innerWidth;
4667
4648
  }), t(s, () => {
4668
4649
  const p = window.innerWidth;
4669
- p !== h && (h = p, this.root.updateBlockedByResize = !0, u && u(), u = Bh(f, 250), un.hasAnimatedSinceResize && (un.hasAnimatedSinceResize = !1, this.nodes.forEach(Eo)));
4650
+ p !== h && (h = p, this.root.updateBlockedByResize = !0, u && u(), u = Bh(f, 250), un.hasAnimatedSinceResize && (un.hasAnimatedSinceResize = !1, this.nodes.forEach(Po)));
4670
4651
  });
4671
4652
  }
4672
4653
  a && this.root.registerSharedNode(a, this), this.options.animate !== !1 && c && (a || l) && this.addEventListener("didUpdate", ({ delta: u, hasLayoutChanged: h, hasRelativeLayoutChanged: f, layout: p }) => {
@@ -4684,7 +4665,7 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
4684
4665
  };
4685
4666
  (c.shouldReduceMotion || this.options.layoutRoot) && (k.delay = 0, k.type = !1), this.startAnimation(k), this.setAnimationOrigin(u, T);
4686
4667
  } else
4687
- h || Eo(this), this.isLead() && this.options.onExitComplete && this.options.onExitComplete();
4668
+ h || Po(this), this.isLead() && this.options.onExitComplete && this.options.onExitComplete();
4688
4669
  this.targetLayout = p;
4689
4670
  });
4690
4671
  }
@@ -4734,16 +4715,16 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
4734
4715
  }
4735
4716
  update() {
4736
4717
  if (this.updateScheduled = !1, this.isUpdateBlocked()) {
4737
- this.unblockUpdate(), this.clearAllSnapshots(), this.nodes.forEach(To);
4718
+ this.unblockUpdate(), this.clearAllSnapshots(), this.nodes.forEach(Co);
4738
4719
  return;
4739
4720
  }
4740
4721
  if (this.animationId <= this.animationCommitId) {
4741
- this.nodes.forEach(Po);
4722
+ this.nodes.forEach(To);
4742
4723
  return;
4743
4724
  }
4744
- this.animationCommitId = this.animationId, this.isUpdating ? (this.isUpdating = !1, this.nodes.forEach(Qh), this.nodes.forEach(Yh), this.nodes.forEach(qh)) : this.nodes.forEach(Po), this.clearAllSnapshots();
4725
+ this.animationCommitId = this.animationId, this.isUpdating ? (this.isUpdating = !1, this.nodes.forEach(Qh), this.nodes.forEach(Yh), this.nodes.forEach(qh)) : this.nodes.forEach(To), this.clearAllSnapshots();
4745
4726
  const a = pt.now();
4746
- dt.delta = Mt(0, 1e3 / 60, a - dt.timestamp), dt.timestamp = a, dt.isProcessing = !0, Dn.update.process(dt), Dn.preRender.process(dt), Dn.render.process(dt), dt.isProcessing = !1;
4727
+ dt.delta = jt(0, 1e3 / 60, a - dt.timestamp), dt.timestamp = a, dt.isProcessing = !0, Dn.update.process(dt), Dn.preRender.process(dt), Dn.render.process(dt), dt.isProcessing = !1;
4747
4728
  }
4748
4729
  didUpdate() {
4749
4730
  this.updateScheduled || (this.updateScheduled = !0, sr.read(this.scheduleUpdate));
@@ -4813,7 +4794,7 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
4813
4794
  const a = s.measureViewportBox();
4814
4795
  if (!(this.scroll?.wasRoot || this.path.some(cf))) {
4815
4796
  const { scroll: c } = this.root;
4816
- c && (se(a.x, c.offset.x), se(a.y, c.offset.y));
4797
+ c && (ae(a.x, c.offset.x), ae(a.y, c.offset.y));
4817
4798
  }
4818
4799
  return a;
4819
4800
  }
@@ -4823,7 +4804,7 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
4823
4804
  return a;
4824
4805
  for (let l = 0; l < this.path.length; l++) {
4825
4806
  const c = this.path[l], { scroll: u, options: h } = c;
4826
- c !== this.root && u && h.layoutScroll && (u.wasRoot && Ct(a, s), se(a.x, u.offset.x), se(a.y, u.offset.y));
4807
+ c !== this.root && u && h.layoutScroll && (u.wasRoot && Ct(a, s), ae(a.x, u.offset.x), ae(a.y, u.offset.y));
4827
4808
  }
4828
4809
  return a;
4829
4810
  }
@@ -4832,12 +4813,12 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
4832
4813
  Ct(l, s);
4833
4814
  for (let c = 0; c < this.path.length; c++) {
4834
4815
  const u = this.path[c];
4835
- !a && u.options.layoutScroll && u.scroll && u !== u.root && ae(l, {
4816
+ !a && u.options.layoutScroll && u.scroll && u !== u.root && le(l, {
4836
4817
  x: -u.scroll.offset.x,
4837
4818
  y: -u.scroll.offset.y
4838
- }), Yt(u.latestValues) && ae(l, u.latestValues);
4819
+ }), Yt(u.latestValues) && le(l, u.latestValues);
4839
4820
  }
4840
- return Yt(this.latestValues) && ae(l, this.latestValues), l;
4821
+ return Yt(this.latestValues) && le(l, this.latestValues), l;
4841
4822
  }
4842
4823
  removeTransform(s) {
4843
4824
  const a = ct();
@@ -4848,9 +4829,9 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
4848
4829
  continue;
4849
4830
  Si(c.latestValues) && c.updateSnapshot();
4850
4831
  const u = ct(), h = c.measurePageBox();
4851
- Ct(u, h), po(a, c.latestValues, c.snapshot ? c.snapshot.layoutBox : void 0, u);
4832
+ Ct(u, h), fo(a, c.latestValues, c.snapshot ? c.snapshot.layoutBox : void 0, u);
4852
4833
  }
4853
- return Yt(this.latestValues) && po(a, this.latestValues), a;
4834
+ return Yt(this.latestValues) && fo(a, this.latestValues), a;
4854
4835
  }
4855
4836
  setTargetDelta(s) {
4856
4837
  this.targetDelta = s, this.root.scheduleUpdateProjection(), this.isProjectionDirty = !0;
@@ -4910,7 +4891,7 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
4910
4891
  this.prevProjectionDelta && (this.createProjectionDeltas(), this.scheduleRender());
4911
4892
  return;
4912
4893
  }
4913
- !this.projectionDelta || !this.prevProjectionDelta ? this.createProjectionDeltas() : (mo(this.prevProjectionDelta.x, this.projectionDelta.x), mo(this.prevProjectionDelta.y, this.projectionDelta.y)), Le(this.projectionDelta, this.layoutCorrected, p, this.latestValues), (this.treeScale.x !== h || this.treeScale.y !== f || !wo(this.projectionDelta.x, this.prevProjectionDelta.x) || !wo(this.projectionDelta.y, this.prevProjectionDelta.y)) && (this.hasProjected = !0, this.scheduleRender(), this.notifyListeners("projectionUpdate", p));
4894
+ !this.projectionDelta || !this.prevProjectionDelta ? this.createProjectionDeltas() : (go(this.prevProjectionDelta.x, this.projectionDelta.x), go(this.prevProjectionDelta.y, this.projectionDelta.y)), Le(this.projectionDelta, this.layoutCorrected, p, this.latestValues), (this.treeScale.x !== h || this.treeScale.y !== f || !xo(this.projectionDelta.x, this.prevProjectionDelta.x) || !xo(this.projectionDelta.y, this.prevProjectionDelta.y)) && (this.hasProjected = !0, this.scheduleRender(), this.notifyListeners("projectionUpdate", p));
4914
4895
  }
4915
4896
  hide() {
4916
4897
  this.isVisible = !1;
@@ -4926,22 +4907,22 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
4926
4907
  this.resumingFrom && !this.resumingFrom.instance && (this.resumingFrom = void 0);
4927
4908
  }
4928
4909
  createProjectionDeltas() {
4929
- this.prevProjectionDelta = oe(), this.projectionDelta = oe(), this.projectionDeltaWithTransform = oe();
4910
+ this.prevProjectionDelta = se(), this.projectionDelta = se(), this.projectionDeltaWithTransform = se();
4930
4911
  }
4931
4912
  setAnimationOrigin(s, a = !1) {
4932
- const l = this.snapshot, c = l ? l.latestValues : {}, u = { ...this.latestValues }, h = oe();
4913
+ const l = this.snapshot, c = l ? l.latestValues : {}, u = { ...this.latestValues }, h = se();
4933
4914
  (!this.relativeParent || !this.relativeParent.options.layoutRoot) && (this.relativeTarget = this.relativeTargetOrigin = void 0), this.attemptToResolveRelativeTarget = !a;
4934
4915
  const f = ct(), p = l ? l.source : void 0, v = this.layout ? this.layout.source : void 0, b = p !== v, g = this.getStack(), y = !g || g.members.length <= 1, T = !!(b && !y && this.options.crossfade === !0 && !this.path.some(sf));
4935
4916
  this.animationProgress = 0;
4936
4917
  let k;
4937
4918
  this.mixTargetDelta = (I) => {
4938
4919
  const E = I / 1e3;
4939
- Ao(h.x, s.x, E), Ao(h.y, s.y, E), this.setTargetDelta(h), this.relativeTarget && this.relativeTargetOrigin && this.layout && this.relativeParent && this.relativeParent.layout && (yn(f, this.layout.layoutBox, this.relativeParent.layout.layoutBox), of(this.relativeTarget, this.relativeTargetOrigin, f, E), k && zh(this.relativeTarget, k) && (this.isProjectionDirty = !1), k || (k = ct()), Ct(k, this.relativeTarget)), b && (this.animationValues = u, Fh(u, c, this.latestValues, E, T, y)), this.root.scheduleUpdateProjection(), this.scheduleRender(), this.animationProgress = E;
4920
+ Eo(h.x, s.x, E), Eo(h.y, s.y, E), this.setTargetDelta(h), this.relativeTarget && this.relativeTargetOrigin && this.layout && this.relativeParent && this.relativeParent.layout && (yn(f, this.layout.layoutBox, this.relativeParent.layout.layoutBox), of(this.relativeTarget, this.relativeTargetOrigin, f, E), k && zh(this.relativeTarget, k) && (this.isProjectionDirty = !1), k || (k = ct()), Ct(k, this.relativeTarget)), b && (this.animationValues = u, Fh(u, c, this.latestValues, E, T, y)), this.root.scheduleUpdateProjection(), this.scheduleRender(), this.animationProgress = E;
4940
4921
  }, this.mixTargetDelta(this.options.layoutRoot ? 1e3 : 0);
4941
4922
  }
4942
4923
  startAnimation(s) {
4943
4924
  this.notifyListeners("animationStart"), this.currentAnimation?.stop(), this.resumingFrom?.currentAnimation?.stop(), this.pendingAnimation && (Wt(this.pendingAnimation), this.pendingAnimation = void 0), this.pendingAnimation = tt.update(() => {
4944
- un.hasAnimatedSinceResize = !0, this.motionValue || (this.motionValue = de(0)), this.currentAnimation = $h(this.motionValue, [0, 1e3], {
4925
+ un.hasAnimatedSinceResize = !0, this.motionValue || (this.motionValue = he(0)), this.currentAnimation = $h(this.motionValue, [0, 1e3], {
4945
4926
  ...s,
4946
4927
  velocity: 0,
4947
4928
  isSync: !0,
@@ -4975,7 +4956,7 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
4975
4956
  const f = gt(this.layout.layoutBox.y);
4976
4957
  l.y.min = s.target.y.min, l.y.max = l.y.min + f;
4977
4958
  }
4978
- Ct(a, l), ae(a, u), Le(this.projectionDeltaWithTransform, this.layoutCorrected, a, u);
4959
+ Ct(a, l), le(a, u), Le(this.projectionDeltaWithTransform, this.layoutCorrected, a, u);
4979
4960
  }
4980
4961
  }
4981
4962
  registerSharedNode(s, a) {
@@ -5070,7 +5051,7 @@ function Ya({ attachResizeListener: t, defaultParent: e, measureScroll: n, check
5070
5051
  }
5071
5052
  // Only run on root
5072
5053
  resetTree() {
5073
- this.root.nodes.forEach((s) => s.currentAnimation?.stop()), this.root.nodes.forEach(To), this.root.sharedNodes.clear();
5054
+ this.root.nodes.forEach((s) => s.currentAnimation?.stop()), this.root.nodes.forEach(Co), this.root.sharedNodes.clear();
5074
5055
  }
5075
5056
  };
5076
5057
  }
@@ -5088,9 +5069,9 @@ function qh(t) {
5088
5069
  const h = o ? e.measuredBox[u] : e.layoutBox[u], f = gt(n[u]);
5089
5070
  h.max = h.min + f, t.relativeTarget && !t.currentAnimation && (t.isProjectionDirty = !0, t.relativeTarget[u].max = t.relativeTarget[u].min + f);
5090
5071
  });
5091
- const s = oe();
5072
+ const s = se();
5092
5073
  Le(s, n, e.layoutBox);
5093
- const a = oe();
5074
+ const a = se();
5094
5075
  o ? Le(a, t.applyTransform(i, !0), e.measuredBox) : Le(a, n, e.layoutBox);
5095
5076
  const l = !Wa(s);
5096
5077
  let c = !1;
@@ -5129,17 +5110,17 @@ function Zh(t) {
5129
5110
  function Jh(t) {
5130
5111
  t.clearSnapshot();
5131
5112
  }
5132
- function To(t) {
5113
+ function Co(t) {
5133
5114
  t.clearMeasurements();
5134
5115
  }
5135
- function Po(t) {
5116
+ function To(t) {
5136
5117
  t.isLayoutDirty = !1;
5137
5118
  }
5138
5119
  function Qh(t) {
5139
5120
  const { visualElement: e } = t.options;
5140
5121
  e && e.getProps().onBeforeLayoutMeasure && e.notify("BeforeLayoutMeasure"), t.resetTransform();
5141
5122
  }
5142
- function Eo(t) {
5123
+ function Po(t) {
5143
5124
  t.finishAnimation(), t.targetDelta = t.relativeTarget = t.target = void 0, t.isProjectionDirty = !0;
5144
5125
  }
5145
5126
  function tf(t) {
@@ -5154,14 +5135,14 @@ function nf(t) {
5154
5135
  function rf(t) {
5155
5136
  t.removeLeadSnapshot();
5156
5137
  }
5157
- function Ao(t, e, n) {
5138
+ function Eo(t, e, n) {
5158
5139
  t.translate = it(e.translate, 0, n), t.scale = it(e.scale, 1, n), t.origin = e.origin, t.originPoint = e.originPoint;
5159
5140
  }
5160
- function Ro(t, e, n, i) {
5141
+ function Ao(t, e, n, i) {
5161
5142
  t.min = it(e.min, n.min, i), t.max = it(e.max, n.max, i);
5162
5143
  }
5163
5144
  function of(t, e, n, i) {
5164
- Ro(t.x, e.x, n.x, i), Ro(t.y, e.y, n.y, i);
5145
+ Ao(t.x, e.x, n.x, i), Ao(t.y, e.y, n.y, i);
5165
5146
  }
5166
5147
  function sf(t) {
5167
5148
  return t.animationValues && t.animationValues.opacityExit !== void 0;
@@ -5169,15 +5150,15 @@ function sf(t) {
5169
5150
  const af = {
5170
5151
  duration: 0.45,
5171
5152
  ease: [0.4, 0, 0.1, 1]
5172
- }, Io = (t) => typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().includes(t), Mo = Io("applewebkit/") && !Io("chrome/") ? Math.round : wt;
5173
- function jo(t) {
5174
- t.min = Mo(t.min), t.max = Mo(t.max);
5153
+ }, Ro = (t) => typeof navigator < "u" && navigator.userAgent && navigator.userAgent.toLowerCase().includes(t), Io = Ro("applewebkit/") && !Ro("chrome/") ? Math.round : wt;
5154
+ function Mo(t) {
5155
+ t.min = Io(t.min), t.max = Io(t.max);
5175
5156
  }
5176
5157
  function lf(t) {
5177
- jo(t.x), jo(t.y);
5158
+ Mo(t.x), Mo(t.y);
5178
5159
  }
5179
5160
  function qa(t, e, n) {
5180
- return t === "position" || t === "preserve-aspect" && !Ih(xo(e), xo(n), 0.2);
5161
+ return t === "position" || t === "preserve-aspect" && !Ih(yo(e), yo(n), 0.2);
5181
5162
  }
5182
5163
  function cf(t) {
5183
5164
  return t !== t.root && t.scroll?.wasRoot;
@@ -5207,12 +5188,12 @@ const uf = Ya({
5207
5188
  t.style.transform = e !== void 0 ? e : "none";
5208
5189
  },
5209
5190
  checkIsScrollRoot: (t) => window.getComputedStyle(t).position === "fixed"
5210
- }), hr = te({
5191
+ }), hr = ee({
5211
5192
  transformPagePoint: (t) => t,
5212
5193
  isStatic: !1,
5213
5194
  reducedMotion: "never"
5214
5195
  });
5215
- function Lo(t, e) {
5196
+ function jo(t, e) {
5216
5197
  if (typeof t == "function")
5217
5198
  return t(e);
5218
5199
  t != null && (t.current = e);
@@ -5221,14 +5202,14 @@ function df(...t) {
5221
5202
  return (e) => {
5222
5203
  let n = !1;
5223
5204
  const i = t.map((r) => {
5224
- const o = Lo(r, e);
5205
+ const o = jo(r, e);
5225
5206
  return !n && typeof o == "function" && (n = !0), o;
5226
5207
  });
5227
5208
  if (n)
5228
5209
  return () => {
5229
5210
  for (let r = 0; r < i.length; r++) {
5230
5211
  const o = i[r];
5231
- typeof o == "function" ? o() : Lo(t[r], null);
5212
+ typeof o == "function" ? o() : jo(t[r], null);
5232
5213
  }
5233
5214
  };
5234
5215
  };
@@ -5322,14 +5303,14 @@ function Za(t = !0) {
5322
5303
  return !n && i ? [!1, s] : [!0];
5323
5304
  }
5324
5305
  const Xe = (t) => t.key || "";
5325
- function Do(t) {
5306
+ function Lo(t) {
5326
5307
  const e = [];
5327
5308
  return Gl.forEach(t, (n) => {
5328
5309
  Kl(n) && e.push(n);
5329
5310
  }), e;
5330
5311
  }
5331
5312
  const _t = ({ children: t, custom: e, initial: n = !0, onExitComplete: i, presenceAffectsLayout: r = !0, mode: o = "sync", propagate: s = !1, anchorX: a = "left", root: l }) => {
5332
- const [c, u] = Za(s), h = Q(() => Do(t), [t]), f = s && !c ? [] : h.map(Xe), p = et(!0), v = et(h), b = Fi(() => /* @__PURE__ */ new Map()), g = et(/* @__PURE__ */ new Set()), [y, T] = st(h), [k, I] = st(h);
5313
+ const [c, u] = Za(s), h = Q(() => Lo(t), [t]), f = s && !c ? [] : h.map(Xe), p = et(!0), v = et(h), b = Fi(() => /* @__PURE__ */ new Map()), g = et(/* @__PURE__ */ new Set()), [y, T] = st(h), [k, I] = st(h);
5333
5314
  As(() => {
5334
5315
  p.current = !1, v.current = h;
5335
5316
  for (let L = 0; L < k.length; L++) {
@@ -5344,7 +5325,7 @@ const _t = ({ children: t, custom: e, initial: n = !0, onExitComplete: i, presen
5344
5325
  const F = k[w], $ = Xe(F);
5345
5326
  f.includes($) || (L.splice(w, 0, F), E.push(F));
5346
5327
  }
5347
- return o === "wait" && E.length && (L = E), I(Do(L)), T(h), null;
5328
+ return o === "wait" && E.length && (L = E), I(Lo(L)), T(h), null;
5348
5329
  }
5349
5330
  process.env.NODE_ENV !== "production" && o === "wait" && k.length > 1 && console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to "wait". This will lead to odd visual behaviour.`);
5350
5331
  const { forceRender: z } = ht(_i);
@@ -5363,7 +5344,7 @@ const _t = ({ children: t, custom: e, initial: n = !0, onExitComplete: i, presen
5363
5344
  };
5364
5345
  return d.jsx(gf, { isPresent: F, initial: !p.current || n ? void 0 : !1, custom: e, presenceAffectsLayout: r, mode: o, root: l, onExitComplete: F ? void 0 : $, anchorX: a, children: L }, w);
5365
5346
  }) });
5366
- }, Ja = te({ strict: !1 }), zo = {
5347
+ }, Ja = ee({ strict: !1 }), Do = {
5367
5348
  animation: [
5368
5349
  "animate",
5369
5350
  "variants",
@@ -5383,16 +5364,16 @@ const _t = ({ children: t, custom: e, initial: n = !0, onExitComplete: i, presen
5383
5364
  inView: ["whileInView", "onViewportEnter", "onViewportLeave"],
5384
5365
  layout: ["layout", "layoutId"]
5385
5366
  };
5386
- let Vo = !1;
5367
+ let zo = !1;
5387
5368
  function vf() {
5388
- if (Vo)
5369
+ if (zo)
5389
5370
  return;
5390
5371
  const t = {};
5391
- for (const e in zo)
5372
+ for (const e in Do)
5392
5373
  t[e] = {
5393
- isEnabled: (n) => zo[e].some((i) => !!n[i])
5374
+ isEnabled: (n) => Do[e].some((i) => !!n[i])
5394
5375
  };
5395
- Ea(t), Vo = !0;
5376
+ Ea(t), zo = !0;
5396
5377
  }
5397
5378
  function Qa() {
5398
5379
  return vf(), nh();
@@ -5456,7 +5437,7 @@ function wf(t, e, n) {
5456
5437
  t.draggable && r.startsWith("onDrag")) && (i[r] = t[r]);
5457
5438
  return i;
5458
5439
  }
5459
- const jn = /* @__PURE__ */ te({});
5440
+ const jn = /* @__PURE__ */ ee({});
5460
5441
  function kf(t, e) {
5461
5442
  if (Mn(t)) {
5462
5443
  const { initial: n, animate: i } = t;
@@ -5469,9 +5450,9 @@ function kf(t, e) {
5469
5450
  }
5470
5451
  function Sf(t) {
5471
5452
  const { initial: e, animate: n } = kf(t, ht(jn));
5472
- return Q(() => ({ initial: e, animate: n }), [_o(e), _o(n)]);
5453
+ return Q(() => ({ initial: e, animate: n }), [Vo(e), Vo(n)]);
5473
5454
  }
5474
- function _o(t) {
5455
+ function Vo(t) {
5475
5456
  return Array.isArray(t) ? t.join(" ") : t;
5476
5457
  }
5477
5458
  const fr = () => ({
@@ -5564,7 +5545,7 @@ function pr(t) {
5564
5545
  );
5565
5546
  }
5566
5547
  function Rf(t, e, n, { latestValues: i }, r, o = !1, s) {
5567
- const l = (s ?? pr(t) ? Ef : Pf)(e, i, r, t), c = wf(e, typeof t == "string", o), u = t !== xs ? { ...c, ...l, ref: n } : {}, { children: h } = e, f = Q(() => ft(h) ? h.get() : h, [h]);
5548
+ const l = (s ?? pr(t) ? Ef : Pf)(e, i, r, t), c = wf(e, typeof t == "string", o), u = t !== ys ? { ...c, ...l, ref: n } : {}, { children: h } = e, f = Q(() => ft(h) ? h.get() : h, [h]);
5568
5549
  return fn(t, {
5569
5550
  ...u,
5570
5551
  children: f
@@ -5634,8 +5615,8 @@ function zf(t, e, n) {
5634
5615
  else s && (s.current = o);
5635
5616
  }, [e]);
5636
5617
  }
5637
- const rl = te({});
5638
- function Ie(t) {
5618
+ const rl = ee({});
5619
+ function Me(t) {
5639
5620
  return t && typeof t == "object" && Object.prototype.hasOwnProperty.call(t, "current");
5640
5621
  }
5641
5622
  function Vf(t, e, n, i, r, o) {
@@ -5669,7 +5650,7 @@ function _f(t, e, n, i) {
5669
5650
  t.projection = new n(t.latestValues, e["data-framer-portal-id"] ? void 0 : ol(t.parent)), t.projection.setOptions({
5670
5651
  layoutId: r,
5671
5652
  layout: o,
5672
- alwaysMeasureLayout: !!s || a && Ie(a),
5653
+ alwaysMeasureLayout: !!s || a && Me(a),
5673
5654
  visualElement: t,
5674
5655
  /**
5675
5656
  * TODO: Update options in an effect. This could be tricky as it'll be too late
@@ -5718,7 +5699,7 @@ function Nf(t, e) {
5718
5699
  const n = ht(Ja).strict;
5719
5700
  if (process.env.NODE_ENV !== "production" && e && n) {
5720
5701
  const i = "You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.";
5721
- t.ignoreStrict ? ge(!1, i, "lazy-strict-mode") : zt(!1, i, "lazy-strict-mode");
5702
+ t.ignoreStrict ? me(!1, i, "lazy-strict-mode") : zt(!1, i, "lazy-strict-mode");
5722
5703
  }
5723
5704
  }
5724
5705
  function Of(t) {
@@ -5745,7 +5726,7 @@ function Bf(t, e) {
5745
5726
  });
5746
5727
  }
5747
5728
  const $f = (t, e) => e.isSVG ?? pr(t) ? new yh(e) : new fh(e, {
5748
- allowProjection: t !== xs
5729
+ allowProjection: t !== ys
5749
5730
  });
5750
5731
  class Wf extends Ht {
5751
5732
  /**
@@ -5817,12 +5798,12 @@ const Kf = (t) => (e) => ar(e) && t(e, He(e));
5817
5798
  function De(t, e, n, i) {
5818
5799
  return Ne(t, e, Kf(n), i);
5819
5800
  }
5820
- const sl = ({ current: t }) => t ? t.ownerDocument.defaultView : null, Fo = (t, e) => Math.abs(t - e);
5801
+ const sl = ({ current: t }) => t ? t.ownerDocument.defaultView : null, _o = (t, e) => Math.abs(t - e);
5821
5802
  function Yf(t, e) {
5822
- const n = Fo(t.x, e.x), i = Fo(t.y, e.y);
5803
+ const n = _o(t.x, e.x), i = _o(t.y, e.y);
5823
5804
  return Math.sqrt(n ** 2 + i ** 2);
5824
5805
  }
5825
- const No = /* @__PURE__ */ new Set(["auto", "scroll"]);
5806
+ const Fo = /* @__PURE__ */ new Set(["auto", "scroll"]);
5826
5807
  class al {
5827
5808
  constructor(e, n, { transformPagePoint: i, contextWindow: r = window, dragSnapToOrigin: o = !1, distanceThreshold: s = 3, element: a } = {}) {
5828
5809
  if (this.startEvent = null, this.lastMoveEvent = null, this.lastMoveEventInfo = null, this.handlers = {}, this.contextWindow = window, this.scrollPositions = /* @__PURE__ */ new Map(), this.removeScrollListeners = null, this.onElementScroll = (p) => {
@@ -5863,7 +5844,7 @@ class al {
5863
5844
  let n = e.parentElement;
5864
5845
  for (; n; ) {
5865
5846
  const i = getComputedStyle(n);
5866
- (No.has(i.overflowX) || No.has(i.overflowY)) && this.scrollPositions.set(n, {
5847
+ (Fo.has(i.overflowX) || Fo.has(i.overflowY)) && this.scrollPositions.set(n, {
5867
5848
  x: n.scrollLeft,
5868
5849
  y: n.scrollTop
5869
5850
  }), n = n.parentElement;
@@ -5908,14 +5889,14 @@ class al {
5908
5889
  function Gn(t, e) {
5909
5890
  return e ? { point: e(t.point) } : t;
5910
5891
  }
5911
- function Oo(t, e) {
5892
+ function No(t, e) {
5912
5893
  return { x: t.x - e.x, y: t.y - e.y };
5913
5894
  }
5914
5895
  function Kn({ point: t }, e) {
5915
5896
  return {
5916
5897
  point: t,
5917
- delta: Oo(t, ll(e)),
5918
- offset: Oo(t, qf(e)),
5898
+ delta: No(t, ll(e)),
5899
+ offset: No(t, qf(e)),
5919
5900
  velocity: Xf(e, 0.1)
5920
5901
  };
5921
5902
  }
@@ -5930,7 +5911,7 @@ function Xf(t, e) {
5930
5911
  return { x: 0, y: 0 };
5931
5912
  let n = t.length - 1, i = null;
5932
5913
  const r = ll(t);
5933
- for (; n >= 0 && (i = t[n], !(r.timestamp - i.timestamp > /* @__PURE__ */ Rt(e))); )
5914
+ for (; n >= 0 && (i = t[n], !(r.timestamp - i.timestamp > /* @__PURE__ */ It(e))); )
5934
5915
  n--;
5935
5916
  if (!i)
5936
5917
  return { x: 0, y: 0 };
@@ -5946,7 +5927,7 @@ function Xf(t, e) {
5946
5927
  function Zf(t, { min: e, max: n }, i) {
5947
5928
  return e !== void 0 && t < e ? t = i ? it(e, t, i.min) : Math.max(t, e) : n !== void 0 && t > n && (t = i ? it(n, t, i.max) : Math.min(t, n)), t;
5948
5929
  }
5949
- function Bo(t, e, n) {
5930
+ function Oo(t, e, n) {
5950
5931
  return {
5951
5932
  min: e !== void 0 ? t.min + e : void 0,
5952
5933
  max: n !== void 0 ? t.max + n - (t.max - t.min) : void 0
@@ -5954,24 +5935,24 @@ function Bo(t, e, n) {
5954
5935
  }
5955
5936
  function Jf(t, { top: e, left: n, bottom: i, right: r }) {
5956
5937
  return {
5957
- x: Bo(t.x, n, r),
5958
- y: Bo(t.y, e, i)
5938
+ x: Oo(t.x, n, r),
5939
+ y: Oo(t.y, e, i)
5959
5940
  };
5960
5941
  }
5961
- function $o(t, e) {
5942
+ function Bo(t, e) {
5962
5943
  let n = e.min - t.min, i = e.max - t.max;
5963
5944
  return e.max - e.min < t.max - t.min && ([n, i] = [i, n]), { min: n, max: i };
5964
5945
  }
5965
5946
  function Qf(t, e) {
5966
5947
  return {
5967
- x: $o(t.x, e.x),
5968
- y: $o(t.y, e.y)
5948
+ x: Bo(t.x, e.x),
5949
+ y: Bo(t.y, e.y)
5969
5950
  };
5970
5951
  }
5971
5952
  function tp(t, e) {
5972
5953
  let n = 0.5;
5973
5954
  const i = gt(t), r = gt(e);
5974
- return r > i ? n = /* @__PURE__ */ ze(e.min, e.max - i, t.min) : i > r && (n = /* @__PURE__ */ ze(t.min, t.max - r, e.min)), Mt(0, 1, n);
5955
+ return r > i ? n = /* @__PURE__ */ ze(e.min, e.max - i, t.min) : i > r && (n = /* @__PURE__ */ ze(t.min, t.max - r, e.min)), jt(0, 1, n);
5975
5956
  }
5976
5957
  function ep(t, e) {
5977
5958
  const n = {};
@@ -5980,17 +5961,17 @@ function ep(t, e) {
5980
5961
  const Pi = 0.35;
5981
5962
  function np(t = Pi) {
5982
5963
  return t === !1 ? t = 0 : t === !0 && (t = Pi), {
5983
- x: Wo(t, "left", "right"),
5984
- y: Wo(t, "top", "bottom")
5964
+ x: $o(t, "left", "right"),
5965
+ y: $o(t, "top", "bottom")
5985
5966
  };
5986
5967
  }
5987
- function Wo(t, e, n) {
5968
+ function $o(t, e, n) {
5988
5969
  return {
5989
- min: Uo(t, e),
5990
- max: Uo(t, n)
5970
+ min: Wo(t, e),
5971
+ max: Wo(t, n)
5991
5972
  };
5992
5973
  }
5993
- function Uo(t, e) {
5974
+ function Wo(t, e) {
5994
5975
  return typeof t == "number" ? t : t[e] || 0;
5995
5976
  }
5996
5977
  const ip = /* @__PURE__ */ new WeakMap();
@@ -6011,7 +5992,7 @@ class rp {
6011
5992
  return;
6012
5993
  this.latestPointerEvent = h, this.latestPanInfo = f, this.isDragging = !0, this.currentDirection = null, this.resolveConstraints(), this.visualElement.projection && (this.visualElement.projection.isAnimationBlocked = !0, this.visualElement.projection.target = void 0), yt((y) => {
6013
5994
  let T = this.getAxisMotionValue(y).get() || 0;
6014
- if (It.test(T)) {
5995
+ if (Mt.test(T)) {
6015
5996
  const { projection: k } = this.visualElement;
6016
5997
  if (k && k.layout) {
6017
5998
  const I = k.layout.layoutBox[y];
@@ -6082,13 +6063,13 @@ class rp {
6082
6063
  }
6083
6064
  resolveConstraints() {
6084
6065
  const { dragConstraints: e, dragElastic: n } = this.getProps(), i = this.visualElement.projection && !this.visualElement.projection.layout ? this.visualElement.projection.measure(!1) : this.visualElement.projection?.layout, r = this.constraints;
6085
- e && Ie(e) ? this.constraints || (this.constraints = this.resolveRefConstraints()) : e && i ? this.constraints = Jf(i.layoutBox, e) : this.constraints = !1, this.elastic = np(n), r !== this.constraints && i && this.constraints && !this.hasMutatedConstraints && yt((o) => {
6066
+ e && Me(e) ? this.constraints || (this.constraints = this.resolveRefConstraints()) : e && i ? this.constraints = Jf(i.layoutBox, e) : this.constraints = !1, this.elastic = np(n), r !== this.constraints && i && this.constraints && !this.hasMutatedConstraints && yt((o) => {
6086
6067
  this.constraints !== !1 && this.getAxisMotionValue(o) && (this.constraints[o] = ep(i.layoutBox[o], this.constraints[o]));
6087
6068
  });
6088
6069
  }
6089
6070
  resolveRefConstraints() {
6090
6071
  const { dragConstraints: e, onMeasureDragConstraints: n } = this.getProps();
6091
- if (!e || !Ie(e))
6072
+ if (!e || !Me(e))
6092
6073
  return !1;
6093
6074
  const i = e.current;
6094
6075
  zt(i !== null, "If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.", "drag-constraints-ref");
@@ -6168,7 +6149,7 @@ class rp {
6168
6149
  if (!this.visualElement.current)
6169
6150
  return;
6170
6151
  const { drag: e, dragConstraints: n } = this.getProps(), { projection: i } = this.visualElement;
6171
- if (!Ie(n) || !i || !this.constraints)
6152
+ if (!Me(n) || !i || !this.constraints)
6172
6153
  return;
6173
6154
  this.stopAnimation();
6174
6155
  const r = { x: 0, y: 0 };
@@ -6196,7 +6177,7 @@ class rp {
6196
6177
  c && u && !Sa(l.target) && this.start(l);
6197
6178
  }), i = () => {
6198
6179
  const { dragConstraints: l } = this.getProps();
6199
- Ie(l) && l.current && (this.constraints = this.resolveRefConstraints());
6180
+ Me(l) && l.current && (this.constraints = this.resolveRefConstraints());
6200
6181
  }, { projection: r } = this.visualElement, o = r.addEventListener("measure", i);
6201
6182
  r && !r.layout && (r.root && r.root.updateScroll(), r.updateLayout()), tt.read(i);
6202
6183
  const s = Ne(window, "resize", () => this.scalePositionWithinConstraints()), a = r.addEventListener("didUpdate", (({ delta: l, hasLayoutChanged: c }) => {
@@ -6245,7 +6226,7 @@ class sp extends Ht {
6245
6226
  this.removeGroupControls(), this.removeListeners();
6246
6227
  }
6247
6228
  }
6248
- const Ho = (t) => (e, n) => {
6229
+ const Uo = (t) => (e, n) => {
6249
6230
  t && tt.postRender(() => t(e, n));
6250
6231
  };
6251
6232
  class ap extends Ht {
@@ -6261,8 +6242,8 @@ class ap extends Ht {
6261
6242
  createPanHandlers() {
6262
6243
  const { onPanSessionStart: e, onPanStart: n, onPan: i, onPanEnd: r } = this.node.getProps();
6263
6244
  return {
6264
- onSessionStart: Ho(e),
6265
- onStart: Ho(n),
6245
+ onSessionStart: Uo(e),
6246
+ onStart: Uo(n),
6266
6247
  onMove: i,
6267
6248
  onEnd: (o, s) => {
6268
6249
  delete this.session, r && tt.postRender(() => r(o, s));
@@ -6334,7 +6315,7 @@ const cp = {
6334
6315
  MeasureLayout: cl
6335
6316
  }
6336
6317
  };
6337
- function Go(t, e, n) {
6318
+ function Ho(t, e, n) {
6338
6319
  const { props: i } = t;
6339
6320
  t.animationState && i.whileHover && t.animationState.setActive("whileHover", n === "Start");
6340
6321
  const r = "onHover" + n, o = i[r];
@@ -6343,7 +6324,7 @@ function Go(t, e, n) {
6343
6324
  class up extends Ht {
6344
6325
  mount() {
6345
6326
  const { current: e } = this.node;
6346
- e && (this.unmount = Hd(e, (n, i) => (Go(this.node, i, "Start"), (r) => Go(this.node, r, "End"))));
6327
+ e && (this.unmount = Hd(e, (n, i) => (Ho(this.node, i, "Start"), (r) => Ho(this.node, r, "End"))));
6347
6328
  }
6348
6329
  unmount() {
6349
6330
  }
@@ -6370,7 +6351,7 @@ class dp extends Ht {
6370
6351
  unmount() {
6371
6352
  }
6372
6353
  }
6373
- function Ko(t, e, n) {
6354
+ function Go(t, e, n) {
6374
6355
  const { props: i } = t;
6375
6356
  if (t.current instanceof HTMLButtonElement && t.current.disabled)
6376
6357
  return;
@@ -6381,7 +6362,7 @@ function Ko(t, e, n) {
6381
6362
  class hp extends Ht {
6382
6363
  mount() {
6383
6364
  const { current: e } = this.node;
6384
- e && (this.unmount = Yd(e, (n, i) => (Ko(this.node, i, "Start"), (r, { success: o }) => Ko(this.node, r, o ? "End" : "Cancel")), { useGlobalTarget: this.node.props.globalTapTarget }));
6365
+ e && (this.unmount = Yd(e, (n, i) => (Go(this.node, i, "Start"), (r, { success: o }) => Go(this.node, r, o ? "End" : "Cancel")), { useGlobalTarget: this.node.props.globalTapTarget }));
6385
6366
  }
6386
6367
  unmount() {
6387
6368
  }
@@ -6480,13 +6461,13 @@ function dl() {
6480
6461
  for (var t, e, n = 0, i = "", r = arguments.length; n < r; n++) (t = arguments[n]) && (e = ul(t)) && (i && (i += " "), i += e);
6481
6462
  return i;
6482
6463
  }
6483
- const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, kt = (t, e) => (n) => {
6464
+ const Ko = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, Yo = dl, kt = (t, e) => (n) => {
6484
6465
  var i;
6485
- if (e?.variants == null) return qo(t, n?.class, n?.className);
6466
+ if (e?.variants == null) return Yo(t, n?.class, n?.className);
6486
6467
  const { variants: r, defaultVariants: o } = e, s = Object.keys(r).map((c) => {
6487
6468
  const u = n?.[c], h = o?.[c];
6488
6469
  if (u === null) return null;
6489
- const f = Yo(u) || Yo(h);
6470
+ const f = Ko(u) || Ko(h);
6490
6471
  return r[c][f];
6491
6472
  }), a = n && Object.entries(n).reduce((c, u) => {
6492
6473
  let [h, f] = u;
@@ -6508,7 +6489,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
6508
6489
  f
6509
6490
  ] : c;
6510
6491
  }, []);
6511
- return qo(t, s, l, n?.class, n?.className);
6492
+ return Yo(t, s, l, n?.class, n?.className);
6512
6493
  }, Sp = (t, e) => {
6513
6494
  const n = new Array(t.length + e.length);
6514
6495
  for (let i = 0; i < t.length; i++)
@@ -6523,7 +6504,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
6523
6504
  nextPart: t,
6524
6505
  validators: e,
6525
6506
  classGroupId: n
6526
- }), wn = "-", Xo = [], Tp = "arbitrary..", Pp = (t) => {
6507
+ }), wn = "-", qo = [], Tp = "arbitrary..", Pp = (t) => {
6527
6508
  const e = Ap(t), {
6528
6509
  conflictingClassGroups: n,
6529
6510
  conflictingClassGroupModifiers: i
@@ -6538,9 +6519,9 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
6538
6519
  getConflictingClassGroupIds: (s, a) => {
6539
6520
  if (a) {
6540
6521
  const l = i[s], c = n[s];
6541
- return l ? c ? Sp(c, l) : l : c || Xo;
6522
+ return l ? c ? Sp(c, l) : l : c || qo;
6542
6523
  }
6543
- return n[s] || Xo;
6524
+ return n[s] || qo;
6544
6525
  }
6545
6526
  };
6546
6527
  }, fl = (t, e, n) => {
@@ -6640,7 +6621,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
6640
6621
  o in n ? n[o] = s : r(o, s);
6641
6622
  }
6642
6623
  };
6643
- }, Ai = "!", Zo = ":", Vp = [], Jo = (t, e, n, i, r) => ({
6624
+ }, Ai = "!", Xo = ":", Vp = [], Zo = (t, e, n, i, r) => ({
6644
6625
  modifiers: t,
6645
6626
  hasImportantModifier: e,
6646
6627
  baseClassName: n,
@@ -6658,7 +6639,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
6658
6639
  for (let b = 0; b < u; b++) {
6659
6640
  const g = r[b];
6660
6641
  if (s === 0 && a === 0) {
6661
- if (g === Zo) {
6642
+ if (g === Xo) {
6662
6643
  o.push(r.slice(l, b)), l = b + 1;
6663
6644
  continue;
6664
6645
  }
@@ -6679,11 +6660,11 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
6679
6660
  h.startsWith(Ai) && (f = h.slice(1), p = !0)
6680
6661
  );
6681
6662
  const v = c && c > l ? c - l : void 0;
6682
- return Jo(o, p, f, v);
6663
+ return Zo(o, p, f, v);
6683
6664
  };
6684
6665
  if (e) {
6685
- const r = e + Zo, o = i;
6686
- i = (s) => s.startsWith(r) ? o(s.slice(r.length)) : Jo(Vp, !1, s, void 0, !0);
6666
+ const r = e + Xo, o = i;
6667
+ i = (s) => s.startsWith(r) ? o(s.slice(r.length)) : Zo(Vp, !1, s, void 0, !0);
6687
6668
  }
6688
6669
  if (n) {
6689
6670
  const r = i;
@@ -6783,15 +6764,15 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
6783
6764
  }, Up = [], lt = (t) => {
6784
6765
  const e = (n) => n[t] || Up;
6785
6766
  return e.isThemeGetter = !0, e;
6786
- }, ml = /^\[(?:(\w[\w-]*):)?(.+)\]$/i, vl = /^\((?:(\w[\w-]*):)?(.+)\)$/i, Hp = /^\d+\/\d+$/, Gp = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, Kp = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/, Yp = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/, qp = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, Xp = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, ne = (t) => Hp.test(t), B = (t) => !!t && !Number.isNaN(Number(t)), Ft = (t) => !!t && Number.isInteger(Number(t)), Xn = (t) => t.endsWith("%") && B(t.slice(0, -1)), jt = (t) => Gp.test(t), Zp = () => !0, Jp = (t) => (
6767
+ }, ml = /^\[(?:(\w[\w-]*):)?(.+)\]$/i, vl = /^\((?:(\w[\w-]*):)?(.+)\)$/i, Hp = /^\d+\/\d+$/, Gp = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, Kp = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/, Yp = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/, qp = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, Xp = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, ie = (t) => Hp.test(t), B = (t) => !!t && !Number.isNaN(Number(t)), Ft = (t) => !!t && Number.isInteger(Number(t)), Xn = (t) => t.endsWith("%") && B(t.slice(0, -1)), Lt = (t) => Gp.test(t), Zp = () => !0, Jp = (t) => (
6787
6768
  // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
6788
6769
  // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
6789
6770
  // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
6790
6771
  Kp.test(t) && !Yp.test(t)
6791
- ), bl = () => !1, Qp = (t) => qp.test(t), tg = (t) => Xp.test(t), eg = (t) => !M(t) && !j(t), ng = (t) => ye(t, wl, bl), M = (t) => ml.test(t), Kt = (t) => ye(t, kl, Jp), Zn = (t) => ye(t, ag, B), Qo = (t) => ye(t, yl, bl), ig = (t) => ye(t, xl, tg), Je = (t) => ye(t, Sl, Qp), j = (t) => vl.test(t), Te = (t) => xe(t, kl), rg = (t) => xe(t, lg), ts = (t) => xe(t, yl), og = (t) => xe(t, wl), sg = (t) => xe(t, xl), Qe = (t) => xe(t, Sl, !0), ye = (t, e, n) => {
6772
+ ), bl = () => !1, Qp = (t) => qp.test(t), tg = (t) => Xp.test(t), eg = (t) => !M(t) && !j(t), ng = (t) => xe(t, wl, bl), M = (t) => ml.test(t), Kt = (t) => xe(t, kl, Jp), Zn = (t) => xe(t, ag, B), Jo = (t) => xe(t, yl, bl), ig = (t) => xe(t, xl, tg), Je = (t) => xe(t, Sl, Qp), j = (t) => vl.test(t), Pe = (t) => we(t, kl), rg = (t) => we(t, lg), Qo = (t) => we(t, yl), og = (t) => we(t, wl), sg = (t) => we(t, xl), Qe = (t) => we(t, Sl, !0), xe = (t, e, n) => {
6792
6773
  const i = ml.exec(t);
6793
6774
  return i ? i[1] ? e(i[1]) : n(i[2]) : !1;
6794
- }, xe = (t, e, n = !1) => {
6775
+ }, we = (t, e, n = !1) => {
6795
6776
  const i = vl.exec(t);
6796
6777
  return i ? i[1] ? e(i[1]) : n : !1;
6797
6778
  }, yl = (t) => t === "position" || t === "percentage", xl = (t) => t === "image" || t === "url", wl = (t) => t === "length" || t === "size" || t === "bg-size", kl = (t) => t === "length", ag = (t) => t === "number", lg = (t) => t === "family-name", Sl = (t) => t === "shadow", cg = () => {
@@ -6813,15 +6794,15 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
6813
6794
  "bottom-left",
6814
6795
  // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
6815
6796
  "left-bottom"
6816
- ], E = () => [...I(), j, M], z = () => ["auto", "hidden", "clip", "visible", "scroll"], L = () => ["auto", "contain", "none"], w = () => [j, M, l], F = () => [ne, "full", "auto", ...w()], $ = () => [Ft, "none", "subgrid", j, M], rt = () => ["auto", {
6797
+ ], E = () => [...I(), j, M], z = () => ["auto", "hidden", "clip", "visible", "scroll"], L = () => ["auto", "contain", "none"], w = () => [j, M, l], F = () => [ie, "full", "auto", ...w()], $ = () => [Ft, "none", "subgrid", j, M], rt = () => ["auto", {
6817
6798
  span: ["full", Ft, j, M]
6818
- }, Ft, j, M], A = () => [Ft, "auto", j, M], K = () => ["auto", "min", "max", "fr", j, M], Z = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"], O = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"], q = () => ["auto", ...w()], C = () => [ne, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...w()], S = () => [t, j, M], Y = () => [...I(), ts, Qo, {
6799
+ }, Ft, j, M], A = () => [Ft, "auto", j, M], K = () => ["auto", "min", "max", "fr", j, M], Z = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"], O = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"], q = () => ["auto", ...w()], C = () => [ie, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...w()], S = () => [t, j, M], Y = () => [...I(), Qo, Jo, {
6819
6800
  position: [j, M]
6820
6801
  }], ut = () => ["no-repeat", {
6821
6802
  repeat: ["", "x", "y", "space", "round"]
6822
6803
  }], x = () => ["auto", "cover", "contain", og, ng, {
6823
6804
  size: [j, M]
6824
- }], _ = () => [Xn, Te, Kt], m = () => [
6805
+ }], _ = () => [Xn, Pe, Kt], m = () => [
6825
6806
  // Deprecated since Tailwind CSS v4.0.0
6826
6807
  "",
6827
6808
  "none",
@@ -6829,35 +6810,35 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
6829
6810
  c,
6830
6811
  j,
6831
6812
  M
6832
- ], P = () => ["", B, Te, Kt], H = () => ["solid", "dashed", "dotted", "double"], X = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], D = () => [B, Xn, ts, Qo], St = () => [
6813
+ ], P = () => ["", B, Pe, Kt], H = () => ["solid", "dashed", "dotted", "double"], X = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], D = () => [B, Xn, Qo, Jo], St = () => [
6833
6814
  // Deprecated since Tailwind CSS v4.0.0
6834
6815
  "",
6835
6816
  "none",
6836
6817
  v,
6837
6818
  j,
6838
6819
  M
6839
- ], Et = () => ["none", B, j, M], ee = () => ["none", B, j, M], Ln = () => [B, j, M], Ge = () => [ne, "full", ...w()];
6820
+ ], At = () => ["none", B, j, M], ne = () => ["none", B, j, M], Ln = () => [B, j, M], Ge = () => [ie, "full", ...w()];
6840
6821
  return {
6841
6822
  cacheSize: 500,
6842
6823
  theme: {
6843
6824
  animate: ["spin", "ping", "pulse", "bounce"],
6844
6825
  aspect: ["video"],
6845
- blur: [jt],
6846
- breakpoint: [jt],
6826
+ blur: [Lt],
6827
+ breakpoint: [Lt],
6847
6828
  color: [Zp],
6848
- container: [jt],
6849
- "drop-shadow": [jt],
6829
+ container: [Lt],
6830
+ "drop-shadow": [Lt],
6850
6831
  ease: ["in", "out", "in-out"],
6851
6832
  font: [eg],
6852
6833
  "font-weight": ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"],
6853
- "inset-shadow": [jt],
6834
+ "inset-shadow": [Lt],
6854
6835
  leading: ["none", "tight", "snug", "normal", "relaxed", "loose"],
6855
6836
  perspective: ["dramatic", "near", "normal", "midrange", "distant", "none"],
6856
- radius: [jt],
6857
- shadow: [jt],
6837
+ radius: [Lt],
6838
+ shadow: [Lt],
6858
6839
  spacing: ["px", B],
6859
- text: [jt],
6860
- "text-shadow": [jt],
6840
+ text: [Lt],
6841
+ "text-shadow": [Lt],
6861
6842
  tracking: ["tighter", "tight", "normal", "wide", "wider", "widest"]
6862
6843
  },
6863
6844
  classGroups: {
@@ -6869,7 +6850,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
6869
6850
  * @see https://tailwindcss.com/docs/aspect-ratio
6870
6851
  */
6871
6852
  aspect: [{
6872
- aspect: ["auto", "square", ne, M, j, g]
6853
+ aspect: ["auto", "square", ie, M, j, g]
6873
6854
  }],
6874
6855
  /**
6875
6856
  * Container
@@ -7092,7 +7073,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
7092
7073
  * @see https://tailwindcss.com/docs/flex-basis
7093
7074
  */
7094
7075
  basis: [{
7095
- basis: [ne, "full", "auto", a, ...w()]
7076
+ basis: [ie, "full", "auto", a, ...w()]
7096
7077
  }],
7097
7078
  /**
7098
7079
  * Flex Direction
@@ -7113,7 +7094,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
7113
7094
  * @see https://tailwindcss.com/docs/flex
7114
7095
  */
7115
7096
  flex: [{
7116
- flex: [B, ne, "auto", "initial", "none", M]
7097
+ flex: [B, ie, "auto", "initial", "none", M]
7117
7098
  }],
7118
7099
  /**
7119
7100
  * Flex Grow
@@ -7529,7 +7510,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
7529
7510
  * @see https://tailwindcss.com/docs/font-size
7530
7511
  */
7531
7512
  "font-size": [{
7532
- text: ["base", n, Te, Kt]
7513
+ text: ["base", n, Pe, Kt]
7533
7514
  }],
7534
7515
  /**
7535
7516
  * Font Smoothing
@@ -8164,7 +8145,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
8164
8145
  * @see https://tailwindcss.com/docs/outline-width
8165
8146
  */
8166
8147
  "outline-w": [{
8167
- outline: ["", B, Te, Kt]
8148
+ outline: ["", B, Pe, Kt]
8168
8149
  }],
8169
8150
  /**
8170
8151
  * Outline Color
@@ -8783,56 +8764,56 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
8783
8764
  * @see https://tailwindcss.com/docs/rotate
8784
8765
  */
8785
8766
  rotate: [{
8786
- rotate: Et()
8767
+ rotate: At()
8787
8768
  }],
8788
8769
  /**
8789
8770
  * Rotate X
8790
8771
  * @see https://tailwindcss.com/docs/rotate
8791
8772
  */
8792
8773
  "rotate-x": [{
8793
- "rotate-x": Et()
8774
+ "rotate-x": At()
8794
8775
  }],
8795
8776
  /**
8796
8777
  * Rotate Y
8797
8778
  * @see https://tailwindcss.com/docs/rotate
8798
8779
  */
8799
8780
  "rotate-y": [{
8800
- "rotate-y": Et()
8781
+ "rotate-y": At()
8801
8782
  }],
8802
8783
  /**
8803
8784
  * Rotate Z
8804
8785
  * @see https://tailwindcss.com/docs/rotate
8805
8786
  */
8806
8787
  "rotate-z": [{
8807
- "rotate-z": Et()
8788
+ "rotate-z": At()
8808
8789
  }],
8809
8790
  /**
8810
8791
  * Scale
8811
8792
  * @see https://tailwindcss.com/docs/scale
8812
8793
  */
8813
8794
  scale: [{
8814
- scale: ee()
8795
+ scale: ne()
8815
8796
  }],
8816
8797
  /**
8817
8798
  * Scale X
8818
8799
  * @see https://tailwindcss.com/docs/scale
8819
8800
  */
8820
8801
  "scale-x": [{
8821
- "scale-x": ee()
8802
+ "scale-x": ne()
8822
8803
  }],
8823
8804
  /**
8824
8805
  * Scale Y
8825
8806
  * @see https://tailwindcss.com/docs/scale
8826
8807
  */
8827
8808
  "scale-y": [{
8828
- "scale-y": ee()
8809
+ "scale-y": ne()
8829
8810
  }],
8830
8811
  /**
8831
8812
  * Scale Z
8832
8813
  * @see https://tailwindcss.com/docs/scale
8833
8814
  */
8834
8815
  "scale-z": [{
8835
- "scale-z": ee()
8816
+ "scale-z": ne()
8836
8817
  }],
8837
8818
  /**
8838
8819
  * Scale 3D
@@ -9189,7 +9170,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
9189
9170
  * @see https://tailwindcss.com/docs/stroke-width
9190
9171
  */
9191
9172
  "stroke-w": [{
9192
- stroke: [B, Te, Kt, Zn]
9173
+ stroke: [B, Pe, Kt, Zn]
9193
9174
  }],
9194
9175
  /**
9195
9176
  * Stroke
@@ -9268,7 +9249,7 @@ const Yo = (t) => typeof t == "boolean" ? `${t}` : t === 0 ? "0" : t, qo = dl, k
9268
9249
  function J(...t) {
9269
9250
  return ug(dl(t));
9270
9251
  }
9271
- const es = kt(
9252
+ const ts = kt(
9272
9253
  // Base styles
9273
9254
  [
9274
9255
  "inline-flex items-center justify-center",
@@ -9337,7 +9318,7 @@ const es = kt(
9337
9318
  U.kbd,
9338
9319
  {
9339
9320
  ref: l,
9340
- className: J(es({ variant: e, size: n }), t),
9321
+ className: J(ts({ variant: e, size: n }), t),
9341
9322
  style: c,
9342
9323
  initial: "hidden",
9343
9324
  animate: "visible",
@@ -9350,7 +9331,7 @@ const es = kt(
9350
9331
  U.kbd,
9351
9332
  {
9352
9333
  ref: l,
9353
- className: J(es({ variant: e, size: n }), t),
9334
+ className: J(ts({ variant: e, size: n }), t),
9354
9335
  style: c,
9355
9336
  ...a,
9356
9337
  children: i
@@ -9359,7 +9340,7 @@ const es = kt(
9359
9340
  }
9360
9341
  );
9361
9342
  Oe.displayName = "Kbd";
9362
- const ns = kt(
9343
+ const es = kt(
9363
9344
  // Base styles
9364
9345
  "inline-flex items-center justify-center font-semibold transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
9365
9346
  {
@@ -9413,14 +9394,14 @@ function kn({
9413
9394
  return r ? /* @__PURE__ */ d.jsx(
9414
9395
  "span",
9415
9396
  {
9416
- className: J(ns({ variant: e, size: n }), t),
9397
+ className: J(es({ variant: e, size: n }), t),
9417
9398
  style: a,
9418
9399
  children: i
9419
9400
  }
9420
9401
  ) : /* @__PURE__ */ d.jsx(
9421
9402
  U.span,
9422
9403
  {
9423
- className: J(ns({ variant: e, size: n }), t),
9404
+ className: J(es({ variant: e, size: n }), t),
9424
9405
  style: a,
9425
9406
  variants: Tl,
9426
9407
  initial: "initial",
@@ -9549,7 +9530,7 @@ function tn({
9549
9530
  }
9550
9531
  );
9551
9532
  }
9552
- function is(t, e) {
9533
+ function ns(t, e) {
9553
9534
  if (typeof t == "function")
9554
9535
  return t(e);
9555
9536
  t != null && (t.current = e);
@@ -9558,14 +9539,14 @@ function hg(...t) {
9558
9539
  return (e) => {
9559
9540
  let n = !1;
9560
9541
  const i = t.map((r) => {
9561
- const o = is(r, e);
9542
+ const o = ns(r, e);
9562
9543
  return !n && typeof o == "function" && (n = !0), o;
9563
9544
  });
9564
9545
  if (n)
9565
9546
  return () => {
9566
9547
  for (let r = 0; r < i.length; r++) {
9567
9548
  const o = i[r];
9568
- typeof o == "function" ? o() : is(t[r], null);
9549
+ typeof o == "function" ? o() : ns(t[r], null);
9569
9550
  }
9570
9551
  };
9571
9552
  };
@@ -10007,7 +9988,7 @@ const Rg = kt(
10007
9988
  }
10008
9989
  );
10009
9990
  Ig.displayName = "Input";
10010
- const rs = kt(
9991
+ const is = kt(
10011
9992
  // Base styles using CSS variables
10012
9993
  [
10013
9994
  "relative",
@@ -10083,7 +10064,7 @@ const rs = kt(
10083
10064
  {
10084
10065
  ref: s,
10085
10066
  className: J(
10086
- rs({ variant: e }),
10067
+ is({ variant: e }),
10087
10068
  n && "cursor-pointer",
10088
10069
  t
10089
10070
  ),
@@ -10100,7 +10081,7 @@ const rs = kt(
10100
10081
  "div",
10101
10082
  {
10102
10083
  ref: s,
10103
- className: J(rs({ variant: e }), t),
10084
+ className: J(is({ variant: e }), t),
10104
10085
  ...o,
10105
10086
  children: r
10106
10087
  }
@@ -10197,7 +10178,7 @@ const Fg = kt(
10197
10178
  bordered: !0
10198
10179
  }
10199
10180
  }
10200
- ), os = {
10181
+ ), rs = {
10201
10182
  hidden: {
10202
10183
  opacity: 0,
10203
10184
  scale: 0.96,
@@ -10266,7 +10247,7 @@ const Rl = W.forwardRef(
10266
10247
  initial: "hidden",
10267
10248
  animate: "visible",
10268
10249
  exit: "exit",
10269
- variants: os,
10250
+ variants: rs,
10270
10251
  transition: s,
10271
10252
  ...u,
10272
10253
  children: r
@@ -10279,7 +10260,7 @@ const Rl = W.forwardRef(
10279
10260
  style: f,
10280
10261
  initial: "hidden",
10281
10262
  animate: "visible",
10282
- variants: os,
10263
+ variants: rs,
10283
10264
  transition: s,
10284
10265
  ...u,
10285
10266
  children: r
@@ -10338,7 +10319,7 @@ function Og() {
10338
10319
  }
10339
10320
  if ((s.metaKey || s.ctrlKey) && s.shiftKey && s.key === "C") {
10340
10321
  s.preventDefault();
10341
- const a = ue();
10322
+ const a = de();
10342
10323
  if (!a) return;
10343
10324
  const l = mt.getAllToolbarActionGroups();
10344
10325
  for (const c of l) {
@@ -10352,7 +10333,7 @@ function Og() {
10352
10333
  }
10353
10334
  if ((s.metaKey || s.ctrlKey) && s.shiftKey && s.key === "R") {
10354
10335
  s.preventDefault();
10355
- const a = ue();
10336
+ const a = de();
10356
10337
  if (!a) return;
10357
10338
  const l = mt.getAllToolbarActionGroups();
10358
10339
  for (const c of l) {
@@ -10419,7 +10400,7 @@ function Bg(t) {
10419
10400
  window.removeEventListener("scroll", a), window.removeEventListener("resize", a), i.current?.disconnect(), r.current?.disconnect(), o.current && cancelAnimationFrame(o.current);
10420
10401
  }), [s, a]), e;
10421
10402
  }
10422
- const ss = "ws://localhost:9234", Qn = 5, $g = 1e3;
10403
+ const os = "ws://localhost:9234", Qn = 5, $g = 1e3;
10423
10404
  class Wg {
10424
10405
  /**
10425
10406
  * Create a new WebSocket service instance
@@ -10439,7 +10420,7 @@ class Wg {
10439
10420
  _setTimeout;
10440
10421
  _clearTimeout;
10441
10422
  isConnected = !1;
10442
- url = ss;
10423
+ url = os;
10443
10424
  /**
10444
10425
  * Connect to the WebSocket server
10445
10426
  * @param url - Optional URL to connect to (defaults to DEFAULT_WS_URL)
@@ -10450,7 +10431,7 @@ class Wg {
10450
10431
  return;
10451
10432
  }
10452
10433
  if (!(this.ws && this.isConnected && (!e || e === this.url))) {
10453
- this.ws && (this.intentionalDisconnect = !0, this.ws.close()), this.url = e ?? ss, this.intentionalDisconnect = !1;
10434
+ this.ws && (this.intentionalDisconnect = !0, this.ws.close()), this.url = e ?? os, this.intentionalDisconnect = !1;
10454
10435
  try {
10455
10436
  this.ws = this.createWebSocket(this.url), this.setupEventHandlers();
10456
10437
  } catch (n) {
@@ -10684,16 +10665,16 @@ function Xg({
10684
10665
  }
10685
10666
  function Zg() {
10686
10667
  const [, t] = st(0);
10687
- G(() => Lt.subscribe(() => {
10668
+ G(() => Et.subscribe(() => {
10688
10669
  t((l) => l + 1);
10689
10670
  }), []);
10690
- const e = Q(() => Lt.getCategoryTree(), [t]), n = Q(() => Lt.getAllProviders().some(
10691
- (l) => Lt.getLoadingState(l.id) === "loading"
10692
- ), [t]), i = V(async (a) => Lt.loadItems(a), []), r = V((a) => Lt.getCachedItems(a), []), o = V(
10693
- (a, l) => Lt.searchItems(a, l),
10671
+ const e = Q(() => Et.getCategoryTree(), [t]), n = Q(() => Et.getAllProviders().some(
10672
+ (l) => Et.getLoadingState(l.id) === "loading"
10673
+ ), [t]), i = V(async (a) => Et.loadItems(a), []), r = V((a) => Et.getCachedItems(a), []), o = V(
10674
+ (a, l) => Et.searchItems(a, l),
10694
10675
  []
10695
10676
  ), s = V((a) => {
10696
- Lt.invalidate(a);
10677
+ Et.invalidate(a);
10697
10678
  }, []);
10698
10679
  return {
10699
10680
  categoryTree: e,
@@ -10712,7 +10693,7 @@ const en = {
10712
10693
  function Ml(t) {
10713
10694
  return typeof window > "u" || typeof window.matchMedia != "function" ? null : window.matchMedia(t);
10714
10695
  }
10715
- function as() {
10696
+ function ss() {
10716
10697
  if (typeof window > "u")
10717
10698
  return {
10718
10699
  isMobile: !1,
@@ -10729,8 +10710,8 @@ function as() {
10729
10710
  };
10730
10711
  }
10731
10712
  function bt() {
10732
- const [t, e] = st(as), n = V(() => {
10733
- e(as());
10713
+ const [t, e] = st(ss), n = V(() => {
10714
+ e(ss());
10734
10715
  }, []);
10735
10716
  return G(() => {
10736
10717
  if (typeof window > "u") return;
@@ -10760,7 +10741,7 @@ function Qg(t, e) {
10760
10741
  return t;
10761
10742
  }
10762
10743
  }
10763
- const ce = 36, ei = 18, tm = 8;
10744
+ const ue = 36, ei = 18, tm = 8;
10764
10745
  function dn(t, e) {
10765
10746
  return {
10766
10747
  ...mr("medium", t ? "lg" : "md", !1),
@@ -10812,10 +10793,10 @@ function im({ group: t, state: e, onActionClick: n }) {
10812
10793
  onClick: a,
10813
10794
  title: t.tooltip,
10814
10795
  style: dn(!1, {
10815
- height: ce,
10796
+ height: ue,
10816
10797
  padding: "0 10px",
10817
10798
  border: "none",
10818
- borderRadius: ce / 2,
10799
+ borderRadius: ue / 2,
10819
10800
  borderLeft: "1px solid var(--uilint-glass-border-light, rgba(255, 255, 255, 0.8))",
10820
10801
  borderRight: "1px solid var(--uilint-glass-border, rgba(255, 255, 255, 0.5))",
10821
10802
  cursor: "pointer",
@@ -10844,7 +10825,7 @@ function im({ group: t, state: e, onActionClick: n }) {
10844
10825
  {
10845
10826
  style: {
10846
10827
  position: "absolute",
10847
- top: ce + 6,
10828
+ top: ue + 6,
10848
10829
  right: 0,
10849
10830
  minWidth: 220,
10850
10831
  background: "var(--uilint-glass-heavy, rgba(255, 255, 255, 0.92))",
@@ -10921,7 +10902,7 @@ function rm() {
10921
10902
  return S.forEach((ut) => {
10922
10903
  Y += ut.length;
10923
10904
  }), Y;
10924
- }), [s, a] = ws(Qg, Jg), { isDragging: l, isHovered: c, dragOffset: u, hasInteracted: h } = s, { isMobile: f, isTouchDevice: p } = bt(), v = et(null);
10905
+ }), [s, a] = xs(Qg, Jg), { isDragging: l, isHovered: c, dragOffset: u, hasInteracted: h } = s, { isMobile: f, isTouchDevice: p } = bt(), v = et(null);
10925
10906
  G(() => {
10926
10907
  e && !h && a({ type: "SET_INTERACTED" });
10927
10908
  }, [e, h]);
@@ -10944,7 +10925,7 @@ function rm() {
10944
10925
  if (!l) return;
10945
10926
  const S = Math.max(0, Math.min(window.innerWidth - 300, C.clientX - u.x)), Y = Math.max(
10946
10927
  0,
10947
- Math.min(window.innerHeight - ce - ei, C.clientY - u.y)
10928
+ Math.min(window.innerHeight - ue - ei, C.clientY - u.y)
10948
10929
  );
10949
10930
  i({ x: S, y: Y });
10950
10931
  },
@@ -10954,7 +10935,7 @@ function rm() {
10954
10935
  if (!l || C.touches.length !== 1) return;
10955
10936
  const S = C.touches[0], Y = Math.max(0, Math.min(window.innerWidth - 300, S.clientX - u.x)), ut = Math.max(
10956
10937
  0,
10957
- Math.min(window.innerHeight - ce - ei, S.clientY - u.y)
10938
+ Math.min(window.innerHeight - ue - ei, S.clientY - u.y)
10958
10939
  );
10959
10940
  i({ x: Y, y: ut }), C.preventDefault();
10960
10941
  },
@@ -10973,13 +10954,13 @@ function rm() {
10973
10954
  const rt = V(() => {
10974
10955
  l || t();
10975
10956
  }, [l, t]), A = V((C) => {
10976
- const S = ue();
10957
+ const S = de();
10977
10958
  S && C.onClick(S);
10978
10959
  }, []), K = document.getElementById("uilint-portal") || document.body;
10979
10960
  if (e)
10980
10961
  return null;
10981
- const Z = !h && !c && !p, O = f ? 44 : ce, q = o > 0;
10982
- return pe(
10962
+ const Z = !h && !c && !p, O = f ? 44 : ue, q = o > 0;
10963
+ return ge(
10983
10964
  /* @__PURE__ */ d.jsxs(
10984
10965
  "div",
10985
10966
  {
@@ -11335,7 +11316,7 @@ function cm() {
11335
11316
  if (!r || r.size === 0)
11336
11317
  return null;
11337
11318
  const a = document.getElementById("uilint-portal") || document.body;
11338
- return pe(
11319
+ return ge(
11339
11320
  /* @__PURE__ */ d.jsx(
11340
11321
  "div",
11341
11322
  {
@@ -11800,7 +11781,7 @@ function xm({ fileName: t, directory: e, count: n }) {
11800
11781
  /* @__PURE__ */ d.jsx("span", { className: "text-xs font-medium text-muted-foreground bg-hover px-1.5 py-0.5 rounded-full", children: n })
11801
11782
  ] });
11802
11783
  }
11803
- const zl = te(null);
11784
+ const zl = ee(null);
11804
11785
  function wm(t) {
11805
11786
  const e = et(/* @__PURE__ */ new Map());
11806
11787
  return G(() => {
@@ -12015,7 +11996,7 @@ function Cm({
12015
11996
  );
12016
11997
  }
12017
11998
  const br = [0.32, 0.72, 0, 1];
12018
- function he({
11999
+ function fe({
12019
12000
  children: t,
12020
12001
  index: e,
12021
12002
  layoutId: n,
@@ -12453,7 +12434,7 @@ function Vm({
12453
12434
  ]
12454
12435
  }
12455
12436
  );
12456
- return r ? /* @__PURE__ */ d.jsx(he, { index: i, children: /* @__PURE__ */ d.jsx(Be, { isSelected: e, variant: "command", resultIndex: i, children: a }) }) : /* @__PURE__ */ d.jsx(he, { index: i, children: /* @__PURE__ */ d.jsx(Be, { isSelected: e, variant: "command", resultIndex: i, children: /* @__PURE__ */ d.jsx(
12437
+ return r ? /* @__PURE__ */ d.jsx(fe, { index: i, children: /* @__PURE__ */ d.jsx(Be, { isSelected: e, variant: "command", resultIndex: i, children: a }) }) : /* @__PURE__ */ d.jsx(fe, { index: i, children: /* @__PURE__ */ d.jsx(Be, { isSelected: e, variant: "command", resultIndex: i, children: /* @__PURE__ */ d.jsx(
12457
12438
  U.div,
12458
12439
  {
12459
12440
  whileHover: { x: 2 },
@@ -12510,7 +12491,7 @@ function _m({
12510
12491
  ]
12511
12492
  }
12512
12493
  );
12513
- return r ? /* @__PURE__ */ d.jsx(he, { index: i, children: /* @__PURE__ */ d.jsx(Be, { isSelected: e, variant: "issue", resultIndex: i, children: o }) }) : /* @__PURE__ */ d.jsx(he, { index: i, children: /* @__PURE__ */ d.jsx(Be, { isSelected: e, variant: "issue", resultIndex: i, children: /* @__PURE__ */ d.jsx(
12494
+ return r ? /* @__PURE__ */ d.jsx(fe, { index: i, children: /* @__PURE__ */ d.jsx(Be, { isSelected: e, variant: "issue", resultIndex: i, children: o }) }) : /* @__PURE__ */ d.jsx(fe, { index: i, children: /* @__PURE__ */ d.jsx(Be, { isSelected: e, variant: "issue", resultIndex: i, children: /* @__PURE__ */ d.jsx(
12514
12495
  U.div,
12515
12496
  {
12516
12497
  whileHover: { x: 2 },
@@ -12592,8 +12573,8 @@ function Fm() {
12592
12573
  P.set(H.filePath, [...X, H]);
12593
12574
  }
12594
12575
  for (const [H, X] of P) {
12595
- const D = H.split("/"), St = D.pop() || H, Et = D.join("/");
12596
- m.push({ filePath: H, fileName: St, directory: Et, issues: X });
12576
+ const D = H.split("/"), St = D.pop() || H, At = D.join("/");
12577
+ m.push({ filePath: H, fileName: St, directory: At, issues: X });
12597
12578
  }
12598
12579
  return m;
12599
12580
  }, [L]), K = Q(() => {
@@ -12628,7 +12609,7 @@ function Fm() {
12628
12609
  },
12629
12610
  [s, i]
12630
12611
  ), O = V(async (m) => {
12631
- const P = ue();
12612
+ const P = de();
12632
12613
  if (!P) {
12633
12614
  console.error("[CommandPalette] Plugin services not available");
12634
12615
  return;
@@ -12640,7 +12621,7 @@ function Fm() {
12640
12621
  }
12641
12622
  }, []), q = V(async (m) => {
12642
12623
  if (!m.execute) return;
12643
- const P = ue();
12624
+ const P = de();
12644
12625
  if (!P) {
12645
12626
  console.error("[CommandPalette] Plugin services not available");
12646
12627
  return;
@@ -12690,7 +12671,7 @@ function Fm() {
12690
12671
  t || (l(""), u(0));
12691
12672
  }, [t]);
12692
12673
  const x = document.getElementById("uilint-portal") || document.body, _ = I.length;
12693
- return pe(
12674
+ return ge(
12694
12675
  /* @__PURE__ */ d.jsx(_t, { children: t && /* @__PURE__ */ d.jsx(
12695
12676
  U.div,
12696
12677
  {
@@ -12902,7 +12883,7 @@ function Fm() {
12902
12883
  for (let X = 0; X < P; X++)
12903
12884
  H += A[X].issues.length;
12904
12885
  return /* @__PURE__ */ d.jsxs(
12905
- he,
12886
+ fe,
12906
12887
  {
12907
12888
  index: I.length + P,
12908
12889
  children: [
@@ -12940,7 +12921,7 @@ function Fm() {
12940
12921
  E && $.length > 0 && /* @__PURE__ */ d.jsxs(d.Fragment, { children: [
12941
12922
  /* @__PURE__ */ d.jsx(nn, { count: $.length, children: "Rules" }),
12942
12923
  $.map((m, P) => /* @__PURE__ */ d.jsx(
12943
- he,
12924
+ fe,
12944
12925
  {
12945
12926
  index: I.length + L.length + P,
12946
12927
  children: /* @__PURE__ */ d.jsx(
@@ -13305,7 +13286,7 @@ function Um({ dataLoc: t, onSelectIssue: e }) {
13305
13286
  }, children: t })
13306
13287
  ] });
13307
13288
  }
13308
- function ls({
13289
+ function as({
13309
13290
  direction: t,
13310
13291
  onResize: e,
13311
13292
  onResizeEnd: n
@@ -13374,7 +13355,7 @@ function ls({
13374
13355
  }
13375
13356
  );
13376
13357
  }
13377
- const cs = 320, us = 800, rn = 450, ds = 500;
13358
+ const ls = 320, cs = 800, rn = 450, us = 500;
13378
13359
  function Hm() {
13379
13360
  const t = N((A) => A.inspector.open), e = N((A) => A.inspector.panelId), n = N((A) => A.inspector.data), i = N((A) => A.inspector.docked), r = N((A) => A.inspector.width), o = N((A) => A.inspector.floatingPosition), s = N((A) => A.inspector.floatingSize), a = N((A) => A.closeInspector), l = N((A) => A.openInspector), c = N((A) => A.toggleInspectorDocked), u = N((A) => A.setInspectorWidth), h = N((A) => A.setInspectorFloatingPosition), f = N((A) => A.setInspectorFloatingSize), [p, v] = st(!1), { isMobile: b } = bt(), g = et(null), y = Q(() => mt.getAllInspectorPanels(), []), T = V((A) => {
13380
13361
  l("issue", { issue: A });
@@ -13382,7 +13363,7 @@ function Hm() {
13382
13363
  let A = null, K = "Inspector";
13383
13364
  const Z = y.find((O) => O.id === e);
13384
13365
  if (Z) {
13385
- const O = ue(), q = Z.component, C = n ?? void 0;
13366
+ const O = de(), q = Z.component, C = n ?? void 0;
13386
13367
  K = typeof Z.title == "function" ? Z.title({ data: C, services: O }) : Z.title, A = O ? /* @__PURE__ */ d.jsx(q, { data: C, services: O }) : /* @__PURE__ */ d.jsx("div", { style: { padding: 16, color: "var(--uilint-text-muted)", textAlign: "center" }, children: "Loading..." });
13387
13368
  } else e === "issue" && n?.issue ? (K = "Issue Details", A = /* @__PURE__ */ d.jsx(Wm, { issue: n.issue })) : e === "element" && n?.dataLoc ? (K = "Element Issues", A = /* @__PURE__ */ d.jsx(
13388
13369
  Um,
@@ -13406,13 +13387,13 @@ function Hm() {
13406
13387
  }, [p, t, i, r]);
13407
13388
  const E = V(
13408
13389
  (A) => {
13409
- const K = Math.min(us, Math.max(cs, r - A));
13390
+ const K = Math.min(cs, Math.max(ls, r - A));
13410
13391
  u(K);
13411
13392
  },
13412
13393
  [r, u]
13413
13394
  ), z = V(
13414
13395
  (A, K) => {
13415
- const Z = s ?? { width: rn, height: ds }, O = Math.min(us, Math.max(cs, Z.width + A)), q = Math.max(300, Z.height + K);
13396
+ const Z = s ?? { width: rn, height: us }, O = Math.min(cs, Math.max(ls, Z.width + A)), q = Math.max(300, Z.height + K);
13416
13397
  f({ width: O, height: q });
13417
13398
  },
13418
13399
  [s, f]
@@ -13510,7 +13491,7 @@ function Hm() {
13510
13491
  ]
13511
13492
  }
13512
13493
  ), rt = mr("heavy", "none", !1);
13513
- return pe(
13494
+ return ge(
13514
13495
  /* @__PURE__ */ d.jsxs(_t, { children: [
13515
13496
  t && i && // Docked mode - fixed to right edge
13516
13497
  /* @__PURE__ */ d.jsxs(
@@ -13540,7 +13521,7 @@ function Hm() {
13540
13521
  },
13541
13522
  children: [
13542
13523
  /* @__PURE__ */ d.jsx(
13543
- ls,
13524
+ as,
13544
13525
  {
13545
13526
  direction: "horizontal",
13546
13527
  onResize: (A) => E(A)
@@ -13581,7 +13562,7 @@ function Hm() {
13581
13562
  left: o?.x ?? window.innerWidth - rn - 20,
13582
13563
  top: o?.y ?? 80,
13583
13564
  width: s?.width ?? rn,
13584
- height: s?.height ?? ds,
13565
+ height: s?.height ?? us,
13585
13566
  ...rt,
13586
13567
  border: "1px solid var(--uilint-glass-border)",
13587
13568
  borderRadius: 12,
@@ -13601,7 +13582,7 @@ function Hm() {
13601
13582
  paddingBottom: b ? "env(safe-area-inset-bottom, 0px)" : void 0
13602
13583
  }, children: k }),
13603
13584
  !b && /* @__PURE__ */ d.jsx(
13604
- ls,
13585
+ as,
13605
13586
  {
13606
13587
  direction: "corner",
13607
13588
  onResize: z
@@ -13615,7 +13596,7 @@ function Hm() {
13615
13596
  F
13616
13597
  );
13617
13598
  }
13618
- const hs = 10, Gm = {
13599
+ const ds = 10, Gm = {
13619
13600
  isSelecting: !1,
13620
13601
  startPoint: null,
13621
13602
  currentPoint: null,
@@ -13659,7 +13640,7 @@ function Ym({
13659
13640
  onRegionSelected: e,
13660
13641
  onCancel: n
13661
13642
  }) {
13662
- const [i, r] = ws(Km, Gm), { isSelecting: o, startPoint: s, currentPoint: a, mounted: l } = i;
13643
+ const [i, r] = xs(Km, Gm), { isSelecting: o, startPoint: s, currentPoint: a, mounted: l } = i;
13663
13644
  G(() => {
13664
13645
  r({ type: "MOUNT" });
13665
13646
  }, []);
@@ -13677,7 +13658,7 @@ function Ym({
13677
13658
  ), f = V(() => {
13678
13659
  if (!o || !s) return;
13679
13660
  const g = c();
13680
- g && g.width > hs && g.height > hs ? e(g) : n(), r({ type: "COMPLETE_SELECTION" });
13661
+ g && g.width > ds && g.height > ds ? e(g) : n(), r({ type: "COMPLETE_SELECTION" });
13681
13662
  }, [o, s, c, e, n]);
13682
13663
  if (G(() => {
13683
13664
  if (!t) return;
@@ -13810,7 +13791,7 @@ function Ym({
13810
13791
  ]
13811
13792
  }
13812
13793
  );
13813
- return pe(b, v);
13794
+ return ge(b, v);
13814
13795
  }
13815
13796
  let Ii = !1;
13816
13797
  function qm() {
@@ -13880,7 +13861,7 @@ const _b = [
13880
13861
  ], Fb = {
13881
13862
  hideNodeModules: !0,
13882
13863
  autoScanEnabled: !1
13883
- }, $t = "data-loc", fs = [
13864
+ }, $t = "data-loc", hs = [
13884
13865
  "#3B82F6",
13885
13866
  "#8B5CF6",
13886
13867
  "#EC4899",
@@ -13979,7 +13960,7 @@ function Ob(t) {
13979
13960
  n.push({
13980
13961
  path: r,
13981
13962
  displayName: ev(r),
13982
- color: fs[i % fs.length],
13963
+ color: hs[i % hs.length],
13983
13964
  elements: o
13984
13965
  }), i++;
13985
13966
  return n.sort((r, o) => o.elements.length - r.elements.length), n;
@@ -14012,9 +13993,9 @@ function Wb(t, e = "cursor", n) {
14012
13993
  a
14013
13994
  )}:${r}:${s}`;
14014
13995
  }
14015
- const fe = /* @__PURE__ */ new Map(), yr = 300 * 1e3, rv = "/api/.uilint/source";
13996
+ const pe = /* @__PURE__ */ new Map(), yr = 300 * 1e3, rv = "/api/.uilint/source";
14016
13997
  async function Nl(t) {
14017
- const e = fe.get(t);
13998
+ const e = pe.get(t);
14018
13999
  if (e && Date.now() - e.fetchedAt < yr)
14019
14000
  return {
14020
14001
  content: e.content,
@@ -14027,7 +14008,7 @@ async function Nl(t) {
14027
14008
  if (!n.ok)
14028
14009
  return console.warn(`[UILint] Failed to fetch source: ${n.statusText}`), null;
14029
14010
  const i = await n.json();
14030
- return fe.set(t, {
14011
+ return pe.set(t, {
14031
14012
  ...i,
14032
14013
  fetchedAt: Date.now()
14033
14014
  }), i;
@@ -14049,18 +14030,18 @@ async function Ub(t, e = 5) {
14049
14030
  };
14050
14031
  }
14051
14032
  function Hb() {
14052
- fe.clear();
14033
+ pe.clear();
14053
14034
  }
14054
14035
  function Gb(t) {
14055
- const e = fe.get(t);
14056
- return e ? Date.now() - e.fetchedAt >= yr ? (fe.delete(t), null) : {
14036
+ const e = pe.get(t);
14037
+ return e ? Date.now() - e.fetchedAt >= yr ? (pe.delete(t), null) : {
14057
14038
  content: e.content,
14058
14039
  relativePath: e.relativePath
14059
14040
  } : null;
14060
14041
  }
14061
14042
  async function Kb(t) {
14062
14043
  const e = [...new Set(t)].filter((i) => {
14063
- const r = fe.get(i);
14044
+ const r = pe.get(i);
14064
14045
  return !r || Date.now() - r.fetchedAt >= yr;
14065
14046
  }), n = 5;
14066
14047
  for (let i = 0; i < e.length; i += n) {
@@ -14082,7 +14063,7 @@ const ii = "data-loc", ov = /* @__PURE__ */ new Set([
14082
14063
  "NOSCRIPT",
14083
14064
  "TEMPLATE",
14084
14065
  "SLOT"
14085
- ]), sv = 3, ps = 100;
14066
+ ]), sv = 3, fs = 100;
14086
14067
  function av(t) {
14087
14068
  const e = t.tagName.toUpperCase(), n = t.getAttribute("role");
14088
14069
  if (n) return n;
@@ -14138,7 +14119,7 @@ function av(t) {
14138
14119
  function lv(t) {
14139
14120
  const e = t.innerText?.trim();
14140
14121
  if (e)
14141
- return e.length > ps ? e.slice(0, ps) + "…" : e;
14122
+ return e.length > fs ? e.slice(0, fs) + "…" : e;
14142
14123
  const n = t.getAttribute("aria-label");
14143
14124
  if (n) return n;
14144
14125
  const i = t.getAttribute("title");
@@ -14468,7 +14449,7 @@ function Ev() {
14468
14449
  throw new Error("getUILintPortalHost() called outside of a DOM environment");
14469
14450
  return document.querySelector(".uilint-devtool-root") ?? document.body;
14470
14451
  }
14471
- const Jt = "#3b82f6", Av = 14, Rv = 22, Iv = 2, Mv = 3, Pe = 2;
14452
+ const Qt = "#3b82f6", Av = 14, Rv = 22, Iv = 2, Mv = 3, Ee = 2;
14472
14453
  function jv(t, e = !1) {
14473
14454
  const n = [];
14474
14455
  return t.forEach((i, r) => {
@@ -14507,8 +14488,8 @@ function Dv({ rect: t }) {
14507
14488
  width: i,
14508
14489
  height: i,
14509
14490
  borderRadius: e ? 4 : 3,
14510
- backgroundColor: e ? Jt : "rgba(59, 130, 246, 0.15)",
14511
- border: `${r}px solid ${Jt}`,
14491
+ backgroundColor: e ? Qt : "rgba(59, 130, 246, 0.15)",
14492
+ border: `${r}px solid ${Qt}`,
14512
14493
  pointerEvents: "auto",
14513
14494
  cursor: "pointer",
14514
14495
  zIndex: 99997,
@@ -14526,7 +14507,7 @@ function Dv({ rect: t }) {
14526
14507
  position: "absolute",
14527
14508
  width: o,
14528
14509
  height: r,
14529
- backgroundColor: e ? "white" : Jt,
14510
+ backgroundColor: e ? "white" : Qt,
14530
14511
  borderRadius: 1,
14531
14512
  transition: "all 0.15s ease-out"
14532
14513
  }
@@ -14539,7 +14520,7 @@ function Dv({ rect: t }) {
14539
14520
  position: "absolute",
14540
14521
  width: r,
14541
14522
  height: o,
14542
- backgroundColor: e ? "white" : Jt,
14523
+ backgroundColor: e ? "white" : Qt,
14543
14524
  borderRadius: 1,
14544
14525
  transition: "all 0.15s ease-out"
14545
14526
  }
@@ -14559,13 +14540,13 @@ function zv({
14559
14540
  {
14560
14541
  style: {
14561
14542
  position: "fixed",
14562
- top: t.top - Pe,
14563
- left: t.left - Pe,
14564
- width: t.width + Pe * 2,
14565
- height: t.height + Pe * 2,
14566
- border: `${Pe}px solid ${Jt}`,
14543
+ top: t.top - Ee,
14544
+ left: t.left - Ee,
14545
+ width: t.width + Ee * 2,
14546
+ height: t.height + Ee * 2,
14547
+ border: `${Ee}px solid ${Qt}`,
14567
14548
  borderRadius: 4,
14568
- backgroundColor: `${Jt}10`,
14549
+ backgroundColor: `${Qt}10`,
14569
14550
  pointerEvents: "none",
14570
14551
  zIndex: 99998,
14571
14552
  transition: "all 0.15s ease-out"
@@ -14582,7 +14563,7 @@ function zv({
14582
14563
  minWidth: 20,
14583
14564
  height: 20,
14584
14565
  borderRadius: 10,
14585
- backgroundColor: Jt,
14566
+ backgroundColor: Qt,
14586
14567
  color: "white",
14587
14568
  fontSize: 11,
14588
14569
  fontWeight: 600,
@@ -14647,7 +14628,7 @@ function qb({
14647
14628
  !c && i.map((p) => /* @__PURE__ */ d.jsx(Dv, { rect: p.rect }, p.id)),
14648
14629
  c && o.map((p) => /* @__PURE__ */ d.jsx(zv, { rect: p.rect, badgeNumber: p.badgeNumber }, p.id))
14649
14630
  ] });
14650
- return pe(f, Ev());
14631
+ return ge(f, Ev());
14651
14632
  }
14652
14633
  const sn = "data-loc", Vv = 100;
14653
14634
  function _v(t, e) {
@@ -14849,7 +14830,7 @@ class Ov {
14849
14830
  return e.closest("[data-ui-lint]") !== null;
14850
14831
  }
14851
14832
  }
14852
- const Ee = new Ov(), Bv = {
14833
+ const Ae = new Ov(), Bv = {
14853
14834
  id: "eslint:toggle-scan",
14854
14835
  title: "Toggle ESLint Scan",
14855
14836
  keywords: ["eslint", "scan", "toggle", "enable", "disable", "start", "stop"],
@@ -15284,9 +15265,9 @@ function Qv(t) {
15284
15265
  }
15285
15266
  };
15286
15267
  }
15287
- let gs = null;
15268
+ let ps = null;
15288
15269
  function tb(t) {
15289
- return gs = Qv(t), gs;
15270
+ return ps = Qv(t), ps;
15290
15271
  }
15291
15272
  function eb(t, e) {
15292
15273
  const { filePath: n } = Ll(t.dataLoc), i = t.ruleId || "unknown", r = e.find(
@@ -15392,7 +15373,7 @@ function Xb() {
15392
15373
  summary: t.summary
15393
15374
  };
15394
15375
  }
15395
- const ms = [
15376
+ const gs = [
15396
15377
  "lint:result",
15397
15378
  "lint:progress",
15398
15379
  "file:changed",
@@ -15532,13 +15513,13 @@ const ms = [
15532
15513
  return console.log("[ESLint Plugin] Running in STATIC mode (manifest-based)"), ab(t);
15533
15514
  console.log("[ESLint Plugin] Running in WEBSOCKET mode");
15534
15515
  const e = [];
15535
- for (const i of ms) {
15516
+ for (const i of gs) {
15536
15517
  const r = t.websocket.on(i, (o) => {
15537
15518
  ub(t, o);
15538
15519
  });
15539
15520
  e.push(r);
15540
15521
  }
15541
- console.log("[ESLint Plugin] Subscribed to", ms.length, "message types");
15522
+ console.log("[ESLint Plugin] Subscribed to", gs.length, "message types");
15542
15523
  const n = t.domObserver.onElementsAdded((i) => {
15543
15524
  cb(t, i);
15544
15525
  });
@@ -16515,16 +16496,16 @@ const Rb = {
16515
16496
  */
16516
16497
  initialize: void 0
16517
16498
  };
16518
- let vs = !1;
16499
+ let ms = !1;
16519
16500
  function jb(t) {
16520
- if (typeof document > "u" || vs) return;
16501
+ if (typeof document > "u" || ms) return;
16521
16502
  const e = document.createElement("style");
16522
- e.setAttribute("data-uilint-devtools-styles", "true"), e.textContent = t, document.head.appendChild(e), vs = !0;
16503
+ e.setAttribute("data-uilint-devtools-styles", "true"), e.textContent = t, document.head.appendChild(e), ms = !0;
16523
16504
  }
16524
16505
  const Lb = `@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-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-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-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-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%}}}@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-red-300:oklch(80.8% .114 19.571);--color-red-500:oklch(63.7% .237 25.331);--color-red-700:oklch(50.5% .213 27.518);--color-red-900:oklch(39.6% .141 25.723);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-700:oklch(48.8% .243 264.376);--color-zinc-50:oklch(98.5% 0 0);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--blur-sm:8px;--blur-md:12px;--blur-lg:16px;--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)}}@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;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}}@layer components{.dev-tool-root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}}@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-2{top:calc(var(--spacing)*2)}.top-2\\.5{top:calc(var(--spacing)*2.5)}.top-3{top:calc(var(--spacing)*3)}.left-3{left:calc(var(--spacing)*3)}.left-4{left:calc(var(--spacing)*4)}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.z-90{z-index:90}.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-1\\.5{margin-inline:calc(var(--spacing)*1.5)}.mx-3{margin-inline:calc(var(--spacing)*3)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-1\\.5{margin-block:calc(var(--spacing)*1.5)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-auto{margin-top:auto}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.ml-1{margin-left:calc(var(--spacing)*1)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-full{width:100%;height:100%}.h-2\\.5{height:calc(var(--spacing)*2.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-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-\\[18px\\]{height:18px}.h-\\[200px\\]{height:200px}.h-\\[var\\(--uilint-icon-button-size\\)\\]{height:var(--uilint-icon-button-size)}.h-\\[var\\(--uilint-icon-button-size-lg\\)\\]{height:var(--uilint-icon-button-size-lg)}.h-\\[var\\(--uilint-icon-button-size-sm\\)\\]{height:var(--uilint-icon-button-size-sm)}.h-full{height:100%}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-4{min-height:calc(var(--spacing)*4)}.min-h-5{min-height:calc(var(--spacing)*5)}.min-h-6{min-height:calc(var(--spacing)*6)}.min-h-\\[44px\\]{min-height:44px}.w-2\\.5{width:calc(var(--spacing)*2.5)}.w-5{width:calc(var(--spacing)*5)}.w-10{width:calc(var(--spacing)*10)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-\\[364px\\]{width:364px}.w-\\[var\\(--uilint-icon-button-size\\)\\]{width:var(--uilint-icon-button-size)}.w-\\[var\\(--uilint-icon-button-size-lg\\)\\]{width:var(--uilint-icon-button-size-lg)}.w-\\[var\\(--uilint-icon-button-size-sm\\)\\]{width:var(--uilint-icon-button-size-sm)}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-\\[580px\\]{max-width:580px}.max-w-\\[calc\\(100\\%-1rem\\)\\]{max-width:calc(100% - 1rem)}.max-w-sm{max-width:var(--container-sm)}.min-w-4{min-width:calc(var(--spacing)*4)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-6{min-width:calc(var(--spacing)*6)}.min-w-\\[18px\\]{min-width:18px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.origin-center{transform-origin:50%}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}: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)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.\\[border-radius\\:var\\(--uilint-card-radius\\)\\]{border-radius:var(--uilint-card-radius)}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\\[0\\.8rem\\]{border-radius:.8rem}.rounded-\\[calc\\(var\\(--uilint-icon-button-radius\\)\\+2px\\)\\]{border-radius:calc(var(--uilint-icon-button-radius) + 2px)}.rounded-\\[calc\\(var\\(--uilint-icon-button-radius\\)-2px\\)\\]{border-radius:calc(var(--uilint-icon-button-radius) - 2px)}.rounded-\\[calc\\(var\\(--uilint-input-radius\\)\\+2px\\)\\]{border-radius:calc(var(--uilint-input-radius) + 2px)}.rounded-\\[calc\\(var\\(--uilint-input-radius\\)-2px\\)\\]{border-radius:calc(var(--uilint-input-radius) - 2px)}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-\\[var\\(--uilint-button-radius\\)\\]{border-radius:var(--uilint-button-radius)}.rounded-\\[var\\(--uilint-icon-button-radius\\)\\]{border-radius:var(--uilint-icon-button-radius)}.rounded-\\[var\\(--uilint-input-radius\\)\\]{border-radius:var(--uilint-input-radius)}.rounded-\\[var\\(--uilint-radius\\,12px\\)\\]{border-radius:var(--uilint-radius,12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--uilint-radius-lg)}.rounded-md{border-radius:var(--uilint-radius)}.rounded-sm{border-radius:var(--uilint-radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{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-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-\\[var\\(--uilint-error\\)\\]{border-color:var(--uilint-error)}.border-\\[var\\(--uilint-glass-border\\)\\]{border-color:var(--uilint-glass-border)}.border-\\[var\\(--uilint-input-border\\)\\]{border-color:var(--uilint-input-border)}.border-\\[var\\(--uilint-kbd-border\\,rgba\\(0\\,0\\,0\\,0\\.1\\)\\)\\]{border-color:var(--uilint-kbd-border,#0000001a)}.border-\\[var\\(--uilint-kbd-border-subtle\\,transparent\\)\\]{border-color:var(--uilint-kbd-border-subtle,transparent)}.border-border,.border-border\\/30{border-color:var(--uilint-border)}@supports (color:color-mix(in lab,red,red)){.border-border\\/30{border-color:color-mix(in oklab,var(--uilint-border)30%,transparent)}}.border-border\\/50{border-color:var(--uilint-border)}@supports (color:color-mix(in lab,red,red)){.border-border\\/50{border-color:color-mix(in oklab,var(--uilint-border)50%,transparent)}}.border-current\\/20{border-color:currentColor}@supports (color:color-mix(in lab,red,red)){.border-current\\/20{border-color:color-mix(in oklab,currentcolor 20%,transparent)}}.border-transparent{border-color:#0000}.border-white\\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.border-zinc-200{border-color:var(--color-zinc-200)}.border-zinc-950\\/10{border-color:#09090b1a}@supports (color:color-mix(in lab,red,red)){.border-zinc-950\\/10{border-color:color-mix(in oklab,var(--color-zinc-950)10%,transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-\\[var\\(--uilint-button-default-bg\\)\\]{background-color:var(--uilint-button-default-bg)}.bg-\\[var\\(--uilint-button-destructive-bg\\)\\]{background-color:var(--uilint-button-destructive-bg)}.bg-\\[var\\(--uilint-button-ghost-bg\\)\\]{background-color:var(--uilint-button-ghost-bg)}.bg-\\[var\\(--uilint-button-glass-bg\\)\\]{background-color:var(--uilint-button-glass-bg)}.bg-\\[var\\(--uilint-button-outline-bg\\)\\]{background-color:var(--uilint-button-outline-bg)}.bg-\\[var\\(--uilint-button-secondary-bg\\)\\]{background-color:var(--uilint-button-secondary-bg)}.bg-\\[var\\(--uilint-glass\\)\\]{background-color:var(--uilint-glass)}.bg-\\[var\\(--uilint-glass-medium\\)\\]{background-color:var(--uilint-glass-medium)}.bg-\\[var\\(--uilint-hover\\)\\]{background-color:var(--uilint-hover)}.bg-\\[var\\(--uilint-input-bg\\)\\]{background-color:var(--uilint-input-bg)}.bg-\\[var\\(--uilint-kbd-background\\,linear-gradient\\(180deg\\,\\#ffffff_0\\%\\,\\#f3f4f6_100\\%\\)\\)\\]{background-color:var(--uilint-kbd-background,linear-gradient(180deg,#fff 0%,#f3f4f6 100%))}.bg-\\[var\\(--uilint-kbd-background-subtle\\,rgba\\(0\\,0\\,0\\,0\\.04\\)\\)\\]{background-color:var(--uilint-kbd-background-subtle,#0000000a)}.bg-amber-500\\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-blue-300\\/20{background-color:#90c5ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-300\\/20{background-color:color-mix(in oklab,var(--color-blue-300)20%,transparent)}}.bg-emerald-500\\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\\/20{background-color:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.bg-error-bg{background-color:var(--uilint-error-bg)}.bg-hover{background-color:var(--uilint-hover)}.bg-info-bg{background-color:var(--uilint-info-bg)}.bg-muted,.bg-muted\\/30{background-color:var(--uilint-surface-elevated)}@supports (color:color-mix(in lab,red,red)){.bg-muted\\/30{background-color:color-mix(in oklab,var(--uilint-surface-elevated)30%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\\/20{background-color:color-mix(in oklab,var(--color-red-500)20%,transparent)}}.bg-success-bg{background-color:var(--uilint-success-bg)}.bg-surface-elevated{background-color:var(--uilint-surface-elevated)}.bg-transparent{background-color:#0000}.bg-warning-bg{background-color:var(--uilint-warning-bg)}.bg-white{background-color:var(--color-white)}.bg-zinc-100{background-color:var(--color-zinc-100)}.bg-zinc-100\\/50{background-color:#f4f4f580}@supports (color:color-mix(in lab,red,red)){.bg-zinc-100\\/50{background-color:color-mix(in oklab,var(--color-zinc-100)50%,transparent)}}.bg-zinc-200{background-color:var(--color-zinc-200)}.bg-zinc-900{background-color:var(--color-zinc-900)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-\\[1px\\],.p-px{padding:1px}.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-5{padding-inline:calc(var(--spacing)*5)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.pt-0{padding-top:calc(var(--spacing)*0)}.pr-1\\.25{padding-right:calc(var(--spacing)*1.25)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pl-9{padding-left:calc(var(--spacing)*9)}.text-center{text-align:center}.text-left{text-align:left}.font-\\[-apple-system\\,BlinkMacSystemFont\\,\\'SF_Pro_Text\\'\\,\\'Segoe_UI\\'\\,sans-serif\\]{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,sans-serif}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.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-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.\\[color\\:var\\(--uilint-text-primary\\)\\]{color:var(--uilint-text-primary)}.\\[color\\:var\\(--uilint-text-secondary\\)\\]{color:var(--uilint-text-secondary)}.text-\\[var\\(--uilint-button-default-text\\)\\]{color:var(--uilint-button-default-text)}.text-\\[var\\(--uilint-button-destructive-text\\)\\]{color:var(--uilint-button-destructive-text)}.text-\\[var\\(--uilint-button-ghost-text\\)\\]{color:var(--uilint-button-ghost-text)}.text-\\[var\\(--uilint-button-glass-text\\)\\]{color:var(--uilint-button-glass-text)}.text-\\[var\\(--uilint-button-outline-text\\)\\]{color:var(--uilint-button-outline-text)}.text-\\[var\\(--uilint-button-secondary-text\\)\\]{color:var(--uilint-button-secondary-text)}.text-\\[var\\(--uilint-kbd-text\\,\\#6b7280\\)\\]{color:var(--uilint-kbd-text,#6b7280)}.text-\\[var\\(--uilint-kbd-text-subtle\\,\\#9ca3af\\)\\]{color:var(--uilint-kbd-text-subtle,#9ca3af)}.text-\\[var\\(--uilint-text-muted\\)\\]{color:var(--uilint-text-muted)}.text-\\[var\\(--uilint-text-primary\\)\\]{color:var(--uilint-text-primary)}.text-\\[var\\(--uilint-text-secondary\\)\\]{color:var(--uilint-text-secondary)}.text-amber-700{color:var(--color-amber-700)}.text-blue-700{color:var(--color-blue-700)}.text-emerald-700{color:var(--color-emerald-700)}.text-error{color:var(--uilint-error)}.text-foreground{color:var(--uilint-foreground)}.text-info{color:var(--uilint-info)}.text-muted-foreground,.text-muted-foreground\\/50{color:var(--uilint-text-muted)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/50{color:color-mix(in oklab,var(--uilint-text-muted)50%,transparent)}}.text-muted-foreground\\/60{color:var(--uilint-text-muted)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/60{color:color-mix(in oklab,var(--uilint-text-muted)60%,transparent)}}.text-muted-foreground\\/70{color:var(--uilint-text-muted)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/70{color:color-mix(in oklab,var(--uilint-text-muted)70%,transparent)}}.text-red-700{color:var(--color-red-700)}.text-success{color:var(--uilint-success)}.text-text-secondary{color:var(--uilint-text-secondary)}.text-warning{color:var(--uilint-warning)}.text-white{color:var(--color-white)}.text-zinc-50{color:var(--color-zinc-50)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-900{color:var(--color-zinc-900)}.text-zinc-950{color:var(--color-zinc-950)}.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,)}.underline-offset-4{text-underline-offset:4px}.opacity-50{opacity:.5}.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-\\[0_0_0_1px_rgba\\(0\\,0\\,0\\,0\\.08\\)\\,0px_2px_2px_rgba\\(0\\,0\\,0\\,0\\.04\\)\\,0px_8px_16px_-4px_rgba\\(0\\,0\\,0\\,0\\.04\\)\\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#00000014),0px 2px 2px var(--tw-shadow-color,#0000000a),0px 8px 16px -4px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0px_1px_1px_0px_hsla\\(0\\,0\\%\\,0\\%\\,0\\.02\\)_inset\\,0px_1px_1px_0px_hsla\\(0\\,0\\%\\,0\\%\\,0\\.02\\)_inset\\,0px_0px_0px_1px_rgba\\(255\\,255\\,255\\,0\\.25\\)\\]{--tw-shadow:0px 1px 1px 0px var(--tw-shadow-color,#00000005)inset,0px 1px 1px 0px var(--tw-shadow-color,#00000005)inset,0px 0px 0px 1px var(--tw-shadow-color,#ffffff40);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0px_1px_1px_0px_rgba\\(0\\,0\\,0\\,0\\.05\\)\\,0px_1px_1px_0px_rgba\\(255\\,252\\,240\\,0\\.5\\)_inset\\,0px_0px_0px_1px_hsla\\(0\\,0\\%\\,100\\%\\,0\\.1\\)_inset\\,0px_0px_1px_0px_rgba\\(28\\,27\\,26\\,0\\.5\\)\\]{--tw-shadow:0px 1px 1px 0px var(--tw-shadow-color,#0000000d),0px 1px 1px 0px var(--tw-shadow-color,#fffcf080)inset,0px 0px 0px 1px var(--tw-shadow-color,#ffffff1a)inset,0px 0px 1px 0px var(--tw-shadow-color,#1c1b1a80);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[inset_0_0_1px_1px_hsl\\(var\\(--border\\)\\/0\\.3\\)\\]{--tw-shadow:inset 0 0 1px 1px var(--tw-shadow-color,hsl(var(--border)/.3));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[var\\(--uilint-button-shadow\\)\\]{--tw-shadow:var(--uilint-button-shadow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[var\\(--uilint-kbd-shadow\\,0_1px_0_rgba\\(0\\,0\\,0\\,0\\.08\\)\\)\\]{--tw-shadow:var(--uilint-kbd-shadow,0 1px 0 #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-md{--tw-shadow:var(--uilint-shadow);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-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,.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)}.\\[box-shadow\\:var\\(--uilint-card-elevated-shadow\\)\\]{box-shadow:var(--uilint-card-elevated-shadow)}.\\[box-shadow\\:var\\(--uilint-card-shadow\\)\\]{box-shadow:var(--uilint-card-shadow)}.ring-zinc-200\\/50{--tw-ring-color:#e4e4e780}@supports (color:color-mix(in lab,red,red)){.ring-zinc-200\\/50{--tw-ring-color:color-mix(in oklab,var(--color-zinc-200)50%,transparent)}}.ring-offset-white{--tw-ring-offset-color:var(--color-white)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-lg{--tw-blur:blur(var(--blur-lg));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-md{--tw-blur:blur(var(--blur-md));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-sm{--tw-blur:blur(var(--blur-sm));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-\\[var\\(--uilint-glass-blur-medium\\)\\]{--tw-backdrop-blur:blur(var(--uilint-glass-blur-medium));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.\\[backdrop-filter\\:blur\\(var\\(--uilint-glass-blur-medium\\)\\)\\]{-webkit-backdrop-filter:blur(var(--uilint-glass-blur-medium));backdrop-filter:blur(var(--uilint-glass-blur-medium))}.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-\\[colors\\]{transition-property:colors;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[scale\\]{transition-property:scale;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))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\\[background\\:var\\(--uilint-card-bg\\)\\]{background:var(--uilint-card-bg)}.\\[background\\:var\\(--uilint-card-elevated-bg\\)\\]{background:var(--uilint-card-elevated-bg)}.\\[background\\:var\\(--uilint-card-glass-bg\\)\\]{background:var(--uilint-card-glass-bg)}.\\[border-top\\:1px_solid_var\\(--uilint-card-border\\)\\]{border-top:1px solid var(--uilint-card-border)}.\\[border\\:1px_solid_var\\(--uilint-card-border\\)\\]{border:1px solid var(--uilint-card-border)}.\\[border\\:1px_solid_var\\(--uilint-card-glass-border\\)\\]{border:1px solid var(--uilint-card-glass-border)}.file\\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\\:bg-transparent::file-selector-button{background-color:#0000}.file\\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.placeholder\\:text-\\[var\\(--uilint-input-placeholder\\)\\]::placeholder{color:var(--uilint-input-placeholder)}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:inset-x-0:before{content:var(--tw-content);inset-inline:calc(var(--spacing)*0)}.before\\:inset-y-0:before{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.before\\:top-0:before{content:var(--tw-content);top:calc(var(--spacing)*0)}.before\\:left-0:before{content:var(--tw-content);left:calc(var(--spacing)*0)}.before\\:h-\\(--top-fade-height\\):before{content:var(--tw-content);height:var(--top-fade-height)}.before\\:h-px:before{content:var(--tw-content);height:1px}.before\\:w-\\(--left-fade-width\\):before{content:var(--tw-content);width:var(--left-fade-width)}.before\\:bg-gradient-to-b:before{content:var(--tw-content);--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.before\\:bg-gradient-to-r:before{content:var(--tw-content);--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.before\\:from-background:before{content:var(--tw-content);--tw-gradient-from:var(--uilint-background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.before\\:to-transparent:before{content:var(--tw-content);--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.before\\:opacity-0:before{content:var(--tw-content);opacity:0}.before\\:opacity-100:before{content:var(--tw-content);opacity:1}.before\\:transition-\\[height\\,opacity\\]:before{content:var(--tw-content);transition-property:height,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.before\\:transition-\\[width\\,opacity\\]:before{content:var(--tw-content);transition-property:width,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.before\\:duration-300:before{content:var(--tw-content);--tw-duration:.3s;transition-duration:.3s}.before\\:\\[background\\:var\\(--uilint-glass-highlight\\)\\]:before{content:var(--tw-content);background:var(--uilint-glass-highlight)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:inset-x-0:after{content:var(--tw-content);inset-inline:calc(var(--spacing)*0)}.after\\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\\:right-0:after{content:var(--tw-content);right:calc(var(--spacing)*0)}.after\\:bottom-0:after{content:var(--tw-content);bottom:calc(var(--spacing)*0)}.after\\:h-\\(--bottom-fade-height\\):after{content:var(--tw-content);height:var(--bottom-fade-height)}.after\\:w-\\(--right-fade-width\\):after{content:var(--tw-content);width:var(--right-fade-width)}.after\\:bg-gradient-to-l:after{content:var(--tw-content);--tw-gradient-position:to left in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.after\\:bg-gradient-to-t:after{content:var(--tw-content);--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.after\\:from-background:after{content:var(--tw-content);--tw-gradient-from:var(--uilint-background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.after\\:to-transparent:after{content:var(--tw-content);--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.after\\:opacity-0:after{content:var(--tw-content);opacity:0}.after\\:opacity-100:after{content:var(--tw-content);opacity:1}.after\\:transition-\\[height\\,opacity\\]:after{content:var(--tw-content);transition-property:height,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\\:transition-\\[width\\,opacity\\]:after{content:var(--tw-content);transition-property:width,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\\:duration-300:after{content:var(--tw-content);--tw-duration:.3s;transition-duration:.3s}@media(hover:hover){.hover\\:bg-\\[var\\(--uilint-active\\)\\]:hover{background-color:var(--uilint-active)}.hover\\:bg-\\[var\\(--uilint-button-destructive-bg\\)\\]\\/90:hover{background-color:var(--uilint-button-destructive-bg)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-\\[var\\(--uilint-button-destructive-bg\\)\\]\\/90:hover{background-color:color-mix(in oklab,var(--uilint-button-destructive-bg)90%,transparent)}}.hover\\:bg-\\[var\\(--uilint-button-ghost-text\\)\\]\\/10:hover{background-color:var(--uilint-button-ghost-text)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-\\[var\\(--uilint-button-ghost-text\\)\\]\\/10:hover{background-color:color-mix(in oklab,var(--uilint-button-ghost-text)10%,transparent)}}.hover\\:bg-\\[var\\(--uilint-button-outline-text\\)\\]\\/10:hover{background-color:var(--uilint-button-outline-text)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-\\[var\\(--uilint-button-outline-text\\)\\]\\/10:hover{background-color:color-mix(in oklab,var(--uilint-button-outline-text)10%,transparent)}}.hover\\:bg-\\[var\\(--uilint-button-secondary-bg\\)\\]\\/80:hover{background-color:var(--uilint-button-secondary-bg)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-\\[var\\(--uilint-button-secondary-bg\\)\\]\\/80:hover{background-color:color-mix(in oklab,var(--uilint-button-secondary-bg)80%,transparent)}}.hover\\:bg-\\[var\\(--uilint-glass-medium\\)\\]:hover{background-color:var(--uilint-glass-medium)}.hover\\:bg-\\[var\\(--uilint-hover\\)\\]:hover{background-color:var(--uilint-hover)}.hover\\:bg-muted\\/50:hover{background-color:var(--uilint-surface-elevated)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-muted\\/50:hover{background-color:color-mix(in oklab,var(--uilint-surface-elevated)50%,transparent)}}.hover\\:bg-red-500\\/80:hover{background-color:#fb2c36cc}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-red-500\\/80:hover{background-color:color-mix(in oklab,var(--color-red-500)80%,transparent)}}.hover\\:bg-red-500\\/90:hover{background-color:#fb2c36e6}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-red-500\\/90:hover{background-color:color-mix(in oklab,var(--color-red-500)90%,transparent)}}.hover\\:bg-white\\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-white\\/30:hover{background-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.hover\\:bg-zinc-100:hover{background-color:var(--color-zinc-100)}.hover\\:bg-zinc-100\\/60:hover{background-color:#f4f4f599}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-zinc-100\\/60:hover{background-color:color-mix(in oklab,var(--color-zinc-100)60%,transparent)}}.hover\\:bg-zinc-100\\/80:hover{background-color:#f4f4f5cc}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-zinc-100\\/80:hover{background-color:color-mix(in oklab,var(--color-zinc-100)80%,transparent)}}.hover\\:bg-zinc-900\\/80:hover{background-color:#18181bcc}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-zinc-900\\/80:hover{background-color:color-mix(in oklab,var(--color-zinc-900)80%,transparent)}}.hover\\:bg-zinc-900\\/90:hover{background-color:#18181be6}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-zinc-900\\/90:hover{background-color:color-mix(in oklab,var(--color-zinc-900)90%,transparent)}}.hover\\:text-\\[var\\(--uilint-text-primary\\)\\]:hover{color:var(--uilint-text-primary)}.hover\\:text-\\[var\\(--uilint-text-secondary\\)\\]:hover{color:var(--uilint-text-secondary)}.hover\\:text-foreground:hover{color:var(--uilint-foreground)}.hover\\:text-zinc-800:hover{color:var(--color-zinc-800)}.hover\\:text-zinc-900:hover{color:var(--color-zinc-900)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:shadow-\\[var\\(--uilint-button-shadow-hover\\)\\]:hover{--tw-shadow:var(--uilint-button-shadow-hover);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:border-\\[var\\(--uilint-error\\)\\]:focus{border-color:var(--uilint-error)}.focus\\:border-\\[var\\(--uilint-input-border-focus\\)\\]:focus{border-color:var(--uilint-input-border-focus)}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-zinc-950:focus{--tw-ring-color:var(--color-zinc-950)}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\: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-\\[var\\(--uilint-button-default-bg\\)\\]:focus-visible{--tw-ring-color:var(--uilint-button-default-bg)}.focus-visible\\:ring-\\[var\\(--uilint-button-destructive-bg\\)\\]:focus-visible{--tw-ring-color:var(--uilint-button-destructive-bg)}.focus-visible\\:ring-\\[var\\(--uilint-button-ghost-text\\)\\]:focus-visible{--tw-ring-color:var(--uilint-button-ghost-text)}.focus-visible\\:ring-\\[var\\(--uilint-button-outline-text\\)\\]:focus-visible{--tw-ring-color:var(--uilint-button-outline-text)}.focus-visible\\:ring-\\[var\\(--uilint-button-secondary-bg\\)\\]:focus-visible{--tw-ring-color:var(--uilint-button-secondary-bg)}.focus-visible\\:ring-ring:focus-visible{--tw-ring-color:var(--uilint-border-focus)}.focus-visible\\:ring-white\\/50:focus-visible{--tw-ring-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.focus-visible\\:ring-white\\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--color-white)50%,transparent)}}.focus-visible\\:ring-zinc-950:focus-visible{--tw-ring-color:var(--color-zinc-950)}.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-x-98:active{--tw-scale-x:98%;scale:var(--tw-scale-x)var(--tw-scale-y)}.active\\:scale-y-95:active{--tw-scale-y:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.active\\:scale-\\[0\\.98\\]:active{scale:.98}.active\\:bg-zinc-100\\/70:active{background-color:#f4f4f5b3}@supports (color:color-mix(in lab,red,red)){.active\\:bg-zinc-100\\/70:active{background-color:color-mix(in oklab,var(--color-zinc-100)70%,transparent)}}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}.disabled\\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\\:h-5{height:calc(var(--spacing)*5)}.sm\\:min-h-0{min-height:calc(var(--spacing)*0)}.sm\\:w-5{width:calc(var(--spacing)*5)}.sm\\:max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.sm\\:max-w-lg{max-width:var(--container-lg)}.sm\\:rounded-lg{border-radius:var(--uilint-radius-lg)}.sm\\:rounded-xl{border-radius:var(--radius-xl)}.sm\\:p-1\\.5{padding:calc(var(--spacing)*1.5)}.sm\\:p-3{padding:calc(var(--spacing)*3)}.sm\\:px-0{padding-inline:calc(var(--spacing)*0)}.sm\\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\\:py-4{padding-block:calc(var(--spacing)*4)}.sm\\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\\:shadow-\\[inset_0_0_2px_1px_hsl\\(var\\(--border\\)\\/0\\.3\\)\\]{--tw-shadow:inset 0 0 2px 1px var(--tw-shadow-color,hsl(var(--border)/.3));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media(min-width:48rem){.md\\:max-w-\\[calc\\(100\\%-4rem\\)\\]{max-width:calc(100% - 4rem)}.md\\:rounded-3xl{border-radius:var(--radius-3xl)}.md\\:rounded-\\[2rem\\]{border-radius:2rem}.md\\:p-2{padding:calc(var(--spacing)*2)}.md\\:p-4{padding:calc(var(--spacing)*4)}}@media(prefers-color-scheme:dark){.dark\\:border-zinc-50\\/10{border-color:#fafafa1a}@supports (color:color-mix(in lab,red,red)){.dark\\:border-zinc-50\\/10{border-color:color-mix(in oklab,var(--color-zinc-50)10%,transparent)}}.dark\\:border-zinc-800{border-color:var(--color-zinc-800)}.dark\\:bg-amber-500\\/25{background-color:#f99c0040}@supports (color:color-mix(in lab,red,red)){.dark\\:bg-amber-500\\/25{background-color:color-mix(in oklab,var(--color-amber-500)25%,transparent)}}.dark\\:bg-blue-500\\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.dark\\:bg-blue-500\\/20{background-color:color-mix(in oklab,var(--color-blue-500)20%,transparent)}}.dark\\:bg-emerald-500\\/25{background-color:#00bb7f40}@supports (color:color-mix(in lab,red,red)){.dark\\:bg-emerald-500\\/25{background-color:color-mix(in oklab,var(--color-emerald-500)25%,transparent)}}.dark\\:bg-red-500\\/25{background-color:#fb2c3640}@supports (color:color-mix(in lab,red,red)){.dark\\:bg-red-500\\/25{background-color:color-mix(in oklab,var(--color-red-500)25%,transparent)}}.dark\\:bg-red-900{background-color:var(--color-red-900)}.dark\\:bg-zinc-50{background-color:var(--color-zinc-50)}.dark\\:bg-zinc-100{background-color:var(--color-zinc-100)}.dark\\:bg-zinc-700{background-color:var(--color-zinc-700)}.dark\\:bg-zinc-800{background-color:var(--color-zinc-800)}.dark\\:bg-zinc-800\\/50{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.dark\\:bg-zinc-800\\/50{background-color:color-mix(in oklab,var(--color-zinc-800)50%,transparent)}}.dark\\:bg-zinc-950{background-color:var(--color-zinc-950)}.dark\\:text-amber-300{color:var(--color-amber-300)}.dark\\:text-blue-400{color:var(--color-blue-400)}.dark\\:text-emerald-300{color:var(--color-emerald-300)}.dark\\:text-red-300{color:var(--color-red-300)}.dark\\:text-zinc-50{color:var(--color-zinc-50)}.dark\\:text-zinc-100{color:var(--color-zinc-100)}.dark\\:text-zinc-400{color:var(--color-zinc-400)}.dark\\:text-zinc-900{color:var(--color-zinc-900)}.dark\\:shadow-\\[0_0_0_1px_rgba\\(255\\,252\\,240\\,0\\.08\\)\\,0px_2px_2px_rgba\\(0\\,0\\,0\\,0\\.2\\)\\,0px_8px_16px_-4px_rgba\\(0\\,0\\,0\\,0\\.3\\)\\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#fffcf014),0px 2px 2px var(--tw-shadow-color,#0003),0px 8px 16px -4px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\\:shadow-\\[0px_1px_1px_0px_hsla\\(0\\,0\\%\\,100\\%\\,0\\.02\\)_inset\\,0px_1px_1px_0px_rgba\\(255\\,255\\,255\\,0\\.05\\)_inset\\,0px_0px_0px_1px_hsla\\(0\\,0\\%\\,100\\%\\,0\\.05\\)_inset\\,0px_0px_1px_0px_rgba\\(0\\,0\\,0\\,0\\.25\\)\\]{--tw-shadow:0px 1px 1px 0px var(--tw-shadow-color,#ffffff05)inset,0px 1px 1px 0px var(--tw-shadow-color,#ffffff0d)inset,0px 0px 0px 1px var(--tw-shadow-color,#ffffff0d)inset,0px 0px 1px 0px 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)}.dark\\:shadow-\\[0px_1px_1px_0px_rgba\\(0\\,0\\,0\\,0\\.2\\)\\,0px_1px_1px_0px_rgba\\(255\\,255\\,255\\,0\\.05\\)_inset\\,0px_0px_0px_1px_hsla\\(0\\,0\\%\\,100\\%\\,0\\.05\\)_inset\\,0px_0px_1px_0px_rgba\\(0\\,0\\,0\\,0\\.8\\)\\]{--tw-shadow:0px 1px 1px 0px var(--tw-shadow-color,#0003),0px 1px 1px 0px var(--tw-shadow-color,#ffffff0d)inset,0px 0px 0px 1px var(--tw-shadow-color,#ffffff0d)inset,0px 0px 1px 0px var(--tw-shadow-color,#000c);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\\:shadow-\\[inset_0_0_1px_1px_hsl\\(var\\(--border\\)\\/0\\.5\\)\\]{--tw-shadow:inset 0 0 1px 1px var(--tw-shadow-color,hsl(var(--border)/.5));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark\\:ring-zinc-800\\/50{--tw-ring-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.dark\\:ring-zinc-800\\/50{--tw-ring-color:color-mix(in oklab,var(--color-zinc-800)50%,transparent)}}.dark\\:ring-offset-zinc-950{--tw-ring-offset-color:var(--color-zinc-950)}@media(hover:hover){.dark\\:dark\\:hover\\:bg-zinc-800\\/50:hover{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.dark\\:dark\\:hover\\:bg-zinc-800\\/50:hover{background-color:color-mix(in oklab,var(--color-zinc-800)50%,transparent)}}}@media(hover:hover){.dark\\:hover\\:bg-red-900\\/80:hover{background-color:#82181acc}@supports (color:color-mix(in lab,red,red)){.dark\\:hover\\:bg-red-900\\/80:hover{background-color:color-mix(in oklab,var(--color-red-900)80%,transparent)}}.dark\\:hover\\:bg-red-900\\/90:hover{background-color:#82181ae6}@supports (color:color-mix(in lab,red,red)){.dark\\:hover\\:bg-red-900\\/90:hover{background-color:color-mix(in oklab,var(--color-red-900)90%,transparent)}}.dark\\:hover\\:bg-zinc-50\\/80:hover{background-color:#fafafacc}@supports (color:color-mix(in lab,red,red)){.dark\\:hover\\:bg-zinc-50\\/80:hover{background-color:color-mix(in oklab,var(--color-zinc-50)80%,transparent)}}.dark\\:hover\\:bg-zinc-50\\/90:hover{background-color:#fafafae6}@supports (color:color-mix(in lab,red,red)){.dark\\:hover\\:bg-zinc-50\\/90:hover{background-color:color-mix(in oklab,var(--color-zinc-50)90%,transparent)}}.dark\\:hover\\:bg-zinc-100\\/50:hover{background-color:#f4f4f580}@supports (color:color-mix(in lab,red,red)){.dark\\:hover\\:bg-zinc-100\\/50:hover{background-color:color-mix(in oklab,var(--color-zinc-100)50%,transparent)}}.dark\\:hover\\:bg-zinc-700:hover{background-color:var(--color-zinc-700)}.dark\\:hover\\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.dark\\:hover\\:bg-zinc-800\\/60:hover{background-color:#27272a99}@supports (color:color-mix(in lab,red,red)){.dark\\:hover\\:bg-zinc-800\\/60:hover{background-color:color-mix(in oklab,var(--color-zinc-800)60%,transparent)}}.dark\\:hover\\:bg-zinc-800\\/80:hover{background-color:#27272acc}@supports (color:color-mix(in lab,red,red)){.dark\\:hover\\:bg-zinc-800\\/80:hover{background-color:color-mix(in oklab,var(--color-zinc-800)80%,transparent)}}.dark\\:hover\\:text-zinc-50:hover{color:var(--color-zinc-50)}}.dark\\:focus\\:ring-zinc-300:focus,.dark\\:focus-visible\\:ring-zinc-300:focus-visible{--tw-ring-color:var(--color-zinc-300)}.dark\\:active\\:bg-zinc-800\\/70:active{background-color:#27272ab3}@supports (color:color-mix(in lab,red,red)){.dark\\:active\\:bg-zinc-800\\/70:active{background-color:color-mix(in oklab,var(--color-zinc-800)70%,transparent)}}@media(min-width:40rem){.dark\\:sm\\:shadow-\\[inset_0_0_2px_1px_hsl\\(var\\(--border\\)\\/0\\.5\\)\\]{--tw-shadow:inset 0 0 2px 1px var(--tw-shadow-color,hsl(var(--border)/.5));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}}.\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\\[\\&_svg\\]\\:h-4 svg{height:calc(var(--spacing)*4)}.\\[\\&_svg\\]\\:h-5 svg{height:calc(var(--spacing)*5)}.\\[\\&_svg\\]\\:h-\\[18px\\] svg{height:18px}.\\[\\&_svg\\]\\:w-4 svg{width:calc(var(--spacing)*4)}.\\[\\&_svg\\]\\:w-5 svg{width:calc(var(--spacing)*5)}.\\[\\&_svg\\]\\:w-\\[18px\\] svg{width:18px}.\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\&_svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-3 svg:not([class*=size-]){width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\\[\\&\\>div\\]\\:\\!block>div{display:block!important}[data-slot=tooltip-content] .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-white\\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){[data-slot=tooltip-content] .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-white\\/20{background-color:color-mix(in oklab,var(--color-white)20%,transparent)}}[data-slot=tooltip-content] .\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:text-white{color:var(--color-white)}@media(prefers-color-scheme:dark){[data-slot=tooltip-content] .dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-white\\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){[data-slot=tooltip-content] .dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-white\\/10{background-color:color-mix(in oklab,var(--color-white)10%,transparent)}}[data-slot=tooltip-content] .dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-zinc-950\\/20{background-color:#09090b33}@supports (color:color-mix(in lab,red,red)){[data-slot=tooltip-content] .dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-zinc-950\\/20{background-color:color-mix(in oklab,var(--color-zinc-950)20%,transparent)}}[data-slot=tooltip-content] .dark\\:dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-zinc-950\\/10{background-color:#09090b1a}@supports (color:color-mix(in lab,red,red)){[data-slot=tooltip-content] .dark\\:dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:bg-zinc-950\\/10{background-color:color-mix(in oklab,var(--color-zinc-950)10%,transparent)}}[data-slot=tooltip-content] .dark\\:\\[\\[data-slot\\=tooltip-content\\]_\\&\\]\\:text-zinc-950{color:var(--color-zinc-950)}}}:root{--uilint-background:oklch(98.5% .015 75);--uilint-background-elevated:oklch(97% .02 75);--uilint-foreground:oklch(18% .02 75);--uilint-surface:oklch(98.5% .015 75);--uilint-surface-elevated:oklch(97% .02 75);--uilint-text-primary:oklch(18% .02 75);--uilint-text-secondary:oklch(40% .025 75);--uilint-text-muted:oklch(55% .03 75);--uilint-text-disabled:oklch(70% .02 75);--uilint-hover:oklch(75% .08 75/.15);--uilint-active:oklch(70% .1 75/.2);--uilint-border:oklch(90% .025 75);--uilint-border-focus:oklch(70% .15 75);--uilint-accent:oklch(70% .16 75);--uilint-accent-foreground:oklch(98.5% .015 75);--uilint-success:oklch(72.3% .191 142.5);--uilint-success-bg:oklch(72.3% .191 142.5/.15);--uilint-warning:oklch(75% .183 55.934);--uilint-warning-bg:oklch(75% .183 55.934/.15);--uilint-error:oklch(63.7% .237 25.331);--uilint-error-bg:oklch(63.7% .237 25.331/.15);--uilint-info:oklch(62.3% .214 259);--uilint-info-bg:oklch(62.3% .214 259/.15);--uilint-shadow:0 4px 20px oklch(30% .05 75/.15);--uilint-shadow-lg:0 8px 32px oklch(30% .05 75/.2);--uilint-backdrop:oklch(98.5% .015 75/.92);--uilint-glass:oklch(99% .01 75/.7);--uilint-glass-border:oklch(100% .02 75/.25);--uilint-glass-highlight:oklch(100% 0 0/.4);--uilint-glass-blur-light:8px;--uilint-glass-blur-medium:16px;--uilint-glass-blur-heavy:24px;--uilint-glass-light:oklch(99% .01 75/.5);--uilint-glass-medium:oklch(99% .01 75/.7);--uilint-glass-heavy:oklch(99% .01 75/.85);--uilint-kbd-background:linear-gradient(180deg,oklch(100% 0 0) 0%,oklch(96% .01 75) 100%);--uilint-kbd-border:oklch(0% 0 0/.1);--uilint-kbd-shadow:0 1px 0 oklch(0% 0 0/.08);--uilint-kbd-text:oklch(45% .03 75);--uilint-badge-radius:6px;--uilint-button-radius:8px;--uilint-button-shadow:0 1px 2px oklch(0% 0 0/.05);--uilint-button-shadow-hover:0 2px 4px oklch(0% 0 0/.1);--uilint-button-default-bg:var(--uilint-accent);--uilint-button-default-text:var(--uilint-accent-foreground);--uilint-button-default-border:transparent;--uilint-button-secondary-bg:oklch(95% .01 75);--uilint-button-secondary-text:var(--uilint-text-primary);--uilint-button-secondary-border:var(--uilint-border);--uilint-button-ghost-bg:transparent;--uilint-button-ghost-text:var(--uilint-text-secondary);--uilint-button-ghost-border:transparent;--uilint-button-destructive-bg:var(--uilint-error);--uilint-button-destructive-text:oklch(100% 0 0);--uilint-button-destructive-border:transparent;--uilint-button-outline-bg:transparent;--uilint-button-outline-text:var(--uilint-text-primary);--uilint-button-outline-border:var(--uilint-border);--uilint-button-glass-bg:var(--uilint-glass-medium);--uilint-button-glass-text:var(--uilint-text-primary);--uilint-button-glass-border:var(--uilint-glass-border);--uilint-input-bg:oklch(100% 0 0/.6);--uilint-input-border:var(--uilint-border);--uilint-input-border-focus:var(--uilint-border-focus);--uilint-input-placeholder:var(--uilint-text-muted);--uilint-input-radius:8px;--uilint-input-ring:oklch(70% .15 75/.25);--uilint-card-bg:var(--uilint-surface);--uilint-card-border:var(--uilint-border);--uilint-card-radius:12px;--uilint-card-shadow:0 1px 3px oklch(0% 0 0/.04);--uilint-card-shadow-hover:0 4px 12px oklch(0% 0 0/.08);--uilint-card-elevated-bg:var(--uilint-surface-elevated);--uilint-card-elevated-shadow:0 4px 16px oklch(0% 0 0/.1);--uilint-card-glass-bg:var(--uilint-glass-medium);--uilint-card-glass-border:var(--uilint-glass-border);--uilint-icon-button-size:32px;--uilint-icon-button-size-sm:28px;--uilint-icon-button-size-lg:40px;--uilint-icon-button-radius:8px;--uilint-scrollbar-track:oklch(92% .02 75);--uilint-scrollbar-thumb:oklch(70% .04 75);--uilint-scrollbar-thumb-hover:oklch(55% .05 75);--uilint-radius:12px;--uilint-radius-sm:8px;--uilint-radius-lg:16px;--uilint-transition-fast:.1s ease;--uilint-transition-normal:.15s ease;--uilint-transition-slow:.25s ease;color-scheme:light}.dev-tool-root{color-scheme:light}.dark,.dark .dev-tool-root,.dev-tool-root.dark,.dev-tool-root[data-theme=dark]{--uilint-background:oklch(16% .02 75);--uilint-background-elevated:oklch(22% .025 75);--uilint-foreground:oklch(95% .025 75);--uilint-surface:oklch(16% .02 75);--uilint-surface-elevated:oklch(22% .025 75);--uilint-text-primary:oklch(95% .025 75);--uilint-text-secondary:oklch(82% .03 75);--uilint-text-muted:oklch(65% .035 75);--uilint-text-disabled:oklch(45% .025 75);--uilint-hover:oklch(80% .1 75/.12);--uilint-active:oklch(80% .12 75/.18);--uilint-border:oklch(95% .03 75/.12);--uilint-border-focus:oklch(75% .15 75);--uilint-accent:oklch(75% .15 75);--uilint-accent-foreground:oklch(16% .02 75);--uilint-success:oklch(72.3% .191 142.5);--uilint-success-bg:oklch(72.3% .191 142.5/.2);--uilint-warning:oklch(75% .183 55.934);--uilint-warning-bg:oklch(75% .183 55.934/.2);--uilint-error:oklch(63.7% .237 25.331);--uilint-error-bg:oklch(63.7% .237 25.331/.2);--uilint-info:oklch(62.3% .214 259);--uilint-info-bg:oklch(62.3% .214 259/.2);--uilint-shadow:0 4px 20px oklch(10% .03 75/.4);--uilint-shadow-lg:0 8px 32px oklch(0% 0 0/.5);--uilint-backdrop:oklch(12% .02 75/.92);--uilint-glass:oklch(18% .02 75/.7);--uilint-glass-border:oklch(100% .02 75/.12);--uilint-glass-highlight:oklch(100% 0 0/.1);--uilint-glass-light:oklch(20% .02 75/.5);--uilint-glass-medium:oklch(18% .02 75/.7);--uilint-glass-heavy:oklch(16% .02 75/.85);--uilint-kbd-background:linear-gradient(180deg,oklch(28% .02 75) 0%,oklch(22% .02 75) 100%);--uilint-kbd-border:oklch(100% 0 0/.1);--uilint-kbd-shadow:0 1px 0 oklch(0% 0 0/.2);--uilint-kbd-text:oklch(75% .03 75);--uilint-button-default-bg:var(--uilint-accent);--uilint-button-default-text:var(--uilint-accent-foreground);--uilint-button-default-border:transparent;--uilint-button-secondary-bg:oklch(25% .02 75);--uilint-button-secondary-text:var(--uilint-text-primary);--uilint-button-secondary-border:var(--uilint-border);--uilint-button-ghost-bg:transparent;--uilint-button-ghost-text:var(--uilint-text-secondary);--uilint-button-ghost-border:transparent;--uilint-button-destructive-bg:var(--uilint-error);--uilint-button-destructive-text:oklch(100% 0 0);--uilint-button-destructive-border:transparent;--uilint-button-outline-bg:transparent;--uilint-button-outline-text:var(--uilint-text-primary);--uilint-button-outline-border:var(--uilint-border);--uilint-button-glass-bg:var(--uilint-glass-medium);--uilint-button-glass-text:var(--uilint-text-primary);--uilint-button-glass-border:var(--uilint-glass-border);--uilint-input-bg:oklch(20% .02 75/.6);--uilint-input-border:var(--uilint-border);--uilint-input-border-focus:var(--uilint-border-focus);--uilint-input-placeholder:var(--uilint-text-muted);--uilint-input-ring:oklch(75% .15 75/.25);--uilint-card-bg:var(--uilint-surface);--uilint-card-border:var(--uilint-border);--uilint-card-shadow:0 1px 3px oklch(0% 0 0/.2);--uilint-card-shadow-hover:0 4px 12px oklch(0% 0 0/.3);--uilint-card-elevated-bg:var(--uilint-surface-elevated);--uilint-card-elevated-shadow:0 4px 16px oklch(0% 0 0/.4);--uilint-card-glass-bg:var(--uilint-glass-medium);--uilint-card-glass-border:var(--uilint-glass-border);--uilint-scrollbar-track:oklch(22% .02 75);--uilint-scrollbar-thumb:oklch(40% .04 75);--uilint-scrollbar-thumb-hover:oklch(50% .05 75);color-scheme:dark}@media(prefers-color-scheme:dark){:root:not(.light) .dev-tool-root:not(.light):not([data-theme=light]),.dev-tool-root:not(.light):not([data-theme=light]){--uilint-background:oklch(16% .02 75);--uilint-background-elevated:oklch(22% .025 75);--uilint-foreground:oklch(95% .025 75);--uilint-surface:oklch(16% .02 75);--uilint-surface-elevated:oklch(22% .025 75);--uilint-text-primary:oklch(95% .025 75);--uilint-text-secondary:oklch(82% .03 75);--uilint-text-muted:oklch(65% .035 75);--uilint-text-disabled:oklch(45% .025 75);--uilint-hover:oklch(80% .1 75/.12);--uilint-active:oklch(80% .12 75/.18);--uilint-border:oklch(95% .03 75/.12);--uilint-border-focus:oklch(75% .15 75);--uilint-accent:oklch(75% .15 75);--uilint-accent-foreground:oklch(16% .02 75);--uilint-success:oklch(72.3% .191 142.5);--uilint-success-bg:oklch(72.3% .191 142.5/.2);--uilint-warning:oklch(75% .183 55.934);--uilint-warning-bg:oklch(75% .183 55.934/.2);--uilint-error:oklch(63.7% .237 25.331);--uilint-error-bg:oklch(63.7% .237 25.331/.2);--uilint-shadow:0 4px 20px oklch(10% .03 75/.4);--uilint-backdrop:oklch(12% .02 75/.92);--uilint-glass:oklch(18% .02 75/.7);--uilint-glass-border:oklch(100% .02 75/.12);--uilint-scrollbar-track:oklch(22% .02 75);--uilint-scrollbar-thumb:oklch(40% .04 75);--uilint-scrollbar-thumb-hover:oklch(50% .05 75);color-scheme:dark}}.light,.light .dev-tool-root,.dev-tool-root.light,.dev-tool-root[data-theme=light]{--uilint-background:oklch(98.5% .015 75);--uilint-background-elevated:oklch(97% .02 75);--uilint-foreground:oklch(18% .02 75);--uilint-surface:oklch(98.5% .015 75);--uilint-surface-elevated:oklch(97% .02 75);--uilint-text-primary:oklch(18% .02 75);--uilint-text-secondary:oklch(40% .025 75);--uilint-text-muted:oklch(55% .03 75);--uilint-text-disabled:oklch(70% .02 75);--uilint-hover:oklch(75% .08 75/.15);--uilint-active:oklch(70% .1 75/.2);--uilint-border:oklch(90% .025 75);--uilint-border-focus:oklch(70% .15 75);--uilint-accent:oklch(70% .16 75);--uilint-accent-foreground:oklch(98.5% .015 75);--uilint-success:oklch(72.3% .191 142.5);--uilint-success-bg:oklch(72.3% .191 142.5/.15);--uilint-warning:oklch(75% .183 55.934);--uilint-warning-bg:oklch(75% .183 55.934/.15);--uilint-error:oklch(63.7% .237 25.331);--uilint-error-bg:oklch(63.7% .237 25.331/.15);--uilint-shadow:0 4px 20px oklch(30% .05 75/.15);--uilint-backdrop:oklch(98.5% .015 75/.92);--uilint-glass:oklch(99% .01 75/.7);--uilint-glass-border:oklch(100% .02 75/.25);--uilint-scrollbar-track:oklch(92% .02 75);--uilint-scrollbar-thumb:oklch(70% .04 75);--uilint-scrollbar-thumb-hover:oklch(55% .05 75);color-scheme:light}@keyframes uilint-fade-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes uilint-fade-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(8px)scale(.98)}}@keyframes uilint-pulse{0%,to{opacity:1}50%{opacity:.6}}@keyframes uilint-slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes uilint-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes uilint-popover-appear{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}[data-ui-lint] *{scrollbar-width:thin;scrollbar-color:var(--uilint-scrollbar-thumb)var(--uilint-scrollbar-track)}[data-ui-lint] ::-webkit-scrollbar{width:8px;height:8px}[data-ui-lint] ::-webkit-scrollbar-track{background:var(--uilint-scrollbar-track);border-radius:4px}[data-ui-lint] ::-webkit-scrollbar-thumb{background:var(--uilint-scrollbar-thumb);border-radius:4px}[data-ui-lint] ::-webkit-scrollbar-thumb:hover{background:var(--uilint-scrollbar-thumb-hover)}@media(max-width:767px){.dev-tool-root{--uilint-radius:16px}}.safe-area-padding-top{padding-top:env(safe-area-inset-top,0px)}.safe-area-padding-bottom{padding-bottom:env(safe-area-inset-bottom,0px)}.safe-area-padding-left{padding-left:env(safe-area-inset-left,0px)}.safe-area-padding-right{padding-right:env(safe-area-inset-right,0px)}@keyframes uilint-sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes uilint-sheet-down{0%{transform:translateY(0)}to{transform:translateY(100%)}}@media(pointer:coarse){.dev-tool-root button:focus-visible,.dev-tool-root [role=button]:focus-visible{outline-offset:2px}}@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-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-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}`;
16525
16506
  let ri = !1;
16526
- const bs = "uilint-devtool-root";
16527
- function ys() {
16507
+ const vs = "uilint-devtool-root";
16508
+ function bs() {
16528
16509
  return typeof window < "u";
16529
16510
  }
16530
16511
  function Zb({
@@ -16536,32 +16517,32 @@ function Zb({
16536
16517
  return e === "static" && !n && console.warn("[DevTool] Static mode requires manifestUrl prop"), G(() => {
16537
16518
  r(!0);
16538
16519
  }, []), G(() => {
16539
- if (!ys() || !t) return;
16520
+ if (!bs() || !t) return;
16540
16521
  jb(Lb);
16541
16522
  const c = document.querySelector(
16542
- `.${bs}`
16523
+ `.${vs}`
16543
16524
  );
16544
16525
  if (c) {
16545
16526
  a.current = c, l.current = !1;
16546
16527
  return;
16547
16528
  }
16548
16529
  const u = document.createElement("div");
16549
- return u.className = bs, u.setAttribute("data-ui-lint-root", "true"), document.body.appendChild(u), a.current = u, l.current = !0, () => {
16530
+ return u.className = vs, u.setAttribute("data-ui-lint-root", "true"), document.body.appendChild(u), a.current = u, l.current = !0, () => {
16550
16531
  l.current && a.current?.remove(), a.current = null, l.current = !1;
16551
16532
  };
16552
16533
  }, [t]), G(() => {
16553
- if (!ys() || !t || !i) return;
16534
+ if (!bs() || !t || !i) return;
16554
16535
  let c = null;
16555
16536
  const u = e === "static" && n;
16556
16537
  async function h() {
16557
- u ? (console.log("[DevTool] Configuring static mode with manifest:", n), rb(n)) : sb(), ri || (mt.register(lb), mt.register(Sb), mt.register(Mb), await pc({ websocket: Bt, domObserver: Ee }), ri = !0, console.log("[DevTool] Plugins initialized in", u ? "static" : "websocket", "mode")), s(!0), u ? (console.log("[DevTool] Static mode: starting DOM observer"), Ee.start()) : (Bt.connect(), c = Bt.onConnectionChange((f) => {
16558
- f ? (console.log("[DevTool] WebSocket connected, starting DOM observer"), Ee.start()) : (console.log(
16538
+ u ? (console.log("[DevTool] Configuring static mode with manifest:", n), rb(n)) : sb(), ri || (mt.register(lb), mt.register(Sb), mt.register(Mb), await pc({ websocket: Bt, domObserver: Ae }), ri = !0, console.log("[DevTool] Plugins initialized in", u ? "static" : "websocket", "mode")), s(!0), u ? (console.log("[DevTool] Static mode: starting DOM observer"), Ae.start()) : (Bt.connect(), c = Bt.onConnectionChange((f) => {
16539
+ f ? (console.log("[DevTool] WebSocket connected, starting DOM observer"), Ae.start()) : (console.log(
16559
16540
  "[DevTool] WebSocket disconnected, stopping DOM observer"
16560
- ), Ee.stop());
16541
+ ), Ae.stop());
16561
16542
  }));
16562
16543
  }
16563
16544
  return h(), () => {
16564
- c?.(), u || Bt.disconnect(), Ee.stop();
16545
+ c?.(), u || Bt.disconnect(), Ae.stop();
16565
16546
  };
16566
16547
  }, [t, i, e, n]), !t || !i || !o ? null : /* @__PURE__ */ d.jsx(Zm, { enabled: t });
16567
16548
  }