@oondemand/oon-core-front 0.7.34 → 0.7.36

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.
@@ -8,7 +8,7 @@ function LoadingScreen({
8
8
  }) {
9
9
  return /* @__PURE__ */ jsxs(Flex, { direction: "column", align: "center", justify: "center", minH: "60vh", gap: 4, children: [
10
10
  /* @__PURE__ */ jsx(Spinner, { size: "lg" }),
11
- message ? /* @__PURE__ */ jsx(Text, { color: "gray.500", fontSize: "sm", textAlign: "center", children: message }) : null,
11
+ message ? /* @__PURE__ */ jsx(Text, { color: "text.muted", fontSize: "sm", textAlign: "center", children: message }) : null,
12
12
  actionLabel && onAction ? /* @__PURE__ */ jsx(Button, { size: "sm", variant: "outline", onClick: onAction, children: actionLabel }) : null
13
13
  ] });
14
14
  }
@@ -16,4 +16,4 @@ function LoadingScreen({
16
16
  export {
17
17
  LoadingScreen
18
18
  };
19
- //# sourceMappingURL=chunk-ALZCHGGI.js.map
19
+ //# sourceMappingURL=chunk-H4RCPPT3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shell/LoadingScreen.tsx"],"sourcesContent":["import { Button, Flex, Spinner, Text } from \"@chakra-ui/react\";\n\ninterface LoadingScreenProps {\n message?: string;\n actionLabel?: string;\n onAction?: () => void;\n}\n\n/** Tela de carregamento/estado neutro reutilizada por guards e Suspense. */\nexport function LoadingScreen({\n message,\n actionLabel,\n onAction,\n}: LoadingScreenProps) {\n return (\n <Flex direction=\"column\" align=\"center\" justify=\"center\" minH=\"60vh\" gap={4}>\n <Spinner size=\"lg\" />\n {message ? (\n <Text color=\"text.muted\" fontSize=\"sm\" textAlign=\"center\">\n {message}\n </Text>\n ) : null}\n {actionLabel && onAction ? (\n <Button size=\"sm\" variant=\"outline\" onClick={onAction}>\n {actionLabel}\n </Button>\n ) : null}\n </Flex>\n );\n}\n"],"mappings":";AAAA,SAAS,QAAQ,MAAM,SAAS,YAAY;AAexC,SACE,KADF;AANG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF,GAAuB;AACrB,SACE,qBAAC,QAAK,WAAU,UAAS,OAAM,UAAS,SAAQ,UAAS,MAAK,QAAO,KAAK,GACxE;AAAA,wBAAC,WAAQ,MAAK,MAAK;AAAA,IAClB,UACC,oBAAC,QAAK,OAAM,cAAa,UAAS,MAAK,WAAU,UAC9C,mBACH,IACE;AAAA,IACH,eAAe,WACd,oBAAC,UAAO,MAAK,MAAK,SAAQ,WAAU,SAAS,UAC1C,uBACH,IACE;AAAA,KACN;AAEJ;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  LoadingScreen
3
- } from "./chunk-ALZCHGGI.js";
3
+ } from "./chunk-H4RCPPT3.js";
4
4
 
5
5
  // src/routing.tsx
6
6
  import { lazy, Suspense } from "react";
@@ -68,4 +68,4 @@ export {
68
68
  routeElement,
69
69
  navigation
70
70
  };
71
- //# sourceMappingURL=chunk-32GGDIWB.js.map
71
+ //# sourceMappingURL=chunk-HS3Q4SCM.js.map
@@ -62,35 +62,38 @@ var oonThemeConfig = defineConfig({
62
62
  }
63
63
  },
