@fayz-ai/admin 0.62.0 → 0.65.2

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 (171) hide show
  1. package/dist/{CommandPalette-B5PMQFDG.js → CommandPalette-XDJJ5E3O.js} +3 -3
  2. package/dist/{CommandPalette-B5PMQFDG.js.map → CommandPalette-XDJJ5E3O.js.map} +1 -1
  3. package/dist/ConnectedBrandingSettings-43ZM3HCI.js +680 -0
  4. package/dist/ConnectedBrandingSettings-43ZM3HCI.js.map +1 -0
  5. package/dist/ConnectedCompanySettings-I4MALI2Q.js +197 -0
  6. package/dist/ConnectedCompanySettings-I4MALI2Q.js.map +1 -0
  7. package/dist/ConnectedModulesSettings-A2VJ5BMJ.js +563 -0
  8. package/dist/ConnectedModulesSettings-A2VJ5BMJ.js.map +1 -0
  9. package/dist/ConnectedSecuritySettings-25AHA4HJ.js +189 -0
  10. package/dist/ConnectedSecuritySettings-25AHA4HJ.js.map +1 -0
  11. package/dist/ConnectedUserProfile-E7USJRUE.js +424 -0
  12. package/dist/ConnectedUserProfile-E7USJRUE.js.map +1 -0
  13. package/dist/FieldRulesEditor-YGIPKI5T.js +129 -0
  14. package/dist/FieldRulesEditor-YGIPKI5T.js.map +1 -0
  15. package/dist/GettingStartedWidget-HMIJ3Y24.js +12 -0
  16. package/dist/GettingStartedWidget-HMIJ3Y24.js.map +1 -0
  17. package/dist/PermissionProfilesTab-3ZPRCHMZ.js +548 -0
  18. package/dist/PermissionProfilesTab-3ZPRCHMZ.js.map +1 -0
  19. package/dist/PersonTimeline-HQZT527S.js +3 -0
  20. package/dist/{PersonTimeline-X7JTPUWJ.js.map → PersonTimeline-HQZT527S.js.map} +1 -1
  21. package/dist/ProjectsSettings-7O2F27MD.js +5 -0
  22. package/dist/ProjectsSettings-7O2F27MD.js.map +1 -0
  23. package/dist/ScheduleEditor-54ELWR45.js +8 -0
  24. package/dist/{ScheduleEditor-L2UJXKMY.js.map → ScheduleEditor-54ELWR45.js.map} +1 -1
  25. package/dist/SeuSiteWidget-QLSUVC63.js +6 -0
  26. package/dist/SeuSiteWidget-QLSUVC63.js.map +1 -0
  27. package/dist/SubscriptionPage-5GE5HFJK.js +17 -0
  28. package/dist/{SubscriptionPage-IDVEFLZ5.js.map → SubscriptionPage-5GE5HFJK.js.map} +1 -1
  29. package/dist/TeamTab-6RAULFLW.js +502 -0
  30. package/dist/TeamTab-6RAULFLW.js.map +1 -0
  31. package/dist/TrialWidget-Z6CLUCU3.js +7 -0
  32. package/dist/TrialWidget-Z6CLUCU3.js.map +1 -0
  33. package/dist/app/AdminShell.d.ts.map +1 -1
  34. package/dist/app/admin-app.d.ts.map +1 -1
  35. package/dist/app/config.d.ts +14 -0
  36. package/dist/app/config.d.ts.map +1 -1
  37. package/dist/app/routing.d.ts +6 -0
  38. package/dist/app/routing.d.ts.map +1 -1
  39. package/dist/app/scaffold.d.ts.map +1 -1
  40. package/dist/billing/index.js +9 -4
  41. package/dist/chunk-2H46WDG5.js +53 -0
  42. package/dist/chunk-2H46WDG5.js.map +1 -0
  43. package/dist/chunk-3HLX7YB2.js +94 -0
  44. package/dist/chunk-3HLX7YB2.js.map +1 -0
  45. package/dist/chunk-3OUD4XBK.js +3 -0
  46. package/dist/chunk-3OUD4XBK.js.map +1 -0
  47. package/dist/{chunk-IXSY4GPK.js → chunk-5D5QLMOQ.js} +5 -3
  48. package/dist/chunk-5D5QLMOQ.js.map +1 -0
  49. package/dist/chunk-5WR62X2R.js +1081 -0
  50. package/dist/chunk-5WR62X2R.js.map +1 -0
  51. package/dist/{chunk-KPYRTOCK.js → chunk-6CQFGMEO.js} +4 -140
  52. package/dist/chunk-6CQFGMEO.js.map +1 -0
  53. package/dist/chunk-6MMSYC2I.js +116 -0
  54. package/dist/chunk-6MMSYC2I.js.map +1 -0
  55. package/dist/chunk-6QFOE3UD.js +1466 -0
  56. package/dist/chunk-6QFOE3UD.js.map +1 -0
  57. package/dist/chunk-6UUFVQ2E.js +283 -0
  58. package/dist/chunk-6UUFVQ2E.js.map +1 -0
  59. package/dist/chunk-7WNLL3F6.js +7889 -0
  60. package/dist/chunk-7WNLL3F6.js.map +1 -0
  61. package/dist/chunk-A74IHAQE.js +439 -0
  62. package/dist/chunk-A74IHAQE.js.map +1 -0
  63. package/dist/{chunk-JOBRLBIQ.js → chunk-AFA6IO23.js} +4 -3
  64. package/dist/chunk-AFA6IO23.js.map +1 -0
  65. package/dist/{chunk-P5UIGQFY.js → chunk-ALCSIN3Z.js} +5 -5
  66. package/dist/chunk-ALCSIN3Z.js.map +1 -0
  67. package/dist/chunk-AWM4AMBS.js +39 -0
  68. package/dist/chunk-AWM4AMBS.js.map +1 -0
  69. package/dist/{chunk-OQARLKZN.js → chunk-BG5Z6KLN.js} +6 -18
  70. package/dist/chunk-BG5Z6KLN.js.map +1 -0
  71. package/dist/chunk-DPNFZONC.js +19 -0
  72. package/dist/chunk-DPNFZONC.js.map +1 -0
  73. package/dist/chunk-DRCV643L.js +193 -0
  74. package/dist/chunk-DRCV643L.js.map +1 -0
  75. package/dist/chunk-E6DF3VR6.js +206 -0
  76. package/dist/chunk-E6DF3VR6.js.map +1 -0
  77. package/dist/chunk-ENHCVGXZ.js +120 -0
  78. package/dist/chunk-ENHCVGXZ.js.map +1 -0
  79. package/dist/chunk-FK6RHGI7.js +56 -0
  80. package/dist/chunk-FK6RHGI7.js.map +1 -0
  81. package/dist/chunk-G5HNA5QK.js +233 -0
  82. package/dist/chunk-G5HNA5QK.js.map +1 -0
  83. package/dist/chunk-HCFO4Z6A.js +53 -0
  84. package/dist/chunk-HCFO4Z6A.js.map +1 -0
  85. package/dist/chunk-JFIU6NQP.js +51 -0
  86. package/dist/chunk-JFIU6NQP.js.map +1 -0
  87. package/dist/chunk-JRZJBMOY.js +3 -0
  88. package/dist/chunk-JRZJBMOY.js.map +1 -0
  89. package/dist/{chunk-3YP7KW47.js → chunk-JVVOL4BB.js} +41 -512
  90. package/dist/chunk-JVVOL4BB.js.map +1 -0
  91. package/dist/chunk-KAQ3UIAA.js +415 -0
  92. package/dist/chunk-KAQ3UIAA.js.map +1 -0
  93. package/dist/{chunk-P6XUDT2P.js → chunk-KJELMULA.js} +4 -51
  94. package/dist/chunk-KJELMULA.js.map +1 -0
  95. package/dist/chunk-KLO7DKXX.js +1651 -0
  96. package/dist/chunk-KLO7DKXX.js.map +1 -0
  97. package/dist/chunk-M2CMDWUI.js +75 -0
  98. package/dist/chunk-M2CMDWUI.js.map +1 -0
  99. package/dist/chunk-PQ47MLTH.js +255 -0
  100. package/dist/chunk-PQ47MLTH.js.map +1 -0
  101. package/dist/{chunk-VX3WJLKK.js → chunk-QD7BMUDF.js} +17 -8
  102. package/dist/chunk-QD7BMUDF.js.map +1 -0
  103. package/dist/{chunk-E4MESMNR.js → chunk-QTSKCPSW.js} +7 -10
  104. package/dist/chunk-QTSKCPSW.js.map +1 -0
  105. package/dist/chunk-S56FQKPL.js +186 -0
  106. package/dist/chunk-S56FQKPL.js.map +1 -0
  107. package/dist/chunk-SGAFPNMA.js +75 -0
  108. package/dist/chunk-SGAFPNMA.js.map +1 -0
  109. package/dist/{chunk-OD7P4L3D.js → chunk-SOKCLVM4.js} +3 -3
  110. package/dist/{chunk-OD7P4L3D.js.map → chunk-SOKCLVM4.js.map} +1 -1
  111. package/dist/chunk-TL42NKTH.js +3 -0
  112. package/dist/chunk-TL42NKTH.js.map +1 -0
  113. package/dist/chunk-U6ZCO2PS.js +2964 -0
  114. package/dist/chunk-U6ZCO2PS.js.map +1 -0
  115. package/dist/chunk-VSXNROYH.js +16 -0
  116. package/dist/chunk-VSXNROYH.js.map +1 -0
  117. package/dist/chunk-WPFZCYZL.js +619 -0
  118. package/dist/chunk-WPFZCYZL.js.map +1 -0
  119. package/dist/chunk-XFTNIBDW.js +23 -0
  120. package/dist/chunk-XFTNIBDW.js.map +1 -0
  121. package/dist/chunk-Y66JDL6I.js +1020 -0
  122. package/dist/chunk-Y66JDL6I.js.map +1 -0
  123. package/dist/chunk-YEHIBPIX.js +137 -0
  124. package/dist/chunk-YEHIBPIX.js.map +1 -0
  125. package/dist/chunk-YKPPCV2Z.js +53 -0
  126. package/dist/chunk-YKPPCV2Z.js.map +1 -0
  127. package/dist/components/chat/markdown.d.ts.map +1 -1
  128. package/dist/components/plugins/PluginSettingsPanel.d.ts.map +1 -1
  129. package/dist/components/settings/SettingsPage.d.ts.map +1 -1
  130. package/dist/connect-XKQJOWR7.js +18 -0
  131. package/dist/connect-XKQJOWR7.js.map +1 -0
  132. package/dist/crud/CrudDetailPage.d.ts.map +1 -1
  133. package/dist/crud/CrudListView.d.ts.map +1 -1
  134. package/dist/crud/CrudPage.d.ts.map +1 -1
  135. package/dist/crud/RelatedListTab.d.ts.map +1 -1
  136. package/dist/crud/archetypes/EntityLink.d.ts +1 -1
  137. package/dist/crud/archetypes/EntityLink.d.ts.map +1 -1
  138. package/dist/crud/record-chrome.d.ts.map +1 -1
  139. package/dist/entity-routes-PGU7EHAD.js +4 -0
  140. package/dist/{entity-routes-LXOBW5IB.js.map → entity-routes-PGU7EHAD.js.map} +1 -1
  141. package/dist/hooks/useModuleNavigation.d.ts.map +1 -1
  142. package/dist/impersonation/ImpersonateDialog.d.ts.map +1 -1
  143. package/dist/impersonation/session.d.ts.map +1 -1
  144. package/dist/index.d.ts +2 -2
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +11951 -33576
  147. package/dist/index.js.map +1 -1
  148. package/dist/lib/attention.d.ts +6 -0
  149. package/dist/lib/attention.d.ts.map +1 -1
  150. package/dist/lib/entity-routes.d.ts.map +1 -1
  151. package/dist/org/index.js +4 -2
  152. package/dist/plugins/PluginRegistryManager.d.ts.map +1 -1
  153. package/dist/settings/MessageTemplateRow.d.ts.map +1 -1
  154. package/dist/timeline/PersonTimeline.d.ts.map +1 -1
  155. package/dist/timeline/TimelineList.d.ts.map +1 -1
  156. package/dist/units/UnitRailPage.d.ts.map +1 -1
  157. package/dist/units/useUnitFilter.d.ts.map +1 -1
  158. package/package.json +5 -5
  159. package/dist/PersonTimeline-X7JTPUWJ.js +0 -3
  160. package/dist/ScheduleEditor-L2UJXKMY.js +0 -6
  161. package/dist/SubscriptionPage-IDVEFLZ5.js +0 -8
  162. package/dist/chunk-3YP7KW47.js.map +0 -1
  163. package/dist/chunk-E4MESMNR.js.map +0 -1
  164. package/dist/chunk-IXSY4GPK.js.map +0 -1
  165. package/dist/chunk-JOBRLBIQ.js.map +0 -1
  166. package/dist/chunk-KPYRTOCK.js.map +0 -1
  167. package/dist/chunk-OQARLKZN.js.map +0 -1
  168. package/dist/chunk-P5UIGQFY.js.map +0 -1
  169. package/dist/chunk-P6XUDT2P.js.map +0 -1
  170. package/dist/chunk-VX3WJLKK.js.map +0 -1
  171. package/dist/entity-routes-LXOBW5IB.js +0 -4
