@geomak/ui 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkZS3HB5YJ_cjs = require('./chunk-ZS3HB5YJ.cjs');
3
+ var chunk255PCZIW_cjs = require('./chunk-255PCZIW.cjs');
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var React9 = require('react');
6
6
  var Dialog = require('@radix-ui/react-dialog');
@@ -467,23 +467,49 @@ function Drawer({
467
467
  ) }) })
468
468
  ] }) });
469
469
  }
470
+ var ANIMATION = {
471
+ top: "data-[state=delayed-open]:animate-tooltip-in-top",
472
+ bottom: "data-[state=delayed-open]:animate-tooltip-in-bottom",
473
+ left: "data-[state=delayed-open]:animate-tooltip-in-left",
474
+ right: "data-[state=delayed-open]:animate-tooltip-in-right"
475
+ };
470
476
  function Tooltip({
471
477
  children,
472
478
  title,
473
- placement = "left",
474
- delayDuration = 400
479
+ placement = "top",
480
+ delayDuration = 300,
481
+ sideOffset = 8
475
482
  }) {
476
483
  return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Provider, { delayDuration, children: /* @__PURE__ */ jsxRuntime.jsxs(TooltipPrimitive__namespace.Root, { children: [
477
- /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-max w-max", children }) }),
484
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex", children }) }),
478
485
  /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsxs(
479
486
  TooltipPrimitive__namespace.Content,
480
487
  {
481
488
  side: placement,
482
- sideOffset: 8,
483
- className: "pointer-events-none z-[500000000] rounded-lg bg-prussian-blue dark:bg-rich-black-fogra px-2 py-1.5 text-white text-sm w-max max-w-xs animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
489
+ sideOffset,
490
+ className: [
491
+ // Layout + typography
492
+ "pointer-events-none z-[500000] max-w-[220px] px-2.5 py-1.5",
493
+ "text-xs font-medium leading-snug text-white",
494
+ // Background + border — slightly translucent for depth
495
+ "bg-foreground/95 rounded-md border border-white/5",
496
+ // Shadow
497
+ "shadow-md",
498
+ // Out animation (always the same — just fade)
499
+ "data-[state=closed]:animate-tooltip-out",
500
+ // In animation — direction-aware
501
+ ANIMATION[placement]
502
+ ].join(" "),
484
503
  children: [
485
504
  title,
486
- /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive__namespace.Arrow, { className: "fill-prussian-blue dark:fill-rich-black-fogra" })
505
+ /* @__PURE__ */ jsxRuntime.jsx(
506
+ TooltipPrimitive__namespace.Arrow,
507
+ {
508
+ width: 10,
509
+ height: 5,
510
+ className: "fill-foreground/95"
511
+ }
512
+ )
487
513
  ]
488
514
  }
489
515
  ) })
@@ -542,7 +568,7 @@ function Tabs({
542
568
  onClick: toPreviousTab,
543
569
  "aria-label": "Previous tab",
544
570
  className: "cursor-pointer rounded-lg transition-all duration-300 hover:bg-ice-dark dark:hover:bg-independence rotate-180 flex-shrink-0",
545
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-6 w-6 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
571
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-6 w-6 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
546
572
  }
547
573
  ),
548
574
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -567,7 +593,7 @@ function Tabs({
567
593
  onTabClose?.(tab.key);
568
594
  },
569
595
  className: "flex-shrink-0 rounded hover:bg-ice-dark dark:hover:bg-independence p-0.5 transition-colors",
570
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 5L5 15M5 5l10 10", stroke: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "dark:stroke-white" }) })
596
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 5L5 15M5 5l10 10", stroke: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "dark:stroke-white" }) })
571
597
  }
572
598
  )
573
599
  ]
@@ -583,7 +609,7 @@ function Tabs({
583
609
  onClick: toNextTab,
584
610
  "aria-label": "Next tab",
585
611
  className: "cursor-pointer rounded-lg transition-all duration-300 hover:bg-ice-dark dark:hover:bg-independence flex-shrink-0",
586
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-6 w-6 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
612
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-6 w-6 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
587
613
  }
588
614
  )
589
615
  ] }),
@@ -741,44 +767,74 @@ var TYPE_BG = {
741
767
  warning: "bg-status-warning",
742
768
  danger: "bg-status-error"
743
769
  };
770
+ var VIEWPORT_CLASSES = {
771
+ "top-right": "fixed top-14 right-0 flex flex-col items-end",
772
+ "top-left": "fixed top-14 left-0 flex flex-col items-start",
773
+ "top-center": "fixed top-14 left-1/2 flex flex-col items-center -translate-x-1/2",
774
+ "bottom-right": "fixed bottom-4 right-0 flex flex-col-reverse items-end",
775
+ "bottom-left": "fixed bottom-4 left-0 flex flex-col-reverse items-start",
776
+ "bottom-center": "fixed bottom-4 left-1/2 flex flex-col-reverse items-center -translate-x-1/2"
777
+ };
778
+ function getInitialMotion(pos, reduced) {
779
+ if (reduced) return { opacity: 0, x: 0, y: 0, scale: 1 };
780
+ const right = pos.endsWith("right");
781
+ const left = pos.endsWith("left");
782
+ const center = pos.endsWith("center");
783
+ const bottom = pos.startsWith("bottom");
784
+ return {
785
+ opacity: 0,
786
+ x: right ? 40 : left ? -40 : 0,
787
+ y: center ? bottom ? 12 : -12 : 0,
788
+ scale: center ? 0.96 : 1
789
+ };
790
+ }
744
791
  function TypeIcon({ type }) {
745
792
  if (type === "success") {
746
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 28 28", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
747
- "path",
748
- {
749
- fillRule: "evenodd",
750
- clipRule: "evenodd",
751
- d: "M14 0.25C6.40625 0.25 0.25 6.40625 0.25 14C0.25 21.5937 6.40625 27.75 14 27.75C21.5937 27.75 27.75 21.5937 27.75 14C27.75 6.40625 21.5937 0.25 14 0.25ZM19.96 11.675C20.0697 11.5496 20.1533 11.4034 20.2057 11.2452C20.2582 11.087 20.2784 10.9199 20.2653 10.7537C20.2522 10.5876 20.206 10.4257 20.1295 10.2777C20.0529 10.1296 19.9475 9.99838 19.8194 9.89168C19.6914 9.78497 19.5433 9.70495 19.3839 9.65633C19.2244 9.6077 19.0569 9.59145 18.8911 9.60853C18.7253 9.62562 18.5646 9.67568 18.4184 9.75579C18.2723 9.8359 18.1436 9.94443 18.04 10.075L12.665 16.5237L9.88375 13.7412C9.648 13.5136 9.33224 13.3876 9.0045 13.3904C8.67675 13.3933 8.36324 13.5247 8.13148 13.7565C7.89972 13.9882 7.76825 14.3018 7.76541 14.6295C7.76256 14.9572 7.88855 15.273 8.11625 15.5087L11.8662 19.2587C11.9891 19.3815 12.1361 19.4773 12.298 19.5401C12.4599 19.6028 12.6331 19.6312 12.8066 19.6233C12.98 19.6154 13.15 19.5715 13.3055 19.4943C13.4611 19.4171 13.5988 19.3084 13.71 19.175L19.96 11.675Z",
752
- fill: "#fff"
753
- }
754
- ) });
793
+ return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "20 6 9 17 4 12" }) });
755
794
  }