64
64
  semanticTokens: {
65
+ // Cada token tem o valor do tema claro (base) e do escuro (_dark, classe `dark` no <html>).
66
+ // O shell usa só estes tokens, para o menu e o cabeçalho acompanharem o tema escolhido pelo App.
65
67
  colors: {
66
68
  brand: {
67
- solid: { value: "{colors.brand.500}" },
68
- contrast: { value: "white" },
69
- fg: { value: "{colors.brand.700}" },
70
- muted: { value: "{colors.brand.50}" },
71
- subtle: { value: "{colors.brand.75}" },
72
- emphasized: { value: "{colors.brand.600}" },
73
- focusRing: { value: "{colors.brand.500}" }
69
+ solid: { value: { base: "{colors.brand.500}", _dark: "{colors.brand.300}" } },
70
+ contrast: { value: { base: "white", _dark: "{colors.brand.900}" } },
71
+ fg: { value: { base: "{colors.brand.700}", _dark: "{colors.brand.200}" } },
72
+ muted: { value: { base: "{colors.brand.50}", _dark: "{colors.brand.850}" } },
73
+ subtle: { value: { base: "{colors.brand.75}", _dark: "{colors.brand.800}" } },
74
+ emphasized: { value: { base: "{colors.brand.600}", _dark: "{colors.brand.200}" } },
75
+ focusRing: { value: { base: "{colors.brand.500}", _dark: "{colors.brand.300}" } }
74
76
  },
75
77
  surface: {
76
- canvas: { value: "{colors.gray.50}" },
77
- panel: { value: "white" },
78
- elevated: { value: "white" }
78
+ canvas: { value: { base: "{colors.gray.50}", _dark: "{colors.gray.950}" } },
79
+ panel: { value: { base: "white", _dark: "{colors.gray.900}" } },
80
+ elevated: { value: { base: "white", _dark: "{colors.gray.800}" } },
81
+ hover: { value: { base: "#F8F9FA", _dark: "{colors.gray.800}" } }
79
82
  },
80
83
  text: {
81
- primary: { value: "{colors.gray.800}" },
82
- muted: { value: "{colors.gray.600}" },
83
- inverse: { value: "white" }
84
+ primary: { value: { base: "{colors.gray.800}", _dark: "{colors.gray.100}" } },
85
+ muted: { value: { base: "{colors.gray.600}", _dark: "{colors.gray.400}" } },
86
+ inverse: { value: { base: "white", _dark: "{colors.gray.900}" } }
84
87
  },
85
88
  border: {
86
- default: { value: "{colors.gray.200}" },
87
- strong: { value: "{colors.gray.300}" }
89
+ default: { value: { base: "{colors.gray.200}", _dark: "{colors.gray.700}" } },
90
+ strong: { value: { base: "{colors.gray.300}", _dark: "{colors.gray.600}" } }
88
91
  },
89
92
  status: {
90
- success: { value: "{colors.green.600}" },
91
- warning: { value: "{colors.orange.600}" },
92
- danger: { value: "{colors.red.600}" },
93
- info: { value: "{colors.blue.600}" }
93
+ success: { value: { base: "{colors.green.600}", _dark: "{colors.green.400}" } },
94
+ warning: { value: { base: "{colors.orange.600}", _dark: "{colors.orange.400}" } },
95
+ danger: { value: { base: "{colors.red.600}", _dark: "{colors.red.400}" } },
96
+ info: { value: { base: "{colors.blue.600}", _dark: "{colors.blue.400}" } }
94
97
  }
95
98
  }
96
99
  }
@@ -184,4 +187,4 @@ export {
184
187
  OonThemeProvider,
185
188
  useOonTheme
186
189
  };
