@geomak/ui 1.1.0 → 1.3.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,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var chunkZS3HB5YJ_cjs = require('./chunk-ZS3HB5YJ.cjs');
3
4
  var jsxRuntime = require('react/jsx-runtime');
4
5
  var React9 = require('react');
5
6
  var Dialog = require('@radix-ui/react-dialog');
@@ -44,43 +45,6 @@ var Popover__namespace = /*#__PURE__*/_interopNamespace(Popover);
44
45
  var SwitchPrimitive__namespace = /*#__PURE__*/_interopNamespace(SwitchPrimitive);
45
46
  var CheckboxPrimitive__namespace = /*#__PURE__*/_interopNamespace(CheckboxPrimitive);
46
47
 
47
- // src/utils/colors.ts
48
- var PALETTE = {
49
- "true-blue": "#0466C8",
50
- "usafa-blue": "#0353A4",
51
- "dark-cornflower-blue": "#023E7D",
52
- "oxford-blue-700": "#002855",
53
- "oxford-blue-800": "#001845",
54
- "oxford-blue-900": "#001233",
55
- independence: "#33415C",
56
- "black-coral": "#5C677D",
57
- "roman-silver": "#7D8597",
58
- manatee: "#979DAC",
59
- white: "#fff",
60
- ice: "#DBF1FD",
61
- "ice-dark": "#d0e3ed",
62
- "midnight-green-eagle-900": "#013E53",
63
- "midnight-green-eagle-700": "#125F6C",
64
- "midnight-green-eagle-500": "#125F6C",
65
- "rich-black-fogra": "#000202",
66
- "rich-black-fogra-opaque": "#0000005b",
67
- "prussian-blue": "#00273A",
68
- "indigo-dye": "#013C54",
69
- ming: "#0F6372",
70
- skobeloff: "#217479",
71
- "dark-cyan": "#2A8784",
72
- "celadon-green": "#297E74",
73
- turquise: "#2EB8B0",
74
- "oxford-blue-700-opaque": "rgba(0, 40, 85, .3)",
75
- disabled: "#dee2e6",
76
- error: "tomato",
77
- warning: "orange",
78
- success: "lightgreen",
79
- info: "lightblue",
80
- transparent: "rgba(255, 255, 255, .0)"
81
- };
82
- var COLORS = { PALETTE };
83
- var colors_default = COLORS;
84
48
  var Moon = ({ color = "gray" }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: color, viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: color, className: "w-8 h-8", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z" }) });
85
49
  var Sun = ({ color = "yellow" }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: color, viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: color, className: "w-8 h-8", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z" }) });
86
50
  var CheckCircle = ({ color = "#fff", size = 28 }) => /* @__PURE__ */ jsxRuntime.jsx("svg", { width: size, height: size, viewBox: "0 0 28 28", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsxRuntime.jsx("path", { fillRule: "evenodd", clipRule: "evenodd", 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", fill: color }) });
@@ -270,8 +234,45 @@ function IconButton({
270
234
  }
271
235
  );
272
236
  }
237
+ var VARIANT_CLASSES = {
238
+ primary: [
239
+ "bg-accent text-white",
240
+ "hover:bg-accent-hover",
241
+ "active:bg-accent",
242
+ "disabled:bg-roman-silver disabled:text-white/70 disabled:cursor-not-allowed",
243
+ "focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2"
244
+ ].join(" "),
245
+ secondary: [
246
+ "bg-transparent border border-accent text-accent",
247
+ "hover:bg-accent hover:text-white",
248
+ "active:bg-accent-hover active:text-white",
249
+ "disabled:border-roman-silver disabled:text-roman-silver disabled:cursor-not-allowed",
250
+ "focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2"
251
+ ].join(" "),
252
+ ghost: [
253
+ "bg-transparent text-foreground-secondary",
254
+ "hover:bg-ice dark:hover:bg-oxford-blue-700 hover:text-foreground",
255
+ "active:bg-ice-dark dark:active:bg-independence",
256
+ "disabled:text-roman-silver disabled:cursor-not-allowed",
257
+ "focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2"
258
+ ].join(" "),
259
+ danger: [
260
+ "bg-status-error text-white",
261
+ "hover:opacity-90",
262
+ "active:opacity-100",
263
+ "disabled:opacity-50 disabled:cursor-not-allowed",
264
+ "focus-visible:ring-2 focus-visible:ring-status-error focus-visible:ring-offset-2"
265
+ ].join(" ")
266
+ };
267
+ var SIZE_CLASSES = {
268
+ sm: "h-7 px-3 text-xs gap-1 rounded-md",
269
+ md: "h-9 px-4 text-sm gap-1.5 rounded-lg",
270
+ lg: "h-11 px-5 text-sm gap-2 rounded-xl"
271
+ };
273
272
  function Button({
274
273
  content,
274
+ variant = "primary",
275
+ size = "md",
275
276
  buttonType = "button",
276
277
  loading,
277
278
  disabled,
@@ -285,26 +286,33 @@ function Button({
285
286
  onClick,
286
287
  disabled: disabled || loading,
287
288
  type: buttonType,
288
- className: "bg-usafa-blue w-60 h-9 outline-offset-2 mt-5 rounded-lg disabled:bg-roman-silver disabled:cursor-not-allowed transition-all duration-300 hover:bg-true-blue active:bg-usafa-blue flex justify-center gap-1 items-center text-white",
289
- style: style ?? {},
289
+ style,
290
+ className: [
291
+ // Base — layout, transitions, focus reset
292
+ "inline-flex items-center justify-center font-medium",
293
+ "outline-none transition-colors duration-150 select-none",
294
+ "whitespace-nowrap",
295
+ SIZE_CLASSES[size],
296
+ VARIANT_CLASSES[variant]
297
+ ].join(" "),
290
298
  children: [
291
299
  loading ? /* @__PURE__ */ jsxRuntime.jsx(
292
300
  "svg",
293
301
  {
294
- xmlns: "http://www.w3.org/2000/svg",
295
302
  viewBox: "0 0 24 24",
296
- fill: "#fff",
297
- className: "w-6 h-6 animate-spin",
303
+ fill: "currentColor",
304
+ className: "w-4 h-4 animate-spin flex-shrink-0",
305
+ "aria-hidden": "true",
298
306
  children: /* @__PURE__ */ jsxRuntime.jsx(
299
307
  "path",
300
308
  {
301
309
  fillRule: "evenodd",
302
- d: "M4.755 10.059a7.5 7.5 0 0112.548-3.364l1.903 1.903h-3.183a.75.75 0 100 1.5h4.992a.75.75 0 00.75-.75V4.356a.75.75 0 00-1.5 0v3.18l-1.9-1.9A9 9 0 003.306 9.67a.75.75 0 101.45.388zm15.408 3.352a.75.75 0 00-.919.53 7.5 7.5 0 01-12.548 3.364l-1.902-1.903h3.183a.75.75 0 000-1.5H2.984a.75.75 0 00-.75.75v4.992a.75.75 0 001.5 0v-3.18l1.9 1.9a9 9 0 0015.059-4.035.75.75 0 00-.53-.918z",
303
- clipRule: "evenodd"
310
+ clipRule: "evenodd",
311
+ d: "M4.755 10.059a7.5 7.5 0 0112.548-3.364l1.903 1.903h-3.183a.75.75 0 100 1.5h4.992a.75.75 0 00.75-.75V4.356a.75.75 0 00-1.5 0v3.18l-1.9-1.9A9 9 0 003.306 9.67a.75.75 0 101.45.388zm15.408 3.352a.75.75 0 00-.919.53 7.5 7.5 0 01-12.548 3.364l-1.902-1.903h3.183a.75.75 0 000-1.5H2.984a.75.75 0 00-.75.75v4.992a.75.75 0 001.5 0v-3.18l1.9 1.9a9 9 0 0015.059-4.035.75.75 0 00-.53-.918z"
304
312
  }
305
313
  )
306
314
  }
307
- ) : icon ? icon : null,
315
+ ) : icon ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-shrink-0", "aria-hidden": "true", children: icon }) : null,
308
316
  content
309
317
  ]
310
318
  }
@@ -534,7 +542,7 @@ function Tabs({
534
542
  onClick: toPreviousTab,
535
543
  "aria-label": "Previous tab",
536
544
  className: "cursor-pointer rounded-lg transition-all duration-300 hover:bg-ice-dark dark:hover:bg-independence rotate-180 flex-shrink-0",
537
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: 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" }) })
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" }) })
538
546
  }
539
547
  ),
540
548
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -559,7 +567,7 @@ function Tabs({
559
567
  onTabClose?.(tab.key);
560
568
  },
561
569
  className: "flex-shrink-0 rounded hover:bg-ice-dark dark:hover:bg-independence p-0.5 transition-colors",
562
- 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: colors_default.PALETTE["prussian-blue"], strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "dark:stroke-white" }) })
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" }) })
563
571
  }
564
572
  )
565
573
  ]
@@ -575,7 +583,7 @@ function Tabs({
575
583
  onClick: toNextTab,
576
584
  "aria-label": "Next tab",
577
585
  className: "cursor-pointer rounded-lg transition-all duration-300 hover:bg-ice-dark dark:hover:bg-independence flex-shrink-0",
578
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: 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" }) })
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" }) })
579
587
  }
580
588
  )
581
589
  ] }),