756
795
  if (type === "info") {
757
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#fff", className: "w-5 h-5", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm8.706-1.442c1.146-.573 2.437.463 2.126 1.706l-.709 2.836.042-.02a.75.75 0 01.67 1.34l-.04.022c-1.147.573-2.438-.463-2.127-1.706l.71-2.836-.042.02a.75.75 0 11-.671-1.34l.041-.022zM12 9a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" }) });
796
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
797
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
798
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
799
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
800
+ ] });
758
801
  }
759
802
  if (type === "warning") {
760
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#fff", className: "w-5 h-5", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" }) });
803
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
804
+ /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z" }),
805
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
806
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
807
+ ] });
761
808
  }
762
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#fff", className: "w-5 h-5", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm11.378-3.917c-.89-.777-2.366-.777-3.255 0a.75.75 0 01-.988-1.129c1.454-1.272 3.776-1.272 5.23 0 1.513 1.324 1.513 3.518 0 4.842a3.75 3.75 0 01-.837.552c-.676.328-1.028.774-1.028 1.152v.75a.75.75 0 01-1.5 0v-.75c0-1.279 1.06-2.107 1.875-2.502.182-.088.351-.199.503-.331.83-.727.83-1.857 0-2.584zM12 18a.75.75 0 100-1.5.75.75 0 000 1.5z", clipRule: "evenodd" }) });
809
+ return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
810
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "10" }),
811
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
812
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
813
+ ] });
763
814
  }
764
815
  function NotificationItem({
765
816
  n,
817
+ pos,
766
818
  onClose,
767
819
  reduced
768
820
  }) {
821
+ const initial = getInitialMotion(pos, reduced);
822
+ const center = pos.endsWith("center");
769
823
  return /* @__PURE__ */ jsxRuntime.jsx(
770
824
  framerMotion.motion.div,
771
825
  {
772
826
  layout: true,
773
- initial: { opacity: 0, x: reduced ? 0 : 56, scale: reduced ? 0.97 : 1 },
774
- animate: { opacity: 1, x: 0, scale: 1 },
775
- exit: { opacity: 0, x: reduced ? 0 : 40, scale: reduced ? 0.97 : 1 },
827
+ initial,
828
+ animate: { opacity: 1, x: 0, y: 0, scale: 1 },
829
+ exit: { ...initial, opacity: 0 },
776
830
  transition: reduced ? { duration: 0 } : {
777
- opacity: { duration: 0.15 },
831
+ opacity: { duration: 0.14 },
778
832
  x: { type: "tween", duration: 0.22, ease: [0.16, 1, 0.3, 1] },
779
- layout: { duration: 0.2 }
833
+ y: { type: "tween", duration: 0.22, ease: [0.16, 1, 0.3, 1] },
834
+ scale: { type: "tween", duration: 0.22, ease: [0.16, 1, 0.3, 1] },
835
+ layout: { duration: 0.18 }
780
836
  },
781
- children: /* @__PURE__ */ jsxRuntime.jsxs(
837
+ children: /* @__PURE__ */ jsxRuntime.jsx(
782
838
  Toast__namespace.Root,
783
839
  {
784
840
  open: true,
@@ -787,32 +843,36 @@ function NotificationItem({
787
843
  if (!o) onClose(n.id);
788
844
  },
789
845
  className: [
790
- "rounded-xl shadow-md p-3 w-[300px] text-white",
791
- "focus:outline-none focus-visible:ring-2 focus-visible:ring-white/60",
846
+ "w-[300px] rounded-md shadow-lg overflow-hidden",
847
+ center ? "mx-auto" : "",
848
+ "focus:outline-none",
792
849
  TYPE_BG[n.type ?? "info"]
793
850
  ].join(" "),
794
- children: [
795
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2.5", children: [
796
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(TypeIcon, { type: n.type ?? "info" }) }),
797
- /* @__PURE__ */ jsxRuntime.jsx(Toast__namespace.Title, { className: "font-semibold text-sm leading-snug flex-1", children: n.title }),
798
- /* @__PURE__ */ jsxRuntime.jsx(Toast__namespace.Action, { asChild: true, altText: "Close", children: /* @__PURE__ */ jsxRuntime.jsx(
799
- "button",
800
- {
801
- "aria-label": "Close notification",
802
- onClick: () => onClose(n.id),
803
- className: "flex-shrink-0 rounded-md p-1 hover:bg-white/20 transition-colors duration-150 focus:outline-none focus-visible:ring-1 focus-visible:ring-white/60",
804
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 20 20", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 5L5 15M5 5l10 10", stroke: "#fff", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })
805
- }
806
- ) })
851
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3 p-3 pr-2.5", children: [
852
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-0.5 flex-shrink-0 text-white/90", children: /* @__PURE__ */ jsxRuntime.jsx(TypeIcon, { type: n.type ?? "info" }) }),
853
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 min-w-0", children: [
854
+ /* @__PURE__ */ jsxRuntime.jsx(Toast__namespace.Title, { className: "text-sm font-semibold text-white leading-snug", children: n.title }),
855
+ n.description && /* @__PURE__ */ jsxRuntime.jsx(Toast__namespace.Description, { className: "mt-0.5 text-xs text-white/75 leading-relaxed", children: n.description })
807
856
  ] }),
808
- n.description && /* @__PURE__ */ jsxRuntime.jsx(Toast__namespace.Description, { className: "mt-1.5 text-xs text-white/80 leading-relaxed pl-7", children: n.description })
809
- ]
857
+ /* @__PURE__ */ jsxRuntime.jsx(Toast__namespace.Action, { asChild: true, altText: "Close", children: /* @__PURE__ */ jsxRuntime.jsx(
858
+ "button",
859
+ {
860
+ "aria-label": "Close",
861
+ onClick: () => onClose(n.id),
862
+ className: "flex-shrink-0 mt-0.5 rounded p-1 text-white/60 hover:text-white hover:bg-white/15 transition-colors duration-100 focus:outline-none focus-visible:ring-1 focus-visible:ring-white/50",
863
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M9 3L3 9M3 3l6 6", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round" }) })
864
+ }
865
+ ) })
866
+ ] })
810
867
  }
