forlogic-core 1.15.8 → 1.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/.note/memory/components/action-button-for-tables.md +23 -0
  2. package/.note/memory/components/alertdialog-permanent-deletion.md +47 -0
  3. package/.note/memory/components/baseform-custom-fields.md +60 -0
  4. package/.note/memory/components/baseform-usage.md +43 -0
  5. package/.note/memory/components/delete-confirmation-dialog.md +48 -0
  6. package/.note/memory/components/dialog-sizes-and-structure.md +31 -0
  7. package/.note/memory/components/dialog-variants.md +44 -0
  8. package/.note/memory/components/pagination-usage.md +28 -0
  9. package/.note/memory/documentation/consolidated-components-registry.md +18 -0
  10. package/.note/memory/features/crud-standardized-config-props.md +3 -0
  11. package/.note/memory/features/import/attachment-strategy.md +18 -0
  12. package/.note/memory/patterns/body-content-scroll-usage.md +59 -0
  13. package/.note/memory/patterns/crud-action-bar-3-zone-layout.md +3 -0
  14. package/.note/memory/patterns/crud-bulk-actions-dropdown-standard.md +3 -0
  15. package/.note/memory/patterns/crud-toolbar-layout.md +26 -0
  16. package/.note/memory/patterns/dialog-body-scroll-pattern.md +27 -0
  17. package/.note/memory/patterns/single-scroll-pattern.md +22 -0
  18. package/.note/memory/patterns/spa-navigation-pattern.md +19 -0
  19. package/.note/memory/rules/no-auto-index-rule.md +20 -0
  20. package/.note/memory/rules/no-delete-policy-rule.md +23 -0
  21. package/.note/memory/rules/no-env-modification-rule.md +19 -0
  22. package/.note/memory/rules/supabase-schema-rule.md +19 -0
  23. package/README.md +8 -4
  24. package/dist/README.md +7 -4
  25. package/dist/assets/AccordionDoc-BnfxyOi9.js +31 -0
  26. package/dist/assets/ActionButtonDoc-b4F_J8gn.js +47 -0
  27. package/dist/assets/AlertDoc-PkiHguSJ.js +37 -0
  28. package/dist/assets/AppHeaderDoc-CsFMZGV0.js +67 -0
  29. package/dist/assets/AppSidebarDoc-Bg71N-zq.js +196 -0
  30. package/dist/assets/AuthDoc-DDm57y_J.js +192 -0
  31. package/dist/assets/AvatarDoc-C6wiZIZR.js +11 -0
  32. package/dist/assets/BadgeDoc-Bsg7cfm0.js +36 -0
  33. package/dist/assets/BaseFormDoc-DeIlV273.js +169 -0
  34. package/dist/assets/BodyContentDoc-Q3DGvyN9.js +83 -0
  35. package/dist/assets/BreadcrumbDoc-ChsVFjMF.js +75 -0
  36. package/dist/assets/ButtonDoc-C7Q31Bh3.js +41 -0
  37. package/dist/assets/ButtonGroupDoc-Bn5vhjBq.js +7 -0
  38. package/dist/assets/CalendarDoc-iVjNyxyr.js +81 -0
  39. package/dist/assets/CardDoc-D511dll7.js +49 -0
  40. package/dist/assets/ChartDoc-CQyYOEHL.js +111 -0
  41. package/dist/assets/CheckboxDoc-Cjsy4XAq.js +55 -0
  42. package/dist/assets/ColorPickerDoc-hnYJUWpF.js +10 -0
  43. package/dist/assets/ColorsFoundationDoc-B8Z4tAyZ.js +13 -0
  44. package/dist/assets/ComboTreeDoc-ChEbW4a3.js +21 -0
  45. package/dist/assets/ComboboxDoc-CHWeGE_F.js +134 -0
  46. package/dist/assets/ComponentDocTemplate-BtOCnlM2.js +1 -0
  47. package/dist/assets/ContextMenuDoc-C3mFO_Yx.js +182 -0
  48. package/dist/assets/ContextsDoc-ChEbQxom.js +184 -0
  49. package/dist/assets/CreateCrudPageDoc-C9tXisCF.js +106 -0
  50. package/dist/assets/CrudActionBarDoc-Cp1L4gpO.js +112 -0
  51. package/dist/assets/CrudGridDoc-D-kSFBAQ.js +85 -0
  52. package/dist/assets/CrudOverviewDoc-CeLBwg-B.js +14 -0
  53. package/dist/assets/CrudPrimitivesDoc-B2u1vZog.js +164 -0
  54. package/dist/assets/CrudTableDoc-CvV-II_X.js +95 -0
  55. package/dist/assets/DataListDoc-BLRii0jB.js +13 -0
  56. package/dist/assets/DesignSystemHome-TE0Ubaup.js +1 -0
  57. package/dist/assets/DialogDoc--LC5Jvat.js +981 -0
  58. package/dist/assets/DropdownMenuDoc-oPlEriRY.js +175 -0
  59. package/dist/assets/EmptyStateDoc-rNqfWKok.js +35 -0
  60. package/dist/assets/EnvironmentsDoc-CT7l5s2u.js +96 -0
  61. package/dist/assets/ErrorBoundaryDoc-rPHOUygA.js +111 -0
  62. package/dist/assets/ExampleCard-DfuMYM6E.js +1 -0
  63. package/dist/assets/FormDoc-B0L_QaCT.js +81 -0
  64. package/dist/assets/FoundationOverview-Dbb8rBsU.js +1 -0
  65. package/dist/assets/GridDoc-ifcGA2Yw.js +28 -0
  66. package/dist/assets/HooksDoc-CUOT_3Du.js +665 -0
  67. package/dist/assets/HoverCardDoc-CdTU2QkI.js +31 -0
  68. package/dist/assets/I18nDoc-CMEvFqsz.js +232 -0
  69. package/dist/assets/IconPickerDoc-DF9hEwnJ.js +10 -0
  70. package/dist/assets/IconsFoundationDoc-D4Y0wKbm.js +33 -0
  71. package/dist/assets/InputDoc-d_IL4dsq.js +211 -0
  72. package/dist/assets/LabelDoc-Dr64ISiJ.js +42 -0
  73. package/dist/assets/LeadershipDoc-BnrTuaeV.js +416 -0
  74. package/dist/assets/MediaDoc-CLuVprAr.js +459 -0
  75. package/dist/assets/MenubarDoc-CW7L4QJ4.js +165 -0
  76. package/dist/assets/ModulesDialogDoc-CUb_g4X-.js +71 -0
  77. package/dist/assets/NavigationMenuDoc-Csc0U6bV.js +116 -0
  78. package/dist/assets/OnboardingDialogDoc-3RtjNH1O.js +55 -0
  79. package/dist/assets/PaginationDoc-BGurD4xQ.js +27 -0
  80. package/dist/assets/PaginationDoc-DqFyou6O.js +98 -0
  81. package/dist/assets/PlacesDoc-Dyx8gsqb.js +226 -0
  82. package/dist/assets/PopoverDoc-DHF-ItUX.js +64 -0
  83. package/dist/assets/ProgressDoc-DXKV-fkI.js +29 -0
  84. package/dist/assets/QualiexUserFieldDoc-BbP7w-Pu.js +149 -0
  85. package/dist/assets/RadioGroupDoc-D845uweM.js +57 -0
  86. package/dist/assets/RadiusDoc-vN4tTsay.js +7 -0
  87. package/dist/assets/RequiredFieldsCounterDoc-TzR9r-U9.js +58 -0
  88. package/dist/assets/ResizableDoc-Bkfz_25O.js +104 -0
  89. package/dist/assets/RichTextEditorDoc-BUQrg7M8.js +24 -0
  90. package/dist/assets/ScrollAreaDoc-B6ODYHMX.js +28 -0
  91. package/dist/assets/SecurityDoc-Chbt6w1s.js +204 -0
  92. package/dist/assets/SelectDoc-BhcpBIAO.js +80 -0
  93. package/dist/assets/SeparatorDoc-C3fhatb0.js +4 -0
  94. package/dist/assets/ServicesDoc-_uao-HA_.js +308 -0
  95. package/dist/assets/ShadowsDoc-DpkO_TZQ.js +9 -0
  96. package/dist/assets/SignDoc-BJtnoT6I.js +66 -0
  97. package/dist/assets/SkeletonDoc-BZS07PJh.js +54 -0
  98. package/dist/assets/SliderDoc-D2ApV3XT.js +41 -0
  99. package/dist/assets/SpacingDoc-PNrU24B2.js +12 -0
  100. package/dist/assets/SplitButtonDoc-D5tUF2Ja.js +53 -0
  101. package/dist/assets/StepSelectorDoc-Cj0ALYar.js +41 -0
  102. package/dist/assets/SwitchDoc-DtsT8oh_.js +56 -0
  103. package/dist/assets/TableDoc-BC-jQnXu.js +128 -0
  104. package/dist/assets/TableOfContents-DBMJMbI4.js +1 -0
  105. package/dist/assets/TabsDoc-DtXJ0xY5.js +42 -0
  106. package/dist/assets/TextareaDoc-nuW5tqBQ.js +46 -0
  107. package/dist/assets/ToastDoc-D1aX5zda.js +157 -0
  108. package/dist/assets/ToggleDoc-ILass4CS.js +51 -0
  109. package/dist/assets/TooltipDoc-lPbdWe_9.js +58 -0
  110. package/dist/assets/TruncatedCellDoc-DOAzbF2F.js +12 -0
  111. package/dist/assets/TypographyFoundationDoc-3ZD-rQZw.js +7 -0
  112. package/dist/assets/UtilitiesDoc-D7lkYhuz.js +145 -0
  113. package/dist/assets/blocks-Jy49RoqJ.js +1 -0
  114. package/dist/assets/calendar-days-Cvf2zLJl.js +1 -0
  115. package/dist/assets/circle-plus-MnG9kjyq.js +1 -0
  116. package/dist/assets/circle-x-B9ouupla.js +1 -0
  117. package/dist/assets/crown-BweN5jpI.js +1 -0
  118. package/dist/assets/date-picker-ttyYeYvC.js +1 -0
  119. package/dist/assets/disabled-menu-item-WlpPOqxg.js +1 -0
  120. package/dist/assets/drawer-DvU6_eK5.js +3 -0
  121. package/dist/assets/file-pen-line-C0VV-QjF.js +1 -0
  122. package/dist/assets/git-branch-DCjGGwvF.js +1 -0
  123. package/dist/assets/globe-BdFDFP_k.js +1 -0
  124. package/dist/assets/grip-vertical-CgXp0oI-.js +1 -0
  125. package/dist/assets/hash-BAYi_wfk.js +1 -0
  126. package/dist/assets/index-BtX5DZqb.js +310 -0
  127. package/dist/assets/index-C1So5Sai.css +1 -0
  128. package/dist/assets/life-buoy-BydIgTyJ.js +1 -0
  129. package/dist/assets/lucide-react-ZIMhRYmb.js +1 -0
  130. package/dist/assets/monitor-B6txWJPg.js +1 -0
  131. package/dist/assets/package-DNe3FsCh.js +1 -0
  132. package/dist/assets/pen-CzTmQ16z.js +1 -0
  133. package/dist/assets/pin-CJJgLEBz.js +1 -0
  134. package/dist/assets/radio-group-Btv_BY60.js +1 -0
  135. package/dist/assets/server-XQDXtrjm.js +1 -0
  136. package/dist/assets/share-2-Dz_89MJb.js +1 -0
  137. package/dist/assets/step-selector-D0_Y1dow.js +1 -0
  138. package/dist/assets/text-align-start-WsHo7CNJ.js +1 -0
  139. package/dist/assets/trash-CeK-mWnM.js +1 -0
  140. package/dist/assets/useMockCrud-RV9z9n5x.js +1 -0
  141. package/dist/assets/user-check-CrbWcnPN.js +1 -0
  142. package/dist/assets/user-plus-Dce9DbqQ.js +1 -0
  143. package/dist/auth/services/TokenManager.d.ts +5 -0
  144. package/dist/auth/services/TokenRegenerationService.d.ts +5 -3
  145. package/dist/auth/services/TokenService.d.ts +0 -4
  146. package/dist/bin/pull-docs.js +87 -64
  147. package/dist/components/modules/ModuleAccessGuard.d.ts +16 -0
  148. package/dist/components/modules/index.d.ts +2 -0
  149. package/dist/components/ui/chart.d.ts +1 -1
  150. package/dist/components/ui/color-picker.d.ts +4 -0
  151. package/dist/components/ui/combo-tree.d.ts +70 -0
  152. package/dist/components/ui/combobox.d.ts +1 -0
  153. package/dist/components/ui/dialog.d.ts +8 -0
  154. package/dist/components/ui/icon-picker.d.ts +2 -0
  155. package/dist/components/ui/input-group.d.ts +1 -1
  156. package/dist/components/ui/resizable.d.ts +1 -1
  157. package/dist/config/environments.d.ts +12 -0
  158. package/dist/config/index.d.ts +23 -9
  159. package/dist/contexts/ModuleContext.d.ts +34 -0
  160. package/dist/crud/components/SelectionCheckbox.d.ts +9 -0
  161. package/dist/crud/generateCrudConfig.d.ts +2 -2
  162. package/dist/docs/KNOWLEDGE.md +206 -0
  163. package/dist/exports/ui.d.ts +1 -0
  164. package/dist/hooks/useMediaQuery.d.ts +14 -0
  165. package/dist/hooks/useModuleAccess.d.ts +60 -0
  166. package/dist/hooks/usePageTitle.d.ts +7 -1
  167. package/dist/index.css +2 -2
  168. package/dist/index.css.map +1 -1
  169. package/dist/index.d.ts +9 -1
  170. package/dist/index.esm.js +1 -1
  171. package/dist/index.html +16 -11
  172. package/dist/index.js +1 -1
  173. package/dist/leadership/hooks/useLeadershipMutations.d.ts +0 -1
  174. package/dist/media/hooks/useMediaUpload.d.ts +0 -1
  175. package/dist/media/utils/imageHelpers.d.ts +1 -1
  176. package/dist/places/services/PlaceService.d.ts +1 -1
  177. package/dist/providers/CoreProviders.d.ts +20 -4
  178. package/dist/qualiex/services/qualiexApi.d.ts +22 -4
  179. package/dist/services/QualiexEnrichmentService.d.ts +0 -12
  180. package/dist/setup.d.ts +2 -0
  181. package/dist/sign/services/signService.d.ts +0 -6
  182. package/dist/types.d.ts +59 -10
  183. package/dist/utils/index.d.ts +2 -2
  184. package/docs/DESIGN_SYSTEM.md +12181 -0
  185. package/docs/KNOWLEDGE.md +206 -0
  186. package/docs/PUBLISH.md +168 -0
  187. package/package.json +16 -18
  188. package/dist/assets/index-D0RTIFH3.css +0 -1
  189. package/dist/assets/index-YMQXWoDk.js +0 -9868
  190. package/dist/auth/utils/AuthUtils.d.ts +0 -4
  191. package/dist/i18n/DatabaseBackend.d.ts +0 -9
  192. package/dist/i18n/components/TranslationLoader.d.ts +0 -10
  193. package/dist/services/TranslationService.d.ts +0 -20