@@ -727,15 +735,15 @@ var NotificationContext = React9.createContext({
727
735
  open: () => void 0,
728
736
  close: () => void 0
729
737
  });
730
- var typeClass = {
731
- info: "bg-info",
732
- success: "bg-success",
733
- warning: "bg-warning",
734
- danger: "bg-error"
738
+ var TYPE_BG = {
739
+ info: "bg-status-info",
740
+ success: "bg-status-success",
741
+ warning: "bg-status-warning",
742
+ danger: "bg-status-error"
735
743
  };
736
744
  function TypeIcon({ type }) {
737
745
  if (type === "success") {
738
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "28", height: "28", viewBox: "0 0 28 28", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx(
746
+ return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 28 28", fill: "none", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(
739
747
  "path",
740
748
  {
741
749
  fillRule: "evenodd",
@@ -746,52 +754,94 @@ function TypeIcon({ type }) {
746
754
  ) });
747
755
  }
748
756
  if (type === "info") {
749
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#fff", className: "w-7 h-7", 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" }) });
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" }) });
750
758
  }
751
759
  if (type === "warning") {
752
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#fff", className: "w-7 h-7", 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" }) });
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" }) });
753
761
  }
754
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#fff", className: "w-7 h-7", 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" }) });
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" }) });
763
+ }
764
+ function NotificationItem({
765
+ n,
766
+ onClose,
767
+ reduced
768
+ }) {
769
+ return /* @__PURE__ */ jsxRuntime.jsx(
770
+ framerMotion.motion.div,
771
+ {
772
+ 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 },
776
+ transition: reduced ? { duration: 0 } : {
777
+ opacity: { duration: 0.15 },
778
+ x: { type: "tween", duration: 0.22, ease: [0.16, 1, 0.3, 1] },
779
+ layout: { duration: 0.2 }
780
+ },
781
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
782
+ Toast__namespace.Root,
783
+ {
784
+ open: true,
785
+ duration: n.duration,
786
+ onOpenChange: (o) => {
787
+ if (!o) onClose(n.id);
788
+ },
789
+ 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",
792
+ TYPE_BG[n.type ?? "info"]
793
+ ].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
+ ) })
807
+ ] }),
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
+ ]
810
+ }
811
+ )
812
+ }
813
+ );
755
814
  }
