@datatechsolutions/ui 3.11.2 → 3.13.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.
Files changed (109) 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-HLIMHIRH.js → chunk-2ECLDHAT.js} +12 -12
  6. package/dist/{chunk-HLIMHIRH.js.map → chunk-2ECLDHAT.js.map} +1 -1
  7. package/dist/{chunk-RUWUH7DW.mjs → chunk-4VHFGW7I.mjs} +4 -4
  8. package/dist/{chunk-RUWUH7DW.mjs.map → chunk-4VHFGW7I.mjs.map} +1 -1
  9. package/dist/{chunk-6R5Z2IQ5.js → chunk-5ETT54QS.js} +120 -77
  10. package/dist/chunk-5ETT54QS.js.map +1 -0
  11. package/dist/{chunk-OZEOBZOW.mjs → chunk-6KDTVSZT.mjs} +7 -7
  12. package/dist/{chunk-OZEOBZOW.mjs.map → chunk-6KDTVSZT.mjs.map} +1 -1
  13. package/dist/{chunk-V32NUE5U.js → chunk-6YTYD4P5.js} +66 -66
  14. package/dist/{chunk-V32NUE5U.js.map → chunk-6YTYD4P5.js.map} +1 -1
  15. package/dist/{chunk-LBCUQ4FY.mjs → chunk-7TYNV6SY.mjs} +4 -4
  16. package/dist/{chunk-LBCUQ4FY.mjs.map → chunk-7TYNV6SY.mjs.map} +1 -1
  17. package/dist/{chunk-NDGYIHJ3.mjs → chunk-AHNH2PMI.mjs} +4 -4
  18. package/dist/{chunk-NDGYIHJ3.mjs.map → chunk-AHNH2PMI.mjs.map} +1 -1
  19. package/dist/{chunk-4PUVECVF.mjs → chunk-AKWCT53S.mjs} +4 -4
  20. package/dist/{chunk-4PUVECVF.mjs.map → chunk-AKWCT53S.mjs.map} +1 -1
  21. package/dist/{chunk-TXI3QDYE.js → chunk-AMCFAGK3.js} +34 -34
  22. package/dist/{chunk-TXI3QDYE.js.map → chunk-AMCFAGK3.js.map} +1 -1
  23. package/dist/{chunk-JXROBMRU.mjs → chunk-ANFSQJNI.mjs} +4 -4
  24. package/dist/{chunk-JXROBMRU.mjs.map → chunk-ANFSQJNI.mjs.map} +1 -1
  25. package/dist/{chunk-N7T4X6A7.mjs → chunk-CSOMZ5UM.mjs} +4 -4
  26. package/dist/{chunk-N7T4X6A7.mjs.map → chunk-CSOMZ5UM.mjs.map} +1 -1
  27. package/dist/{chunk-3BFQ3SVG.js → chunk-D5OTZGA2.js} +126 -127
  28. package/dist/chunk-D5OTZGA2.js.map +1 -0
  29. package/dist/{chunk-GDVB7QDZ.js → chunk-IIRS5XZY.js} +104 -40
  30. package/dist/chunk-IIRS5XZY.js.map +1 -0
  31. package/dist/{chunk-N5FWIT7N.js → chunk-K5567JM5.js} +13 -13
  32. package/dist/{chunk-N5FWIT7N.js.map → chunk-K5567JM5.js.map} +1 -1
  33. package/dist/{chunk-KGC5CRS7.mjs → chunk-KWH7JIRP.mjs} +3 -3
  34. package/dist/{chunk-KGC5CRS7.mjs.map → chunk-KWH7JIRP.mjs.map} +1 -1
  35. package/dist/{chunk-Y4YIGEX6.js → chunk-MQDCUBVW.js} +150 -150
  36. package/dist/{chunk-Y4YIGEX6.js.map → chunk-MQDCUBVW.js.map} +1 -1
  37. package/dist/{chunk-D5FL3ZHC.mjs → chunk-MSKKNPRE.mjs} +86 -43
  38. package/dist/chunk-MSKKNPRE.mjs.map +1 -0
  39. package/dist/{chunk-5JS3UFBF.js → chunk-N4YT3QA5.js} +15 -15
  40. package/dist/{chunk-5JS3UFBF.js.map → chunk-N4YT3QA5.js.map} +1 -1
  41. package/dist/{chunk-LW2LFJZ7.js → chunk-NF5DDM5V.js} +40 -40
  42. package/dist/{chunk-LW2LFJZ7.js.map → chunk-NF5DDM5V.js.map} +1 -1
  43. package/dist/{chunk-AVLOGVVA.mjs → chunk-OC4AOYU5.mjs} +4 -4
  44. package/dist/{chunk-AVLOGVVA.mjs.map → chunk-OC4AOYU5.mjs.map} +1 -1
  45. package/dist/{chunk-BGLYJ7GR.js → chunk-OY5HUZSD.js} +44 -44
  46. package/dist/{chunk-BGLYJ7GR.js.map → chunk-OY5HUZSD.js.map} +1 -1
  47. package/dist/{chunk-5Y67PZWC.js → chunk-PPIUMCUZ.js} +6 -6
  48. package/dist/{chunk-5Y67PZWC.js.map → chunk-PPIUMCUZ.js.map} +1 -1
  49. package/dist/{chunk-M64U336M.mjs → chunk-QGRTV35L.mjs} +7 -7
  50. package/dist/{chunk-M64U336M.mjs.map → chunk-QGRTV35L.mjs.map} +1 -1
  51. package/dist/{chunk-3J4E2THD.js → chunk-SDYKXLCU.js} +56 -56
  52. package/dist/{chunk-3J4E2THD.js.map → chunk-SDYKXLCU.js.map} +1 -1
  53. package/dist/{chunk-5TJR3VJ6.mjs → chunk-UPYACFZJ.mjs} +5 -5
  54. package/dist/{chunk-5TJR3VJ6.mjs.map → chunk-UPYACFZJ.mjs.map} +1 -1
  55. package/dist/{chunk-JBXNEOFB.mjs → chunk-UXHJS2SH.mjs} +4 -5
  56. package/dist/chunk-UXHJS2SH.mjs.map +1 -0
  57. package/dist/{chunk-MCHTZ63Q.js → chunk-VI4IUTMX.js} +4 -4
  58. package/dist/{chunk-MCHTZ63Q.js.map → chunk-VI4IUTMX.js.map} +1 -1
  59. package/dist/{chunk-TZA5T4MJ.mjs → chunk-VIB42VMZ.mjs} +81 -17
  60. package/dist/chunk-VIB42VMZ.mjs.map +1 -0
  61. package/dist/{chunk-5NKGJV72.js → chunk-WOTKBKS6.js} +31 -31
  62. package/dist/{chunk-5NKGJV72.js.map → chunk-WOTKBKS6.js.map} +1 -1
  63. package/dist/{chunk-YXN2K77G.js → chunk-Y5VN4SPH.js} +26 -3
  64. package/dist/chunk-Y5VN4SPH.js.map +1 -0
  65. package/dist/{chunk-7VJ7CMMT.mjs → chunk-ZEFNBGYI.mjs} +26 -3
  66. package/dist/chunk-ZEFNBGYI.mjs.map +1 -0
  67. package/dist/{chunk-WSXP645I.mjs → chunk-ZRCXDKBE.mjs} +3 -3
  68. package/dist/{chunk-WSXP645I.mjs.map → chunk-ZRCXDKBE.mjs.map} +1 -1
  69. package/dist/index.d.mts +13 -4
  70. package/dist/index.d.ts +13 -4
  71. package/dist/index.js +668 -668
  72. package/dist/index.mjs +2 -2
  73. package/dist/lib/i18n-context.d.mts +12 -4
  74. package/dist/lib/i18n-context.d.ts +12 -4
  75. package/dist/lib/i18n-context.js +6 -6
  76. package/dist/lib/i18n-context.mjs +1 -1
  77. package/dist/platform/admin/index.js +10 -10
  78. package/dist/platform/admin/index.mjs +4 -4
  79. package/dist/platform/agents-workspace.js +7 -7
  80. package/dist/platform/agents-workspace.mjs +6 -6
  81. package/dist/platform/app-shell.js +4 -4
  82. package/dist/platform/app-shell.mjs +3 -3
  83. package/dist/platform/auth/index.js +22 -22
  84. package/dist/platform/auth/index.mjs +4 -4
  85. package/dist/platform/billing/index.js +4 -4
  86. package/dist/platform/billing/index.mjs +3 -3
  87. package/dist/platform/impersonation/index.js +4 -4
  88. package/dist/platform/impersonation/index.mjs +3 -3
  89. package/dist/platform/index.js +85 -85
  90. package/dist/platform/index.mjs +18 -18
  91. package/dist/platform/pages/index.d.mts +75 -16
  92. package/dist/platform/pages/index.d.ts +75 -16
  93. package/dist/platform/pages/index.js +1089 -505
  94. package/dist/platform/pages/index.js.map +1 -1
  95. package/dist/platform/pages/index.mjs +789 -205
  96. package/dist/platform/pages/index.mjs.map +1 -1
  97. package/dist/platform/settings/index.js +7 -7
  98. package/dist/platform/settings/index.mjs +6 -6
  99. package/dist/platform/workflow-canvas-shell.js +5 -5
  100. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  101. package/package.json +2 -1
  102. package/dist/chunk-3BFQ3SVG.js.map +0 -1
  103. package/dist/chunk-6R5Z2IQ5.js.map +0 -1
  104. package/dist/chunk-7VJ7CMMT.mjs.map +0 -1
  105. package/dist/chunk-D5FL3ZHC.mjs.map +0 -1
  106. package/dist/chunk-GDVB7QDZ.js.map +0 -1
  107. package/dist/chunk-JBXNEOFB.mjs.map +0 -1
  108. package/dist/chunk-TZA5T4MJ.mjs.map +0 -1
  109. package/dist/chunk-YXN2K77G.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
