@datatechsolutions/ui 3.11.2 → 3.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/astrlabe/index.js +108 -108
  2. package/dist/astrlabe/index.mjs +4 -4
  3. package/dist/astrlabe/workflow-canvas.js +4 -4
  4. package/dist/astrlabe/workflow-canvas.mjs +3 -3
  5. package/dist/{chunk-TZA5T4MJ.mjs → chunk-4D23CQZM.mjs} +80 -16
  6. package/dist/chunk-4D23CQZM.mjs.map +1 -0
  7. package/dist/{chunk-5Y67PZWC.js → chunk-5OZTI7TR.js} +4 -4
  8. package/dist/{chunk-5Y67PZWC.js.map → chunk-5OZTI7TR.js.map} +1 -1
  9. package/dist/{chunk-5TJR3VJ6.mjs → chunk-5TLKFOEL.mjs} +4 -4
  10. package/dist/{chunk-5TJR3VJ6.mjs.map → chunk-5TLKFOEL.mjs.map} +1 -1
  11. package/dist/{chunk-N7T4X6A7.mjs → chunk-BPMYNE7S.mjs} +3 -3
  12. package/dist/{chunk-N7T4X6A7.mjs.map → chunk-BPMYNE7S.mjs.map} +1 -1
  13. package/dist/{chunk-JBXNEOFB.mjs → chunk-EDI46QA7.mjs} +3 -3
  14. package/dist/{chunk-JBXNEOFB.mjs.map → chunk-EDI46QA7.mjs.map} +1 -1
  15. package/dist/{chunk-3BFQ3SVG.js → chunk-FKRIQYRG.js} +68 -68
  16. package/dist/{chunk-3BFQ3SVG.js.map → chunk-FKRIQYRG.js.map} +1 -1
  17. package/dist/{chunk-HLIMHIRH.js → chunk-HTODLUKG.js} +9 -9
  18. package/dist/{chunk-HLIMHIRH.js.map → chunk-HTODLUKG.js.map} +1 -1
  19. package/dist/{chunk-BGLYJ7GR.js → chunk-ID55ABBB.js} +35 -35
  20. package/dist/{chunk-BGLYJ7GR.js.map → chunk-ID55ABBB.js.map} +1 -1
  21. package/dist/{chunk-MCHTZ63Q.js → chunk-LRNVB7MO.js} +4 -4
  22. package/dist/{chunk-MCHTZ63Q.js.map → chunk-LRNVB7MO.js.map} +1 -1
  23. package/dist/{chunk-Y4YIGEX6.js → chunk-MFF37C24.js} +135 -135
  24. package/dist/{chunk-Y4YIGEX6.js.map → chunk-MFF37C24.js.map} +1 -1
  25. package/dist/{chunk-TXI3QDYE.js → chunk-MYHBXIO2.js} +34 -34
  26. package/dist/{chunk-TXI3QDYE.js.map → chunk-MYHBXIO2.js.map} +1 -1
  27. package/dist/{chunk-OZEOBZOW.mjs → chunk-N5GQIT7A.mjs} +7 -7
  28. package/dist/{chunk-OZEOBZOW.mjs.map → chunk-N5GQIT7A.mjs.map} +1 -1
  29. package/dist/{chunk-AVLOGVVA.mjs → chunk-NK4H3JWN.mjs} +3 -3
  30. package/dist/{chunk-AVLOGVVA.mjs.map → chunk-NK4H3JWN.mjs.map} +1 -1
  31. package/dist/{chunk-RUWUH7DW.mjs → chunk-NQGLSM46.mjs} +3 -3
  32. package/dist/{chunk-RUWUH7DW.mjs.map → chunk-NQGLSM46.mjs.map} +1 -1
  33. package/dist/{chunk-KGC5CRS7.mjs → chunk-OM5NNUD2.mjs} +3 -3
  34. package/dist/{chunk-KGC5CRS7.mjs.map → chunk-OM5NNUD2.mjs.map} +1 -1
  35. package/dist/{chunk-D5FL3ZHC.mjs → chunk-OW5LSEHU.mjs} +86 -43
  36. package/dist/chunk-OW5LSEHU.mjs.map +1 -0
  37. package/dist/{chunk-WSXP645I.mjs → chunk-PIIY2Z2O.mjs} +3 -3
  38. package/dist/{chunk-WSXP645I.mjs.map → chunk-PIIY2Z2O.mjs.map} +1 -1
  39. package/dist/{chunk-5JS3UFBF.js → chunk-PLEWG2L7.js} +13 -13
  40. package/dist/{chunk-5JS3UFBF.js.map → chunk-PLEWG2L7.js.map} +1 -1
  41. package/dist/{chunk-5NKGJV72.js → chunk-QSCWV47U.js} +25 -25
  42. package/dist/{chunk-5NKGJV72.js.map → chunk-QSCWV47U.js.map} +1 -1
  43. package/dist/{chunk-4PUVECVF.mjs → chunk-RBH723MG.mjs} +3 -3
  44. package/dist/{chunk-4PUVECVF.mjs.map → chunk-RBH723MG.mjs.map} +1 -1
  45. package/dist/{chunk-NDGYIHJ3.mjs → chunk-RT264BD4.mjs} +3 -3
  46. package/dist/{chunk-NDGYIHJ3.mjs.map → chunk-RT264BD4.mjs.map} +1 -1
  47. package/dist/{chunk-3J4E2THD.js → chunk-TDNBO3V7.js} +45 -45
  48. package/dist/{chunk-3J4E2THD.js.map → chunk-TDNBO3V7.js.map} +1 -1
  49. package/dist/{chunk-6R5Z2IQ5.js → chunk-ULKZGM2T.js} +86 -43
  50. package/dist/chunk-ULKZGM2T.js.map +1 -0
  51. package/dist/{chunk-JXROBMRU.mjs → chunk-UVFWKDRO.mjs} +3 -3
  52. package/dist/{chunk-JXROBMRU.mjs.map → chunk-UVFWKDRO.mjs.map} +1 -1
  53. package/dist/{chunk-GDVB7QDZ.js → chunk-V3UZCOZI.js} +102 -38
  54. package/dist/chunk-V3UZCOZI.js.map +1 -0
  55. package/dist/{chunk-V32NUE5U.js → chunk-VYU2FYDE.js} +55 -55
  56. package/dist/{chunk-V32NUE5U.js.map → chunk-VYU2FYDE.js.map} +1 -1
  57. package/dist/{chunk-M64U336M.mjs → chunk-WLNY3GVM.mjs} +6 -6
  58. package/dist/{chunk-M64U336M.mjs.map → chunk-WLNY3GVM.mjs.map} +1 -1
  59. package/dist/{chunk-LW2LFJZ7.js → chunk-XGAPZT4J.js} +36 -36
  60. package/dist/{chunk-LW2LFJZ7.js.map → chunk-XGAPZT4J.js.map} +1 -1
  61. package/dist/{chunk-LBCUQ4FY.mjs → chunk-YYNGXKUE.mjs} +3 -3
  62. package/dist/{chunk-LBCUQ4FY.mjs.map → chunk-YYNGXKUE.mjs.map} +1 -1
  63. package/dist/{chunk-N5FWIT7N.js → chunk-Z75CEP4V.js} +10 -10
  64. package/dist/{chunk-N5FWIT7N.js.map → chunk-Z75CEP4V.js.map} +1 -1
  65. package/dist/index.d.mts +13 -4
  66. package/dist/index.d.ts +13 -4
  67. package/dist/index.js +663 -663
  68. package/dist/index.mjs +2 -2
  69. package/dist/platform/admin/index.js +10 -10
  70. package/dist/platform/admin/index.mjs +4 -4
  71. package/dist/platform/agents-workspace.js +7 -7
  72. package/dist/platform/agents-workspace.mjs +6 -6
  73. package/dist/platform/app-shell.js +4 -4
  74. package/dist/platform/app-shell.mjs +3 -3
  75. package/dist/platform/auth/index.js +22 -22
  76. package/dist/platform/auth/index.mjs +4 -4
  77. package/dist/platform/billing/index.js +4 -4
  78. package/dist/platform/billing/index.mjs +3 -3
  79. package/dist/platform/impersonation/index.js +4 -4
  80. package/dist/platform/impersonation/index.mjs +3 -3
  81. package/dist/platform/index.d.mts +1 -1
  82. package/dist/platform/index.d.ts +1 -1
  83. package/dist/platform/index.js +86 -86
  84. package/dist/platform/index.mjs +18 -18
  85. package/dist/platform/pages/index.d.mts +75 -16
  86. package/dist/platform/pages/index.d.ts +75 -16
  87. package/dist/platform/pages/index.js +1089 -505
  88. package/dist/platform/pages/index.js.map +1 -1
  89. package/dist/platform/pages/index.mjs +789 -205
  90. package/dist/platform/pages/index.mjs.map +1 -1
  91. package/dist/platform/settings/index.js +7 -7
  92. package/dist/platform/settings/index.mjs +6 -6
  93. package/dist/platform/workflow-canvas-shell.js +5 -5
  94. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  95. package/package.json +1 -1
  96. package/dist/chunk-6R5Z2IQ5.js.map +0 -1
  97. package/dist/chunk-D5FL3ZHC.mjs.map +0 -1
  98. package/dist/chunk-GDVB7QDZ.js.map +0 -1
  99. package/dist/chunk-TZA5T4MJ.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