@@ -0,0 +1,129 @@
1
+ import { useSettingsUnitScope, UnitScopePicker } from './chunk-2H46WDG5.js';
2
+ import { listFieldRules, fieldRuleReference, setFieldRule } from './chunk-FK6RHGI7.js';
3
+ import { toast } from './chunk-3OUD4XBK.js';
4
+ import './chunk-TL42NKTH.js';
5
+ import './chunk-5D5QLMOQ.js';
6
+ import { usePermissionsStore } from './chunk-UQ2NTFQC.js';
7
+ import './chunk-KJELMULA.js';
8
+ import './chunk-JRZJBMOY.js';
9
+ import { useOrganizationStore } from './chunk-YKPPCV2Z.js';
10
+ import * as React from 'react';
11
+ import { getAllEntities, tl } from '@fayz-ai/core';
12
+ import { usePublishPageInfo, Skeleton, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Card, Checkbox, SegmentedControl } from '@fayz-ai/ui';
13
+ import { jsx, jsxs } from 'react/jsx-runtime';
14
+
15
+ var MASKABLE_PERSON_FIELDS = [
16
+ ["email", "E-mail", "E-mail"],
17
+ ["phone", "Phone", "Telefone"],
18
+ ["document_number", "Document (CPF)", "Documento (CPF)"]
19
+ ];
20
+ function FieldRulesEditor({ mode, entityKey: fixedEntity }) {
21
+ const tenantId = useOrganizationStore((s) => s.currentOrg?.id);
22
+ const profiles = usePermissionsStore((s) => s.profiles);
23
+ const [rows, setRows] = React.useState(null);
24
+ const [context, setContext] = React.useState("main_form");
25
+ const roles = profiles.filter((p) => p.id !== "owner");
26
+ const [role, setRole] = React.useState("");
27
+ const activeRole = role || roles[0]?.id || "";
28
+ const entities = React.useMemo(
29
+ () => getAllEntities().filter((e) => e.fields?.length).sort((a, b) => Number(!a.entityKey.startsWith("person:")) - Number(!b.entityKey.startsWith("person:")) || a.labelPlural.localeCompare(b.labelPlural, "pt-BR")),
30
+ []
31
+ );
32
+ const [entityKey, setEntityKey] = React.useState(fixedEntity ?? "");
33
+ const entity = entities.find((e) => e.entityKey === entityKey) ?? entities.find((e) => e.entityKey === "person:customer") ?? entities[0];
34
+ const { unitId } = useSettingsUnitScope();
35
+ const reload = React.useCallback(() => {
36
+ if (!tenantId) return;
37
+ listFieldRules(tenantId, unitId).then(setRows).catch((e) => {
38
+ setRows([]);
39
+ toast.error(String(e?.message ?? e));
40
+ });
41
+ }, [tenantId, unitId]);
42
+ React.useEffect(reload, [reload]);
43
+ usePublishPageInfo(mode === "hidden" ? tl(
44
+ "Fields hidden here come back blank for this profile everywhere, including exports and the assistant.",
45
+ "O campo oculto aqui chega em branco para este perfil em todo lugar, inclusive exporta\xE7\xE3o e assistente."
46
+ ) : tl(
47
+ "Which fields each form hides, shows or requires, for everyone.",
48
+ "Quais campos cada formul\xE1rio oculta, exibe ou exige, para todo mundo."
49
+ ));
50
+ if (!tenantId || rows === null) return /* @__PURE__ */ jsx(Skeleton, { className: "h-64 w-full rounded-card" });
51
+ const write = async (rule, state) => {
52
+ try {
53
+ await setFieldRule(tenantId, rule, state, unitId);
54
+ reload();
55
+ } catch (e) {
56
+ toast.error(tl("Not saved", "N\xE3o salvou"), { description: e?.message });
57
+ }
58
+ };
59
+ if (mode === "hidden") {
60
+ const hidden = new Set(rows.filter((r) => r.context === "person" && r.reference === "person" && r.role_key === activeRole && r.state === "hidden").map((r) => r.field_key));
61
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
62
+ /* @__PURE__ */ jsx(UnitScopePicker, {}),
63
+ /* @__PURE__ */ jsxs(Select, { value: activeRole, onValueChange: setRole, children: [
64
+ /* @__PURE__ */ jsx(SelectTrigger, { className: "h-9 w-auto min-w-48", "aria-label": tl("Profile", "Perfil"), children: /* @__PURE__ */ jsx(SelectValue, {}) }),
65
+ /* @__PURE__ */ jsx(SelectContent, { children: roles.map((p) => /* @__PURE__ */ jsx(SelectItem, { value: p.id, children: p.name }, p.id)) })
66
+ ] }),
67
+ /* @__PURE__ */ jsx(Card, { className: "divide-y", children: MASKABLE_PERSON_FIELDS.map(([key, en, pt]) => /* @__PURE__ */ jsxs("label", { className: "flex items-center justify-between gap-4 px-4 py-3 text-sm", children: [
68
+ /* @__PURE__ */ jsx("span", { children: tl(en, pt) }),
69
+ /* @__PURE__ */ jsx(
70
+ Checkbox,
71
+ {
72
+ checked: hidden.has(key),
73
+ onChange: (checked) => write({ context: "person", reference: "person", field_key: key, role_key: activeRole }, checked ? "hidden" : null)
74
+ }
75
+ )
76
+ ] }, key)) })
77
+ ] });
78
+ }
79
+ if (!entity) return /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: tl("No registry to configure yet.", "Nenhum cadastro para configurar ainda.") });
80
+ const reference = fieldRuleReference(entity.entityKey);
81
+ const stateOf = (fieldKey) => {
82
+ const row = rows.find((r) => r.context === context && r.reference === reference && r.role_key === null && r.field_key === fieldKey);
83
+ return row?.state ?? "default";
84
+ };
85
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
86
+ /* @__PURE__ */ jsx(UnitScopePicker, {}),
87
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [
88
+ !fixedEntity && /* @__PURE__ */ jsxs(Select, { value: entity.entityKey, onValueChange: setEntityKey, children: [
89
+ /* @__PURE__ */ jsx(SelectTrigger, { className: "h-9 w-auto min-w-48", "aria-label": tl("Registry", "Cadastro"), children: /* @__PURE__ */ jsx(SelectValue, {}) }),
90
+ /* @__PURE__ */ jsx(SelectContent, { children: entities.map((e) => /* @__PURE__ */ jsx(SelectItem, { value: e.entityKey, children: e.labelPlural }, e.entityKey)) })
91
+ ] }),
92
+ /* @__PURE__ */ jsx(
93
+ SegmentedControl,
94
+ {
95
+ value: context,
96
+ onChange: (v) => setContext(v),
97
+ options: [
98
+ { value: "main_form", label: tl("Main form", "Cadastro principal") },
99
+ { value: "quick_search", label: tl("Quick add", "Busca r\xE1pida") }
100
+ ]
101
+ }
102
+ )
103
+ ] }),
104
+ /* @__PURE__ */ jsx(Card, { className: "divide-y", children: entity.fields.filter((f) => f.showInForm !== false && f.key !== "id").map((field) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4 px-4 py-2.5", children: [
105
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-sm", children: field.label }),
106
+ /* @__PURE__ */ jsx(
107
+ SegmentedControl,
108
+ {
109
+ size: "sm",
110
+ value: stateOf(field.key),
111
+ onChange: (v) => write(
112
+ { context, reference, field_key: field.key, role_key: null },
113
+ v === "default" ? null : v
114
+ ),
115
+ options: [
116
+ { value: "default", label: unitId ? tl("Network", "Da rede") : tl("Default", "Padr\xE3o") },
117
+ { value: "hidden", label: tl("Hide", "Ocultar") },
118
+ { value: "visible", label: tl("Show", "Exibir") },
119
+ { value: "required", label: tl("Required", "Obrigat\xF3rio") }
120
+ ]
121
+ }
122
+ )
123
+ ] }, field.key)) })
124
+ ] });
125
+ }
126
+
127
+ export { FieldRulesEditor };
128
+ //# sourceMappingURL=FieldRulesEditor-YGIPKI5T.js.map
129
+ //# sourceMappingURL=FieldRulesEditor-YGIPKI5T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/settings/FieldRulesEditor.tsx"],"names":[],"mappings":"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","file":"FieldRulesEditor-YGIPKI5T.js","sourcesContent":["import * as React from 'react'\nimport { tl, getAllEntities } from '@fayz-ai/core'\nimport { Card, SegmentedControl, Skeleton, usePublishPageInfo, Checkbox, Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@fayz-ai/ui'\nimport { useOrganizationStore } from '../../stores/organization.store'\nimport { usePermissionsStore } from '../../permissions/store'\nimport {\n fieldRuleReference, listFieldRules, setFieldRule,\n type FieldRuleContext, type FieldRuleRow, type FieldRuleState,\n} from '../../lib/field-rules-db'\nimport { toast } from '../notifications/ToastProvider'\nimport { UnitScopePicker, useSettingsUnitScope } from '../../settings/UnitScopePicker'\n\n// Fields the database masks for people (v_people); \"Ocultação de dados\" writes\n// these, by column name, so the hiding holds on the server and not only on screen.\nconst MASKABLE_PERSON_FIELDS: Array<[string, string, string]> = [\n ['email', 'E-mail', 'E-mail'],\n ['phone', 'Phone', 'Telefone'],\n ['document_number', 'Document (CPF)', 'Documento (CPF)'],\n]\n\ntype Choice = 'default' | FieldRuleState\n\n/**\n * The account's field rules in one store (`public.field_rules`), as V1 splits\n * them: \"Campos obrigatórios\" (per form, everyone) and \"Ocultação de dados\"\n * (per access profile).\n */\nexport function FieldRulesEditor({ mode, entityKey: fixedEntity }: {\n mode: 'required' | 'hidden'\n /** Opened from a registry's own settings line: that registry, no picker. */\n entityKey?: string\n}) {\n const tenantId = useOrganizationStore((s) => s.currentOrg?.id)\n const profiles = usePermissionsStore((s) => s.profiles)\n const [rows, setRows] = React.useState<FieldRuleRow[] | null>(null)\n const [context, setContext] = React.useState<FieldRuleContext>('main_form')\n const roles = profiles.filter((p) => p.id !== 'owner')\n const [role, setRole] = React.useState<string>('')\n const activeRole = role || roles[0]?.id || ''\n\n // Every CRUD entity the app registered (createCrudPage), people first.\n const entities = React.useMemo(\n () => getAllEntities()\n .filter((e) => e.fields?.length)\n .sort((a, b) => Number(!a.entityKey.startsWith('person:')) - Number(!b.entityKey.startsWith('person:'))\n || a.labelPlural.localeCompare(b.labelPlural, 'pt-BR')),\n [],\n )\n const [entityKey, setEntityKey] = React.useState<string>(fixedEntity ?? '')\n const entity = entities.find((e) => e.entityKey === entityKey) ?? entities.find((e) => e.entityKey === 'person:customer') ?? entities[0]\n\n const { unitId } = useSettingsUnitScope()\n const reload = React.useCallback(() => {\n if (!tenantId) return\n listFieldRules(tenantId, unitId).then(setRows).catch((e) => { setRows([]); toast.error(String(e?.message ?? e)) })\n }, [tenantId, unitId])\n React.useEffect(reload, [reload])\n\n usePublishPageInfo(mode === 'hidden'\n ? tl('Fields hidden here come back blank for this profile everywhere, including exports and the assistant.',\n 'O campo oculto aqui chega em branco para este perfil em todo lugar, inclusive exportação e assistente.')\n : tl('Which fields each form hides, shows or requires, for everyone.',\n 'Quais campos cada formulário oculta, exibe ou exige, para todo mundo.'))\n\n if (!tenantId || rows === null) return <Skeleton className=\"h-64 w-full rounded-card\" />\n\n const write = async (rule: Parameters<typeof setFieldRule>[1], state: FieldRuleState | null) => {\n try {\n await setFieldRule(tenantId, rule, state, unitId)\n reload()\n } catch (e: any) {\n toast.error(tl('Not saved', 'Não salvou'), { description: e?.message })\n }\n }\n\n if (mode === 'hidden') {\n const hidden = new Set(rows.filter((r) => r.context === 'person' && r.reference === 'person' && r.role_key === activeRole && r.state === 'hidden').map((r) => r.field_key))\n return (\n <div className=\"space-y-4\">\n <UnitScopePicker />\n <Select value={activeRole} onValueChange={setRole}>\n <SelectTrigger className=\"h-9 w-auto min-w-48\" aria-label={tl('Profile', 'Perfil')}><SelectValue /></SelectTrigger>\n <SelectContent>\n {roles.map((p) => <SelectItem key={p.id} value={p.id}>{p.name}</SelectItem>)}\n </SelectContent>\n </Select>\n <Card className=\"divide-y\">\n {MASKABLE_PERSON_FIELDS.map(([key, en, pt]) => (\n <label key={key} className=\"flex items-center justify-between gap-4 px-4 py-3 text-sm\">\n <span>{tl(en, pt)}</span>\n <Checkbox checked={hidden.has(key)}\n onChange={(checked) => write({ context: 'person', reference: 'person', field_key: key, role_key: activeRole }, checked ? 'hidden' : null)} />\n </label>\n ))}\n </Card>\n </div>\n )\n }\n\n if (!entity) return <p className=\"text-sm text-muted-foreground\">{tl('No registry to configure yet.', 'Nenhum cadastro para configurar ainda.')}</p>\n const reference = fieldRuleReference(entity.entityKey)\n const stateOf = (fieldKey: string): Choice => {\n const row = rows.find((r) => r.context === context && r.reference === reference && r.role_key === null && r.field_key === fieldKey)\n return row?.state ?? 'default'\n }\n\n return (\n <div className=\"space-y-4\">\n <UnitScopePicker />\n <div className=\"flex flex-wrap items-center gap-3\">\n {!fixedEntity && (\n <Select value={entity.entityKey} onValueChange={setEntityKey}>\n <SelectTrigger className=\"h-9 w-auto min-w-48\" aria-label={tl('Registry', 'Cadastro')}><SelectValue /></SelectTrigger>\n <SelectContent>\n {entities.map((e) => <SelectItem key={e.entityKey} value={e.entityKey}>{e.labelPlural}</SelectItem>)}\n </SelectContent>\n </Select>\n )}\n <SegmentedControl\n value={context}\n onChange={(v) => setContext(v as FieldRuleContext)}\n options={[\n { value: 'main_form', label: tl('Main form', 'Cadastro principal') },\n { value: 'quick_search', label: tl('Quick add', 'Busca rápida') },\n ]}\n />\n </div>\n <Card className=\"divide-y\">\n {entity.fields.filter((f) => f.showInForm !== false && f.key !== 'id').map((field) => (\n <div key={field.key} className=\"flex items-center justify-between gap-4 px-4 py-2.5\">\n <span className=\"min-w-0 truncate text-sm\">{field.label}</span>\n <SegmentedControl\n size=\"sm\"\n value={stateOf(field.key)}\n onChange={(v) => write(\n { context, reference, field_key: field.key, role_key: null },\n v === 'default' ? null : (v as FieldRuleState),\n )}\n options={[\n { value: 'default', label: unitId ? tl('Network', 'Da rede') : tl('Default', 'Padrão') },\n { value: 'hidden', label: tl('Hide', 'Ocultar') },\n { value: 'visible', label: tl('Show', 'Exibir') },\n { value: 'required', label: tl('Required', 'Obrigatório') },\n ]}\n />\n </div>\n ))}\n </Card>\n </div>\n )\n}\n"]}
@@ -0,0 +1,12 @@
1
+ export { GettingStartedWidget } from './chunk-Y66JDL6I.js';
2
+ import './chunk-WPFZCYZL.js';
3
+ import './chunk-KLO7DKXX.js';
4
+ import './chunk-TL42NKTH.js';
5
+ import './chunk-5D5QLMOQ.js';
6
+ import './chunk-UQ2NTFQC.js';
7
+ import './chunk-KJELMULA.js';
8
+ import './chunk-JRZJBMOY.js';
9
+ import './chunk-YKPPCV2Z.js';
10
+ import './chunk-QD7BMUDF.js';
11
+ //# sourceMappingURL=GettingStartedWidget-HMIJ3Y24.js.map
12
+ //# sourceMappingURL=GettingStartedWidget-HMIJ3Y24.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"GettingStartedWidget-HMIJ3Y24.js"}