4
+ var chunkY5VN4SPH_js = require('./chunk-Y5VN4SPH.js');
5
5
  var chunk22XPYFHJ_js = require('./chunk-22XPYFHJ.js');
6
6
  var chunkBHOT22QL_js = require('./chunk-BHOT22QL.js');
7
7
  var chunkUZ3CMNUJ_js = require('./chunk-UZ3CMNUJ.js');
@@ -371,7 +371,7 @@ var Input = React9.forwardRef(
371
371
  variant = "default",
372
372
  ...props
373
373
  }, ref) => {
374
- const t = chunkYXN2K77G_js.useTranslations("auth");
374
+ const t = chunkY5VN4SPH_js.useTranslations("auth");
375
375
  const autoId = React9.useId();
376
376
  const inputId = props.id || autoId;
377
377
  const errorId = `${inputId}-error`;
@@ -1667,7 +1667,7 @@ function getTestIdFromTitle(title) {
1667
1667
  return "entity-card";
1668
1668
  }
1669
1669
  function StatusBadgeInternal({ status }) {
1670
- const tCommon = chunkYXN2K77G_js.useTranslations("common");
1670
+ const tCommon = chunkY5VN4SPH_js.useTranslations("common");
1671
1671
  if (typeof status !== "boolean") {
1672
1672
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: status });
1673
1673
  }