811
868
  )
812
869
  }
813
870
  );
814
871
  }
815
- function NotificationProvider({ children }) {
872
+ function NotificationProvider({
873
+ children,
874
+ position = "top-right"
875
+ }) {
816
876
  const [notifications, setNotifications] = React9.useState([]);
817
877
  const reduced = framerMotion.useReducedMotion();
818
878
  const open = (payload) => {
@@ -824,17 +884,21 @@ function NotificationProvider({ children }) {
824
884
  const close = (id) => {
825
885
  setNotifications((prev) => prev.filter((n) => n.id !== id));
826
886
  };
827
- return /* @__PURE__ */ jsxRuntime.jsx(NotificationContext.Provider, { value: { open, close }, children: /* @__PURE__ */ jsxRuntime.jsxs(Toast__namespace.Provider, { swipeDirection: "right", children: [
887
+ return /* @__PURE__ */ jsxRuntime.jsx(NotificationContext.Provider, { value: { open, close }, children: /* @__PURE__ */ jsxRuntime.jsxs(Toast__namespace.Provider, { swipeDirection: position.endsWith("right") ? "right" : position.endsWith("left") ? "left" : "up", children: [
828
888
  children,
829
889
  /* @__PURE__ */ jsxRuntime.jsx(
830
890
  Toast__namespace.Viewport,
831
891
  {
832
892
  asChild: true,
833
- className: "fixed top-[56px] right-0 z-[500000] flex flex-col gap-2 w-[350px] p-4 outline-none",
893
+ className: [
894
+ VIEWPORT_CLASSES[position],
895
+ "z-[500000] gap-2 w-[332px] p-4 outline-none"
896
+ ].join(" "),
834
897
  children: /* @__PURE__ */ jsxRuntime.jsx("ul", { children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, children: notifications.map((n) => /* @__PURE__ */ jsxRuntime.jsx(
835
898
  NotificationItem,
836
899
  {
837
900
  n,
901
+ pos: position,
838
902
  onClose: close,
839
903
  reduced
840
904
  },
@@ -1088,7 +1152,7 @@ function CatalogCarousel({ items, buttonText, onOpen }) {
1088
1152
  onClick: previousApp,
1089
1153
  "aria-label": "Previous",
1090
1154
  className: "cursor-pointer rounded-lg transition-all duration-300 hover:bg-ice-dark dark:hover:bg-independence rotate-180",
1091
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-10 w-10 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
1155
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-10 w-10 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
1092
1156
  }
1093
1157
  ),
1094
1158
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex", children: indexPool.map((index, id) => {
@@ -1125,7 +1189,7 @@ function CatalogCarousel({ items, buttonText, onOpen }) {
1125
1189
  onClick: nextApp,
1126
1190
  "aria-label": "Next",
1127
1191
  className: "cursor-pointer rounded-lg transition-all duration-300 hover:bg-ice-dark dark:hover:bg-independence",
1128
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-10 w-10 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
1192
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-10 w-10 dark:stroke-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
1129
1193
  }
1130
1194
  )
1131
1195
  ] }) });
@@ -1255,7 +1319,7 @@ function ContextMenu({ items, position, visible, onClose }) {
1255
1319
  item.icon,
1256
1320
  item.value
1257
1321
  ] }),
1258
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none", children: item.children && /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-4 w-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) }) })
1322
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none", children: item.children && /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-4 w-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) }) })
1259
1323
  ]
1260
1324
  },
1261
1325
  item.key
@@ -1386,7 +1450,7 @@ var SearchInput = React9__default.default.forwardRef(function SearchInput2({
1386
1450
  placeholder: placeholder ?? ""
1387
1451
  }
1388
1452
  ),
1389
- /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], className: "w-6 h-6", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M10.5 3.75a6.75 6.75 0 100 13.5 6.75 6.75 0 000-13.5zM2.25 10.5a8.25 8.25 0 1114.59 5.28l4.69 4.69a.75.75 0 11-1.06 1.06l-4.69-4.69A8.25 8.25 0 012.25 10.5z", clipRule: "evenodd" }) })
1453
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], className: "w-6 h-6", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M10.5 3.75a6.75 6.75 0 100 13.5 6.75 6.75 0 000-13.5zM2.25 10.5a8.25 8.25 0 1114.59 5.28l4.69 4.69a.75.75 0 11-1.06 1.06l-4.69-4.69A8.25 8.25 0 012.25 10.5z", clipRule: "evenodd" }) })
1390
1454
  ] })
1391
1455
  ]
1392
1456
  }
@@ -1497,7 +1561,7 @@ function Dropdown({
1497
1561
  ] }) : /* @__PURE__ */ jsxRuntime.jsx(DropdownPill, { value: innerItems.find((it) => it.key === value)?.label })
1498
1562
  }
1499
1563
  ),
1500
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `transition-transform duration-300 mr-2 ${open ? "rotate-180" : "rotate-0"}`, children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-4 w-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) }) })
1564
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `transition-transform duration-300 mr-2 ${open ? "rotate-180" : "rotate-0"}`, children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-4 w-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) }) })
1501
1565
  ]
1502
1566
  }
1503
1567
  ) }),
@@ -1539,7 +1603,7 @@ function Dropdown({
1539
1603
  "path",
1540
1604
  {
1541
1605
  d: "M4 10l4.5 4.5L16 6",
1542
- stroke: hoveredItem === item.key ? "#fff" : chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"],
1606
+ stroke: hoveredItem === item.key ? "#fff" : chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"],
1543
1607
  strokeWidth: "2",
1544
1608
  strokeLinecap: "round",
1545
1609
  strokeLinejoin: "round"
@@ -1627,7 +1691,7 @@ function TableBody({
1627
1691
  onClick: () => toggleRow(row.key),
1628
1692
  className: `p-2 cursor-pointer origin-center transition-all duration-200 ${visibleRows[row.key]?.visible ? "rotate-180" : "rotate-0"}`,
1629
1693
  children: expandRow.expandIcon ?? /* PlusCircle */
1630
- /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], className: "w-5 h-5 dark:fill-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25zM12.75 9a.75.75 0 00-1.5 0v2.25H9a.75.75 0 000 1.5h2.25V15a.75.75 0 001.5 0v-2.25H15a.75.75 0 000-1.5h-2.25V9z", clipRule: "evenodd" }) })
1694
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], className: "w-5 h-5 dark:fill-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25zM12.75 9a.75.75 0 00-1.5 0v2.25H9a.75.75 0 000 1.5h2.25V15a.75.75 0 001.5 0v-2.25H15a.75.75 0 000-1.5h-2.25V9z", clipRule: "evenodd" }) })
1631
1695
  }