756
815
  function NotificationProvider({ children }) {
757
816
  const [notifications, setNotifications] = React9.useState([]);
817
+ const reduced = framerMotion.useReducedMotion();
758
818
  const open = (payload) => {
759
- setNotifications((prev) => [...prev, { duration: 4e3, ...payload, id: Date.now() + Math.random() }]);
819
+ setNotifications((prev) => [
820
+ ...prev,
821
+ { duration: 4e3, ...payload, id: Date.now() + Math.random() }
822
+ ]);
760
823
  };
761
824
  const close = (id) => {
762
825
  setNotifications((prev) => prev.filter((n) => n.id !== id));
763
826
  };
764
827
  return /* @__PURE__ */ jsxRuntime.jsx(NotificationContext.Provider, { value: { open, close }, children: /* @__PURE__ */ jsxRuntime.jsxs(Toast__namespace.Provider, { swipeDirection: "right", children: [
765
828
  children,
766
- notifications.map((n) => /* @__PURE__ */ jsxRuntime.jsxs(
767
- Toast__namespace.Root,
829
+ /* @__PURE__ */ jsxRuntime.jsx(
830
+ Toast__namespace.Viewport,
768
831
  {
769
- open: true,
770
- duration: n.duration,
771
- onOpenChange: (o) => {
772
- if (!o) close(n.id);
773
- },
774
- className: `rounded-lg shadow-md p-2 w-[300px] text-white ${typeClass[n.type ?? "info"]} data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=open]:slide-in-from-right-full data-[state=closed]:slide-out-to-right-full`,
775
- children: [
776
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3 border-b border-white pb-1", children: [
777
- /* @__PURE__ */ jsxRuntime.jsx(TypeIcon, { type: n.type ?? "info" }),
778
- /* @__PURE__ */ jsxRuntime.jsx(Toast__namespace.Title, { className: "text-center font-bold text-lg flex-1", children: n.title }),
779
- /* @__PURE__ */ jsxRuntime.jsx(Toast__namespace.Action, { asChild: true, altText: "Close", children: /* @__PURE__ */ jsxRuntime.jsx(
780
- "button",
781
- {
782
- "aria-label": "Close notification",
783
- onClick: () => close(n.id),
784
- className: "cursor-pointer rounded p-0.5 hover:bg-white/20 transition-colors",
785
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 20 20", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M15 5L5 15M5 5l10 10", stroke: "#fff", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })
786
- }
787
- ) })
788
- ] }),
789
- n.description && /* @__PURE__ */ jsxRuntime.jsx(Toast__namespace.Description, { className: "text-center mt-1 text-sm", children: n.description })
790
- ]
791
- },
792
- n.id
793
- )),
794
- /* @__PURE__ */ jsxRuntime.jsx(Toast__namespace.Viewport, { className: "fixed top-[50px] right-0 flex flex-col gap-2 w-[350px] z-[500000] p-4 outline-none" })
832
+ asChild: true,
833
+ className: "fixed top-[56px] right-0 z-[500000] flex flex-col gap-2 w-[350px] p-4 outline-none",
834
+ children: /* @__PURE__ */ jsxRuntime.jsx("ul", { children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { initial: false, children: notifications.map((n) => /* @__PURE__ */ jsxRuntime.jsx(
835
+ NotificationItem,
836
+ {
837
+ n,
838
+ onClose: close,
839
+ reduced
840
+ },
841
+ n.id
842
+ )) }) })
843
+ }
844
+ )
795
845
  ] }) });