187
- //# sourceMappingURL=chunk-VC6NTMZS.js.map
190
+ //# sourceMappingURL=chunk-O4M3YJRY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/config/theme.ts","../src/config/ThemeProvider.tsx"],"sourcesContent":["import { createSystem, defaultConfig, defineConfig, mergeConfigs } from \"@chakra-ui/react\";\nimport type { SystemConfig } from \"@chakra-ui/react\";\n\nexport type OonThemeDensity = \"compact\" | \"comfortable\";\nexport type OonThemeContrast = \"standard\" | \"high\";\n\nexport interface OonThemeDefinition {\n id: string;\n label?: string;\n extends?: OonThemeDefinition;\n density?: OonThemeDensity;\n contrast?: OonThemeContrast;\n /** Configuração pública do Chakra baseada em tokens, sem CSS remoto. */\n config?: Record<string, unknown>;\n}\n\nexport function createOonTheme<const T extends OonThemeDefinition>(definition: T): T {\n if (!/^[a-z][a-z0-9-]*$/.test(definition?.id || \"\")) {\n throw new Error(\"createOonTheme: id deve usar letras minúsculas, números e hífen.\");\n }\n if (definition.extends?.id === definition.id) {\n throw new Error(`createOonTheme: o tema ${definition.id} não pode estender a si mesmo.`);\n }\n return Object.freeze({ ...definition });\n}\n\n/**\n * Identidade visual padrão das Centrais Oon, consolidada a partir da Central\n * Minexco/CST: azul operacional, superfícies claras, tipografia Poppins e alta\n * densidade de informação.\n */\nexport const brandColors = {\n brand: {\n 25: { value: \"#F8FCFF\" },\n 50: { value: \"#EEF8FD\" },\n 75: { value: \"#E2F3FB\" },\n 100: { value: \"#C7E8F7\" },\n 200: { value: \"#82C8E8\" },\n 300: { value: \"#3FA6E0\" },\n 350: { value: \"#0F8DD0\" },\n 400: { value: \"#0580B9\" },\n 500: { value: \"#0474AF\" },\n 600: { value: \"#036491\" },\n 700: { value: \"#014364\" },\n 800: { value: \"#073A52\" },\n 850: { value: \"#082F3F\" },\n 900: { value: \"#07262E\" },\n },\n} as const;\n\nconst oonThemeConfig = defineConfig({\n globalCss: {\n \"html, body, #root\": {\n minHeight: \"100%\",\n },\n body: {\n margin: 0,\n bg: \"#F8F9FA\",\n color: \"#24323A\",\n fontFamily: \"Poppins, Inter, system-ui, sans-serif\",\n fontSize: \"14px\",\n },\n \"button, input, select, textarea\": {\n fontFamily: \"inherit\",\n },\n \"::selection\": {\n bg: \"#C7E8F7\",\n color: \"#07262E\",\n },\n },\n theme: {\n tokens: {\n colors: brandColors,\n fonts: {\n body: { value: \"Poppins, Inter, system-ui, sans-serif\" },\n heading: { value: \"Poppins, Inter, system-ui, sans-serif\" },\n },\n radii: {\n oon: { value: \"10px\" },\n },\n shadows: {\n oon: { value: \"0 8px 24px rgba(7, 38, 46, 0.08)\" },\n },\n },\n semanticTokens: {\n // Cada token tem o valor do tema claro (base) e do escuro (_dark, classe `dark` no <html>).\n // O shell usa só estes tokens, para o menu e o cabeçalho acompanharem o tema escolhido pelo App.\n colors: {\n brand: {\n solid: { value: { base: \"{colors.brand.500}\", _dark: \"{colors.brand.300}\" } },\n contrast: { value: { base: \"white\", _dark: \"{colors.brand.900}\" } },\n fg: { value: { base: \"{colors.brand.700}\", _dark: \"{colors.brand.200}\" } },\n muted: { value: { base: \"{colors.brand.50}\", _dark: \"{colors.brand.850}\" } },\n subtle: { value: { base: \"{colors.brand.75}\", _dark: \"{colors.brand.800}\" } },\n emphasized: { value: { base: \"{colors.brand.600}\", _dark: \"{colors.brand.200}\" } },\n focusRing: { value: { base: \"{colors.brand.500}\", _dark: \"{colors.brand.300}\" } },\n },\n surface: {\n canvas: { value: { base: \"{colors.gray.50}\", _dark: \"{colors.gray.950}\" } },\n panel: { value: { base: \"white\", _dark: \"{colors.gray.900}\" } },\n elevated: { value: { base: \"white\", _dark: \"{colors.gray.800}\" } },\n hover: { value: { base: \"#F8F9FA\", _dark: \"{colors.gray.800}\" } },\n },\n text: {\n primary: { value: { base: \"{colors.gray.800}\", _dark: \"{colors.gray.100}\" } },\n muted: { value: { base: \"{colors.gray.600}\", _dark: \"{colors.gray.400}\" } },\n inverse: { value: { base: \"white\", _dark: \"{colors.gray.900}\" } },\n },\n border: {\n default: { value: { base: \"{colors.gray.200}\", _dark: \"{colors.gray.700}\" } },\n strong: { value: { base: \"{colors.gray.300}\", _dark: \"{colors.gray.600}\" } },\n },\n status: {\n success: { value: { base: \"{colors.green.600}\", _dark: \"{colors.green.400}\" } },\n warning: { value: { base: \"{colors.orange.600}\", _dark: \"{colors.orange.400}\" } },\n danger: { value: { base: \"{colors.red.600}\", _dark: \"{colors.red.400}\" } },\n info: { value: { base: \"{colors.blue.600}\", _dark: \"{colors.blue.400}\" } },\n },\n },\n },\n },\n});\n\nexport const oonDefaultTheme = createOonTheme({\n id: \"oon-default\",\n label: \"Oon\",\n density: \"comfortable\",\n contrast: \"standard\",\n config: oonThemeConfig as unknown as Record<string, unknown>,\n});\n\nfunction isThemeDefinition(value: unknown): value is OonThemeDefinition {\n return Boolean(value) && typeof value === \"object\" && typeof (value as { id?: unknown }).id === \"string\";\n}\n\nfunction densityConfig(density?: OonThemeDensity): SystemConfig {\n if (density !== \"compact\") return defineConfig({});\n return defineConfig({ globalCss: { body: { fontSize: \"13px\" }, \"button, input, select, textarea\": { minH: \"32px\" } } });\n}\n\nfunction contrastConfig(contrast?: OonThemeContrast): SystemConfig {\n if (contrast !== \"high\") return defineConfig({});\n return defineConfig({\n theme: {\n semanticTokens: {\n colors: {\n text: { primary: { value: \"{colors.black}\" }, muted: { value: \"{colors.gray.800}\" } },\n border: { default: { value: \"{colors.gray.500}\" }, strong: { value: \"{colors.black}\" } },\n },\n },\n },\n });\n}\n\nfunction definitionConfig(theme: OonThemeDefinition): SystemConfig {\n const inherited = theme.extends ? definitionConfig(theme.extends) : defineConfig({});\n const own = defineConfig((theme.config ?? {}) as SystemConfig);\n return mergeConfigs(inherited, own, densityConfig(theme.density), contrastConfig(theme.contrast));\n}\n\n/**\n * Constrói o system do Chakra. O padrão Minexco é aplicado primeiro e pode ser\n * sobrescrito por uma identidade específica da Central sem reescrever o shell.\n */\nexport function createOonSystem(themeOverride?: OonThemeDefinition | Record<string, unknown>) {\n const base = mergeConfigs(defaultConfig, oonThemeConfig);\n const config = themeOverride\n ? mergeConfigs(base, isThemeDefinition(themeOverride)\n ? definitionConfig(themeOverride)\n : defineConfig(themeOverride as SystemConfig))\n : base;\n return createSystem(config);\n}\n\nexport const oonSystem = createOonSystem();\n","import { ChakraProvider } from \"@chakra-ui/react\";\nimport { createContext, type ReactNode, useContext, useMemo, useState } from \"react\";\nimport type { OonCoreFrontConfig } from \"../types\";\nimport type { OonThemeDefinition } from \"./theme\";\nimport { createOonSystem } from \"./theme\";\n\nexport interface OonThemeContextValue {\n themes: readonly OonThemeDefinition[];\n currentThemeId?: string;\n setTheme(themeId: string): void;\n}\n\nconst OonThemeContext = createContext<OonThemeContextValue | null>(null);\n\nfunction isThemeDefinition(value: unknown): value is OonThemeDefinition {\n return Boolean(value) && typeof value === \"object\" && typeof (value as { id?: unknown }).id === \"string\";\n}\n\nexport function OonThemeProvider({ config, children }: { config: OonCoreFrontConfig; children: ReactNode }) {\n const themes = useMemo(() => {\n const items = [...(config.themes ?? [])];\n const primaryTheme = config.theme;\n if (isThemeDefinition(primaryTheme) && !items.some((item) => item.id === primaryTheme.id)) items.unshift(primaryTheme);\n return items;\n }, [config.theme, config.themes]);\n const storageKey = `oon:theme:${config.app.id}`;\n const initial = (() => {\n const stored = typeof window !== \"undefined\" ? window.localStorage.getItem(storageKey) : null;\n if (stored && themes.some((item) => item.id === stored)) return stored;\n if (config.defaultThemeId && themes.some((item) => item.id === config.defaultThemeId)) return config.defaultThemeId;\n return themes[0]?.id;\n })();\n const [currentThemeId, setCurrentThemeId] = useState<string | undefined>(initial);\n const selected = themes.find((item) => item.id === currentThemeId);\n const system = useMemo(() => createOonSystem(selected ?? config.theme), [selected, config.theme]);\n const value = useMemo<OonThemeContextValue>(() => ({\n themes,\n currentThemeId,\n setTheme(themeId) {\n if (!themes.some((item) => item.id === themeId)) throw new Error(`Tema Oon desconhecido: ${themeId}.`);\n setCurrentThemeId(themeId);\n if (typeof window !== \"undefined\") window.localStorage.setItem(storageKey, themeId);\n },\n }), [themes, currentThemeId, storageKey]);\n\n return <OonThemeContext.Provider value={value}><ChakraProvider value={system}>{children}</ChakraProvider></OonThemeContext.Provider>;\n}\n\nexport function useOonTheme(): OonThemeContextValue {\n const value = useContext(OonThemeContext);\n if (!value) throw new Error(\"useOonTheme deve ser usado dentro do OonCore.\");\n return value;\n}\n"],"mappings":"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","names":["isThemeDefinition"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CoreCollection
3
- } from "./chunk-GIDNQRK6.js";
3
+ } from "./chunk-4J7L5PIO.js";
4
4
  import {
5
5
  useOonApi
6
6
  } from "./chunk-PQOP5CQP.js";
