@datatechsolutions/ui 3.12.1 → 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 (101) 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-HTODLUKG.js → chunk-2ECLDHAT.js} +12 -12
  6. package/dist/{chunk-HTODLUKG.js.map → chunk-2ECLDHAT.js.map} +1 -1
  7. package/dist/{chunk-NQGLSM46.mjs → chunk-4VHFGW7I.mjs} +4 -4
  8. package/dist/{chunk-NQGLSM46.mjs.map → chunk-4VHFGW7I.mjs.map} +1 -1
  9. package/dist/{chunk-ULKZGM2T.js → chunk-5ETT54QS.js} +37 -37
  10. package/dist/{chunk-ULKZGM2T.js.map → chunk-5ETT54QS.js.map} +1 -1
  11. package/dist/{chunk-N5GQIT7A.mjs → chunk-6KDTVSZT.mjs} +7 -7
  12. package/dist/{chunk-N5GQIT7A.mjs.map → chunk-6KDTVSZT.mjs.map} +1 -1
  13. package/dist/{chunk-VYU2FYDE.js → chunk-6YTYD4P5.js} +66 -66
  14. package/dist/{chunk-VYU2FYDE.js.map → chunk-6YTYD4P5.js.map} +1 -1
  15. package/dist/{chunk-YYNGXKUE.mjs → chunk-7TYNV6SY.mjs} +4 -4
  16. package/dist/{chunk-YYNGXKUE.mjs.map → chunk-7TYNV6SY.mjs.map} +1 -1
  17. package/dist/{chunk-RT264BD4.mjs → chunk-AHNH2PMI.mjs} +4 -4
  18. package/dist/{chunk-RT264BD4.mjs.map → chunk-AHNH2PMI.mjs.map} +1 -1
  19. package/dist/{chunk-RBH723MG.mjs → chunk-AKWCT53S.mjs} +4 -4
  20. package/dist/{chunk-RBH723MG.mjs.map → chunk-AKWCT53S.mjs.map} +1 -1
  21. package/dist/{chunk-MYHBXIO2.js → chunk-AMCFAGK3.js} +34 -34
  22. package/dist/{chunk-MYHBXIO2.js.map → chunk-AMCFAGK3.js.map} +1 -1
  23. package/dist/{chunk-UVFWKDRO.mjs → chunk-ANFSQJNI.mjs} +4 -4
  24. package/dist/{chunk-UVFWKDRO.mjs.map → chunk-ANFSQJNI.mjs.map} +1 -1
  25. package/dist/{chunk-BPMYNE7S.mjs → chunk-CSOMZ5UM.mjs} +4 -4
  26. package/dist/{chunk-BPMYNE7S.mjs.map → chunk-CSOMZ5UM.mjs.map} +1 -1
  27. package/dist/{chunk-FKRIQYRG.js → chunk-D5OTZGA2.js} +126 -127
  28. package/dist/chunk-D5OTZGA2.js.map +1 -0
  29. package/dist/{chunk-V3UZCOZI.js → chunk-IIRS5XZY.js} +32 -32
  30. package/dist/{chunk-V3UZCOZI.js.map → chunk-IIRS5XZY.js.map} +1 -1
  31. package/dist/{chunk-Z75CEP4V.js → chunk-K5567JM5.js} +13 -13
  32. package/dist/{chunk-Z75CEP4V.js.map → chunk-K5567JM5.js.map} +1 -1
  33. package/dist/{chunk-OM5NNUD2.mjs → chunk-KWH7JIRP.mjs} +3 -3
  34. package/dist/{chunk-OM5NNUD2.mjs.map → chunk-KWH7JIRP.mjs.map} +1 -1
  35. package/dist/{chunk-MFF37C24.js → chunk-MQDCUBVW.js} +150 -150
  36. package/dist/{chunk-MFF37C24.js.map → chunk-MQDCUBVW.js.map} +1 -1
  37. package/dist/{chunk-OW5LSEHU.mjs → chunk-MSKKNPRE.mjs} +3 -3
  38. package/dist/{chunk-OW5LSEHU.mjs.map → chunk-MSKKNPRE.mjs.map} +1 -1
  39. package/dist/{chunk-PLEWG2L7.js → chunk-N4YT3QA5.js} +15 -15
  40. package/dist/{chunk-PLEWG2L7.js.map → chunk-N4YT3QA5.js.map} +1 -1
  41. package/dist/{chunk-XGAPZT4J.js → chunk-NF5DDM5V.js} +40 -40
  42. package/dist/{chunk-XGAPZT4J.js.map → chunk-NF5DDM5V.js.map} +1 -1
  43. package/dist/{chunk-NK4H3JWN.mjs → chunk-OC4AOYU5.mjs} +4 -4
  44. package/dist/{chunk-NK4H3JWN.mjs.map → chunk-OC4AOYU5.mjs.map} +1 -1
  45. package/dist/{chunk-ID55ABBB.js → chunk-OY5HUZSD.js} +44 -44
  46. package/dist/{chunk-ID55ABBB.js.map → chunk-OY5HUZSD.js.map} +1 -1
  47. package/dist/{chunk-5OZTI7TR.js → chunk-PPIUMCUZ.js} +6 -6
  48. package/dist/{chunk-5OZTI7TR.js.map → chunk-PPIUMCUZ.js.map} +1 -1
  49. package/dist/{chunk-WLNY3GVM.mjs → chunk-QGRTV35L.mjs} +7 -7
  50. package/dist/{chunk-WLNY3GVM.mjs.map → chunk-QGRTV35L.mjs.map} +1 -1
  51. package/dist/{chunk-TDNBO3V7.js → chunk-SDYKXLCU.js} +56 -56
  52. package/dist/{chunk-TDNBO3V7.js.map → chunk-SDYKXLCU.js.map} +1 -1
  53. package/dist/{chunk-5TLKFOEL.mjs → chunk-UPYACFZJ.mjs} +5 -5
  54. package/dist/{chunk-5TLKFOEL.mjs.map → chunk-UPYACFZJ.mjs.map} +1 -1
  55. package/dist/{chunk-EDI46QA7.mjs → chunk-UXHJS2SH.mjs} +4 -5
  56. package/dist/chunk-UXHJS2SH.mjs.map +1 -0
  57. package/dist/{chunk-LRNVB7MO.js → chunk-VI4IUTMX.js} +4 -4
  58. package/dist/{chunk-LRNVB7MO.js.map → chunk-VI4IUTMX.js.map} +1 -1
  59. package/dist/{chunk-4D23CQZM.mjs → chunk-VIB42VMZ.mjs} +5 -5
  60. package/dist/{chunk-4D23CQZM.mjs.map → chunk-VIB42VMZ.mjs.map} +1 -1
  61. package/dist/{chunk-QSCWV47U.js → chunk-WOTKBKS6.js} +31 -31
  62. package/dist/{chunk-QSCWV47U.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-PIIY2Z2O.mjs → chunk-ZRCXDKBE.mjs} +3 -3
  68. package/dist/{chunk-PIIY2Z2O.mjs.map → chunk-ZRCXDKBE.mjs.map} +1 -1
  69. package/dist/index.js +668 -668
  70. package/dist/index.mjs +2 -2
  71. package/dist/lib/i18n-context.d.mts +12 -4
  72. package/dist/lib/i18n-context.d.ts +12 -4
  73. package/dist/lib/i18n-context.js +6 -6
  74. package/dist/lib/i18n-context.mjs +1 -1
  75. package/dist/platform/admin/index.js +10 -10
  76. package/dist/platform/admin/index.mjs +4 -4
  77. package/dist/platform/agents-workspace.js +7 -7
  78. package/dist/platform/agents-workspace.mjs +6 -6
  79. package/dist/platform/app-shell.js +4 -4
  80. package/dist/platform/app-shell.mjs +3 -3
  81. package/dist/platform/auth/index.js +22 -22
  82. package/dist/platform/auth/index.mjs +4 -4
  83. package/dist/platform/billing/index.js +4 -4
  84. package/dist/platform/billing/index.mjs +3 -3
  85. package/dist/platform/impersonation/index.js +4 -4
  86. package/dist/platform/impersonation/index.mjs +3 -3
  87. package/dist/platform/index.d.mts +1 -1
  88. package/dist/platform/index.d.ts +1 -1
  89. package/dist/platform/index.js +96 -96
  90. package/dist/platform/index.mjs +18 -18
  91. package/dist/platform/pages/index.js +346 -346
  92. package/dist/platform/pages/index.mjs +8 -8
  93. package/dist/platform/settings/index.js +7 -7
  94. package/dist/platform/settings/index.mjs +6 -6
  95. package/dist/platform/workflow-canvas-shell.js +5 -5
  96. package/dist/platform/workflow-canvas-shell.mjs +4 -4
  97. package/package.json +2 -1
  98. package/dist/chunk-7VJ7CMMT.mjs.map +0 -1
  99. package/dist/chunk-EDI46QA7.mjs.map +0 -1
  100. package/dist/chunk-FKRIQYRG.js.map +0 -1
  101. package/dist/chunk-YXN2K77G.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkULKZGM2T_js = require('./chunk-ULKZGM2T.js');
