@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.
- package/dist/astrlabe/index.js +108 -108
- package/dist/astrlabe/index.mjs +4 -4
- package/dist/astrlabe/workflow-canvas.js +4 -4
- package/dist/astrlabe/workflow-canvas.mjs +3 -3
- package/dist/{chunk-HTODLUKG.js → chunk-2ECLDHAT.js} +12 -12
- package/dist/{chunk-HTODLUKG.js.map → chunk-2ECLDHAT.js.map} +1 -1
- package/dist/{chunk-NQGLSM46.mjs → chunk-4VHFGW7I.mjs} +4 -4
- package/dist/{chunk-NQGLSM46.mjs.map → chunk-4VHFGW7I.mjs.map} +1 -1
- package/dist/{chunk-ULKZGM2T.js → chunk-5ETT54QS.js} +37 -37
- package/dist/{chunk-ULKZGM2T.js.map → chunk-5ETT54QS.js.map} +1 -1
- package/dist/{chunk-N5GQIT7A.mjs → chunk-6KDTVSZT.mjs} +7 -7
- package/dist/{chunk-N5GQIT7A.mjs.map → chunk-6KDTVSZT.mjs.map} +1 -1
- package/dist/{chunk-VYU2FYDE.js → chunk-6YTYD4P5.js} +66 -66
- package/dist/{chunk-VYU2FYDE.js.map → chunk-6YTYD4P5.js.map} +1 -1
- package/dist/{chunk-YYNGXKUE.mjs → chunk-7TYNV6SY.mjs} +4 -4
- package/dist/{chunk-YYNGXKUE.mjs.map → chunk-7TYNV6SY.mjs.map} +1 -1
- package/dist/{chunk-RT264BD4.mjs → chunk-AHNH2PMI.mjs} +4 -4
- package/dist/{chunk-RT264BD4.mjs.map → chunk-AHNH2PMI.mjs.map} +1 -1
- package/dist/{chunk-RBH723MG.mjs → chunk-AKWCT53S.mjs} +4 -4
- package/dist/{chunk-RBH723MG.mjs.map → chunk-AKWCT53S.mjs.map} +1 -1
- package/dist/{chunk-MYHBXIO2.js → chunk-AMCFAGK3.js} +34 -34
- package/dist/{chunk-MYHBXIO2.js.map → chunk-AMCFAGK3.js.map} +1 -1
- package/dist/{chunk-UVFWKDRO.mjs → chunk-ANFSQJNI.mjs} +4 -4
- package/dist/{chunk-UVFWKDRO.mjs.map → chunk-ANFSQJNI.mjs.map} +1 -1
- package/dist/{chunk-BPMYNE7S.mjs → chunk-CSOMZ5UM.mjs} +4 -4
- package/dist/{chunk-BPMYNE7S.mjs.map → chunk-CSOMZ5UM.mjs.map} +1 -1
- package/dist/{chunk-FKRIQYRG.js → chunk-D5OTZGA2.js} +126 -127
- package/dist/chunk-D5OTZGA2.js.map +1 -0
- package/dist/{chunk-V3UZCOZI.js → chunk-IIRS5XZY.js} +32 -32
- package/dist/{chunk-V3UZCOZI.js.map → chunk-IIRS5XZY.js.map} +1 -1
- package/dist/{chunk-Z75CEP4V.js → chunk-K5567JM5.js} +13 -13
- package/dist/{chunk-Z75CEP4V.js.map → chunk-K5567JM5.js.map} +1 -1
- package/dist/{chunk-OM5NNUD2.mjs → chunk-KWH7JIRP.mjs} +3 -3
- package/dist/{chunk-OM5NNUD2.mjs.map → chunk-KWH7JIRP.mjs.map} +1 -1
- package/dist/{chunk-MFF37C24.js → chunk-MQDCUBVW.js} +150 -150
- package/dist/{chunk-MFF37C24.js.map → chunk-MQDCUBVW.js.map} +1 -1
- package/dist/{chunk-OW5LSEHU.mjs → chunk-MSKKNPRE.mjs} +3 -3
- package/dist/{chunk-OW5LSEHU.mjs.map → chunk-MSKKNPRE.mjs.map} +1 -1
- package/dist/{chunk-PLEWG2L7.js → chunk-N4YT3QA5.js} +15 -15
- package/dist/{chunk-PLEWG2L7.js.map → chunk-N4YT3QA5.js.map} +1 -1
- package/dist/{chunk-XGAPZT4J.js → chunk-NF5DDM5V.js} +40 -40
- package/dist/{chunk-XGAPZT4J.js.map → chunk-NF5DDM5V.js.map} +1 -1
- package/dist/{chunk-NK4H3JWN.mjs → chunk-OC4AOYU5.mjs} +4 -4
- package/dist/{chunk-NK4H3JWN.mjs.map → chunk-OC4AOYU5.mjs.map} +1 -1
- package/dist/{chunk-ID55ABBB.js → chunk-OY5HUZSD.js} +44 -44
- package/dist/{chunk-ID55ABBB.js.map → chunk-OY5HUZSD.js.map} +1 -1
- package/dist/{chunk-5OZTI7TR.js → chunk-PPIUMCUZ.js} +6 -6
- package/dist/{chunk-5OZTI7TR.js.map → chunk-PPIUMCUZ.js.map} +1 -1
- package/dist/{chunk-WLNY3GVM.mjs → chunk-QGRTV35L.mjs} +7 -7
- package/dist/{chunk-WLNY3GVM.mjs.map → chunk-QGRTV35L.mjs.map} +1 -1
- package/dist/{chunk-TDNBO3V7.js → chunk-SDYKXLCU.js} +56 -56
- package/dist/{chunk-TDNBO3V7.js.map → chunk-SDYKXLCU.js.map} +1 -1
- package/dist/{chunk-5TLKFOEL.mjs → chunk-UPYACFZJ.mjs} +5 -5
- package/dist/{chunk-5TLKFOEL.mjs.map → chunk-UPYACFZJ.mjs.map} +1 -1
- package/dist/{chunk-EDI46QA7.mjs → chunk-UXHJS2SH.mjs} +4 -5
- package/dist/chunk-UXHJS2SH.mjs.map +1 -0
- package/dist/{chunk-LRNVB7MO.js → chunk-VI4IUTMX.js} +4 -4
- package/dist/{chunk-LRNVB7MO.js.map → chunk-VI4IUTMX.js.map} +1 -1
- package/dist/{chunk-4D23CQZM.mjs → chunk-VIB42VMZ.mjs} +5 -5
- package/dist/{chunk-4D23CQZM.mjs.map → chunk-VIB42VMZ.mjs.map} +1 -1
- package/dist/{chunk-QSCWV47U.js → chunk-WOTKBKS6.js} +31 -31
- package/dist/{chunk-QSCWV47U.js.map → chunk-WOTKBKS6.js.map} +1 -1
- package/dist/{chunk-YXN2K77G.js → chunk-Y5VN4SPH.js} +26 -3
- package/dist/chunk-Y5VN4SPH.js.map +1 -0
- package/dist/{chunk-7VJ7CMMT.mjs → chunk-ZEFNBGYI.mjs} +26 -3
- package/dist/chunk-ZEFNBGYI.mjs.map +1 -0
- package/dist/{chunk-PIIY2Z2O.mjs → chunk-ZRCXDKBE.mjs} +3 -3
- package/dist/{chunk-PIIY2Z2O.mjs.map → chunk-ZRCXDKBE.mjs.map} +1 -1
- package/dist/index.js +668 -668
- package/dist/index.mjs +2 -2
- package/dist/lib/i18n-context.d.mts +12 -4
- package/dist/lib/i18n-context.d.ts +12 -4
- package/dist/lib/i18n-context.js +6 -6
- package/dist/lib/i18n-context.mjs +1 -1
- package/dist/platform/admin/index.js +10 -10
- package/dist/platform/admin/index.mjs +4 -4
- package/dist/platform/agents-workspace.js +7 -7
- package/dist/platform/agents-workspace.mjs +6 -6
- package/dist/platform/app-shell.js +4 -4
- package/dist/platform/app-shell.mjs +3 -3
- package/dist/platform/auth/index.js +22 -22
- package/dist/platform/auth/index.mjs +4 -4
- package/dist/platform/billing/index.js +4 -4
- package/dist/platform/billing/index.mjs +3 -3
- package/dist/platform/impersonation/index.js +4 -4
- package/dist/platform/impersonation/index.mjs +3 -3
- package/dist/platform/index.d.mts +1 -1
- package/dist/platform/index.d.ts +1 -1
- package/dist/platform/index.js +96 -96
- package/dist/platform/index.mjs +18 -18
- package/dist/platform/pages/index.js +346 -346
- package/dist/platform/pages/index.mjs +8 -8
- package/dist/platform/settings/index.js +7 -7
- package/dist/platform/settings/index.mjs +6 -6
- package/dist/platform/workflow-canvas-shell.js +5 -5
- package/dist/platform/workflow-canvas-shell.mjs +4 -4
- package/package.json +2 -1
- package/dist/chunk-7VJ7CMMT.mjs.map +0 -1
- package/dist/chunk-EDI46QA7.mjs.map +0 -1
- package/dist/chunk-FKRIQYRG.js.map +0 -1
- package/dist/chunk-YXN2K77G.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
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 } =
|
|
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
|
|
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 =
|
|
53
|
-
const { user, status, logout } =
|
|
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 } =
|
|
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 } =
|
|
59
|
-
const currentLocale =
|
|
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
|
-
|
|
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-
|
|
133
|
-
//# sourceMappingURL=chunk-
|
|
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":"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","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-
|
|
3
|
-
import { useLocale } from './chunk-
|
|
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-
|
|
20
|
-
//# sourceMappingURL=chunk-
|
|
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-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
3495
|
-
const tCommon =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
6951
|
-
const t =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
9922
|
-
const t =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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-
|
|
20806
|
-
//# sourceMappingURL=chunk-
|
|
20805
|
+
//# sourceMappingURL=chunk-5ETT54QS.js.map
|
|
20806
|
+
//# sourceMappingURL=chunk-5ETT54QS.js.map
|