796
846
  }
797
847
  function useNotification() {
@@ -1038,7 +1088,7 @@ function CatalogCarousel({ items, buttonText, onOpen }) {
1038
1088
  onClick: previousApp,
1039
1089
  "aria-label": "Previous",
1040
1090
  className: "cursor-pointer rounded-lg transition-all duration-300 hover:bg-ice-dark dark:hover:bg-independence rotate-180",
1041
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: 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" }) })
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" }) })
1042
1092
  }
1043
1093
  ),
1044
1094
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex", children: indexPool.map((index, id) => {
@@ -1075,7 +1125,7 @@ function CatalogCarousel({ items, buttonText, onOpen }) {
1075
1125
  onClick: nextApp,
1076
1126
  "aria-label": "Next",
1077
1127
  className: "cursor-pointer rounded-lg transition-all duration-300 hover:bg-ice-dark dark:hover:bg-independence",
1078
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: 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" }) })
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" }) })
1079
1129
  }
1080
1130
  )
1081
1131
  ] }) });
@@ -1205,7 +1255,7 @@ function ContextMenu({ items, position, visible, onClose }) {
1205
1255
  item.icon,
1206
1256
  item.value
1207
1257
  ] }),
1208
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none", children: item.children && /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: 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" }) }) })
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" }) }) })
1209
1259
  ]
1210
1260
  },
1211
1261
  item.key
@@ -1336,7 +1386,7 @@ var SearchInput = React9__default.default.forwardRef(function SearchInput2({
1336
1386
  placeholder: placeholder ?? ""
1337
1387
  }
1338
1388
  ),
1339
- /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: 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" }) })
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" }) })
1340
1390
  ] })
1341
1391
  ]
1342
1392
  }
@@ -1447,7 +1497,7 @@ function Dropdown({
1447
1497
  ] }) : /* @__PURE__ */ jsxRuntime.jsx(DropdownPill, { value: innerItems.find((it) => it.key === value)?.label })
1448
1498
  }
1449
1499
  ),