1632
1696
  ) }),
1633
1697
  columns.map((col, index) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -1680,8 +1744,8 @@ function Pagination({
1680
1744
  const navBtn = (icon, disabled, onClick) => /* @__PURE__ */ jsxRuntime.jsx(IconButton, { disabled, onClick, icon });
1681
1745
  const chevronRight = (color) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: 2, className: "h-5 w-5", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) });
1682
1746
  const doubleChevronRight = (color) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: 2, className: "h-5 w-5", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M13 5l7 7-7 7M5 5l7 7-7 7" }) });
1683
- const disabledColor = chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"];
1684
- const enabledColor = chunkZS3HB5YJ_cjs.colors_default.PALETTE.white;
1747
+ const disabledColor = chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"];
1748
+ const enabledColor = chunk255PCZIW_cjs.colors_default.PALETTE.white;
1685
1749
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2 items-center justify-end pt-2", children: [
1686
1750
  navBtn(
1687
1751
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rotate-180 inline-flex", children: doubleChevronRight(activePage === 0 ? disabledColor : enabledColor) }),
@@ -1890,6 +1954,373 @@ function TopBar({
1890
1954
  }
1891
1955
  );
1892
1956
  }
1957
+ function NavItem({
1958
+ item,
1959
+ isExpanded
1960
+ }) {
1961
+ const btn = /* @__PURE__ */ jsxRuntime.jsxs(
1962
+ "button",
1963
+ {
1964
+ type: "button",
1965
+ onClick: item.onClick,
1966
+ className: [
1967
+ "group relative flex w-full items-center gap-2.5 rounded-md",
1968
+ "px-2.5 py-2 transition-colors duration-100",
1969
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-inset",
1970
+ item.isActive ? "bg-accent/10 text-accent" : "text-foreground-secondary hover:bg-surface-raised hover:text-foreground"
1971
+ ].join(" "),
1972
+ children: [
1973
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative flex h-5 w-5 flex-shrink-0 items-center justify-center", children: [
1974
+ item.icon,
1975
+ item.badge !== void 0 && item.badge > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -right-1 -top-1 flex h-3.5 w-3.5 items-center justify-center rounded-full bg-status-error text-[9px] font-bold text-white leading-none", children: item.badge > 99 ? "99+" : item.badge })
1976
+ ] }),
1977
+ isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
1978
+ framerMotion.motion.span,
1979
+ {
1980
+ initial: false,
1981
+ animate: { opacity: 1 },
1982
+ className: "truncate text-sm font-medium",
1983
+ children: item.label
1984
+ }
1985
+ ),
1986
+ item.isActive && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute inset-y-0 left-0 w-[3px] rounded-r-full bg-accent" })
1987
+ ]
1988
+ }
1989
+ );
1990
+ if (isExpanded) return btn;
1991
+ return /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { title: item.label, placement: "right", delayDuration: 200, children: btn });
1992
+ }
1993
+ function Sidebar({
1994
+ sections,
1995
+ isExpanded,
1996
+ onToggle,
1997
+ expandedWidth = 220,
1998
+ collapsedWidth = 52,
1999
+ footer
2000
+ }) {
2001
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { delayDuration: 200, children: /* @__PURE__ */ jsxRuntime.jsxs(
2002
+ framerMotion.motion.aside,
2003
+ {
2004
+ initial: false,
2005
+ animate: { width: isExpanded ? expandedWidth : collapsedWidth },
2006
+ transition: { type: "tween", duration: 0.22, ease: [0.16, 1, 0.3, 1] },
2007
+ className: "relative flex h-full flex-col border-r border-border bg-surface overflow-hidden flex-shrink-0",
2008
+ children: [
2009
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: [
2010
+ "flex h-14 flex-shrink-0 items-center border-b border-border",
2011
+ isExpanded ? "justify-between px-3" : "justify-center px-1.5"
2012
+ ].join(" "), children: [
2013
+ isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
2014
+ framerMotion.motion.span,
2015
+ {
2016
+ initial: { opacity: 0 },
2017
+ animate: { opacity: 1 },
2018
+ transition: { delay: 0.08 },
2019
+ className: "text-xs font-semibold uppercase tracking-widest text-foreground-muted select-none",
2020
+ children: "Menu"
2021
+ }
2022
+ ),
2023
+ /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { title: isExpanded ? "Collapse menu" : "Expand menu", placement: "right", delayDuration: 500, children: /* @__PURE__ */ jsxRuntime.jsx(
2024
+ "button",
2025
+ {
2026
+ type: "button",
2027
+ onClick: onToggle,
2028
+ "aria-label": isExpanded ? "Collapse sidebar" : "Expand sidebar",
2029
+ className: "flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-md text-foreground-muted hover:bg-surface-raised hover:text-foreground transition-colors duration-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent",
2030
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2031
+ framerMotion.motion.svg,
2032
+ {
2033
+ viewBox: "0 0 20 20",
2034
+ fill: "none",
2035
+ stroke: "currentColor",
2036
+ strokeWidth: "1.8",
2037
+ strokeLinecap: "round",
2038
+ strokeLinejoin: "round",
2039
+ className: "h-4 w-4",
2040
+ animate: { rotate: isExpanded ? 0 : 180 },
2041
+ transition: { type: "tween", duration: 0.22 },
2042
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M13 5l-5 5 5 5" })
2043
+ }
2044
+ )
2045
+ }
2046
+ ) })
2047
+ ] }),
2048
+ /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "flex-1 overflow-y-auto overflow-x-hidden py-2 px-1.5 space-y-0.5", children: sections.map((section, si) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: si > 0 ? "pt-3" : "", children: [
2049
+ section.title && isExpanded && /* @__PURE__ */ jsxRuntime.jsx(
2050
+ framerMotion.motion.p,
2051
+ {
2052
+ initial: { opacity: 0 },
2053
+ animate: { opacity: 1 },
2054
+ transition: { delay: 0.06 },
2055
+ className: "px-2.5 pb-1 text-[10px] font-semibold uppercase tracking-widest text-foreground-muted select-none",
2056
+ children: section.title
2057
+ }
2058
+ ),
2059
+ section.items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(NavItem, { item, isExpanded }, item.key))
2060
+ ] }, section.key)) }),
2061
+ footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: [
2062
+ "flex flex-shrink-0 items-center border-t border-border py-2",
2063
+ isExpanded ? "px-3 gap-2" : "justify-center px-1.5"
2064
+ ].join(" "), children: footer })
2065
+ ]
2066
+ }
2067
+ ) });
2068
+ }
2069
+ function AppShell({
2070
+ topBar,
2071
+ sidebarSections = [],
2072
+ sidebarExpandedWidth = 220,
2073
+ sidebarCollapsedWidth = 52,
2074
+ sidebarDefaultExpanded = false,
2075
+ sidebarFooter,
2076
+ children,
2077
+ className = ""
2078
+ }) {
2079
+ const [expanded, setExpanded] = React9.useState(sidebarDefaultExpanded);
2080
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex flex-col h-screen bg-background ${className}`, children: [
2081
+ topBar && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 z-[200]", children: topBar }),
2082
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 overflow-hidden", children: [
2083
+ sidebarSections.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
2084
+ Sidebar,
2085
+ {
2086
+ sections: sidebarSections,
2087
+ isExpanded: expanded,
2088
+ onToggle: () => setExpanded((e) => !e),
2089
+ expandedWidth: sidebarExpandedWidth,
2090
+ collapsedWidth: sidebarCollapsedWidth,
2091
+ footer: sidebarFooter
2092
+ }
2093
+ ),
2094
+ /* @__PURE__ */ jsxRuntime.jsx(
2095
+ framerMotion.motion.main,
2096
+ {
2097
+ className: "flex-1 overflow-y-auto overflow-x-hidden",
2098
+ animate: { marginLeft: 0 },
2099
+ transition: { type: "tween", duration: 0.22, ease: [0.16, 1, 0.3, 1] },
2100
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full p-6", children })
2101
+ }
2102
+ )
2103
+ ] })
2104
+ ] });
2105
+ }
2106
+ function px(v) {
2107
+ return typeof v === "number" ? `${v}px` : v;
2108
+ }
2109
+ function str(v) {
2110
+ return v == null ? void 0 : String(v);
2111
+ }
2112
+ function toCssVars(theme) {
2113
+ if (!theme) return {};
2114
+ const out = {};
2115
+ if (theme.colors) {
2116
+ for (const [k, v] of Object.entries(theme.colors)) {
2117
+ if (v != null) out[`--color-${k}`] = v;
2118
+ }
2119
+ }
2120
+ if (theme.radius) {
2121
+ for (const [k, v] of Object.entries(theme.radius)) {
2122
+ if (v != null) out[`--radius-${k}`] = px(v);
2123
+ }
2124
+ }
2125
+ if (theme.shadows) {
2126
+ for (const [k, v] of Object.entries(theme.shadows)) {
2127
+ if (v != null) out[`--shadow-${k}`] = v;
2128
+ }
2129
+ }
2130
+ if (theme.typography) {
2131
+ const t = theme.typography;
2132
+ const map = [
2133
+ ["--font-family-sans", t.fontFamily],
2134
+ ["--font-size-xs", t.fontSizeXs],
2135
+ ["--font-size-sm", t.fontSizeSm],
2136
+ ["--font-size-base", t.fontSizeBase],
2137
+ ["--font-size-lg", t.fontSizeLg],
2138
+ ["--font-size-xl", t.fontSizeXl],
2139
+ ["--font-size-2xl", t.fontSize2xl],
2140
+ ["--font-size-3xl", t.fontSize3xl],
2141
+ ["--font-weight-normal", t.fontWeightNormal],
2142
+ ["--font-weight-medium", t.fontWeightMedium],
2143
+ ["--font-weight-semibold", t.fontWeightSemibold],
2144
+ ["--font-weight-bold", t.fontWeightBold],
2145
+ ["--line-height-tight", t.lineHeightTight],
2146
+ ["--line-height-snug", t.lineHeightSnug],
2147
+ ["--line-height-normal", t.lineHeightNormal],
2148
+ ["--line-height-relaxed", t.lineHeightRelaxed]
2149
+ ];
2150
+ for (const [cssVar, val] of map) {
2151
+ const s = str(val);
2152
+ if (s != null) out[cssVar] = s;
2153
+ }
2154
+ }
2155
+ if (theme.density) {
2156
+ const d = theme.density;
2157
+ const map = [
2158
+ ["--height-control-xs", d.controlXs],
2159
+ ["--height-control-sm", d.controlSm],
2160
+ ["--height-control-md", d.controlMd],
2161
+ ["--height-control-lg", d.controlLg],
2162
+ ["--height-topbar", d.topbar]
2163
+ ];
2164
+ for (const [cssVar, val] of map) {
2165
+ if (val != null) out[cssVar] = px(val);
2166
+ }
2167
+ }
2168
+ if (theme.motion) {
2169
+ const m = theme.motion;
2170
+ const map = [
2171
+ ["--duration-fast", m.durationFast],
2172
+ ["--duration-normal", m.durationNormal],
2173
+ ["--duration-slow", m.durationSlow],
2174
+ ["--duration-gentle", m.durationGentle]
2175
+ ];
2176
+ for (const [cssVar, val] of map) {
2177
+ if (val != null) out[cssVar] = val;
2178
+ }
2179
+ }
2180
+ return out;
2181
+ }
2182
+ function varsToStyleString(vars2) {
2183
+ return Object.entries(vars2).map(([k, v]) => `${k}: ${v};`).join(" ");
2184
+ }
2185
+ function ThemeProvider({
2186
+ theme,
2187
+ darkTheme,
2188
+ colorScheme = "auto",
2189
+ children,
2190
+ className = "",
2191
+ style
2192
+ }) {
2193
+ const id = React9__default.default.useId().replace(/:/g, "");
2194
+ const scopeClass = `geo-th-${id}`;
2195
+ const divRef = React9.useRef(null);
2196
+ React9.useEffect(() => {
2197
+ const el = divRef.current;
2198
+ if (!el) return;
2199
+ if (colorScheme === "auto") return;
2200
+ if (colorScheme === "system") {
2201
+ const mq = window.matchMedia("(prefers-color-scheme: dark)");
2202
+ const apply = (e) => {
2203
+ el.classList.toggle("dark", e.matches);
2204
+ };
2205
+ apply(mq);
2206
+ mq.addEventListener("change", apply);
2207
+ return () => mq.removeEventListener("change", apply);
2208
+ }
2209
+ el.classList.toggle("dark", colorScheme === "dark");
2210
+ }, [colorScheme]);
2211
+ const lightVars = React9.useMemo(() => toCssVars(theme), [theme]);
2212
+ const darkVarStr = React9.useMemo(() => {
2213
+ if (!darkTheme) return "";
2214
+ const dvars = toCssVars(darkTheme);
2215
+ if (!Object.keys(dvars).length) return "";
2216
+ return `.${scopeClass}.dark { ${varsToStyleString(dvars)} }`;
2217
+ }, [darkTheme]);
2218
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2219
+ darkVarStr && /* @__PURE__ */ jsxRuntime.jsx("style", { dangerouslySetInnerHTML: { __html: darkVarStr } }),
2220
+ /* @__PURE__ */ jsxRuntime.jsx(
2221
+ "div",
2222
+ {
2223
+ ref: divRef,
2224
+ className: `${scopeClass} ${className}`.trim(),
2225
+ style: { ...lightVars, ...style },
2226
+ children
2227
+ }
2228
+ )
2229
+ ] });
2230
+ }
2231
+ var SHIMMER = [
2232
+ "animate-shimmer rounded-sm",
2233
+ "bg-[length:400%_100%]",
2234
+ "bg-gradient-to-r",
2235
+ "from-border via-border-strong/40 to-border"
2236
+ ].join(" ");
2237
+ function SkeletonBox({ width, height = 16, radius, className = "", style }) {
2238
+ return /* @__PURE__ */ jsxRuntime.jsx(
2239
+ "span",
2240
+ {
2241
+ role: "presentation",
2242
+ "aria-hidden": "true",
2243
+ className: `block ${SHIMMER} ${className}`,
2244
+ style: {
2245
+ width: width ?? "100%",
2246
+ height,
2247
+ borderRadius: radius ?? "var(--radius-md)",
2248
+ ...style
2249
+ }
2250
+ }
2251
+ );
2252
+ }
2253
+ function SkeletonText({
2254
+ lines = 3,
2255
+ lastLineWidth = 60,
2256
+ lineHeight = 14,
2257
+ gap = 8,
2258
+ className = "",
2259
+ style
2260
+ }) {
2261
+ return /* @__PURE__ */ jsxRuntime.jsx(
2262
+ "div",
2263
+ {
2264
+ role: "presentation",
2265
+ "aria-hidden": "true",
2266
+ className: `flex flex-col ${className}`,
2267
+ style: { gap, ...style },
2268
+ children: Array.from({ length: lines }).map((_, i) => {
2269
+ const isLast = i === lines - 1;
2270
+ const width = isLast && lines > 1 ? `${lastLineWidth}%` : "100%";
2271
+ return /* @__PURE__ */ jsxRuntime.jsx(
2272
+ "span",
2273
+ {
2274
+ className: `block ${SHIMMER}`,
2275
+ style: { height: lineHeight, width, borderRadius: "var(--radius-sm)" }
2276
+ },
2277
+ i
2278
+ );
2279
+ })
2280
+ }
2281
+ );
2282
+ }
2283
+ function SkeletonCircle({ size = 40, className = "", style }) {
2284
+ return /* @__PURE__ */ jsxRuntime.jsx(
2285
+ "span",
2286
+ {
2287
+ role: "presentation",
2288
+ "aria-hidden": "true",
2289
+ className: `block flex-shrink-0 ${SHIMMER} ${className}`,
2290
+ style: {
2291
+ width: size,
2292
+ height: size,
2293
+ borderRadius: "50%",
2294
+ ...style
2295
+ }
2296
+ }
2297
+ );
2298
+ }
2299
+ function SkeletonCard({ hasAvatar = true, lines = 3, className = "", style }) {
2300
+ return /* @__PURE__ */ jsxRuntime.jsxs(
2301
+ "div",
2302
+ {
2303
+ role: "presentation",
2304
+ "aria-hidden": "true",
2305
+ className: `rounded-lg border border-border bg-surface p-4 ${className}`,
2306
+ style,
2307
+ children: [
2308
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-4", children: [
2309
+ hasAvatar && /* @__PURE__ */ jsxRuntime.jsx(SkeletonCircle, { size: 36 }),
2310
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex flex-col gap-2", children: [
2311
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonBox, { height: 12, width: "55%" }),
2312
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonBox, { height: 10, width: "35%" })
2313
+ ] })
2314
+ ] }),
2315
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonText, { lines, lastLineWidth: 55 }),
2316
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-4 flex gap-2", children: [
2317
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonBox, { height: 28, width: 72 }),
2318
+ /* @__PURE__ */ jsxRuntime.jsx(SkeletonBox, { height: 28, width: 56 })
2319
+ ] })
2320
+ ]
2321
+ }
2322
+ );
2323
+ }
1893
2324
  function TextInput({
1894
2325
  value,
1895
2326
  onChange,
@@ -2017,7 +2448,7 @@ function NumberInput({
2017
2448
  {
2018
2449
  onClick: onIncrement,
2019
2450
  className: "rotate-180 cursor-pointer transition-all duration-300 hover:bg-ice rounded-sm",
2020
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-3 w-3", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) })
2451
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-3 w-3", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) })
2021
2452
  }
2022
2453
  ),
2023
2454
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2025,7 +2456,7 @@ function NumberInput({
2025
2456
  {
2026
2457
  onClick: onDecrement,
2027
2458
  className: "cursor-pointer transition-all duration-300 hover:bg-ice rounded-sm",
2028
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-3 w-3", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) })
2459
+ children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-3 w-3", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) })
2029
2460
  }
2030
2461
  )
2031
2462
  ] })
@@ -2055,7 +2486,7 @@ function Password({
2055
2486
  iconColor
2056
2487
  }) {
2057
2488
  const [passwordVisible, setPasswordVisible] = React9.useState(false);
2058
- const color = iconColor ?? chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"];
2489
+ const color = iconColor ?? chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"];
2059
2490
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex flex-col items-center justify-center", style: style ?? {}, children: [
2060
2491
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex ${layout === "vertical" ? "flex-col" : "flex-row items-center gap-2"}`, children: [
2061
2492
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2113,56 +2544,82 @@ function Password({
2113
2544
  ] });
2114
2545
  }