@@ -100,4 +100,4 @@ export {
100
100
  CoreCurrency,
101
101
  CoreAssistant
102
102
  };
103
- //# sourceMappingURL=chunk-WZD4ACMX.js.map
103
+ //# sourceMappingURL=chunk-RUE7ZDZS.js.map
package/dist/hooks.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-PQOP5CQP.js";
10
10
  import {
11
11
  useOonTheme
12
- } from "./chunk-VC6NTMZS.js";
12
+ } from "./chunk-O4M3YJRY.js";
13
13
  import "./chunk-V6TY7KAL.js";
14
14
  export {
15
15
  can,
package/dist/index.d.ts CHANGED
@@ -3,8 +3,8 @@ export { g as CollectionMode, h as CoreMetadata, i as DashboardWidgetDef, F as F
3
3
  export { OON_RESERVED_ROUTES, defineOonNavigation, defineOonRoutes } from './routing.js';
4
4
  export { a as OonThemeContrast, O as OonThemeDefinition, b as OonThemeDensity, c as createOonTheme, o as oonDefaultTheme } from './theme-Clhoswb3.js';
5
5
  export { useOonTheme } from './theme.js';
6
- import { O as OonPipelineViewDef } from './ui-D1u6ze-h.js';
7
- export { C as CoreActions, a as CoreAssistant, b as CoreCards, c as CoreCollection, d as CoreConfirmDialog, e as CoreCurrency, f as CoreDashboard, g as CoreDataGrid, h as CoreDataTable, i as CoreDataTableProps, j as CoreDetailDrawer, k as CoreDocument, l as CoreEmpty, m as CoreEmptyState, n as CoreField, o as CoreForm, p as CoreFormSection, q as CoreKpi, r as CoreKpiGrid, s as CoreLoadingState, t as CoreOrganizationSwitcher, u as CorePage, v as CorePageHeader, w as CorePipeline, x as CoreRelationField, y as CoreStatusBadge, z as CoreStatusKind, A as CoreStatusTone, B as CoreStatusView, D as CoreTableColumn, E as CoreTechnicalDetails, F as CoreToolbar, G as CoreTransactionalEmail, H as CoreUsersAccess, I as OonPipelineActionDef, J as OonPipelineActionGroup, K as OonPipelineActionTone, L as OonPipelineDefaultActionsConfig, M as OonPipelineDefaultActionsDef, N as OonPipelineTicketModalConfig, P as coreInitials, Q as coreStatus } from './ui-D1u6ze-h.js';
6
+ import { O as OonPipelineViewDef } from './ui-BBEP4aNZ.js';
7
+ export { C as CoreActions, a as CoreAssistant, b as CoreCards, c as CoreCollection, d as CoreConfirmDialog, e as CoreCurrency, f as CoreDashboard, g as CoreDataGrid, h as CoreDataTable, i as CoreDataTableProps, j as CoreDetailDrawer, k as CoreDocument, l as CoreEmpty, m as CoreEmptyState, n as CoreField, o as CoreForm, p as CoreFormSection, q as CoreKpi, r as CoreKpiGrid, s as CoreLoadingState, t as CoreOrganizationSwitcher, u as CorePage, v as CorePageHeader, w as CorePipeline, x as CoreRelationField, y as CoreStatusBadge, z as CoreStatusKind, A as CoreStatusTone, B as CoreStatusView, D as CoreTableColumn, E as CoreTechnicalDetails, F as CoreToolbar, G as CoreTransactionalEmail, H as CoreUsersAccess, I as OonPipelineActionDef, J as OonPipelineActionGroup, K as OonPipelineActionTone, L as OonPipelineDefaultActionsConfig, M as OonPipelineDefaultActionsDef, N as OonPipelineTicketModalConfig, P as coreInitials, Q as coreStatus } from './ui-BBEP4aNZ.js';
8
8
  export { O as OonTenantContextValue, c as can, u as useCoreMetadata, a as useModelSchema, b as useOonApi, d as useOonAuth, e as useOonResource, f as useOonTenant } from './hooks-DghQKr0s.js';
9
9
  import * as react from 'react';
10
10
  import { ReactNode } from 'react';
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  CoreAssistant,
3
3
  CoreCurrency
4
- } from "./chunk-WZD4ACMX.js";
4
+ } from "./chunk-RUE7ZDZS.js";
5
5
  import {
6
6
  appDefinitionToConfig,
7
7
  createTenantStorage,
8
8
  defineOonApp,
9
9
  startOonApp
10
- } from "./chunk-B4QFRGOK.js";
10
+ } from "./chunk-74ATSPSO.js";
11
11
  import {
12
12
  Can,
13
13
  CoreActions,
@@ -44,13 +44,13 @@ import {
44
44
  coreInitials,
45
45
  coreStatus,
46
46
  evaluateDomainExpression
47
- } from "./chunk-GIDNQRK6.js";
47
+ } from "./chunk-4J7L5PIO.js";
48
48
  import {
49
49
  OON_RESERVED_ROUTES,
50
50
  defineOonNavigation,
51
51
  defineOonRoutes
52
- } from "./chunk-32GGDIWB.js";
53
- import "./chunk-ALZCHGGI.js";
52
+ } from "./chunk-HS3Q4SCM.js";
53
+ import "./chunk-H4RCPPT3.js";
54
54
  import {
55
55
  can,
56
56
  useCoreMetadata,
@@ -64,7 +64,7 @@ import {
64
64
  createOonTheme,
65
65
  oonDefaultTheme,
66
66
  useOonTheme
67
- } from "./chunk-VC6NTMZS.js";
67
+ } from "./chunk-O4M3YJRY.js";
68
68
  import "./chunk-V6TY7KAL.js";