1450
- /* @__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: 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" }) }) })
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" }) }) })
1451
1501
  ]
1452
1502
  }
1453
1503
  ) }),
@@ -1489,7 +1539,7 @@ function Dropdown({
1489
1539
  "path",
1490
1540
  {
1491
1541
  d: "M4 10l4.5 4.5L16 6",
1492
- stroke: hoveredItem === item.key ? "#fff" : colors_default.PALETTE["prussian-blue"],
1542
+ stroke: hoveredItem === item.key ? "#fff" : chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"],
1493
1543
  strokeWidth: "2",
1494
1544
  strokeLinecap: "round",
1495
1545
  strokeLinejoin: "round"
@@ -1577,7 +1627,7 @@ function TableBody({
1577
1627
  onClick: () => toggleRow(row.key),
1578
1628
  className: `p-2 cursor-pointer origin-center transition-all duration-200 ${visibleRows[row.key]?.visible ? "rotate-180" : "rotate-0"}`,
1579
1629
  children: expandRow.expandIcon ?? /* PlusCircle */
1580
- /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: 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" }) })
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" }) })
1581
1631
  }
1582
1632
  ) }),
1583
1633
  columns.map((col, index) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -1630,8 +1680,8 @@ function Pagination({
1630
1680
  const navBtn = (icon, disabled, onClick) => /* @__PURE__ */ jsxRuntime.jsx(IconButton, { disabled, onClick, icon });
1631
1681
  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" }) });
1632
1682
  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" }) });
1633
- const disabledColor = colors_default.PALETTE["prussian-blue"];
1634
- const enabledColor = colors_default.PALETTE.white;
1683
+ const disabledColor = chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"];
1684
+ const enabledColor = chunkZS3HB5YJ_cjs.colors_default.PALETTE.white;
1635
1685
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2 items-center justify-end pt-2", children: [
1636
1686
  navBtn(
1637
1687
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rotate-180 inline-flex", children: doubleChevronRight(activePage === 0 ? disabledColor : enabledColor) }),
@@ -1768,29 +1818,77 @@ function Table({
1768
1818
  /* @__PURE__ */ jsxRuntime.jsx("div", { children: footer })
1769
1819
  ] });
1770
1820
  }
1771
- function Switch({ checked, onChange }) {
1821
+ function ThemeSwitch({ checked, onChange, label = "Toggle dark mode" }) {
1772
1822
  const id = React9.useId();
1773
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative bottom-5", children: /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: id, className: "flex items-center cursor-pointer mr-12 select-none", children: /* @__PURE__ */ jsxRuntime.jsx(
1823
+ return /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: id, className: "flex items-center gap-2 cursor-pointer select-none", children: /* @__PURE__ */ jsxRuntime.jsx(
1774
1824
  SwitchPrimitive__namespace.Root,
1775
1825
  {
1776
1826
  id,
1777
1827
  checked,
1778
1828
  onCheckedChange: (c) => onChange({ target: { checked: c } }),
1779
- className: "relative inline-flex h-6 w-14 items-center rounded-full bg-prussian-blue dark:bg-white transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-usafa-blue",
1829
+ "aria-label": label,
1830
+ className: [
1831
+ "relative inline-flex h-6 w-11 items-center rounded-full",
1832
+ "transition-colors duration-200",
1833
+ "bg-foreground-secondary data-[state=checked]:bg-accent",
1834
+ "focus:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2"
1835
+ ].join(" "),
1780
1836
  children: /* @__PURE__ */ jsxRuntime.jsx(
1781
1837
  SwitchPrimitive__namespace.Thumb,
1782
1838
  {
1783
- className: "pointer-events-none inline-flex h-8 w-8 rounded-full shadow transition-transform duration-200 data-[state=checked]:translate-x-[22px] data-[state=unchecked]:translate-x-[-4px]",
1784
- children: /* @__PURE__ */ jsxRuntime.jsx(
1785
- "div",
1786
- {
1787
- className: `rounded-full w-8 h-8 ${checked ? "bg-success" : "bg-error"} transition-colors duration-200`
1788
- }
1839
+ className: [
1840
+ "pointer-events-none block h-5 w-5 rounded-full shadow-sm",
1841
+ "transition-transform duration-200",
1842
+ "data-[state=checked]:translate-x-[22px]",
1843
+ "data-[state=unchecked]:translate-x-[2px]",
1844
+ // Moon icon (dark mode indicator) when checked, sun when unchecked
1845
+ checked ? "bg-oxford-blue-900" : "bg-white"
1846
+ ].join(" "),
1847
+ children: checked ? (
1848
+ // Moon
1849
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 16 16", fill: "currentColor", className: "w-3 h-3 m-1 text-manatee", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z" }) })
1850
+ ) : (
1851
+ // Sun
1852
+ /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 16 16", fill: "currentColor", className: "w-3 h-3 m-1 text-usafa-blue", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707z" }) })
1789
1853
  )
1790
1854
  }