2115
2546
  function Checkbox({
2116
- layout = "vertical",
2117
- labelPosition = "left",
2547
+ checked,
2548
+ value,
2549
+ // legacy alias
2550
+ onChange,
2118
2551
  label,
2119
2552
  name,
2120
2553
  htmlFor,
2121
2554
  errorMessage,
2122
- value = false,
2123
- onChange
2555
+ disabled = false
2124
2556
  }) {
2125
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-2", children: [
2557
+ const isChecked = checked ?? value ?? false;
2558
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", children: [
2126
2559
  /* @__PURE__ */ jsxRuntime.jsxs(
2127
- "div",
2560
+ "label",
2128
2561
  {
2129
- className: `flex ${layout === "vertical" ? "flex-col" : labelPosition === "left" ? "flex-row" : "flex-row-reverse"} gap-2`,
2562
+ htmlFor,
2563
+ className: [
2564
+ "inline-flex items-center gap-2.5",
2565
+ disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer"
2566
+ ].join(" "),
2130
2567
  children: [
2131
- /* @__PURE__ */ jsxRuntime.jsx(
2132
- "label",
2133
- {
2134
- htmlFor,
2135
- className: "font-bold text-md text-prussian-blue dark:text-white cursor-pointer",
2136
- children: label
2137
- }
2138
- ),
2139
2568
  /* @__PURE__ */ jsxRuntime.jsx(
2140
2569
  CheckboxPrimitive__namespace.Root,
2141
2570
  {
2142
2571
  id: htmlFor,
2143
2572
  name,
2144
- checked: value,
2145
- onCheckedChange: (checked) => onChange?.({
2146
- target: { value: !!checked, id: htmlFor, name }
2147
- }),
2148
- className: "border-2 border-prussian-blue dark:border-independence rounded-md w-6 h-6 flex items-center justify-center cursor-pointer transition-colors duration-150 data-[state=checked]:bg-prussian-blue dark:data-[state=checked]:bg-independence focus:outline-none focus-visible:ring-2 focus-visible:ring-usafa-blue",
2573
+ checked: isChecked,
2574
+ disabled,
2575
+ onCheckedChange: (c) => onChange?.({ target: { checked: !!c, id: htmlFor, name } }),
2576
+ className: [
2577
+ // Box
2578
+ "relative flex h-[18px] w-[18px] flex-shrink-0 items-center justify-center",
2579
+ "rounded-sm border transition-colors duration-150",
2580
+ // Unchecked
2581
+ "border-border-strong bg-surface",
2582
+ // Checked
2583
+ "data-[state=checked]:bg-accent data-[state=checked]:border-accent",
2584
+ // Focus
2585
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-1",
2586
+ // Disabled
2587
+ "disabled:cursor-not-allowed"
2588
+ ].join(" "),
2149
2589
  "aria-label": typeof label === "string" ? label : void 0,
2150
- children: /* @__PURE__ */ jsxRuntime.jsx(CheckboxPrimitive__namespace.Indicator, { className: "transition-transform duration-150 scale-100", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "14", height: "14", viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
2151
- "path",
2590
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2591
+ CheckboxPrimitive__namespace.Indicator,
2152
2592
  {
2153
- d: "M4 10l4.5 4.5L16 6",
2154
- stroke: "#fff",
2155
- strokeWidth: "2",
2156
- strokeLinecap: "round",
2157
- strokeLinejoin: "round"
2593
+ className: "flex items-center justify-center data-[state=checked]:animate-check-pop",
2594
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2595
+ "svg",
2596
+ {
2597
+ width: "11",
2598
+ height: "9",
2599
+ viewBox: "0 0 11 9",
2600
+ fill: "none",
2601
+ "aria-hidden": "true",
2602
+ children: /* @__PURE__ */ jsxRuntime.jsx(
2603
+ "path",
2604
+ {
2605
+ d: "M1 4.5L4 7.5L10 1",
2606
+ stroke: "white",
2607
+ strokeWidth: "1.8",
2608
+ strokeLinecap: "round",
2609
+ strokeLinejoin: "round"
2610
+ }
2611
+ )
2612
+ }
2613
+ )
2158
2614
  }
2159
- ) }) })
2615
+ )
2160
2616
  }