69
69
 
70
70
  // src/define/views.ts
package/dist/routing.js CHANGED
@@ -4,8 +4,8 @@ import {
4
4
  defineOonRoutes,
5
5
  navigation,
6
6
  routeElement
7
- } from "./chunk-32GGDIWB.js";
8
- import "./chunk-ALZCHGGI.js";
7
+ } from "./chunk-HS3Q4SCM.js";
8
+ import "./chunk-H4RCPPT3.js";
9
9
  import "./chunk-V6TY7KAL.js";
10
10
  export {
11
11
  OON_RESERVED_ROUTES,
package/dist/testing.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  appDefinitionToConfig
3
- } from "./chunk-B4QFRGOK.js";
4
- import "./chunk-GIDNQRK6.js";
5
- import "./chunk-32GGDIWB.js";
6
- import "./chunk-ALZCHGGI.js";
3
+ } from "./chunk-74ATSPSO.js";
4
+ import "./chunk-4J7L5PIO.js";
5
+ import "./chunk-HS3Q4SCM.js";
6
+ import "./chunk-H4RCPPT3.js";
7
7
  import "./chunk-PQOP5CQP.js";
8
- import "./chunk-VC6NTMZS.js";
8
+ import "./chunk-O4M3YJRY.js";
9
9
  import "./chunk-V6TY7KAL.js";