1791
1855
  )
1792
1856
  }
1793
- ) }) });
1857
+ ) });
1858
+ }
1859
+ function TopBar({
1860
+ brand,
1861
+ center,
1862
+ actions,
1863
+ height = 56,
1864
+ className = ""
1865
+ }) {
1866
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1867
+ "header",
1868
+ {
1869
+ className: [
1870
+ "sticky top-0 z-[100]",
1871
+ "flex items-center justify-between gap-4",
1872
+ "border-b border-border bg-surface",
1873
+ "px-4 md:px-6",
1874
+ className
1875
+ ].join(" "),
1876
+ style: {
1877
+ height,
1878
+ // Expose as CSS var so consumers can write:
1879
+ // padding-top: calc(var(--topbar-height) + 1rem)
1880
+ ["--topbar-height"]: `${height}px`
1881
+ },
1882
+ children: [
1883
+ brand !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 flex-shrink-0", children: brand }) : (
1884
+ // Reserve leading space even when brand is null so center stays centred
1885
+ /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": "true", className: "flex-shrink-0 w-0" })
1886
+ ),
1887
+ center !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-1 items-center justify-center min-w-0", children: center }),
1888
+ actions !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2 flex-shrink-0", children: actions })
1889
+ ]
1890
+ }
1891
+ );
1794
1892
  }