2161
- )
2617
+ ),
2618
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground-secondary select-none leading-snug", children: label })
2162
2619
  ]
2163
2620
  }
2164
2621
  ),
2165
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-error text-center", children: errorMessage })
2622
+ errorMessage && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-status-error pl-[26px]", children: errorMessage })
2166
2623
  ] });
2167
2624
  }
2168
2625
  function Switch({
@@ -2241,7 +2698,7 @@ function AutoComplete({
2241
2698
  "aria-autocomplete": "list"
2242
2699
  }
2243
2700
  ),
2244
- /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], className: "w-5 h-5 flex-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M10.5 3.75a6.75 6.75 0 100 13.5 6.75 6.75 0 000-13.5zM2.25 10.5a8.25 8.25 0 1114.59 5.28l4.69 4.69a.75.75 0 11-1.06 1.06l-4.69-4.69A8.25 8.25 0 012.25 10.5z", clipRule: "evenodd" }) })
2701
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], className: "w-5 h-5 flex-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M10.5 3.75a6.75 6.75 0 100 13.5 6.75 6.75 0 000-13.5zM2.25 10.5a8.25 8.25 0 1114.59 5.28l4.69 4.69a.75.75 0 11-1.06 1.06l-4.69-4.69A8.25 8.25 0 012.25 10.5z", clipRule: "evenodd" }) })
2245
2702
  ] }) }),