10
10
 
11
11
  // src/testing.ts
package/dist/theme.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  createOonTheme,
4
4
  oonDefaultTheme,
5
5
  useOonTheme
6
- } from "./chunk-VC6NTMZS.js";
6
+ } from "./chunk-O4M3YJRY.js";
7
7
  import "./chunk-V6TY7KAL.js";
8
8
  export {
9
9
  createOonSystem,
@@ -276,6 +276,11 @@ declare function CoreErrorState({ title, description, retryLabel, onRetry }: {
276
276
  retryLabel?: string;
277
277
  onRetry?: () => void;
278
278
  }): react.JSX.Element;
279
+ /**
280
+ * Abas simples para páginas próprias. Controlada (`value` + `onChange`) ou não
281
+ * controlada (estado interno a partir da primeira aba). Usa somente tokens
282
+ * semânticos, para acompanhar temas claros e escuros.
283
+ */
279
284
  declare function CoreTabs({ items, value, onChange }: {
280
285
  items: Array<{
281
286
  id: string;
package/dist/ui.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { Badge as OonBadge, Button as OonButton, Card as OonCard, Drawer as OonDrawer, Grid as OonGrid, Input as OonInput, Dialog as OonModal, NativeSelect as OonSelect, Stack as OonStack } from '@chakra-ui/react';
2
- export { C as CoreActions, R as CoreActivityLog, a as CoreAssistant, b as CoreCards, c as CoreCollection, S as CoreConfirmAction, d as CoreConfirmDialog, e as CoreCurrency, f as CoreDashboard, g as CoreDataGrid, h as CoreDataTable, i as CoreDataTableProps, j as CoreDetailDrawer, k as CoreDocument, l as CoreEmpty, m as CoreEmptyState, T as CoreErrorState, n as CoreField, o as CoreForm, p as CoreFormSection, q as CoreKpi, r as CoreKpiGrid, s as CoreLoadingState, t as CoreOrganizationSwitcher, u as CorePage, v as CorePageHeader, w as CorePipeline, x as CoreRelationField, y as CoreStatusBadge, z as CoreStatusKind, U as CoreStatusPanel, A as CoreStatusTone, B as CoreStatusView, V as CoreStepper, W as CoreSummaryCards, D as CoreTableColumn, X as CoreTabs, E as CoreTechnicalDetails, Y as CoreTimeline, F as CoreToolbar, G as CoreTransactionalEmail, H as CoreUsersAccess, P as coreInitials, Q as coreStatus } from './ui-D1u6ze-h.js';
2
+ export { C as CoreActions, R as CoreActivityLog, a as CoreAssistant, b as CoreCards, c as CoreCollection, S as CoreConfirmAction, d as CoreConfirmDialog, e as CoreCurrency, f as CoreDashboard, g as CoreDataGrid, h as CoreDataTable, i as CoreDataTableProps, j as CoreDetailDrawer, k as CoreDocument, l as CoreEmpty, m as CoreEmptyState, T as CoreErrorState, n as CoreField, o as CoreForm, p as CoreFormSection, q as CoreKpi, r as CoreKpiGrid, s as CoreLoadingState, t as CoreOrganizationSwitcher, u as CorePage, v as CorePageHeader, w as CorePipeline, x as CoreRelationField, y as CoreStatusBadge, z as CoreStatusKind, U as CoreStatusPanel, A as CoreStatusTone, B as CoreStatusView, V as CoreStepper, W as CoreSummaryCards, D as CoreTableColumn, X as CoreTabs, E as CoreTechnicalDetails, Y as CoreTimeline, F as CoreToolbar, G as CoreTransactionalEmail, H as CoreUsersAccess, P as coreInitials, Q as coreStatus } from './ui-BBEP4aNZ.js';
3
3
  import 'react';
4
4
  import './types-D1vB-V0g.js';
5
5
  import './theme-Clhoswb3.js';
package/dist/ui.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CoreAssistant,
3
3
  CoreCurrency
4
- } from "./chunk-WZD4ACMX.js";
4
+ } from "./chunk-RUE7ZDZS.js";
5
5
  import {
6
6
  CoreActions,
7
7
  CoreActivityLog,
@@ -39,8 +39,8 @@ import {
39
39
  CoreUsersAccess,
40
40
  coreInitials,
41
41
  coreStatus
42
- } from "./chunk-GIDNQRK6.js";
43
- import "./chunk-ALZCHGGI.js";
42
+ } from "./chunk-4J7L5PIO.js";
43
+ import "./chunk-H4RCPPT3.js";
44
44
  import "./chunk-PQOP5CQP.js";
45
45
  import "./chunk-V6TY7KAL.js";
46
46
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oondemand/oon-core-front",
3
- "version": "0.7.34",
3
+ "version": "0.7.36",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/oondemand/oon-platform.git",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/shell/LoadingScreen.tsx"],"sourcesContent":["import { Button, Flex, Spinner, Text } from \"@chakra-ui/react\";\n\ninterface LoadingScreenProps {\n message?: string;\n actionLabel?: string;\n onAction?: () => void;\n}\n\n/** Tela de carregamento/estado neutro reutilizada por guards e Suspense. */\nexport function LoadingScreen({\n message,\n actionLabel,\n onAction,\n}: LoadingScreenProps) {\n return (\n <Flex direction=\"column\" align=\"center\" justify=\"center\" minH=\"60vh\" gap={4}>\n <Spinner size=\"lg\" />\n {message ? (\n <Text color=\"gray.500\" fontSize=\"sm\" textAlign=\"center\">\n {message}\n </Text>\n ) : null}\n {actionLabel && onAction ? (\n <Button size=\"sm\" variant=\"outline\" onClick={onAction}>\n {actionLabel}\n </Button>\n ) : null}\n </Flex>\n );\n}\n"],"mappings":";AAAA,SAAS,QAAQ,MAAM,SAAS,YAAY;AAexC,SACE,KADF;AANG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF,GAAuB;AACrB,SACE,qBAAC,QAAK,WAAU,UAAS,OAAM,UAAS,SAAQ,UAAS,MAAK,QAAO,KAAK,GACxE;AAAA,wBAAC,WAAQ,MAAK,MAAK;AAAA,IAClB,UACC,oBAAC,QAAK,OAAM,YAAW,UAAS,MAAK,WAAU,UAC5C,mBACH,IACE;AAAA,IACH,eAAe,WACd,oBAAC,UAAO,MAAK,MAAK,SAAQ,WAAU,SAAS,UAC1C,uBACH,IACE;AAAA,KACN;AAEJ;","names":[]}