5
- var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
4
+ var chunk5ETT54QS_js = require('./chunk-5ETT54QS.js');
5
+ var chunkY5VN4SPH_js = require('./chunk-Y5VN4SPH.js');
6
6
  var chunkS7KHTUHA_js = require('./chunk-S7KHTUHA.js');
7
7
  var react = require('react');
8
8
  var outline = require('@heroicons/react/24/outline');
@@ -11,7 +11,7 @@ var jsxRuntime = require('react/jsx-runtime');
11
11
 
12
12
  var PlatformStateContext = react.createContext(null);
13
13
  function PlatformStateProvider({ children, normalizeRole }) {
14
- const { user } = chunkULKZGM2T_js.useAuth();
14
+ const { user } = chunk5ETT54QS_js.useAuth();
15
15
  const state = react.useMemo(() => {
16
16
  const organizationId = user?.organizationId ?? "";
17
17
  const actor = user ? {
@@ -33,7 +33,7 @@ function usePlatformState() {
33
33
  }
34
34
  function resolveFlag(locale) {
35
35
  const code = locale === "pt-BR" ? "br" : locale;
36
- return chunkULKZGM2T_js.LOCALE_FLAGS?.[code];
36
+ return chunk5ETT54QS_js.LOCALE_FLAGS?.[code];
37
37
  }
38
38
  function PlatformAppShell({
39
39
  appName,
@@ -49,14 +49,14 @@ function PlatformAppShell({
49
49
  settingsModal,
50
50
  children
51
51
  }) {
52
- const tCommon = chunkYXN2K77G_js.useTranslations("common");
53
- const { user, status, logout } = chunkULKZGM2T_js.useAuth();
52
+ const tCommon = chunkY5VN4SPH_js.useTranslations("common");
53
+ const { user, status, logout } = chunk5ETT54QS_js.useAuth();
54
54
  usePlatformState();
55
- const { resolvedTheme, setTheme, dockPosition, dockAutoHide, dockEnabled } = chunkULKZGM2T_js.usePlatformPreferences();
55
+ const { resolvedTheme, setTheme, dockPosition, dockAutoHide, dockEnabled } = chunk5ETT54QS_js.usePlatformPreferences();
56
56
  const pathname = chunkS7KHTUHA_js.usePathname();
57
57
  const router = chunkS7KHTUHA_js.useRouter();
58
- const { history, openHistory } = chunkULKZGM2T_js.useNotifications();
59
- const currentLocale = chunkYXN2K77G_js.useLocale();
58
+ const { history, openHistory } = chunk5ETT54QS_js.useNotifications();
59
+ const currentLocale = chunkY5VN4SPH_js.useLocale();
60
60
  const localeMeta = i18n.LANGUAGE_META[currentLocale];
61
61
  const items = react.useMemo(() => navigationItems.filter((item) => {
62
62
  const permission = modulePermissions[item.id];
@@ -83,7 +83,7 @@ function PlatformAppShell({
83
83
  organizationId: user.organizationId ?? null
84
84
  } : null;
85
85
  return /* @__PURE__ */ jsxRuntime.jsx(
86
- chunkULKZGM2T_js.PlatformShell,
86
+ chunk5ETT54QS_js.PlatformShell,
87
87
  {
88
88
  items,
89
89
  launchpadPageOrder: pageOrder,
@@ -129,5 +129,5 @@ function PlatformAppShell({
129
129
  exports.PlatformAppShell = PlatformAppShell;
130
130
  exports.PlatformStateProvider = PlatformStateProvider;
131
131
  exports.usePlatformState = usePlatformState;
132
- //# sourceMappingURL=chunk-HTODLUKG.js.map
133
- //# sourceMappingURL=chunk-HTODLUKG.js.map
132
+ //# sourceMappingURL=chunk-2ECLDHAT.js.map
133
+ //# sourceMappingURL=chunk-2ECLDHAT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/platform-state-provider.tsx","../src/platform/app-shell.tsx"],"names":["createContext","useAuth","useMemo","useContext","LOCALE_FLAGS","useTranslations","usePlatformPreferences","usePathname","useRouter","useNotifications","useLocale","LANGUAGE_META","useCallback","jsx","PlatformShell","RectangleStackIcon","HomeIcon"],"mappings":";;;;;;;;;;AAQA,IAAM,oBAAA,GAAuBA,oBAAoC,IAAI,CAAA;AAa9D,SAAS,qBAAA,CAAsB,EAAE,QAAA,EAAU,aAAA,EAAc,EAA+B;AAC7F,EAAA,MAAM,EAAE,IAAA,EAAK,GAAIC,wBAAA,EAAQ;AAEzB,EAAA,MAAM,KAAA,GAAQC,cAAuB,MAAM;AACzC,IAAA,MAAM,cAAA,GAAiB,MAAM,cAAA,IAAkB,EAAA;AAE/C,IAAA,MAAM,QAAyB,IAAA,GAC3B;AAAA,MACA,GAAG,IAAA;AAAA,MACH,IAAA,EAAM,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA;AAAA,MAC7B;AAAA,KACF,GACE,IAAA;AAEJ,IAAA,OAAO;AAAA,MACL,qBAAA,EAAuB,cAAA;AAAA,MACvB;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,aAAa,CAAC,CAAA;AAExB,EAAA,sCACG,oBAAA,CAAqB,QAAA,EAArB,EAA8B,KAAA,EAAO,OACnC,QAAA,EACH,CAAA;AAEJ;AAEO,SAAS,gBAAA,GAAmB;AACjC,EAAA,MAAM,OAAA,GAAUC,iBAAW,oBAAoB,CAAA;AAC/C,EAAA,IAAI,CAAC,OAAA,EAAS,MAAM,IAAI,MAAM,4DAA4D,CAAA;AAC1F,EAAA,OAAO,OAAA;AACT;ACtCA,SAAS,YAAY,MAAA,EAAoC;AACvD,EAAA,MAAM,IAAA,GAAO,MAAA,KAAW,OAAA,GAAU,IAAA,GAAO,MAAA;AACzC,EAAA,OAAOC,gCAAe,IAAiC,CAAA;AACzD;AA0DO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,OAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,eAAA;AAAA,EACA,SAAA;AAAA,EACA,iBAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,OAAA,GAAUC,iCAAgB,QAAQ,CAAA;AACxC,EAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAA,KAAWJ,wBAAA,EAAQ;AAGzC,EAAA,gBAAA,EAAiB;AACjB,EAAA,MAAM,EAAE,aAAA,EAAe,QAAA,EAAU,cAAc,YAAA,EAAc,WAAA,KAAgBK,uCAAA,EAAuB;AACpG,EAAA,MAAM,WAAWC,4BAAA,EAAY;AAC7B,EAAA,MAAM,SAASC,0BAAA,EAAU;AACzB,EAAA,MAAM,EAAE,OAAA,EAAS,WAAA,EAAY,GAAIC,iCAAA,EAAiB;AAClD,EAAA,MAAM,gBAAgBC,0BAAA,EAAU;AAChC,EAAA,MAAM,UAAA,GAAaC,mBAAc,aAA2C,CAAA;AAE5E,EAAA,MAAM,QAAQT,aAAAA,CAAQ,MAAM,eAAA,CAAgB,MAAA,CAAO,CAAC,IAAA,KAAS;AAC3D,IAAA,MAAM,UAAA,GAAa,iBAAA,CAAkB,IAAA,CAAK,EAAE,CAAA;AAC5C,IAAA,IAAI,CAAC,YAAY,OAAO,IAAA;AACxB,IAAA,OAAO,cAAc,UAAU,CAAA;AAAA,EACjC,CAAC,CAAA,EAAG,CAAC,eAAA,EAAiB,iBAAA,EAAmB,aAAa,CAAC,CAAA;AAEvD,EAAA,MAAM,aAAA,GAAgBU,kBAAY,MAAM;AAAE,IAAA,KAAK,OAAO,QAAQ,CAAA;AAAA,EAAE,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAC3E,EAAA,MAAM,iBAAA,GAAoBA,iBAAA;AAAA,IACxB,MAAM;AAAE,MAAA,QAAA,CAAS,aAAA,KAAkB,MAAA,GAAS,OAAA,GAAU,MAAM,CAAA;AAAA,IAAE,CAAA;AAAA,IAC9D,CAAC,eAAe,QAAQ;AAAA,GAC1B;AACA,EAAA,MAAM,cAAA,GAAiBA,iBAAA,CAAY,CAAC,IAAA,KAAiB,MAAA,CAAO,KAAK,IAAI,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAChF,EAAA,MAAM,cAAA,GAAiBA,iBAAA,CAAY,CAAC,IAAA,KAAiB,MAAA,CAAO,SAAS,IAAI,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEpF,EAAA,MAAM,YAAY,IAAA,GACd;AAAA,IACA,IAAA,EAAM,KAAK,IAAA,IAAQ,IAAA;AAAA,IACnB,KAAA,EAAO,KAAK,KAAA,IAAS,IAAA;AAAA,IACrB,KAAA,EAAO,KAAK,KAAA,IAAS,IAAA;AAAA,IACrB,IAAA,EAAM,KAAK,IAAA,IAAQ,IAAA;AAAA,IACnB,aAAa,IAAA,CAAK,WAAA;AAAA,IAClB,cAAA,EAAgB,KAAK,cAAA,IAAkB;AAAA,GACzC,GACE,IAAA;AAEJ,EAAA,uBACEC,cAAAA;AAAA,IAACC,8BAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,kBAAA,EAAoB,SAAA;AAAA,MACpB,IAAA,EAAM,SAAA;AAAA,MACN,UAAA,EAAY,MAAA;AAAA,MACZ,SAAA,EAAW,aAAA;AAAA,MACX,YAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA,EAAe,iBAAA;AAAA,MACf,QAAA;AAAA,MACA,UAAA,EAAY,cAAA;AAAA,MACZ,UAAA,EAAY,cAAA;AAAA,MACZ,OAAA;AAAA,MACA,SAAS,OAAA,oBAAWD,cAAAA,CAACE,0BAAA,EAAA,EAAmB,WAAU,eAAA,EAAgB,CAAA;AAAA,MAClE,UAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAe,aAAA,IAAiBC,gBAAA;AAAA,MAChC,mBAAmB,OAAA,CAAQ,MAAA;AAAA,MAC3B,eAAA,EAAiB,WAAA;AAAA,MACjB,MAAA,EAAQ;AAAA,QACN,IAAA,EAAM,QAAQ,MAAM,CAAA;AAAA,QACpB,OAAA,EAAS,QAAQ,SAAS,CAAA;AAAA,QAC1B,OAAA,EAAS,QAAQ,SAAS,CAAA;AAAA,QAC1B,mBAAA,EAAqB,QAAQ,qBAAqB,CAAA;AAAA,QAClD,MAAA,EAAQ,QAAQ,QAAQ,CAAA;AAAA,QACxB,aAAA,EAAe,QAAQ,eAAe,CAAA;AAAA,QACtC,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,QACtB,cAAc,aAAA,KAAkB,MAAA,GAAS,QAAQ,UAAU,CAAA,GAAI,QAAQ,WAAW,CAAA;AAAA,QAClF,QAAA,EAAU,QAAQ,UAAU,CAAA;AAAA,QAC5B,aAAA,EAAe,YAAY,UAAA,IAAc,aAAA;AAAA,QACzC,UAAA,EAAY,YAAY,aAAa,CAAA;AAAA,QACrC,OAAA,EAAS,QAAQ,SAAS;AAAA,OAC5B;AAAA,MACC,GAAI,aAAA,GAAgB,EAAE,aAAA,EAAe,aAAA,KAAkB,EAAC;AAAA,MAExD;AAAA;AAAA,GACH;AAEJ","file":"chunk-HTODLUKG.js","sourcesContent":["import { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport { useAuth, type AuthUser } from '../_auth'\n\ntype PlatformState = {\n currentOrganizationId: string\n actor: AuthUser | null\n}\n\nconst PlatformStateContext = createContext<PlatformState | null>(null)\n\nexport type PlatformStateProviderProps = {\n children: ReactNode\n /**\n * Function that converts a JWT role claim to the app's canonical role\n * union (the same `normalizePlatformRole` produced by\n * `createPlatformRbac()` in this app). Lifted out as a prop because\n * each consuming app uses its own role enum.\n */\n normalizeRole: (input: unknown) => string\n}\n\nexport function PlatformStateProvider({ children, normalizeRole }: PlatformStateProviderProps) {\n const { user } = useAuth()\n\n const state = useMemo<PlatformState>(() => {\n const organizationId = user?.organizationId ?? ''\n\n const actor: AuthUser | null = user\n ? {\n ...user,\n role: normalizeRole(user.role),\n organizationId,\n }\n : null\n\n return {\n currentOrganizationId: organizationId,\n actor,\n }\n }, [user, normalizeRole])\n\n return (\n <PlatformStateContext.Provider value={state}>\n {children}\n </PlatformStateContext.Provider>\n )\n}\n\nexport function usePlatformState() {\n const context = useContext(PlatformStateContext)\n if (!context) throw new Error('usePlatformState must be used inside PlatformStateProvider')\n return context\n}\n","import { useCallback, useMemo, type ComponentType, type ReactNode } from 'react'\nimport { RectangleStackIcon, HomeIcon } from '@heroicons/react/24/outline'\nimport { useAuth, usePlatformPreferences } from '../_auth'\nimport { LANGUAGE_META } from '@datatechsolutions/shared-domain/i18n'\nimport {\n PlatformShell,\n type NavigationItem,\n} from '@ui/index'\nimport { useNotifications } from '@ui/components/notifications'\nimport { useLocale, useTranslations } from '@ui/lib/i18n-context'\nimport { usePathname, useRouter } from '@ui/lib/router-context'\nimport { LOCALE_FLAGS } from '@ui/lib/locale-flags'\nimport { usePlatformState } from './platform-state-provider'\n\nfunction resolveFlag(locale: string): string | undefined {\n const code = locale === 'pt-BR' ? 'br' : locale\n return LOCALE_FLAGS?.[code as keyof typeof LOCALE_FLAGS]\n}\n\nexport type PlatformAppShellProps = {\n /** App display name (e.g. \"Astrlabe\"). */\n appName: string\n /** Tailwind gradient classes for the shell branding (e.g. \"from-sky-500 to-indigo-600\"). */\n appGradient: string\n /** Branded logo node rendered inside the flyout trigger. */\n appLogo: ReactNode\n /**\n * Optional app icon for the branded loader (defaults to the platform's\n * RectangleStackIcon if omitted).\n */\n appIcon?: ReactNode\n /**\n * When the appIcon is a brand SVG that has its own background\n * (gradient, fill, etc), set this to true so the BrandedLoader\n * doesn't wrap it in a second gradient container.\n */\n appIconRaw?: boolean\n /**\n * Optional override for the dock dashboard icon (defaults to HomeIcon).\n */\n dashboardIcon?: ComponentType<{ className?: string }>\n\n /** App-specific navigation items already pre-translated. */\n navigationItems: NavigationItem[]\n /** Custom ordering of launchpad page tiles. */\n pageOrder: string[]\n /**\n * Map of navigation/module ID → required permission name. The shell\n * filters `navigationItems` so that any item whose ID has an entry here\n * is hidden unless `hasPermission` returns true for the listed permission.\n */\n modulePermissions: Record<string, string>\n /**\n * Permission predicate, typically `(p) => can(actor, p)` from each app's\n * `createPlatformRbac()` factory.\n */\n hasPermission: (permission: string) => boolean\n\n /**\n * Optional settings/profile drawer content (e.g. an app-specific\n * `<SettingsModal>`). Receives the open state + close handler the shell\n * manages internally so the drawer renders inside the shell chrome.\n */\n settingsModal?: (props: { open: boolean; onClose: () => void }) => ReactNode\n\n children: ReactNode\n}\n\n/**\n * Cross-app platform shell — wires `<PlatformShell>` from ui to windsock's\n * auth + preferences hooks and to ui's i18n/router contexts. Each app\n * passes its own logo, gradient, navigation, and permission predicate; the\n * rest of the chrome (header, dock, flyout, sign-out confirm modal) is\n * shared.\n */\nexport function PlatformAppShell({\n appName,\n appGradient,\n appLogo,\n appIcon,\n appIconRaw,\n dashboardIcon,\n navigationItems,\n pageOrder,\n modulePermissions,\n hasPermission,\n settingsModal,\n children,\n}: PlatformAppShellProps) {\n const tCommon = useTranslations('common')\n const { user, status, logout } = useAuth()\n // Validate the platform-state provider is mounted above this shell;\n // the actor itself isn't read here, but the same provider feeds children.\n usePlatformState()\n const { resolvedTheme, setTheme, dockPosition, dockAutoHide, dockEnabled } = usePlatformPreferences()\n const pathname = usePathname()\n const router = useRouter()\n const { history, openHistory } = useNotifications()\n const currentLocale = useLocale()\n const localeMeta = LANGUAGE_META[currentLocale as keyof typeof LANGUAGE_META]\n\n const items = useMemo(() => navigationItems.filter((item) => {\n const permission = modulePermissions[item.id]\n if (!permission) return true\n return hasPermission(permission)\n }), [navigationItems, modulePermissions, hasPermission])\n\n const handleSignOut = useCallback(() => { void logout('/login') }, [logout])\n const handleToggleTheme = useCallback(\n () => { setTheme(resolvedTheme === 'dark' ? 'light' : 'dark') },\n [resolvedTheme, setTheme],\n )\n const handleNavigate = useCallback((href: string) => router.push(href), [router])\n const handlePrefetch = useCallback((href: string) => router.prefetch(href), [router])\n\n const shellUser = user\n ? {\n name: user.name ?? null,\n email: user.email ?? null,\n image: user.image ?? null,\n role: user.role ?? null,\n permissions: user.permissions as string[] | undefined,\n organizationId: user.organizationId ?? null,\n }\n : null\n\n return (\n <PlatformShell\n items={items}\n launchpadPageOrder={pageOrder}\n user={shellUser}\n authStatus={status}\n onSignOut={handleSignOut}\n dockPosition={dockPosition}\n dockAutoHide={dockAutoHide}\n dockEnabled={dockEnabled}\n resolvedTheme={resolvedTheme}\n onToggleTheme={handleToggleTheme}\n pathname={pathname}\n onNavigate={handleNavigate}\n onPrefetch={handlePrefetch}\n appName={appName}\n appIcon={appIcon ?? <RectangleStackIcon className=\"h-full w-full\" />}\n appIconRaw={appIconRaw}\n appLogo={appLogo}\n appGradient={appGradient}\n dashboardIcon={dashboardIcon ?? HomeIcon}\n notificationCount={history.length}\n onNotifications={openHistory}\n labels={{\n home: tCommon('home'),\n profile: tCommon('profile'),\n signOut: tCommon('signOut'),\n signOutConfirmTitle: tCommon('signOutConfirmTitle'),\n cancel: tCommon('cancel'),\n notifications: tCommon('notifications'),\n theme: tCommon('theme'),\n currentTheme: resolvedTheme === 'dark' ? tCommon('darkMode') : tCommon('lightMode'),\n language: tCommon('language'),\n currentLocale: localeMeta?.nativeName ?? currentLocale,\n localeFlag: resolveFlag(currentLocale),\n actions: tCommon('actions'),\n }}\n {...(settingsModal ? { profileDrawer: settingsModal } : {})}\n >\n {children}\n </PlatformShell>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/platform-state-provider.tsx","../src/platform/app-shell.tsx"],"names":["createContext","useAuth","useMemo","useContext","LOCALE_FLAGS","useTranslations","usePlatformPreferences","usePathname","useRouter","useNotifications","useLocale","LANGUAGE_META","useCallback","jsx","PlatformShell","RectangleStackIcon","HomeIcon"],"mappings":"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","file":"chunk-2ECLDHAT.js","sourcesContent":["import { createContext, useContext, useMemo, type ReactNode } from 'react'\nimport { useAuth, type AuthUser } from '../_auth'\n\ntype PlatformState = {\n currentOrganizationId: string\n actor: AuthUser | null\n}\n\nconst PlatformStateContext = createContext<PlatformState | null>(null)\n\nexport type PlatformStateProviderProps = {\n children: ReactNode\n /**\n * Function that converts a JWT role claim to the app's canonical role\n * union (the same `normalizePlatformRole` produced by\n * `createPlatformRbac()` in this app). Lifted out as a prop because\n * each consuming app uses its own role enum.\n */\n normalizeRole: (input: unknown) => string\n}\n\nexport function PlatformStateProvider({ children, normalizeRole }: PlatformStateProviderProps) {\n const { user } = useAuth()\n\n const state = useMemo<PlatformState>(() => {\n const organizationId = user?.organizationId ?? ''\n\n const actor: AuthUser | null = user\n ? {\n ...user,\n role: normalizeRole(user.role),\n organizationId,\n }\n : null\n\n return {\n currentOrganizationId: organizationId,\n actor,\n }\n }, [user, normalizeRole])\n\n return (\n <PlatformStateContext.Provider value={state}>\n {children}\n </PlatformStateContext.Provider>\n )\n}\n\nexport function usePlatformState() {\n const context = useContext(PlatformStateContext)\n if (!context) throw new Error('usePlatformState must be used inside PlatformStateProvider')\n return context\n}\n","import { useCallback, useMemo, type ComponentType, type ReactNode } from 'react'\nimport { RectangleStackIcon, HomeIcon } from '@heroicons/react/24/outline'\nimport { useAuth, usePlatformPreferences } from '../_auth'\nimport { LANGUAGE_META } from '@datatechsolutions/shared-domain/i18n'\nimport {\n PlatformShell,\n type NavigationItem,\n} from '@ui/index'\nimport { useNotifications } from '@ui/components/notifications'\nimport { useLocale, useTranslations } from '@ui/lib/i18n-context'\nimport { usePathname, useRouter } from '@ui/lib/router-context'\nimport { LOCALE_FLAGS } from '@ui/lib/locale-flags'\nimport { usePlatformState } from './platform-state-provider'\n\nfunction resolveFlag(locale: string): string | undefined {\n const code = locale === 'pt-BR' ? 'br' : locale\n return LOCALE_FLAGS?.[code as keyof typeof LOCALE_FLAGS]\n}\n\nexport type PlatformAppShellProps = {\n /** App display name (e.g. \"Astrlabe\"). */\n appName: string\n /** Tailwind gradient classes for the shell branding (e.g. \"from-sky-500 to-indigo-600\"). */\n appGradient: string\n /** Branded logo node rendered inside the flyout trigger. */\n appLogo: ReactNode\n /**\n * Optional app icon for the branded loader (defaults to the platform's\n * RectangleStackIcon if omitted).\n */\n appIcon?: ReactNode\n /**\n * When the appIcon is a brand SVG that has its own background\n * (gradient, fill, etc), set this to true so the BrandedLoader\n * doesn't wrap it in a second gradient container.\n */\n appIconRaw?: boolean\n /**\n * Optional override for the dock dashboard icon (defaults to HomeIcon).\n */\n dashboardIcon?: ComponentType<{ className?: string }>\n\n /** App-specific navigation items already pre-translated. */\n navigationItems: NavigationItem[]\n /** Custom ordering of launchpad page tiles. */\n pageOrder: string[]\n /**\n * Map of navigation/module ID → required permission name. The shell\n * filters `navigationItems` so that any item whose ID has an entry here\n * is hidden unless `hasPermission` returns true for the listed permission.\n */\n modulePermissions: Record<string, string>\n /**\n * Permission predicate, typically `(p) => can(actor, p)` from each app's\n * `createPlatformRbac()` factory.\n */\n hasPermission: (permission: string) => boolean\n\n /**\n * Optional settings/profile drawer content (e.g. an app-specific\n * `<SettingsModal>`). Receives the open state + close handler the shell\n * manages internally so the drawer renders inside the shell chrome.\n */\n settingsModal?: (props: { open: boolean; onClose: () => void }) => ReactNode\n\n children: ReactNode\n}\n\n/**\n * Cross-app platform shell — wires `<PlatformShell>` from ui to windsock's\n * auth + preferences hooks and to ui's i18n/router contexts. Each app\n * passes its own logo, gradient, navigation, and permission predicate; the\n * rest of the chrome (header, dock, flyout, sign-out confirm modal) is\n * shared.\n */\nexport function PlatformAppShell({\n appName,\n appGradient,\n appLogo,\n appIcon,\n appIconRaw,\n dashboardIcon,\n navigationItems,\n pageOrder,\n modulePermissions,\n hasPermission,\n settingsModal,\n children,\n}: PlatformAppShellProps) {\n const tCommon = useTranslations('common')\n const { user, status, logout } = useAuth()\n // Validate the platform-state provider is mounted above this shell;\n // the actor itself isn't read here, but the same provider feeds children.\n usePlatformState()\n const { resolvedTheme, setTheme, dockPosition, dockAutoHide, dockEnabled } = usePlatformPreferences()\n const pathname = usePathname()\n const router = useRouter()\n const { history, openHistory } = useNotifications()\n const currentLocale = useLocale()\n const localeMeta = LANGUAGE_META[currentLocale as keyof typeof LANGUAGE_META]\n\n const items = useMemo(() => navigationItems.filter((item) => {\n const permission = modulePermissions[item.id]\n if (!permission) return true\n return hasPermission(permission)\n }), [navigationItems, modulePermissions, hasPermission])\n\n const handleSignOut = useCallback(() => { void logout('/login') }, [logout])\n const handleToggleTheme = useCallback(\n () => { setTheme(resolvedTheme === 'dark' ? 'light' : 'dark') },\n [resolvedTheme, setTheme],\n )\n const handleNavigate = useCallback((href: string) => router.push(href), [router])\n const handlePrefetch = useCallback((href: string) => router.prefetch(href), [router])\n\n const shellUser = user\n ? {\n name: user.name ?? null,\n email: user.email ?? null,\n image: user.image ?? null,\n role: user.role ?? null,\n permissions: user.permissions as string[] | undefined,\n organizationId: user.organizationId ?? null,\n }\n : null\n\n return (\n <PlatformShell\n items={items}\n launchpadPageOrder={pageOrder}\n user={shellUser}\n authStatus={status}\n onSignOut={handleSignOut}\n dockPosition={dockPosition}\n dockAutoHide={dockAutoHide}\n dockEnabled={dockEnabled}\n resolvedTheme={resolvedTheme}\n onToggleTheme={handleToggleTheme}\n pathname={pathname}\n onNavigate={handleNavigate}\n onPrefetch={handlePrefetch}\n appName={appName}\n appIcon={appIcon ?? <RectangleStackIcon className=\"h-full w-full\" />}\n appIconRaw={appIconRaw}\n appLogo={appLogo}\n appGradient={appGradient}\n dashboardIcon={dashboardIcon ?? HomeIcon}\n notificationCount={history.length}\n onNotifications={openHistory}\n labels={{\n home: tCommon('home'),\n profile: tCommon('profile'),\n signOut: tCommon('signOut'),\n signOutConfirmTitle: tCommon('signOutConfirmTitle'),\n cancel: tCommon('cancel'),\n notifications: tCommon('notifications'),\n theme: tCommon('theme'),\n currentTheme: resolvedTheme === 'dark' ? tCommon('darkMode') : tCommon('lightMode'),\n language: tCommon('language'),\n currentLocale: localeMeta?.nativeName ?? currentLocale,\n localeFlag: resolveFlag(currentLocale),\n actions: tCommon('actions'),\n }}\n {...(settingsModal ? { profileDrawer: settingsModal } : {})}\n >\n {children}\n </PlatformShell>\n )\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { Workspace } from './chunk-EDI46QA7.mjs';
3
- import { useLocale } from './chunk-7VJ7CMMT.mjs';
2
+ import { Workspace } from './chunk-UXHJS2SH.mjs';
3
+ import { useLocale } from './chunk-ZEFNBGYI.mjs';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
6
6
  function WorkflowCanvasShell({ graph, messages }) {
@@ -16,5 +16,5 @@ function WorkflowCanvasShell({ graph, messages }) {
16
16
  }
17
17
 
18
18
  export { WorkflowCanvasShell };
19
- //# sourceMappingURL=chunk-NQGLSM46.mjs.map
20
- //# sourceMappingURL=chunk-NQGLSM46.mjs.map
19
+ //# sourceMappingURL=chunk-4VHFGW7I.mjs.map
20
+ //# sourceMappingURL=chunk-4VHFGW7I.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/platform/workflow-canvas-shell.tsx"],"names":[],"mappings":";;;;AAkBO,SAAS,mBAAA,CAAoB,EAAE,KAAA,EAAO,QAAA,EAAS,EAAU;AAC9D,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAc,KAAA;AAAA,MACd,MAAA;AAAA,MACC,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa;AAAC;AAAA,GAClC;AAEJ","file":"chunk-NQGLSM46.mjs","sourcesContent":["import { useLocale } from '@ui/lib/i18n-context'\nimport { Workspace } from '@ui/astrlabe/workflow-canvas'\nimport type { WorkflowGraph as UiWorkflowGraph } from '@ui/astrlabe'\nimport type { WorkflowCanvasShellProps } from '@datatechsolutions/shared-domain/common'\n\n/**\n * Workflow canvas shell with optional message bundle override.\n *\n * Most apps wrap their tree in `<I18nProvider>` and let the canvas read\n * messages from context — in that case `messages` can be omitted. Apps\n * that need to inject a precomputed bundle (e.g. for tests or app-specific\n * overrides not shipped with shared-domain) can pass it explicitly.\n */\ntype Props = WorkflowCanvasShellProps & {\n /** Optional override for the messages catalog passed into the canvas. */\n messages?: Record<string, unknown>\n}\n\nexport function WorkflowCanvasShell({ graph, messages }: Props) {\n const locale = useLocale()\n return (\n <Workspace\n initialGraph={graph as unknown as UiWorkflowGraph}\n locale={locale}\n {...(messages ? { messages } : {})}\n />\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/platform/workflow-canvas-shell.tsx"],"names":[],"mappings":";;;;AAkBO,SAAS,mBAAA,CAAoB,EAAE,KAAA,EAAO,QAAA,EAAS,EAAU;AAC9D,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAc,KAAA;AAAA,MACd,MAAA;AAAA,MACC,GAAI,QAAA,GAAW,EAAE,QAAA,KAAa;AAAC;AAAA,GAClC;AAEJ","file":"chunk-4VHFGW7I.mjs","sourcesContent":["import { useLocale } from '@ui/lib/i18n-context'\nimport { Workspace } from '@ui/astrlabe/workflow-canvas'\nimport type { WorkflowGraph as UiWorkflowGraph } from '@ui/astrlabe'\nimport type { WorkflowCanvasShellProps } from '@datatechsolutions/shared-domain/common'\n\n/**\n * Workflow canvas shell with optional message bundle override.\n *\n * Most apps wrap their tree in `<I18nProvider>` and let the canvas read\n * messages from context — in that case `messages` can be omitted. Apps\n * that need to inject a precomputed bundle (e.g. for tests or app-specific\n * overrides not shipped with shared-domain) can pass it explicitly.\n */\ntype Props = WorkflowCanvasShellProps & {\n /** Optional override for the messages catalog passed into the canvas. */\n messages?: Record<string, unknown>\n}\n\nexport function WorkflowCanvasShell({ graph, messages }: Props) {\n const locale = useLocale()\n return (\n <Workspace\n initialGraph={graph as unknown as UiWorkflowGraph}\n locale={locale}\n {...(messages ? { messages } : {})}\n />\n )\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
+ var chunkY5VN4SPH_js = require('./chunk-Y5VN4SPH.js');
4
5
  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');
@@ -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;
@@ -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,
@@ -4036,7 +4036,7 @@ function PageIndicator({
4036
4036
  size = "md",
4037
4037
  variant = "default"
4038
4038
  }) {
4039
- const t = chunkYXN2K77G_js.useTranslations("common");
4039
+ const t = chunkY5VN4SPH_js.useTranslations("common");
4040
4040
  const { dot, gap } = sizeConfig2[size];
4041
4041
  const colors2 = variantConfig[variant];
4042
4042
  const handleClick = (index) => {
@@ -4095,7 +4095,7 @@ function ExpandingPageIndicator({
4095
4095
  variant = "default",
4096
4096
  activeWidth = 24
4097
4097
  }) {
4098
- const t = chunkYXN2K77G_js.useTranslations("common");
4098
+ const t = chunkY5VN4SPH_js.useTranslations("common");
4099
4099
  const colors2 = variantConfig[variant];
4100
4100
  const handleClick = (index) => {
4101
4101
  if (onChange && index !== active) {
@@ -5316,7 +5316,7 @@ function ErrorState({
5316
5316
  details,
5317
5317
  variant = "default"
5318
5318
  }) {
5319
- const t = chunkYXN2K77G_js.useTranslations("common.errorState");
5319
+ const t = chunkY5VN4SPH_js.useTranslations("common.errorState");
5320
5320
  const [isRetrying, setIsRetrying] = React9.useState(false);
5321
5321
  const [showErrorDetails, setShowErrorDetails] = React9.useState(false);
5322
5322
  const config = errorTypeConfig[type];
@@ -5451,7 +5451,7 @@ function OfflineState({
5451
5451
  onRetry,
5452
5452
  message
5453
5453
  }) {
5454
- const t = chunkYXN2K77G_js.useTranslations("common.errorState");
5454
+ const t = chunkY5VN4SPH_js.useTranslations("common.errorState");
5455
5455
  return /* @__PURE__ */ jsxRuntime.jsx(
5456
5456
  ErrorState,
5457
5457
  {
@@ -5469,7 +5469,7 @@ function NoResultsState({
5469
5469
  onClearFilters,
5470
5470
  suggestions
5471
5471
  }) {
5472
- const t = chunkYXN2K77G_js.useTranslations("common.emptyState");
5472
+ const t = chunkY5VN4SPH_js.useTranslations("common.emptyState");
5473
5473
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "liquid-surface rounded-xl px-6 py-12 text-center", children: [
5474
5474
  /* @__PURE__ */ jsxRuntime.jsx(
5475
5475
  framerMotion.motion.div,
@@ -5533,7 +5533,7 @@ function NoDataState({
5533
5533
  onAction,
5534
5534
  icon: CustomIcon
5535
5535
  }) {
5536
- const t = chunkYXN2K77G_js.useTranslations("common.emptyState");
5536
+ const t = chunkY5VN4SPH_js.useTranslations("common.emptyState");
5537
5537
  const Icon = CustomIcon || HeroIcons.FolderOpenIcon;
5538
5538
  const resolvedTitle = title || t("noDataTitle");
5539
5539
  const resolvedMessage = message || t("noDataMessage");
@@ -5840,7 +5840,7 @@ function NotificationProvider({ children, appName = "Datatech" }) {
5840
5840
  ] });
5841
5841
  }
5842
5842
  function NotificationBellButton() {
5843
- const t = chunkYXN2K77G_js.useTranslations("notifications");
5843
+ const t = chunkY5VN4SPH_js.useTranslations("notifications");
5844
5844
  const { history, historyOpen, openHistory } = useNotifications();
5845
5845
  const totalCount = history.length;
5846
5846
  if (historyOpen) return null;
@@ -5883,7 +5883,7 @@ function NotificationDrawer({
5883
5883
  onRemove,
5884
5884
  onClear
5885
5885
  }) {
5886
- const t = chunkYXN2K77G_js.useTranslations("notifications");
5886
+ const t = chunkY5VN4SPH_js.useTranslations("notifications");
5887
5887
  return /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { children: open ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5888
5888
  /* @__PURE__ */ jsxRuntime.jsx(
5889
5889
  framerMotion.motion.div,
@@ -6821,7 +6821,7 @@ function ChipPicker({
6821
6821
  }
6822
6822
  var DEFAULT_COPYABLE_CLASSNAME = "liquid-surface-strong text-gray-500 dark:text-gray-400";
6823
6823
  function CopyableId({ id, copyValue, label, className }) {
6824
- const t = chunkYXN2K77G_js.useTranslations();
6824
+ const t = chunkY5VN4SPH_js.useTranslations();
6825
6825
  const [copied, setCopied] = React9.useState(false);
6826
6826
  const valueToCopy = copyValue ?? id;
6827
6827
  const handleCopy = async (e) => {
@@ -6947,8 +6947,8 @@ function DatePicker({
6947
6947
  disableFuture = false,
6948
6948
  className = ""
6949
6949
  }) {
6950
- const appLocale = chunkYXN2K77G_js.useLocale();
6951
- const t = chunkYXN2K77G_js.useTranslations("datePicker");
6950
+ const appLocale = chunkY5VN4SPH_js.useLocale();
6951
+ const t = chunkY5VN4SPH_js.useTranslations("datePicker");
6952
6952
  const dateFnsLocale = dateFnsLocales[appLocale] ?? locale.ptBR;
6953
6953
  const [open, setOpen] = React9.useState(false);
6954
6954
  const [viewMode, setViewMode] = React9.useState("days");
@@ -7214,7 +7214,7 @@ function TimePicker({
7214
7214
  placeholder,
7215
7215
  className = ""
7216
7216
  }) {
7217
- const t = chunkYXN2K77G_js.useTranslations("timePicker");
7217
+ const t = chunkY5VN4SPH_js.useTranslations("timePicker");
7218
7218
  const [open, setOpen] = React9.useState(false);
7219
7219
  const [draftHours, setDraftHours] = React9.useState(value ? value.hours : 0);
7220
7220
  const [draftMinutes, setDraftMinutes] = React9.useState(value ? value.minutes : 0);
@@ -7414,7 +7414,7 @@ function PageHeading({
7414
7414
  meta,
7415
7415
  actions
7416
7416
  }) {
7417
- const t = chunkYXN2K77G_js.useTranslations("common");
7417
+ const t = chunkY5VN4SPH_js.useTranslations("common");
7418
7418
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-6 lg:flex lg:items-start lg:justify-between", children: [
7419
7419
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1", children: [
7420
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: [
@@ -8021,7 +8021,7 @@ function StepFormPage({
8021
8021
  headerRight,
8022
8022
  children
8023
8023
  }) {
8024
- const translation = chunkYXN2K77G_js.useTranslations("forms");
8024
+ const translation = chunkY5VN4SPH_js.useTranslations("forms");
8025
8025
  const isLastStep = currentStep === steps.length - 1;
8026
8026
  const isFirstStep = currentStep === 0;
8027
8027
  const handleBack = () => {
@@ -8713,7 +8713,7 @@ function CookieConsent({
8713
8713
  onAccept,
8714
8714
  onReject
8715
8715
  } = {}) {
8716
- const t = chunkYXN2K77G_js.useTranslations("common.cookieConsent");
8716
+ const t = chunkY5VN4SPH_js.useTranslations("common.cookieConsent");
8717
8717
  const [visible, setVisible] = React9.useState(false);
8718
8718
  React9.useEffect(() => {
8719
8719
  const consent = localStorage.getItem(storageKey);
@@ -9160,7 +9160,7 @@ function NavigationProgress() {
9160
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" });
9161
9161
  }
9162
9162
  function PageLoadingState({ label, compact = false }) {
9163
- const t = chunkYXN2K77G_js.useTranslations("common");
9163
+ const t = chunkY5VN4SPH_js.useTranslations("common");
9164
9164
  const resolvedLabel = label || t("loading");
9165
9165
  return /* @__PURE__ */ jsxRuntime.jsx(
9166
9166
  "div",
@@ -9383,7 +9383,7 @@ function ImageUpload({
9383
9383
  ] });
9384
9384
  }
9385
9385
  function Breadcrumb({ pages, actions, centerContent, dashboardPath = "/dashboard" }) {
9386
- const t = chunkYXN2K77G_js.useTranslations("common");
9386
+ const t = chunkY5VN4SPH_js.useTranslations("common");
9387
9387
  const currentPage = pages.find((page) => page.current) || pages[pages.length - 1];
9388
9388
  const parentPage = pages.length > 1 ? pages[pages.length - 2] : null;
9389
9389
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -9666,7 +9666,7 @@ function FlyoutQuickActions({
9666
9666
  onSignOut,
9667
9667
  onClose
9668
9668
  }) {
9669
- const t = chunkYXN2K77G_js.useTranslations("common");
9669
+ const t = chunkY5VN4SPH_js.useTranslations("common");
9670
9670
  const isDark = resolvedTheme === "dark";
9671
9671
  const handleAction = (action) => {
9672
9672
  onClose?.();
@@ -9729,7 +9729,7 @@ function FlyoutNavGrid({
9729
9729
  getAccentRgb,
9730
9730
  searchFocusRingClass = "focus-ring-indigo"
9731
9731
  }) {
9732
- const t = chunkYXN2K77G_js.useTranslations("common");
9732
+ const t = chunkY5VN4SPH_js.useTranslations("common");
9733
9733
  const [query, setQuery] = React9.useState("");
9734
9734
  const isCurrentPath = (href) => href === "/dashboard" ? currentPath === "/dashboard" : currentPath.startsWith(href);
9735
9735
  const normalizedQuery = query.trim().toLowerCase();
@@ -9918,8 +9918,8 @@ function MonthPicker({
9918
9918
  side = "bottom",
9919
9919
  avoidCollisions = true
9920
9920
  }) {
9921
- const locale$1 = chunkYXN2K77G_js.useLocale();
9922
- const t = chunkYXN2K77G_js.useTranslations("common");
9921
+ const locale$1 = chunkY5VN4SPH_js.useLocale();
9922
+ const t = chunkY5VN4SPH_js.useTranslations("common");
9923
9923
  const dateFnsLocale = dateFnsLocales2[locale$1] || locale.ptBR;
9924
9924
  const months = React9__namespace.useMemo(() => getLocalizedMonths(dateFnsLocale), [dateFnsLocale]);
9925
9925
  const defaultPlaceholder = t("selectMonth");
@@ -10798,7 +10798,7 @@ function StatusToggle({
10798
10798
  onIcon,
10799
10799
  className
10800
10800
  }) {
10801
- const translation = chunkYXN2K77G_js.useTranslations("common");
10801
+ const translation = chunkY5VN4SPH_js.useTranslations("common");
10802
10802
  const resolvedOffLabel = offLabel ?? translation("inactive");
10803
10803
  const resolvedOnLabel = onLabel ?? translation("active");
10804
10804
  const resolvedOffIcon = offIcon ?? /* @__PURE__ */ jsxRuntime.jsx(HeroIcons.XCircleIcon, { className: "h-4 w-4" });
@@ -11239,7 +11239,7 @@ function OtpInput({
11239
11239
  autoFocus = false,
11240
11240
  inputMode = "numeric"
11241
11241
  }) {
11242
- const t = chunkYXN2K77G_js.useTranslations("auth");
11242
+ const t = chunkY5VN4SPH_js.useTranslations("auth");
11243
11243
  const groupId = React9.useId();
11244
11244
  const inputsRef = React9.useRef([]);
11245
11245
  const digits = value.split("").concat(Array(length).fill("")).slice(0, length);
@@ -11414,7 +11414,7 @@ function PasswordStrengthMeter({
11414
11414
  policy = DEFAULT_POLICY,
11415
11415
  showRequirements = false
11416
11416
  }) {
11417
- const t = chunkYXN2K77G_js.useTranslations("auth");
11417
+ const t = chunkY5VN4SPH_js.useTranslations("auth");
11418
11418
  const requirements = React9.useMemo(
11419
11419
  () => evaluateRequirements(password, policy),
11420
11420
  [password, policy]
@@ -11467,7 +11467,7 @@ function BackupCodeGrid({
11467
11467
  revealed = true,
11468
11468
  onReveal
11469
11469
  }) {
11470
- const t = chunkYXN2K77G_js.useTranslations("auth");
11470
+ const t = chunkY5VN4SPH_js.useTranslations("auth");
11471
11471
  const handleCopyAll = React9.useCallback(async () => {
11472
11472
  const text = codes.join("\n");
11473
11473
  await navigator.clipboard.writeText(text);
@@ -11552,7 +11552,7 @@ function SocialLoginButtons({
11552
11552
  loading = null,
11553
11553
  disabled = false
11554
11554
  }) {
11555
- const t = chunkYXN2K77G_js.useTranslations("auth");
11555
+ const t = chunkY5VN4SPH_js.useTranslations("auth");
11556
11556
  const isColumn = layout === "column";
11557
11557
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `flex ${isColumn ? "flex-col" : "flex-row"} gap-2`, children: providers.map((provider) => /* @__PURE__ */ jsxRuntime.jsxs(
11558
11558
  chunkBHOT22QL_js.Button,
@@ -20802,5 +20802,5 @@ exports.useSocialProviders = useSocialProviders;
20802
20802
  exports.validateDashboardSpec = validateDashboardSpec;
20803
20803
  exports.xScale = xScale;
20804
20804
  exports.yScale = yScale;
20805
- //# sourceMappingURL=chunk-ULKZGM2T.js.map
20806
- //# sourceMappingURL=chunk-ULKZGM2T.js.map
20805
+ //# sourceMappingURL=chunk-5ETT54QS.js.map
20806
+ //# sourceMappingURL=chunk-5ETT54QS.js.map