@@ -3018,7 +3018,7 @@ function SearchBar({
3018
3018
  filterChipStyleConfig,
3019
3019
  filtersModal
3020
3020
  }) {
3021
- const t = chunkYXN2K77G_js.useTranslations("common");
3021
+ const t = chunkY5VN4SPH_js.useTranslations("common");
3022
3022
  const [isFocused, setIsFocused] = React9.useState(false);
3023
3023
  const inputRef = React9.useRef(null);
3024
3024
  const hasFilters = activeFilters.length > 0 || searchTerm.length > 0;
@@ -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 }),
@@ -3286,7 +3286,7 @@ function StatCard({
3286
3286
  onClick,
3287
3287
  className = ""
3288
3288
  }) {
3289
- const t = chunkYXN2K77G_js.useTranslations("common");
3289
+ const t = chunkY5VN4SPH_js.useTranslations("common");
3290
3290
  const colorConfig = colorClasses[color];
3291
3291
  const isClickable = !!onClick;
3292
3292
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -3463,7 +3463,7 @@ function PriceChangeBadge({
3463
3463
  showIcon = false,
3464
3464
  className = ""
3465
3465
  }) {
3466
- const locale = chunkYXN2K77G_js.useLocale();
3466
+ const locale = chunkY5VN4SPH_js.useLocale();
3467
3467
  if (value === null) return null;
3468
3468
  const isPositive = value >= 0;
3469
3469
  const toneClasses = isPositive ? "border-emerald-500/30 bg-emerald-500/20 text-emerald-700 dark:text-emerald-300" : "border-red-500/30 bg-red-500/20 text-red-700 dark:text-red-300";
@@ -3491,8 +3491,8 @@ function Pagination({
3491
3491
  onPageChange,
3492
3492
  className = ""
3493
3493
  }) {
3494
- const t = chunkYXN2K77G_js.useTranslations("approvals");
3495
- const tCommon = chunkYXN2K77G_js.useTranslations("common");
3494
+ const t = chunkY5VN4SPH_js.useTranslations("approvals");
3495
+ const tCommon = chunkY5VN4SPH_js.useTranslations("common");
3496
3496
  const from = (currentPage - 1) * pageSize + 1;
3497
3497
  const to = Math.min(currentPage * pageSize, totalItems);
3498
3498
  const getPageNumbers2 = () => {
@@ -3731,7 +3731,7 @@ function Spinner({
3731
3731
  className,
3732
3732
  label
3733
3733
  }) {
3734
- const t = chunkYXN2K77G_js.useTranslations("common");
3734
+ const t = chunkY5VN4SPH_js.useTranslations("common");
3735
3735
  const ariaLabel = label || t("loading");
3736
3736
  const SpinnerComponent = {
3737
3737
  circle: CircleSpinner,
@@ -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
  }
@@ -4024,7 +4036,7 @@ function PageIndicator({
4024
4036
  size = "md",
4025
4037
  variant = "default"
4026
4038
  }) {
4027
- const t = chunkYXN2K77G_js.useTranslations("common");
4039
+ const t = chunkY5VN4SPH_js.useTranslations("common");
4028
4040
  const { dot, gap } = sizeConfig2[size];
4029
4041
  const colors2 = variantConfig[variant];
4030
4042
  const handleClick = (index) => {
@@ -4083,7 +4095,7 @@ function ExpandingPageIndicator({
4083
4095
  variant = "default",
4084
4096
  activeWidth = 24
4085
4097
  }) {
4086
- const t = chunkYXN2K77G_js.useTranslations("common");
4098
+ const t = chunkY5VN4SPH_js.useTranslations("common");
4087
4099
  const colors2 = variantConfig[variant];
4088
4100
  const handleClick = (index) => {
4089
4101
  if (onChange && index !== active) {
@@ -5304,7 +5316,7 @@ function ErrorState({
5304
5316
  details,
5305
5317
  variant = "default"
5306
5318
  }) {
5307
- const t = chunkYXN2K77G_js.useTranslations("common.errorState");
5319
+ const t = chunkY5VN4SPH_js.useTranslations("common.errorState");
5308
5320
  const [isRetrying, setIsRetrying] = React9.useState(false);
5309
5321
  const [showErrorDetails, setShowErrorDetails] = React9.useState(false);
5310
5322
  const config = errorTypeConfig[type];
@@ -5439,7 +5451,7 @@ function OfflineState({
5439
5451
  onRetry,
5440
5452
  message
5441
5453
  }) {
5442
- const t = chunkYXN2K77G_js.useTranslations("common.errorState");
5454
+ const t = chunkY5VN4SPH_js.useTranslations("common.errorState");
5443
5455
  return /* @__PURE__ */ jsxRuntime.jsx(
5444
5456
  ErrorState,
5445
5457
  {
@@ -5457,7 +5469,7 @@ function NoResultsState({
5457
5469
  onClearFilters,
5458
5470
  suggestions
5459
5471
  }) {
5460
- const t = chunkYXN2K77G_js.useTranslations("common.emptyState");
5472
+ const t = chunkY5VN4SPH_js.useTranslations("common.emptyState");
5461
5473
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-surface rounded-xl px-6 py-12 text-center", children: [
5462
5474
  /* @__PURE__ */ jsxRuntime.jsx(
5463
5475
  framerMotion.motion.div,
@@ -5521,7 +5533,7 @@ function NoDataState({
5521
5533
  onAction,
5522
5534
  icon: CustomIcon
5523
5535
  }) {
5524
- const t = chunkYXN2K77G_js.useTranslations("common.emptyState");
5536
+ const t = chunkY5VN4SPH_js.useTranslations("common.emptyState");
5525
5537
  const Icon = CustomIcon || HeroIcons.FolderOpenIcon;
5526
5538
  const resolvedTitle = title || t("noDataTitle");
5527
5539
  const resolvedMessage = message || t("noDataMessage");
@@ -5828,7 +5840,7 @@ function NotificationProvider({ children, appName = "Datatech" }) {
5828
5840
  ] });
5829
5841
  }
5830
5842
  function NotificationBellButton() {
5831
- const t = chunkYXN2K77G_js.useTranslations("notifications");
5843
+ const t = chunkY5VN4SPH_js.useTranslations("notifications");
5832
5844
  const { history, historyOpen, openHistory } = useNotifications();
5833
5845
  const totalCount = history.length;
5834
5846
  if (historyOpen) return null;
@@ -5871,7 +5883,7 @@ function NotificationDrawer({
5871
5883
  onRemove,
5872
5884
  onClear
5873
5885
  }) {
5874
- const t = chunkYXN2K77G_js.useTranslations("notifications");
5886
+ const t = chunkY5VN4SPH_js.useTranslations("notifications");
5875
5887
  return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5876
5888
  /* @__PURE__ */ jsxRuntime.jsx(
5877
5889
  framerMotion.motion.div,
@@ -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,12 +6816,12 @@ 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";
6803
6823
  function CopyableId({ id, copyValue, label, className }) {
6804
- const t = chunkYXN2K77G_js.useTranslations();
6824
+ const t = chunkY5VN4SPH_js.useTranslations();
6805
6825
  const [copied, setCopied] = React9.useState(false);
6806
6826
  const valueToCopy = copyValue ?? id;
6807
6827
  const handleCopy = async (e) => {
@@ -6927,8 +6947,8 @@ function DatePicker({
6927
6947
  disableFuture = false,
6928
6948
  className = ""
6929
6949
  }) {
6930
- const appLocale = chunkYXN2K77G_js.useLocale();
6931
- const t = chunkYXN2K77G_js.useTranslations("datePicker");
6950
+ const appLocale = chunkY5VN4SPH_js.useLocale();
6951
+ const t = chunkY5VN4SPH_js.useTranslations("datePicker");
6932
6952
  const dateFnsLocale = dateFnsLocales[appLocale] ?? locale.ptBR;
6933
6953
  const [open, setOpen] = React9.useState(false);
6934
6954
  const [viewMode, setViewMode] = React9.useState("days");
@@ -7194,7 +7214,7 @@ function TimePicker({
7194
7214
  placeholder,
7195
7215
  className = ""
7196
7216
  }) {
7197
- const t = chunkYXN2K77G_js.useTranslations("timePicker");
7217
+ const t = chunkY5VN4SPH_js.useTranslations("timePicker");
7198
7218
  const [open, setOpen] = React9.useState(false);
7199
7219
  const [draftHours, setDraftHours] = React9.useState(value ? value.hours : 0);
7200
7220
  const [draftMinutes, setDraftMinutes] = React9.useState(value ? value.minutes : 0);
@@ -7394,7 +7414,7 @@ function PageHeading({
7394
7414
  meta,
7395
7415
  actions
7396
7416
  }) {
7397
- const t = chunkYXN2K77G_js.useTranslations("common");
7417
+ const t = chunkY5VN4SPH_js.useTranslations("common");
7398
7418
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6 lg:flex lg:items-start lg:justify-between", children: [
7399
7419
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
7400
7420
  breadcrumbs?.length ? /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": t("breadcrumb"), className: "mb-2", children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: "flex items-center gap-2 text-xs text-gray-500 dark:text-gray-400", children: breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-2", children: [
@@ -8001,7 +8021,7 @@ function StepFormPage({
8001
8021
  headerRight,
8002
8022
  children
8003
8023
  }) {
8004
- const translation = chunkYXN2K77G_js.useTranslations("forms");
8024
+ const translation = chunkY5VN4SPH_js.useTranslations("forms");
8005
8025
  const isLastStep = currentStep === steps.length - 1;
8006
8026
  const isFirstStep = currentStep === 0;
8007
8027
  const handleBack = () => {
@@ -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}` }),
@@ -8693,7 +8713,7 @@ function CookieConsent({
8693
8713
  onAccept,
8694
8714
  onReject
8695
8715
  } = {}) {
8696
- const t = chunkYXN2K77G_js.useTranslations("common.cookieConsent");
8716
+ const t = chunkY5VN4SPH_js.useTranslations("common.cookieConsent");
8697
8717
  const [visible, setVisible] = React9.useState(false);
8698
8718
  React9.useEffect(() => {
8699
8719
  const consent = localStorage.getItem(storageKey);
@@ -9140,7 +9160,7 @@ function NavigationProgress() {
9140
9160
  return /* @__PURE__ */ jsxRuntime.jsx(reactTransitionProgress.ProgressBar, { className: "fixed h-1 top-0 z-[200] bg-gradient-to-r from-indigo-500 via-purple-500 to-pink-500 shadow-lg shadow-purple-500/20" });
9141
9161
  }
9142
9162
  function PageLoadingState({ label, compact = false }) {
9143
- const t = chunkYXN2K77G_js.useTranslations("common");
9163
+ const t = chunkY5VN4SPH_js.useTranslations("common");
9144
9164
  const resolvedLabel = label || t("loading");
9145
9165
  return /* @__PURE__ */ jsxRuntime.jsx(
9146
9166
  "div",
@@ -9363,7 +9383,7 @@ function ImageUpload({
9363
9383
  ] });
9364
9384
  }
9365
9385
  function Breadcrumb({ pages, actions, centerContent, dashboardPath = "/dashboard" }) {
9366
- const t = chunkYXN2K77G_js.useTranslations("common");
9386
+ const t = chunkY5VN4SPH_js.useTranslations("common");
9367
9387
  const currentPage = pages.find((page) => page.current) || pages[pages.length - 1];
9368
9388
  const parentPage = pages.length > 1 ? pages[pages.length - 2] : null;
9369
9389
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -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();
@@ -9634,30 +9666,31 @@ function FlyoutQuickActions({
9634
9666
  onSignOut,
9635
9667
  onClose
9636
9668
  }) {
9637
- const t = chunkYXN2K77G_js.useTranslations("common");
9669
+ const t = chunkY5VN4SPH_js.useTranslations("common");
9638
9670
  const isDark = resolvedTheme === "dark";
9639
9671
  const handleAction = (action) => {
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
  }
@@ -9696,7 +9729,7 @@ function FlyoutNavGrid({
9696
9729
  getAccentRgb,
9697
9730
  searchFocusRingClass = "focus-ring-indigo"
9698
9731
  }) {
9699
- const t = chunkYXN2K77G_js.useTranslations("common");
9732
+ const t = chunkY5VN4SPH_js.useTranslations("common");
9700
9733
  const [query, setQuery] = React9.useState("");
9701
9734
  const isCurrentPath = (href) => href === "/dashboard" ? currentPath === "/dashboard" : currentPath.startsWith(href);
9702
9735
  const normalizedQuery = query.trim().toLowerCase();
@@ -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: [
@@ -9885,8 +9918,8 @@ function MonthPicker({
9885
9918
  side = "bottom",
9886
9919
  avoidCollisions = true
9887
9920
  }) {
9888
- const locale$1 = chunkYXN2K77G_js.useLocale();
9889
- const t = chunkYXN2K77G_js.useTranslations("common");
9921
+ const locale$1 = chunkY5VN4SPH_js.useLocale();
9922
+ const t = chunkY5VN4SPH_js.useTranslations("common");
9890
9923
  const dateFnsLocale = dateFnsLocales2[locale$1] || locale.ptBR;
9891
9924
  const months = React9__namespace.useMemo(() => getLocalizedMonths(dateFnsLocale), [dateFnsLocale]);
9892
9925
  const defaultPlaceholder = t("selectMonth");
@@ -10765,7 +10798,7 @@ function StatusToggle({
10765
10798
  onIcon,
10766
10799
  className
10767
10800
  }) {
10768
- const translation = chunkYXN2K77G_js.useTranslations("common");
10801
+ const translation = chunkY5VN4SPH_js.useTranslations("common");
10769
10802
  const resolvedOffLabel = offLabel ?? translation("inactive");
10770
10803
  const resolvedOnLabel = onLabel ?? translation("active");
10771
10804
  const resolvedOffIcon = offIcon ?? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.XCircleIcon, { className: "h-4 w-4" });
@@ -11206,7 +11239,7 @@ function OtpInput({
11206
11239
  autoFocus = false,
11207
11240
  inputMode = "numeric"
11208
11241
  }) {
11209
- const t = chunkYXN2K77G_js.useTranslations("auth");
11242
+ const t = chunkY5VN4SPH_js.useTranslations("auth");
11210
11243
  const groupId = React9.useId();
11211
11244
  const inputsRef = React9.useRef([]);
11212
11245
  const digits = value.split("").concat(Array(length).fill("")).slice(0, length);
@@ -11381,7 +11414,7 @@ function PasswordStrengthMeter({
11381
11414
  policy = DEFAULT_POLICY,
11382
11415
  showRequirements = false
11383
11416
  }) {
11384
- const t = chunkYXN2K77G_js.useTranslations("auth");
11417
+ const t = chunkY5VN4SPH_js.useTranslations("auth");
11385
11418
  const requirements = React9.useMemo(
11386
11419
  () => evaluateRequirements(password, policy),
11387
11420
  [password, policy]
@@ -11434,7 +11467,7 @@ function BackupCodeGrid({
11434
11467
  revealed = true,
11435
11468
  onReveal
11436
11469
  }) {
11437
- const t = chunkYXN2K77G_js.useTranslations("auth");
11470
+ const t = chunkY5VN4SPH_js.useTranslations("auth");
11438
11471
  const handleCopyAll = React9.useCallback(async () => {
11439
11472
  const text = codes.join("\n");
11440
11473
  await navigator.clipboard.writeText(text);
@@ -11519,7 +11552,7 @@ function SocialLoginButtons({
11519
11552
  loading = null,
11520
11553
  disabled = false
11521
11554
  }) {
11522
- const t = chunkYXN2K77G_js.useTranslations("auth");
11555
+ const t = chunkY5VN4SPH_js.useTranslations("auth");
11523
11556
  const isColumn = layout === "column";
11524
11557
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex ${isColumn ? "flex-col" : "flex-row"} gap-2`, children: providers.map((provider) => /* @__PURE__ */ jsxRuntime.jsxs(
11525
11558
  chunkBHOT22QL_js.Button,
@@ -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-5ETT54QS.js.map
20806
+ //# sourceMappingURL=chunk-5ETT54QS.js.map