2246
2703
  /* @__PURE__ */ jsxRuntime.jsx(Popover__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
2247
2704
  Popover__namespace.Content,
@@ -2334,7 +2791,7 @@ function TreeSelect({
2334
2791
  )),
2335
2792
  value.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(DropdownPill, { value: `+${value.length - 1} more` })
2336
2793
  ] }) : value != null ? /* @__PURE__ */ jsxRuntime.jsx(DropdownPill, { value: innerItems.find((it) => it.key === value)?.label }) : null }),
2337
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `transition-transform duration-300 ml-2 ${open ? "rotate-180" : "rotate-0"}`, children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-4 w-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) }) })
2794
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `transition-transform duration-300 ml-2 ${open ? "rotate-180" : "rotate-0"}`, children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], strokeWidth: 2, className: "h-4 w-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) }) })
2338
2795
  ]
2339
2796
  }
2340
2797
  ) }),
@@ -2364,7 +2821,7 @@ function TreeSelect({
2364
2821
  "path",
2365
2822
  {
2366
2823
  d: "M4 10l4.5 4.5L16 6",
2367
- stroke: hoveredItem === item.key ? "#fff" : chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"],
2824
+ stroke: hoveredItem === item.key ? "#fff" : chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"],
2368
2825
  strokeWidth: "2",
2369
2826
  strokeLinecap: "round",
2370
2827
  strokeLinejoin: "round"
@@ -2446,7 +2903,7 @@ function FileInput({
2446
2903
  }
2447
2904
  ),
2448
2905
  files.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full items-center justify-center gap-2", children: [
2449
- /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], className: "w-16 h-16 dark:fill-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M11.47 2.47a.75.75 0 011.06 0l4.5 4.5a.75.75 0 01-1.06 1.06l-3.22-3.22V16.5a.75.75 0 01-1.5 0V4.81L8.03 8.03a.75.75 0 01-1.06-1.06l4.5-4.5zM3 15.75a.75.75 0 01.75.75v2.25a1.5 1.5 0 001.5 1.5h13.5a1.5 1.5 0 001.5-1.5V16.5a.75.75 0 011.5 0v2.25a3 3 0 01-3 3H5.25a3 3 0 01-3-3V16.5a.75.75 0 01.75-.75z", clipRule: "evenodd" }) }),
2906
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], className: "w-16 h-16 dark:fill-white", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M11.47 2.47a.75.75 0 011.06 0l4.5 4.5a.75.75 0 01-1.06 1.06l-3.22-3.22V16.5a.75.75 0 01-1.5 0V4.81L8.03 8.03a.75.75 0 01-1.06-1.06l4.5-4.5zM3 15.75a.75.75 0 01.75.75v2.25a1.5 1.5 0 001.5 1.5h13.5a1.5 1.5 0 001.5-1.5V16.5a.75.75 0 011.5 0v2.25a3 3 0 01-3 3H5.25a3 3 0 01-3-3V16.5a.75.75 0 01.75-.75z", clipRule: "evenodd" }) }),
2450
2907
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-prussian-blue dark:text-white text-sm", children: "Click or Drop a file" })
2451
2908
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-3 items-center justify-center w-full h-full", children: files.map((file, id) => /* @__PURE__ */ jsxRuntime.jsxs(
2452
2909
  "div",