@@ -12,7 +12,6 @@ interface UpdateLeaderData {
12
12
  id: string;
13
13
  id_leader: string | null;
14
14
  }
15
- export declare function useCreateLeaderMutation(): import("@tanstack/react-query").UseMutationResult<any, Error, CreateLeaderData, unknown>;
16
15
  export declare function useCreateSingleLeaderMutation(): import("@tanstack/react-query").UseMutationResult<any, Error, CreateLeaderData, unknown>;
17
16
  export declare function useCreateMultipleLeadersMutation(): import("@tanstack/react-query").UseMutationResult<any, Error, CreateMultipleLeadersData, unknown>;
18
17
  export declare function useUpdateLeaderMutation(): import("@tanstack/react-query").UseMutationResult<any, Error, UpdateLeaderData, unknown>;
@@ -16,5 +16,4 @@ export declare function useMediaUpload(options?: UseMediaUploadOptions): {
16
16
  upload: (file: File, uploadOptions?: UploadOptions) => Promise<UploadResult>;
17
17
  deleteMedia: (path: string, bucket?: string) => Promise<void>;
18
18
  uploading: boolean;
19
- progress: number;
20
19
  };
@@ -17,7 +17,7 @@ export declare function resizeKeepingAspect(originalWidth: number, originalHeigh
17
17
  /**
18
18
  * Verifica se uma URL é de imagem baseado na extensão
19
19
  */
20
- export declare function isImageUrl(url: string): boolean;
20
+ export declare function isImageUrl(src: string): boolean;
21
21
  /**
22
22
  * Extrai o nome do arquivo de uma URL
23
23
  */
@@ -1,6 +1,6 @@
1
1
  import { Place } from '../types';
2
2
  declare class PlaceService {
3
- private baseUrl;
3
+ private get baseUrl();
4
4
  private makeApiCall;
5
5
  private buildHierarchy;
6
6
  getPlaces(alias: string, companyId: string): Promise<Place[]>;
@@ -1,5 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { QueryClient } from '@tanstack/react-query';
3
+ import { ModuleAccessGuardProps } from '../components/modules';
3
4
  /**
4
5
  * Props for CoreProviders component
5
6
  */
@@ -13,6 +14,21 @@ export interface CoreProvidersProps {
13
14
  * If not provided, a default QueryClient will be created
14
15
  */
15
16
  queryClient?: QueryClient;
17
+ /**
18
+ * Alias do módulo do projeto consumidor.
19
+ * Usado pelo hook useModuleAccess para verificar automaticamente
20
+ * se o usuário tem acesso ao módulo deste projeto.
21
+ * Quando configurado, o ModuleAccessGuard bloqueia automaticamente
22
+ * o acesso caso o usuário não tenha permissão.
23
+ *
24
+ * @example "performance" | "suppliers" | "occurrences" | "audit"
25
+ */
26
+ moduleAlias?: string;
27
+ /**
28
+ * Props opcionais para o ModuleAccessGuard.
29
+ * Permite configurar módulos contratados, callbacks e URLs.
30
+ */
31
+ moduleAccessGuardProps?: Omit<ModuleAccessGuardProps, 'children'>;
16
32
  }
17
33
  /**
18
34
  * CoreProviders - Encapsulates all essential providers for forlogic-core applications
@@ -23,7 +39,7 @@ export interface CoreProvidersProps {
23
39
  * - QueryClientProvider (data fetching)
24
40
  * - AuthProvider (authentication)
25
41
  * - LocaleProvider (locale management)
26
- * - TranslationLoader (removed - translations now loaded from local JSON)
42
+ * - ModuleProvider (module access configuration)
27
43
  *
28
44
  * @example
29
45
  * ```tsx
@@ -32,7 +48,7 @@ export interface CoreProvidersProps {
32
48
  *
33
49
  * function App() {
34
50
  * return (
35
- * <CoreProviders>
51
+ * <CoreProviders moduleAlias="performance">
36
52
  * <BrowserRouter>
37
53
  * <Routes>
38
54
  * {/* Your routes here *\/}
@@ -56,11 +72,11 @@ export interface CoreProvidersProps {
56
72
  *
57
73
  * function App() {
58
74
  * return (
59
- * <CoreProviders queryClient={queryClient}>
75
+ * <CoreProviders queryClient={queryClient} moduleAlias="suppliers">
60
76
  * {/* Your app *\/}
61
77
  * </CoreProviders>
62
78
  * );
63
79
  * }
64
80
  * ```
65
81
  */
66
- export declare function CoreProviders({ children, queryClient }: CoreProvidersProps): import("react/jsx-runtime").JSX.Element;
82
+ export declare function CoreProviders({ children, queryClient, moduleAlias, moduleAccessGuardProps }: CoreProvidersProps): import("react/jsx-runtime").JSX.Element;
@@ -1,6 +1,6 @@
1
- import { QualiexUser } from '../../types';
1
+ import { QualiexUser, Software, UserAssociation } from '../../types';
2
2
  declare class QualiexApiService {
3
- private baseUrl;
3
+ private get baseUrl();
4
4
  /**
5
5
  * Faz uma chamada para a API do Qualiex
6
6
  * IMPORTANTE: O header 'un-alias' é OBRIGATÓRIO para todas as requisições da API common-v4
@@ -8,14 +8,32 @@ declare class QualiexApiService {
8
8
  */
9
9
  private makeApiCall;
10
10
  private mapToQualiexUser;
11
+ /**
12
+ * Extrai e valida o array de usuários da resposta da API.
13
+ * Retorna null se o formato for inválido.
14
+ */
15
+ private parseUsersResponse;
11
16
  fetchUsers(alias: string, companyId: string): Promise<QualiexUser[]>;
12
17
  fetchUserById(userId: string, alias: string, companyId: string): Promise<QualiexUser | null>;
13
18
  fetchActiveUsersMap(alias: string, companyId: string): Promise<Map<string, QualiexUser>>;
14
19
  getUsers(alias: string): Promise<QualiexUser[]>;
15
20
  /**
16
- * @deprecated Use getUsers() instead. Este método agora retorna apenas usuários ativos.
21
+ * Busca a lista de todos os módulos/softwares disponíveis na plataforma.
22
+ * GET /api/common/v1/softwares
23
+ *
24
+ * @param alias - Alias da unidade (usado no header un-alias)
25
+ * @returns Array de Software com id, alias, cores e nomes traduzidos
26
+ */
27
+ fetchSoftwares(alias: string): Promise<Software[]>;
28
+ /**
29
+ * Busca as associações do usuário (empresas, roles, módulos com acesso).
30
+ * GET /api/common/v1/Users/{userId}/associations
31
+ *
32
+ * @param userId - ID do usuário no Qualiex (subNewId / user.id)
33
+ * @param alias - Alias da unidade (usado no header un-alias)
34
+ * @returns Array de UserAssociation com softwares[], roleId, roleName, etc.
17
35
  */
18
- getAllUsers(alias: string): Promise<QualiexUser[]>;
36
+ fetchUserAssociations(userId: string, alias: string): Promise<UserAssociation[]>;
19
37
  }
20
38
  export declare const qualiexApi: QualiexApiService;
21
39
  export {};
@@ -50,16 +50,4 @@ export declare class QualiexEnrichmentService {
50
50
  * ```
51
51
  */
52
52
  static enrichWithUserData<T>(entities: T[], options: QualiexEnrichmentOptions): Promise<T[]>;
53
- /**
54
- * Método legado (retrocompatibilidade)
55
- *
56
- * @deprecated Use enrichWithUserData() para maior flexibilidade
57
- */
58
- static enrichWithResponsibleNames<T extends {
59
- id_user?: string | null;
60
- }>(entities: T[], options: {
61
- entityName: string;
62
- }): Promise<(T & {
63
- responsible_name?: string;
64
- })[]>;
65
53
  }
package/dist/setup.d.ts CHANGED
@@ -6,6 +6,8 @@ interface QualiexCoreConfig {
6
6
  };
7
7
  theme?: 'light' | 'dark' | 'system';
8
8
  queryClient?: QueryClient;
9
+ /** Alias do módulo do projeto consumidor (ex: 'performance', 'suppliers', 'occurrences') */
10
+ moduleAlias?: string;
9
11
  }
10
12
  export declare function setupQualiexCore(config: QualiexCoreConfig): {
11
13
  queryClient: QueryClient;
@@ -1,11 +1,5 @@
1
1
  import type { SignEnvelopeResult, SignedDocumentResult, SignProvider } from '../types';
2
2
  export declare const signService: {
3
- /**
4
- * Resolve qual provedor está configurado para o alias.
5
- * Tenta clicksign primeiro (backward compat), depois d4sign.
6
- * Retorna o provedor resolvido.
7
- */
8
- resolveProvider(alias: string): Promise<SignProvider>;
9
3
  createEnvelopeWithSigner(params: {
10
4
  alias: string;
11
5
  contentBase64: string;
package/dist/types.d.ts CHANGED
@@ -289,15 +289,7 @@ export interface EntityWithId {
289
289
  }
290
290
  export type CreateEntityInput<T extends EntityWithId> = Omit<T, 'id' | 'created_at' | 'updated_at'>;
291
291
  export type UpdateEntityInput<T extends EntityWithId> = Partial<CreateEntityInput<T>>;
292
- export interface CrudOperations<T extends EntityWithId> {
293
- getAll: () => Promise<T[]>;
294
- getById: (id: string | number) => Promise<T | null>;
295
- create: (data: CreateEntityInput<T>) => Promise<T>;
296
- update: (id: string | number, data: UpdateEntityInput<T>) => Promise<T>;
297
- delete: (id: string | number) => Promise<void>;
298
- search?: (query: string) => Promise<T[]>;
299
- }
300
- export interface CrudConfig<T extends EntityWithId> {
292
+ export interface GeneratedCrudConfig<T extends EntityWithId> {
301
293
  title: string;
302
294
  columns: CrudColumn<T>[];
303
295
  searchPlaceholder?: string;
@@ -454,7 +446,6 @@ export interface QualiexUser {
454
446
  userId?: string;
455
447
  userName?: string;
456
448
  userEmail?: string;
457
- displayName?: string;
458
449
  placeId?: string | null;
459
450
  placeName?: string | null;
460
451
  roleId?: string;
@@ -480,6 +471,64 @@ export interface QualiexEnrichmentConfig {
480
471
  /** Sufixo padrão para campos de username (default: "_username") */
481
472
  userUsernameFieldSuffix?: string;
482
473
  }
474
+ /**
475
+ * Representa um módulo/software disponível na plataforma Qualiex.
476
+ * Retornado pela API GET /api/common/v1/softwares
477
+ */
478
+ export interface Software {
479
+ id: number;
480
+ alias: string;
481
+ color: string;
482
+ colorLight: string;
483
+ namePtBr: string;
484
+ nameUs: string;
485
+ nameEs: string;
486
+ }
487
+ /**
488
+ * Representa uma associação do usuário com uma empresa/unidade.
489
+ * Retornado pela API GET /api/common/v1/Users/{userId}/associations
490
+ *
491
+ * O array `softwares` contém os IDs dos módulos aos quais o usuário tem acesso.
492
+ * O `roleId` e `roleName` representam o papel do usuário naquela associação.
493
+ */
494
+ export interface UserAssociation {
495
+ associationId: string;
496
+ userId: string;
497
+ userName: string;
498
+ companyId: string;
499
+ companyName: string;
500
+ companyAlias: string;
501
+ companyPhotoDate?: string;
502
+ language?: string;
503
+ roleId: string;
504
+ roleName: string;
505
+ placeId?: string;
506
+ placeName?: string;
507
+ softwares: number[];
508
+ functionalities: string[];
509
+ isQualitfy?: boolean;
510
+ isMetroex?: boolean;
511
+ }
512
+ /**
513
+ * Resultado do hook useModuleAccess
514
+ */
515
+ export interface ModuleAccessResult {
516
+ /** Se o usuário tem acesso ao módulo configurado/especificado */
517
+ hasAccess: boolean;
518
+ /** Se os dados ainda estão carregando */
519
+ isLoading: boolean;
520
+ /** Role do usuário na associação atual */
521
+ role: {
522
+ id: string;
523
+ name: string;
524
+ } | null;
525
+ /** Associação completa do usuário para a unidade atual */
526
+ association: UserAssociation | null;
527
+ /** Função para verificar acesso a outro(s) módulo(s) */
528
+ hasAccessTo: (alias: string | string[]) => boolean;
529
+ /** Lista completa de softwares/módulos disponíveis na plataforma */
530
+ softwares: Software[];
531
+ }
483
532
  export interface ApiResponse<T = unknown> {
484
533
  data: T;
485
534
  success: boolean;
@@ -1,8 +1,8 @@
1
1
  import { type ClassValue } from "clsx";
2
2
  export declare function cn(...inputs: ClassValue[]): string;
3
3
  export declare const trimTextFields: (data: any) => any;
4
- export declare const formatDatetime: (dateString: string) => string;
5
- export declare const formatCurrency: (value: number | undefined | null) => string;
4
+ export { formatDatetime, formatDate } from './formatters/dateFormatters';
5
+ export { formatCurrency } from './formatters/currencyFormatters';
6
6
  export declare const debounce: <T extends (...args: any[]) => any>(func: T, wait: number) => ((...args: Parameters<T>) => void);
7
7
  export declare const slugify: (text: string) => string;
8
8
  export { handleExternalLink } from './linkHelpers';