1795
1893
  function TextInput({
1796
1894
  value,
@@ -1919,7 +2017,7 @@ function NumberInput({
1919
2017
  {
1920
2018
  onClick: onIncrement,
1921
2019
  className: "rotate-180 cursor-pointer transition-all duration-300 hover:bg-ice rounded-sm",
1922
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: 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" }) })
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" }) })
1923
2021
  }
1924
2022
  ),
1925
2023
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1927,7 +2025,7 @@ function NumberInput({
1927
2025
  {
1928
2026
  onClick: onDecrement,
1929
2027
  className: "cursor-pointer transition-all duration-300 hover:bg-ice rounded-sm",
1930
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: 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" }) })
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" }) })
1931
2029
  }
1932
2030
  )
1933
2031
  ] })
@@ -1957,7 +2055,7 @@ function Password({
1957
2055
  iconColor
1958
2056
  }) {
1959
2057
  const [passwordVisible, setPasswordVisible] = React9.useState(false);
1960
- const color = iconColor ?? colors_default.PALETTE["prussian-blue"];
2058
+ const color = iconColor ?? chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"];
1961
2059
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex flex-col items-center justify-center", style: style ?? {}, children: [
1962
2060
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex ${layout === "vertical" ? "flex-col" : "flex-row items-center gap-2"}`, children: [
1963
2061
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -2067,7 +2165,7 @@ function Checkbox({
2067
2165
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-error text-center", children: errorMessage })
2068
2166
  ] });
2069
2167
  }
2070
- function Switch2({
2168
+ function Switch({
2071
2169
  checked = false,
2072
2170
  onChange,
2073
2171
  checkedIcon,
@@ -2143,7 +2241,7 @@ function AutoComplete({
2143
2241
  "aria-autocomplete": "list"
2144
2242
  }
2145
2243
  ),
2146
- /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: 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" }) })
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" }) })
2147
2245
  ] }) }),
2148
2246
  /* @__PURE__ */ jsxRuntime.jsx(Popover__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
2149
2247
  Popover__namespace.Content,
@@ -2236,7 +2334,7 @@ function TreeSelect({
2236
2334
  )),
2237
2335
  value.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(DropdownPill, { value: `+${value.length - 1} more` })
2238
2336
  ] }) : value != null ? /* @__PURE__ */ jsxRuntime.jsx(DropdownPill, { value: innerItems.find((it) => it.key === value)?.label }) : null }),
2239
- /* @__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: 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" }) }) })
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" }) }) })
2240
2338
  ]
2241
2339
  }
2242
2340
  ) }),
@@ -2266,7 +2364,7 @@ function TreeSelect({
2266
2364
  "path",
2267
2365
  {
2268
2366
  d: "M4 10l4.5 4.5L16 6",
2269
- stroke: hoveredItem === item.key ? "#fff" : colors_default.PALETTE["prussian-blue"],
2367
+ stroke: hoveredItem === item.key ? "#fff" : chunkZS3HB5YJ_cjs.colors_default.PALETTE["prussian-blue"],
2270
2368
  strokeWidth: "2",
2271
2369
  strokeLinecap: "round",
2272
2370
  strokeLinejoin: "round"
@@ -2348,7 +2446,7 @@ function FileInput({
2348
2446
  }
2349
2447
  ),
2350
2448
  files.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full items-center justify-center gap-2", children: [
2351
- /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: 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" }) }),
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" }) }),
2352
2450
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-prussian-blue dark:text-white text-sm", children: "Click or Drop a file" })
2353
2451
  ] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-3 items-center justify-center w-full h-full", children: files.map((file, id) => /* @__PURE__ */ jsxRuntime.jsxs(
2354
2452
  "div",
@@ -2365,7 +2463,7 @@ function FileInput({
2365
2463
  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" }) })
2366
2464
  }
2367
2465
  ),
2368
- /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: colors_default.PALETTE["prussian-blue"], className: "w-10 h-10 dark:fill-white", children: [
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: [
2369
2467
  /* @__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" }),
2370
2468
  /* @__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" })
2371
2469
  ] }),
@@ -2410,9 +2508,9 @@ function getMonthDays(year, month) {
2410
2508
  }
2411
2509
  return days;
2412
2510
  }
2413
- var ChevronRight2 = ({ color = 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" }) });
2414
- var DoubleChevronRight2 = ({ color = 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" }) });
2415
- var ChevronDown2 = ({ color = 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" }) });
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" }) });
2416
2514
  function DatePickerBase({
2417
2515
  value,
2418
2516
  onChange,
@@ -2667,9 +2765,24 @@ Temporal.DatePicker = DatePickerBase;
2667
2765
  Temporal.TemporalPicker = TemporalPickerBase;
2668
2766
  var DatePicker_default = Temporal;
2669
2767
 
2768
+ Object.defineProperty(exports, "COLORS", {
2769
+ enumerable: true,
2770
+ get: function () { return chunkZS3HB5YJ_cjs.colors_default; }
2771
+ });
2772
+ Object.defineProperty(exports, "palette", {
2773
+ enumerable: true,
2774
+ get: function () { return chunkZS3HB5YJ_cjs.PALETTE; }
2775
+ });
2776
+ Object.defineProperty(exports, "semanticTokens", {
2777
+ enumerable: true,
2778
+ get: function () { return chunkZS3HB5YJ_cjs.semanticTokens; }
2779
+ });
2780
+ Object.defineProperty(exports, "vars", {
2781
+ enumerable: true,
2782
+ get: function () { return chunkZS3HB5YJ_cjs.vars; }
2783
+ });
2670
2784
  exports.AutoComplete = AutoComplete;
2671
2785
  exports.Button = Button;
2672
- exports.COLORS = colors_default;
2673
2786
  exports.Catalog = Catalog;
2674
2787
  exports.CatalogCarousel = CatalogCarousel;
2675
2788
  exports.CatalogGrid = CatalogGrid;
@@ -2694,15 +2807,16 @@ exports.OpaqueGridCard = OpaqueGridCard;
2694
2807
  exports.Password = Password;
2695
2808
  exports.ScalableContainer = ScalableContainer;
2696
2809
  exports.SearchInput = SearchInput_default;
2697
- exports.Switch = Switch2;
2810
+ exports.Switch = Switch;
2698
2811
  exports.Table = Table;
2699
2812
  exports.Tabs = Tabs;
2700
2813
  exports.Temporal = DatePicker_default;
2701
2814
  exports.TextInput = TextInput;
2702
- exports.ThemeSwitch = Switch;
2815
+ exports.ThemeSwitch = ThemeSwitch;
2703
2816
  exports.ToggleButton = ToggleButton;
2704
2817
  exports.Tooltip = Tooltip;
2705
2818
  exports.TooltipProvider = TooltipProvider;
2819
+ exports.TopBar = TopBar;
2706
2820
  exports.Tree = Tree;
2707
2821
  exports.TreeSelect = TreeSelect;
2708
2822
  exports.Wizard = Wizard;