@@ -2463,7 +2920,7 @@ function FileInput({
2463
2920
  children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "10", height: "10", viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 5L5 15M5 5l10 10", stroke: "#fff", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) })
2464
2921
  }
2465
2922
  ),
2466
- /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"], className: "w-10 h-10 dark:fill-white", children: [
2923
+ /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"], className: "w-10 h-10 dark:fill-white", children: [
2467
2924
  /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", d: "M5.625 1.5c-1.036 0-1.875.84-1.875 1.875v17.25c0 1.035.84 1.875 1.875 1.875h12.75c1.035 0 1.875-.84 1.875-1.875V12.75A3.75 3.75 0 0016.5 9h-1.875a1.875 1.875 0 01-1.875-1.875V5.25A3.75 3.75 0 009 1.5H5.625z", clipRule: "evenodd" }),
2468
2925
  /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12.971 1.816A5.23 5.23 0 0114.25 5.25v1.875c0 .207.168.375.375.375H16.5a5.23 5.23 0 013.434 1.279 9.768 9.768 0 00-6.963-6.963z" })
2469
2926
  ] }),
@@ -2508,9 +2965,9 @@ function getMonthDays(year, month) {
2508
2965
  }
2509
2966
  return days;
2510
2967
  }
2511
- var ChevronRight2 = ({ color = chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"] }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: 2, className: "w-4 h-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) });
2512
- var DoubleChevronRight2 = ({ color = chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"] }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: 2, className: "w-4 h-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M13 5l7 7-7 7M5 5l7 7-7 7" }) });
2513
- var ChevronDown2 = ({ color = chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"] }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: 2, className: "w-4 h-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) });
2968
+ var ChevronRight2 = ({ color = chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"] }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: 2, className: "w-4 h-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) });
2969
+ var DoubleChevronRight2 = ({ color = chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"] }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: 2, className: "w-4 h-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M13 5l7 7-7 7M5 5l7 7-7 7" }) });
2970
+ var ChevronDown2 = ({ color = chunk255PCZIW_cjs.colors_default.PALETTE["prussian-blue"] }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: 2, className: "w-4 h-4", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M19 9l-7 7-7-7" }) });
2514
2971
  function DatePickerBase({
2515
2972
  value,
2516
2973
  onChange,
@@ -2767,20 +3224,21 @@ var DatePicker_default = Temporal;
2767
3224
 
2768
3225
  Object.defineProperty(exports, "COLORS", {
2769
3226
  enumerable: true,
2770
- get: function () { return chunkZS3HB5YJ_cjs.colors_default; }
3227
+ get: function () { return chunk255PCZIW_cjs.colors_default; }
2771
3228
  });
2772
3229
  Object.defineProperty(exports, "palette", {
2773
3230
  enumerable: true,
2774
- get: function () { return chunkZS3HB5YJ_cjs.PALETTE; }
3231
+ get: function () { return chunk255PCZIW_cjs.PALETTE; }
2775
3232
  });
2776
3233
  Object.defineProperty(exports, "semanticTokens", {
2777
3234
  enumerable: true,
2778
- get: function () { return chunkZS3HB5YJ_cjs.semanticTokens; }
3235
+ get: function () { return chunk255PCZIW_cjs.semanticTokens; }
2779
3236
  });
2780
3237
  Object.defineProperty(exports, "vars", {
2781
3238
  enumerable: true,
2782
- get: function () { return chunkZS3HB5YJ_cjs.vars; }
3239
+ get: function () { return chunk255PCZIW_cjs.vars; }
2783
3240
  });
3241
+ exports.AppShell = AppShell;
2784
3242
  exports.AutoComplete = AutoComplete;
2785
3243
  exports.Button = Button;
2786
3244
  exports.Catalog = Catalog;
@@ -2807,11 +3265,17 @@ exports.OpaqueGridCard = OpaqueGridCard;
2807
3265
  exports.Password = Password;
2808
3266
  exports.ScalableContainer = ScalableContainer;
2809
3267
  exports.SearchInput = SearchInput_default;
3268
+ exports.Sidebar = Sidebar;
3269
+ exports.SkeletonBox = SkeletonBox;
3270
+ exports.SkeletonCard = SkeletonCard;
3271
+ exports.SkeletonCircle = SkeletonCircle;
3272
+ exports.SkeletonText = SkeletonText;
2810
3273
  exports.Switch = Switch;
2811
3274
  exports.Table = Table;
2812
3275
  exports.Tabs = Tabs;
2813
3276
  exports.Temporal = DatePicker_default;
2814
3277
  exports.TextInput = TextInput;
3278
+ exports.ThemeProvider = ThemeProvider;
2815
3279
  exports.ThemeSwitch = ThemeSwitch;
2816
3280
  exports.ToggleButton = ToggleButton;
2817
3281
  exports.Tooltip = Tooltip;