5
4
  var chunk22XPYFHJ_js = require('./chunk-22XPYFHJ.js');
5
+ var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
6
6
  var chunkBHOT22QL_js = require('./chunk-BHOT22QL.js');
7
7
  var chunkUZ3CMNUJ_js = require('./chunk-UZ3CMNUJ.js');
8
8
  var chunkS7KHTUHA_js = require('./chunk-S7KHTUHA.js');
@@ -3044,7 +3044,7 @@ function SearchBar({
3044
3044
  inputRef.current?.blur();
3045
3045
  onCancel?.();
3046
3046
  }, [onSearchChange, onCancel]);
3047
- const containerClasses = noBorder ? "flex flex-wrap items-center gap-2 p-3 bg-transparent" : `liquid-surface flex flex-wrap items-center gap-2 p-3 rounded-2xl
3047
+ const containerClasses = noBorder ? "flex flex-wrap items-center gap-2 px-2 py-1 bg-transparent" : `liquid-surface flex flex-wrap items-center gap-2 px-2 py-1 rounded-2xl
3048
3048
  transition-all duration-200
3049
3049
  ${isFocused ? "ring-2 ring-indigo-500/70 ring-offset-1" : ""}`;
3050
3050
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
@@ -3084,7 +3084,7 @@ function SearchBar({
3084
3084
  onFocus: handleFocus,
3085
3085
  onBlur: handleBlur,
3086
3086
  "data-testid": "search-input",
3087
- className: "w-full h-11 pl-10 pr-10 text-base bg-transparent\n text-slate-900 dark:text-white\n placeholder:text-slate-400 dark:placeholder:text-slate-500\n focus:outline-none"
3087
+ className: "w-full h-10 pl-10 pr-10 text-base bg-transparent\n text-slate-900 dark:text-white\n placeholder:text-slate-400 dark:placeholder:text-slate-500\n focus:outline-none"
3088
3088
  }
3089
3089
  ),
3090
3090
  /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: searchTerm && /* @__PURE__ */ jsxRuntime.jsx(
@@ -3122,7 +3122,7 @@ function SearchBar({
3122
3122
  type: "button",
3123
3123
  onClick: filtersModal.onOpen,
3124
3124
  outline: true,
3125
- className: "h-12",
3125
+ className: "h-10",
3126
3126
  children: [
3127
3127
  /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.FunnelIcon, { className: "h-4 w-4" }),
3128
3128
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: resolvedFiltersTitle }),
@@ -3756,21 +3756,33 @@ function Spinner({
3756
3756
  }
3757
3757
  function LoadingOverlay({ show, message, blur = true }) {
3758
3758
  if (!show) return null;
3759
- return /* @__PURE__ */ jsxRuntime.jsxs(
3759
+ return /* @__PURE__ */ jsxRuntime.jsx(
3760
3760
  framerMotion.motion.div,
3761
3761
  {
3762
+ role: "status",
3763
+ "aria-live": "polite",
3762
3764
  initial: { opacity: 0 },
3763
3765
  animate: { opacity: 1 },
3764
3766
  exit: { opacity: 0 },
3765
3767
  className: clsx4.clsx(
3766
3768
  "fixed inset-0 z-50 flex flex-col items-center justify-center",
3767
- "bg-white/80 dark:bg-slate-900/80",
3768
- blur && "backdrop-blur-sm"
3769
+ "bg-slate-900/25 dark:bg-slate-950/45",
3770
+ blur && "backdrop-blur-md"
3769
3771
  ),
3770
- children: [
3771
- /* @__PURE__ */ jsxRuntime.jsx(Spinner, { size: "lg", color: "blue", variant: "circle" }),
3772
- message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-slate-600 dark:text-slate-300 font-medium", children: message })
3773
- ]
3772
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
3773
+ framerMotion.motion.div,
3774
+ {
3775
+ initial: { opacity: 0, scale: 0.92, y: 8 },
3776
+ animate: { opacity: 1, scale: 1, y: 0 },
3777
+ exit: { opacity: 0, scale: 0.92, y: 8 },
3778
+ transition: { type: "spring", stiffness: 320, damping: 28 },
3779
+ className: "liquid-surface-strong flex flex-col items-center gap-3 rounded-2xl px-7 py-6 min-w-[160px]",
3780
+ children: [
3781
+ /* @__PURE__ */ jsxRuntime.jsx(Spinner, { size: "lg", color: "blue", variant: "circle" }),
3782
+ message && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-slate-700 dark:text-slate-200", children: message })
3783
+ ]
3784
+ }
3785
+ )
3774
3786
  }
3775
3787
  );
3776
3788
  }
@@ -6695,11 +6707,11 @@ function ChipPicker({
6695
6707
  }
6696
6708
  }, [draft, commitDraft, items, removeUserCreated]);
6697
6709
  if (isLoading) {
6698
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 text-center text-sm text-gray-500 dark:text-gray-400", children: loadingLabel });
6710
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 text-center text-sm text-slate-500 dark:text-slate-400", children: loadingLabel });
6699
6711
  }
6700
6712
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
6701
6713
  showActions && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
6702
- /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: [
6714
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-xs text-slate-500 dark:text-slate-400", children: [
6703
6715
  selectedIds.length,
6704
6716
  " ",
6705
6717
  selectedLabel
@@ -6714,13 +6726,13 @@ function ChipPicker({
6714
6726
  children: selectAllLabel
6715
6727
  }
6716
6728
  ),
6717
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-gray-400 dark:text-gray-500", children: "|" }),
6729
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-400 dark:text-slate-500", children: "|" }),
6718
6730
  /* @__PURE__ */ jsxRuntime.jsx(
6719
6731
  "button",
6720
6732
  {
6721
6733
  type: "button",
6722
6734
  onClick: clearAll,
6723
- className: "text-xs text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:rounded",
6735
+ className: "text-xs text-slate-500 dark:text-slate-400 hover:text-slate-700 dark:hover:text-slate-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:rounded",
6724
6736
  children: clearLabel
6725
6737
  }
6726
6738
  )
@@ -6739,7 +6751,15 @@ function ChipPicker({
6739
6751
  return /* @__PURE__ */ jsxRuntime.jsxs(
6740
6752
  "span",
6741
6753
  {
6742
- className: `inline-flex items-center gap-1.5 rounded-full border text-xs font-medium transition ${isSelected ? `${style.bg} ${style.text} border-transparent ring-2 ring-offset-1 ring-current` : "border-gray-200 bg-white/70 text-gray-700 hover:border-gray-300 dark:border-white/10 dark:bg-white/5 dark:text-gray-200"}`,
6754
+ style: {
6755
+ // Crystal chrome — same recipe as Badge / StatusBadge /
6756
+ // ActiveFilterChips. Keeps every chip-shaped primitive
6757
+ // visually identical (translucent jewel, not flat tile).
6758
+ backdropFilter: "blur(12px) saturate(1.5)",
6759
+ WebkitBackdropFilter: "blur(12px) saturate(1.5)",
6760
+ boxShadow: "inset 0 1px 1.5px rgba(255,255,255,0.45), 0 1px 3px -1px rgba(15,23,42,0.12)"
6761
+ },
6762
+ className: `inline-flex items-center gap-1.5 rounded-full border text-xs font-medium transition ${isSelected ? `${style.bg} ${style.text} border-current/30 ring-2 ring-offset-1 ring-current` : "liquid-surface text-slate-700 hover:bg-white/55 dark:text-slate-200 dark:hover:bg-white/[0.10]"}`,
6743
6763
  children: [
6744
6764
  /* @__PURE__ */ jsxRuntime.jsxs(
6745
6765
  "label",
@@ -6776,7 +6796,7 @@ function ChipPicker({
6776
6796
  item.id
6777
6797
  );
6778
6798
  }),
6779
- allowCustom && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 rounded-full border border-dashed border-slate-300 bg-white/50 px-2 py-1 text-xs dark:border-white/15 dark:bg-white/5", children: [
6799
+ allowCustom && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1 rounded-full border border-dashed border-slate-400/50 bg-white/45 px-2 py-1 text-xs backdrop-blur-md dark:border-white/20 dark:bg-white/[0.06]", children: [
6780
6800
  /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.PlusIcon, { className: "h-3 w-3 text-slate-500 dark:text-slate-400", "aria-hidden": "true" }),
6781
6801
  /* @__PURE__ */ jsxRuntime.jsx(
6782
6802
  "input",
@@ -6796,7 +6816,7 @@ function ChipPicker({
6796
6816
  ]
6797
6817
  }
6798
6818
  ),
6799
- items.length === 0 && !allowCustom && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-6 text-center text-sm text-gray-500 dark:text-gray-400", children: emptyLabel })
6819
+ items.length === 0 && !allowCustom && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-6 text-center text-sm text-slate-500 dark:text-slate-400", children: emptyLabel })
6800
6820
  ] });
6801
6821
  }
6802
6822
  var DEFAULT_COPYABLE_CLASSNAME = "liquid-surface-strong text-gray-500 dark:text-gray-400";
@@ -8603,7 +8623,7 @@ function CardGridSkeleton({ count = 8, columns = 4 }) {
8603
8623
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `grid ${gridCols[columns]} gap-3`, role: "status", "aria-label": "Loading content", children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs(
8604
8624
  "div",
8605
8625
  {
8606
- className: "rounded-xl border border-gray-200 dark:border-white/10 bg-white dark:bg-gray-800 p-4 shadow-sm",
8626
+ className: "liquid-surface rounded-xl p-4",
8607
8627
  children: [
8608
8628
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3 mb-3", children: [
8609
8629
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-8 w-12 rounded" }),
@@ -8616,7 +8636,7 @@ function CardGridSkeleton({ count = 8, columns = 4 }) {
8616
8636
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-5 w-5 rounded-full" }),
8617
8637
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-4 w-20 rounded" })
8618
8638
  ] }),
8619
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-3 border-t border-gray-200 dark:border-white/10", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-3 w-32 rounded" }) })
8639
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pt-3 border-t liquid-divider", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-3 w-32 rounded" }) })
8620
8640
  ]
8621
8641
  },
8622
8642
  i
@@ -8626,7 +8646,7 @@ function RegionFilterSkeleton({ count = 9 }) {
8626
8646
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-4 sm:grid-cols-6 lg:grid-cols-9 gap-2", children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs(
8627
8647
  "div",
8628
8648
  {
8629
- className: "rounded-lg border border-gray-200 dark:border-white/10 bg-white dark:bg-gray-800 p-2 flex flex-col items-center gap-1",
8649
+ className: "liquid-surface rounded-lg p-2 flex flex-col items-center gap-1",
8630
8650
  children: [
8631
8651
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-6 w-9 rounded" }),
8632
8652
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-4 w-6 rounded" }),
@@ -8640,7 +8660,7 @@ function BrandFilterSkeleton({ count = 4 }) {
8640
8660
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-3 grid-cols-2 sm:grid-cols-3 lg:grid-cols-4", children: Array.from({ length: count }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs(
8641
8661
  "div",
8642
8662
  {
8643
- className: "rounded-xl border border-gray-200 dark:border-white/10 bg-white dark:bg-gray-800 p-3 flex items-center gap-3",
8663
+ className: "liquid-surface rounded-xl p-3 flex items-center gap-3",
8644
8664
  children: [
8645
8665
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-10 w-10 rounded-lg" }),
8646
8666
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-2", children: [
@@ -8658,9 +8678,9 @@ function AnalysisSkeleton() {
8658
8678
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-7 w-48 rounded" }),
8659
8679
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-4 w-96 rounded" })
8660
8680
  ] }),
8661
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-xl border border-gray-200 dark:border-white/10 bg-white dark:bg-gray-800 p-6 shadow-sm space-y-4", children: [
8681
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-surface rounded-xl p-6 space-y-4", children: [
8662
8682
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-10 w-32 rounded-lg" }) }),
8663
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-gray-200 dark:border-white/10 p-4 bg-gray-50/50 dark:bg-gray-900/50", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
8683
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-3", children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-lg border border-white/30 dark:border-white/10 p-4 bg-white/40 dark:bg-white/[0.04] backdrop-blur-sm", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
8664
8684
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-8 w-8 rounded-lg" }),
8665
8685
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 space-y-2", children: [
8666
8686
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shimmer h-4 w-24 rounded" }),
@@ -8676,8 +8696,8 @@ function AnalysisSkeleton() {
8676
8696
  }
8677
8697
 
8678
8698
  // src/components/skeletons/shimmer.tsx
8679
- var shimmerClass = "bg-gradient-to-r from-gray-200 via-gray-100 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700 animate-shimmer motion-reduce:animate-none bg-[length:200%_100%]";
8680
- var shimmerWhiteClass = "bg-white/20 animate-pulse motion-reduce:animate-none";
8699
+ var shimmerClass = "bg-gradient-to-r from-slate-500/12 via-slate-500/24 to-slate-500/12 dark:from-white/8 dark:via-white/14 dark:to-white/8 animate-shimmer motion-reduce:animate-none bg-[length:200%_100%]";
8700
+ var shimmerWhiteClass = "bg-white/25 dark:bg-white/15 animate-pulse motion-reduce:animate-none backdrop-blur-sm";
8681
8701
  function SectionHeaderSkeleton() {
8682
8702
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
8683
8703
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: `h-10 w-10 rounded-lg ${shimmerClass}` }),
@@ -9433,16 +9453,28 @@ var APP_COLORS = {
9433
9453
  astrlabe: "bg-sky-500/30 text-sky-100 ring-sky-400/30",
9434
9454
  windsock: "bg-indigo-500/30 text-indigo-100 ring-indigo-400/30"
9435
9455
  };
9456
+ function readEnv(key) {
9457
+ try {
9458
+ const viteEnv = undefined;
9459
+ if (viteEnv && viteEnv[key]) return viteEnv[key];
9460
+ } catch {
9461
+ }
9462
+ if (typeof process !== "undefined" && process.env) {
9463
+ return process.env[key];
9464
+ }
9465
+ return void 0;
9466
+ }
9436
9467
  function detectApp() {
9437
- const appName = process.env.NEXT_PUBLIC_APP_NAME ?? process.env.NEXT_PUBLIC_AUTH_CLIENT_ID ?? "unknown";
9468
+ const appName = readEnv("VITE_APP_NAME") ?? readEnv("NEXT_PUBLIC_APP_NAME") ?? readEnv("NEXT_PUBLIC_AUTH_CLIENT_ID") ?? "unknown";
9438
9469
  const port = typeof window !== "undefined" ? window.location.port : "";
9439
- const gateway = process.env.NEXT_PUBLIC_API_GATEWAY_URL ?? process.env.NEXT_PUBLIC_LAMBDA_CLIENT_BASE ?? "";
9470
+ const gateway = readEnv("VITE_API_URL") ?? readEnv("NEXT_PUBLIC_API_GATEWAY_URL") ?? readEnv("NEXT_PUBLIC_LAMBDA_CLIENT_BASE") ?? "";
9440
9471
  return { name: appName, port, gateway };
9441
9472
  }
9442
9473
  function DevModeBanner({
9443
9474
  user,
9444
9475
  devModeLabel = "DEV",
9445
- devModeMessage = "Local development mode"
9476
+ devModeMessage = "Local development mode",
9477
+ forceShow = false
9446
9478
  }) {
9447
9479
  const [glassTest, setGlassTest] = React9.useState(false);
9448
9480
  const toggleGlassTest = React9.useCallback(() => {
@@ -9451,7 +9483,7 @@ function DevModeBanner({
9451
9483
  html.classList.toggle("glass-test", next);
9452
9484
  setGlassTest(next);
9453
9485
  }, [glassTest]);
9454
- if (process.env.NEXT_PUBLIC_DEV_MODE !== "true") {
9486
+ if (!forceShow && readEnv("VITE_DEV_MODE") !== "true" && readEnv("NEXT_PUBLIC_DEV_MODE") !== "true") {
9455
9487
  return null;
9456
9488
  }
9457
9489
  const app = detectApp();
@@ -9640,24 +9672,25 @@ function FlyoutQuickActions({
9640
9672
  onClose?.();
9641
9673
  action();
9642
9674
  };
9675
+ const tileBase = "liquid-surface m-1 flex items-center justify-center gap-x-2 rounded-xl p-2.5 text-xs font-semibold sm:gap-x-2.5 sm:p-3 sm:text-sm text-slate-900 dark:text-white transition-all duration-200 hover:-translate-y-0.5 hover:shadow-md active:scale-[0.985] focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1";
9643
9676
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
9644
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-3 my-3 h-px bg-gradient-to-r from-transparent via-gray-200/80 to-transparent dark:via-white/10" }),
9677
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-3 my-3 h-px bg-gradient-to-r from-transparent via-slate-200/80 to-transparent dark:via-white/10" }),
9645
9678
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-2 gap-1.5 sm:gap-2 px-1", children: [
9646
9679
  onNotifications ? /* @__PURE__ */ jsxRuntime.jsxs(
9647
9680
  "button",
9648
9681
  {
9649
9682
  type: "button",
9650
9683
  onClick: () => handleAction(onNotifications),
9651
- className: "liquid-surface m-1 flex items-center justify-center gap-x-2 rounded-xl p-2.5 text-xs font-semibold sm:gap-x-2.5 sm:p-3 sm:text-sm text-slate-900 dark:text-white",
9684
+ className: tileBase,
9652
9685
  children: [
9653
- /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.BellIcon, { className: "size-5 flex-none text-slate-400 dark:text-slate-500" }),
9686
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.BellIcon, { className: "size-5 flex-none text-slate-500 dark:text-slate-300" }),
9654
9687
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: t("notifications") }),
9655
9688
  notificationCount > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex min-w-[18px] items-center justify-center rounded-full bg-red-500 px-1 text-[10px] font-semibold text-white", children: notificationCount > 99 ? "99+" : notificationCount })
9656
9689
  ]
9657
9690
  }
9658
9691
  ) : null,
9659
9692
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-surface m-1 flex items-center justify-center gap-x-2 rounded-xl p-2.5 text-xs font-semibold sm:gap-x-2.5 sm:p-3 sm:text-sm text-slate-900 dark:text-white", children: [
9660
- isDark ? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.MoonIcon, { className: "size-5 flex-none text-slate-400 dark:text-slate-500" }) : /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.SunIcon, { className: "size-5 flex-none text-slate-400 dark:text-slate-500" }),
9693
+ isDark ? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.MoonIcon, { className: "size-5 flex-none text-slate-500 dark:text-slate-300" }) : /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.SunIcon, { className: "size-5 flex-none text-slate-500 dark:text-slate-300" }),
9661
9694
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: t("theme") }),
9662
9695
  /* @__PURE__ */ jsxRuntime.jsx(ThemeSwitch, { checked: isDark, onChange: onToggleTheme, label: t("theme") })
9663
9696
  ] }),
@@ -9666,9 +9699,9 @@ function FlyoutQuickActions({
9666
9699
  {
9667
9700
  type: "button",
9668
9701
  onClick: () => handleAction(onProfile),
9669
- className: "liquid-surface m-1 flex items-center justify-center gap-x-2 rounded-xl p-2.5 text-xs font-semibold sm:gap-x-2.5 sm:p-3 sm:text-sm text-slate-900 dark:text-white",
9702
+ className: tileBase,
9670
9703
  children: [
9671
- userInitial ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex h-5 w-5 items-center justify-center rounded-full bg-slate-200 text-[10px] font-semibold text-slate-700 dark:bg-slate-700 dark:text-slate-100", children: userInitial }) : /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.UserCircleIcon, { className: "size-5 flex-none text-slate-400 dark:text-slate-500" }),
9704
+ userInitial ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex h-5 w-5 items-center justify-center rounded-full bg-slate-500/15 text-[10px] font-semibold text-slate-700 dark:bg-white/15 dark:text-slate-100", children: userInitial }) : /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.UserCircleIcon, { className: "size-5 flex-none text-slate-500 dark:text-slate-300" }),
9672
9705
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: userName || t("profile") })
9673
9706
  ]
9674
9707
  }
@@ -9678,9 +9711,9 @@ function FlyoutQuickActions({
9678
9711
  {
9679
9712
  type: "button",
9680
9713
  onClick: () => handleAction(onSignOut),
9681
- className: "liquid-button liquid-button-red m-1 flex items-center justify-center gap-x-2 rounded-xl p-2.5 text-xs font-semibold sm:gap-x-2.5 sm:p-3 sm:text-sm text-red-600 dark:text-red-400",
9714
+ className: "liquid-button liquid-button-red m-1 flex items-center justify-center gap-x-2 rounded-xl p-2.5 text-xs font-semibold sm:gap-x-2.5 sm:p-3 sm:text-sm text-red-700 dark:text-red-300 transition-all duration-200 hover:-translate-y-0.5 hover:shadow-md active:scale-[0.985] focus:outline-none focus-visible:ring-2 focus-visible:ring-red-500/70 focus-visible:ring-offset-1",
9682
9715
  children: [
9683
- /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.ArrowRightOnRectangleIcon, { className: "size-5 flex-none text-slate-400 dark:text-slate-500" }),
9716
+ /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.ArrowRightOnRectangleIcon, { className: "size-5 flex-none text-red-600/70 dark:text-red-300/80" }),
9684
9717
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: t("signOut") })
9685
9718
  ]
9686
9719
  }
@@ -9727,7 +9760,7 @@ function FlyoutNavGrid({
9727
9760
  {
9728
9761
  type: "button",
9729
9762
  onClick: () => item.onClick ? item.onClick() : onNavigate(item.href),
9730
- className: `group relative flex w-full items-start gap-x-3 sm:gap-x-4 rounded-xl sm:rounded-2xl p-2.5 sm:p-3 text-left transition ${isSelected ? "selected liquid-surface liquid-surface-active" : `liquid-surface hover:shadow-md ${item.hoverClass ?? ""}`}`,
9763
+ className: `group relative flex w-full items-start gap-x-3 sm:gap-x-4 rounded-xl sm:rounded-2xl p-2.5 sm:p-3 text-left transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/70 focus-visible:ring-offset-1 active:scale-[0.985] ${isSelected ? "selected liquid-surface liquid-surface-active shadow-md" : `liquid-surface hover:-translate-y-0.5 hover:shadow-md ${item.hoverClass ?? ""}`}`,
9731
9764
  style: isSelected && getAccentRgb ? { "--glass-accent": getAccentRgb(item.href) } : void 0,
9732
9765
  children: [
9733
9766
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative mt-0.5 flex h-11 w-11 sm:h-14 sm:w-14 flex-none items-center justify-center overflow-hidden rounded-xl sm:rounded-2xl border border-white/40 bg-white/35 shadow-[inset_0_1px_0_rgba(255,255,255,0.85),0_12px_20px_-14px_rgba(15,23,42,0.55)] dark:border-white/14 dark:bg-white/10 dark:shadow-[inset_0_1px_0_rgba(255,255,255,0.2),0_12px_22px_-16px_rgba(0,0,0,0.8)]", children: [
@@ -19545,7 +19578,11 @@ var usePlatformShellStore = zustand.create((set, get) => ({
19545
19578
  locale: "en",
19546
19579
  theme: "system",
19547
19580
  resolvedTheme: "dark",
19548
- dockPosition: "left",
19581
+ // Canonical default — floating iOS-style dock at the bottom of
19582
+ // the viewport for non-launchpad / "standard content" pages.
19583
+ // User preference (`Settings → Preferences → Dock position`)
19584
+ // overrides per-user once set.
19585
+ dockPosition: "bottom",
19549
19586
  dockAutoHide: false,
19550
19587
  dockEnabled: true
19551
19588
  },
@@ -19613,7 +19650,13 @@ function PlatformShell({
19613
19650
  user,
19614
19651
  authStatus,
19615
19652
  onSignOut,
19616
- dockPosition = "left",
19653
+ // `bottom` is the canonical default for "standard content" pages
19654
+ // (every non-launchpad route) — the dock floats at the bottom of
19655
+ // the viewport like an iOS home dock. User preference (`Settings →
19656
+ // Preferences → Dock position`) can override per-user; the
19657
+ // PlatformShell store also defaults to `bottom` to keep first-time
19658
+ // users on the canonical layout.
19659
+ dockPosition = "bottom",
19617
19660
  dockAutoHide = false,
19618
19661
  dockEnabled = true,
19619
19662
  resolvedTheme,
@@ -20759,5 +20802,5 @@ exports.useSocialProviders = useSocialProviders;
20759
20802
  exports.validateDashboardSpec = validateDashboardSpec;
20760
20803
  exports.xScale = xScale;
20761
20804
  exports.yScale = yScale;
20762
- //# sourceMappingURL=chunk-6R5Z2IQ5.js.map
20763
- //# sourceMappingURL=chunk-6R5Z2IQ5.js.map
20805
+ //# sourceMappingURL=chunk-ULKZGM2T.js.map
20806
+ //# sourceMappingURL=chunk-ULKZGM2T.js.map