@carlonicora/nextjs-jsonapi 1.112.0 → 1.112.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 (26) hide show
  1. package/dist/scripts/generate-web-module/__tests__/selector.spec.js +19 -14
  2. package/dist/scripts/generate-web-module/__tests__/selector.spec.js.map +1 -1
  3. package/dist/scripts/generate-web-module/templates/components/content.template.js +7 -7
  4. package/dist/scripts/generate-web-module/templates/components/content.template.js.map +1 -1
  5. package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts +4 -0
  6. package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts.map +1 -1
  7. package/dist/scripts/generate-web-module/templates/components/selector.template.js +55 -48
  8. package/dist/scripts/generate-web-module/templates/components/selector.template.js.map +1 -1
  9. package/dist/scripts/generate-web-module/templates/module.template.js +1 -1
  10. package/dist/scripts/generate-web-module/templates/module.template.js.map +1 -1
  11. package/dist/scripts/generate-web-module/templates/table-hook.template.js +1 -1
  12. package/dist/scripts/generate-web-module/templates/table-hook.template.js.map +1 -1
  13. package/dist/scripts/generate-web-module/transformers/i18n-generator.d.ts.map +1 -1
  14. package/dist/scripts/generate-web-module/transformers/i18n-generator.js +1 -0
  15. package/dist/scripts/generate-web-module/transformers/i18n-generator.js.map +1 -1
  16. package/dist/scripts/generate-web-module/utils/i18n-updater.d.ts.map +1 -1
  17. package/dist/scripts/generate-web-module/utils/i18n-updater.js +25 -26
  18. package/dist/scripts/generate-web-module/utils/i18n-updater.js.map +1 -1
  19. package/package.json +1 -1
  20. package/scripts/generate-web-module/__tests__/selector.spec.ts +19 -14
  21. package/scripts/generate-web-module/templates/components/content.template.ts +7 -7
  22. package/scripts/generate-web-module/templates/components/selector.template.ts +55 -48
  23. package/scripts/generate-web-module/templates/module.template.ts +1 -1
  24. package/scripts/generate-web-module/templates/table-hook.template.ts +1 -1
  25. package/scripts/generate-web-module/transformers/i18n-generator.ts +1 -0
  26. package/scripts/generate-web-module/utils/i18n-updater.ts +25 -30
@@ -3,23 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const vitest_1 = require("vitest");
4
4
  const fixtures_1 = require("./fixtures");
5
5
  const selector_template_1 = require("../templates/components/selector.template");
6
- (0, vitest_1.describe)("selector template — combobox style", () => {
7
- (0, vitest_1.it)("uses Button combobox trigger + Command primitives + Loader2", () => {
6
+ (0, vitest_1.describe)("selector template — UserSelector-style UI", () => {
7
+ (0, vitest_1.it)("uses the input-styled trigger + custom search Input (mirrors UserSelector)", () => {
8
8
  const out = (0, selector_template_1.generateSelectorTemplate)((0, fixtures_1.makeFrontendData)());
9
- (0, vitest_1.expect)(out).toContain('role="combobox"');
10
- (0, vitest_1.expect)(out).toContain("ChevronsUpDown");
11
- (0, vitest_1.expect)(out).toContain("CommandInput");
12
- (0, vitest_1.expect)(out).toContain("CommandEmpty");
13
- (0, vitest_1.expect)(out).toContain("CommandGroup");
14
- (0, vitest_1.expect)(out).toContain("Loader2");
15
- (0, vitest_1.expect)(out).toContain("w-(--radix-popover-trigger-width) p-0");
9
+ (0, vitest_1.expect)(out).toContain("CircleX");
10
+ (0, vitest_1.expect)(out).toContain("SearchIcon");
11
+ (0, vitest_1.expect)(out).toContain("RefreshCwIcon");
12
+ (0, vitest_1.expect)(out).toContain("bg-input/20");
13
+ (0, vitest_1.expect)(out).toContain("w-(--anchor-width)");
14
+ (0, vitest_1.expect)(out).toContain("ui.search.placeholder");
15
+ // custom <Input> search, not the cmdk CommandInput
16
+ (0, vitest_1.expect)(out).toContain("<Input");
17
+ (0, vitest_1.expect)(out).toContain("CommandList");
18
+ (0, vitest_1.expect)(out).toContain("CommandItem");
16
19
  });
17
- (0, vitest_1.it)("drops the legacy bespoke styling", () => {
20
+ (0, vitest_1.it)("drops the legacy Button-combobox styling", () => {
18
21
  const out = (0, selector_template_1.generateSelectorTemplate)((0, fixtures_1.makeFrontendData)());
19
- (0, vitest_1.expect)(out).not.toContain("CircleX");
20
- (0, vitest_1.expect)(out).not.toContain("RefreshCwIcon");
21
- (0, vitest_1.expect)(out).not.toContain("SearchIcon");
22
- (0, vitest_1.expect)(out).not.toContain("bg-input/20");
22
+ (0, vitest_1.expect)(out).not.toContain('role="combobox"');
23
+ (0, vitest_1.expect)(out).not.toContain("ChevronsUpDown");
24
+ (0, vitest_1.expect)(out).not.toContain("CommandInput");
25
+ (0, vitest_1.expect)(out).not.toContain("CommandEmpty");
26
+ (0, vitest_1.expect)(out).not.toContain("CommandGroup");
27
+ (0, vitest_1.expect)(out).not.toContain("w-(--radix-popover-trigger-width)");
23
28
  });
24
29
  });
25
30
  //# sourceMappingURL=selector.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"selector.spec.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/__tests__/selector.spec.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,yCAA8C;AAC9C,iFAAqF;AAErF,IAAA,iBAAQ,EAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,GAAG,GAAG,IAAA,4CAAwB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC;QACzD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACtC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,GAAG,GAAG,IAAA,4CAAwB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC;QACzD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"selector.spec.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/__tests__/selector.spec.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,yCAA8C;AAC9C,iFAAqF;AAErF,IAAA,iBAAQ,EAAC,2CAA2C,EAAE,GAAG,EAAE;IACzD,IAAA,WAAE,EAAC,4EAA4E,EAAE,GAAG,EAAE;QACpF,MAAM,GAAG,GAAG,IAAA,4CAAwB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC;QACzD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACpC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAC/C,mDAAmD;QACnD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,GAAG,GAAG,IAAA,4CAAwB,EAAC,IAAA,2BAAgB,GAAE,CAAC,CAAC;QACzD,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC7C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -49,7 +49,7 @@ export function ${names.pascalCase}Content({ ${camel} }: ${names.pascalCase}Cont
49
49
  const richSections = richFields
50
50
  .map((field) => ` <div className="flex flex-col gap-y-3">
51
51
  <h3 className="text-muted-foreground text-xs font-semibold tracking-wider uppercase">
52
- {t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
52
+ {t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.label\`)}
53
53
  </h3>
54
54
  <Card className="flex w-full flex-col p-4">
55
55
  <BlockNoteEditorContainer id={${camel}.id} type="${camel}" initialContent={${camel}.${field.name}} />
@@ -59,7 +59,7 @@ export function ${names.pascalCase}Content({ ${camel} }: ${names.pascalCase}Cont
59
59
  const attributesBlock = hasAttributes
60
60
  ? `\n <div className="flex flex-col gap-y-3">
61
61
  <h3 className="text-muted-foreground text-xs font-semibold tracking-wider uppercase">
62
- {t(\`features.${names.camelCase}.sections.details\`)}
62
+ {t(\`features.${names.camelCase.toLowerCase()}.sections.details\`)}
63
63
  </h3>
64
64
  <div className="grid grid-cols-1 gap-4 md:grid-cols-3">
65
65
  ${attributeElements}
@@ -104,7 +104,7 @@ export function ${names.pascalCase}Content({ ${camel} }: ${names.pascalCase}Cont
104
104
  <div className="flex flex-col gap-y-8">
105
105
  <div className="flex flex-col gap-y-3">
106
106
  <h3 className="text-muted-foreground text-xs font-semibold tracking-wider uppercase">
107
- {t(\`features.${names.camelCase}.sections.details\`)}
107
+ {t(\`features.${names.camelCase.toLowerCase()}.sections.details\`)}
108
108
  </h3>
109
109
  <div className="grid grid-cols-1 gap-4 md:grid-cols-3">
110
110
  ${attributeElements}
@@ -131,19 +131,19 @@ function generateAttributeElements(data) {
131
131
  displayableFields.forEach((field) => {
132
132
  if (field.type === "string") {
133
133
  elements.push(` <AttributeElement
134
- title={t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
134
+ title={t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.label\`)}
135
135
  value={${camel}.${field.name}}
136
136
  />`);
137
137
  }
138
138
  else if (field.type === "boolean") {
139
139
  elements.push(` <AttributeElement
140
- title={t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
140
+ title={t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.label\`)}
141
141
  value={${camel}.${field.name} ? t(\`generic.yes\`) : t(\`generic.no\`)}
142
142
  />`);
143
143
  }
144
144
  else if (field.type === "number") {
145
145
  elements.push(` <AttributeElement
146
- title={t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
146
+ title={t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.label\`)}
147
147
  value={${camel}.${field.name}?.toString()}
148
148
  />`);
149
149
  }
@@ -157,7 +157,7 @@ function generateAttributeElements(data) {
157
157
  const propName = (0, name_transformer_1.toCamelCase)(rel.alias || rel.variant || rel.name);
158
158
  elements.push(` {${camel}.${propName} && (
159
159
  <AttributeElement
160
- title={t(\`generic.relationships.${propName}.label\`)}
160
+ title={t(\`features.${names.camelCase.toLowerCase()}.relationships.${propName.toLowerCase()}.label\`)}
161
161
  value={${camel}.${propName}.${displayProp}}
162
162
  />
163
163
  )}`);
@@ -1 +1 @@
1
- {"version":3,"file":"content.template.js","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/content.template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content.template.js","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/content.template.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,10 @@
2
2
  * Selector Template
3
3
  *
4
4
  * Generates {Module}Selector.tsx searchable combobox component.
5
+ *
6
+ * UI mirrors the framework's UserSelector (packages/.../features/user/components/forms/UserSelector.tsx):
7
+ * an input-styled trigger, a CircleX clear affordance, an `--anchor-width` popover, and a custom
8
+ * search Input with a SearchIcon + spinner/clear — minus the user-specific avatar.
5
9
  */
6
10
  import { FrontendTemplateData } from "../../types/template-data.interface";
7
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"selector.template.d.ts","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/selector.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAwK3E"}
1
+ {"version":3,"file":"selector.template.d.ts","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/selector.template.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA2K3E"}
@@ -3,6 +3,10 @@
3
3
  * Selector Template
4
4
  *
5
5
  * Generates {Module}Selector.tsx searchable combobox component.
6
+ *
7
+ * UI mirrors the framework's UserSelector (packages/.../features/user/components/forms/UserSelector.tsx):
8
+ * an input-styled trigger, a CircleX clear affordance, an `--anchor-width` popover, and a custom
9
+ * search Input with a SearchIcon + spinner/clear — minus the user-specific avatar.
6
10
  */
7
11
  Object.defineProperty(exports, "__esModule", { value: true });
8
12
  exports.generateSelectorTemplate = generateSelectorTemplate;
@@ -20,25 +24,21 @@ function generateSelectorTemplate(data) {
20
24
  return `"use client";
21
25
 
22
26
  import {
23
- Button,
24
27
  Command,
25
- CommandEmpty,
26
- CommandGroup,
27
- CommandInput,
28
28
  CommandItem,
29
29
  CommandList,
30
30
  FormFieldWrapper,
31
+ Input,
31
32
  Popover,
32
33
  PopoverContent,
33
34
  PopoverTrigger,
34
35
  } from "@carlonicora/nextjs-jsonapi/components";
35
36
  import { ${names.pascalCase}Interface } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";
36
37
  import { ${names.pascalCase}Service } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Service";
37
- import { DataListRetriever, useDataListRetriever } from "@carlonicora/nextjs-jsonapi/client";
38
- import { useDebounce } from "@carlonicora/nextjs-jsonapi/client";
38
+ import { DataListRetriever, useDataListRetriever, useDebounce } from "@carlonicora/nextjs-jsonapi/client";
39
39
  import { Modules } from "@carlonicora/nextjs-jsonapi/core";
40
40
 
41
- import { ChevronsUpDown, Loader2, XIcon } from "lucide-react";
41
+ import { CircleX, RefreshCwIcon, SearchIcon, XIcon } from "lucide-react";
42
42
  import { useTranslations } from "next-intl";
43
43
  import { useCallback, useEffect, useRef, useState } from "react";
44
44
 
@@ -120,55 +120,62 @@ export default function ${names.pascalCase}Selector({
120
120
  <Popover open={open} onOpenChange={setOpen} modal={true}>
121
121
  <div className="flex w-full flex-row items-center justify-between">
122
122
  <PopoverTrigger className="w-full">
123
- <Button
124
- variant="outline"
125
- role="combobox"
126
- aria-expanded={open}
127
- className="h-auto min-h-10 w-full justify-between px-3 py-2"
128
- >
129
- <span className={field.value ? "" : "text-muted-foreground"}>
130
- {field.value?.name ?? placeholder ?? t(\`generic.search.placeholder\`, { type: t(\`entities.${i18nKey}\`, { count: 1 }) })}
131
- </span>
132
- <ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
133
- </Button>
123
+ <div className="flex w-full flex-row items-center justify-start rounded-md">
124
+ {field.value ? (
125
+ <div className="bg-input/20 dark:bg-input/30 border-input flex h-7 w-full flex-row items-center justify-start rounded-md border px-2 py-0.5 text-sm md:text-xs/relaxed">
126
+ <span>{field.value?.name ?? ""}</span>
127
+ </div>
128
+ ) : (
129
+ <div className="bg-input/20 dark:bg-input/30 border-input text-muted-foreground flex h-7 w-full flex-row items-center justify-start rounded-md border px-2 py-0.5 text-sm md:text-xs/relaxed">
130
+ {placeholder ?? t(\`ui.search.placeholder\`, { type: t(\`entities.${i18nKey}\`, { count: 1 }) })}
131
+ </div>
132
+ )}
133
+ </div>
134
134
  </PopoverTrigger>
135
135
  {field.value && (
136
- <XIcon
137
- className="text-muted-foreground hover:text-destructive ml-2 h-5 w-5 cursor-pointer"
136
+ <CircleX
137
+ className="text-muted hover:text-destructive ml-2 h-4 w-4 shrink-0 cursor-pointer"
138
138
  onClick={() => set${names.pascalCase}()}
139
139
  />
140
140
  )}
141
141
  </div>
142
- <PopoverContent className="w-(--radix-popover-trigger-width) p-0" align="start">
142
+ <PopoverContent align="start" className="w-(--anchor-width)">
143
143
  <Command shouldFilter={false}>
144
- <CommandInput
145
- placeholder={t(\`generic.search.placeholder\`, { type: t(\`entities.${i18nKey}\`, { count: 1 }) })}
146
- value={searchTerm}
147
- onValueChange={setSearchTerm}
148
- />
149
- <CommandList>
150
- {isSearching && (
151
- <div className="flex items-center justify-center py-6">
152
- <Loader2 className="text-muted-foreground h-4 w-4 animate-spin" />
153
- </div>
154
- )}
155
- {!isSearching && data.data && data.data.length === 0 && (
156
- <CommandEmpty>{t(\`generic.search.no_results\`)}</CommandEmpty>
157
- )}
158
- {!isSearching && data.data && data.data.length > 0 && (
159
- <CommandGroup>
160
- {(data.data as ${names.pascalCase}Interface[]).map((${names.camelCase}: ${names.pascalCase}Interface) => (
161
- <CommandItem
162
- key={${names.camelCase}.id}
163
- value={${names.camelCase}.id}
164
- onSelect={() => set${names.pascalCase}(${names.camelCase})}
165
- className="hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent cursor-pointer"
166
- >
167
- {${names.camelCase}.${displayProp}}
168
- </CommandItem>
169
- ))}
170
- </CommandGroup>
144
+ <div className="relative mb-2 w-full">
145
+ <SearchIcon className="text-muted-foreground absolute top-2.5 left-2.5 h-4 w-4" />
146
+ <Input
147
+ placeholder={t(\`ui.search.placeholder\`, { type: t(\`entities.${i18nKey}\`, { count: 1 }) })}
148
+ type="text"
149
+ className="w-full pr-8 pl-8"
150
+ onChange={(e) => setSearchTerm(e.target.value)}
151
+ value={searchTerm}
152
+ />
153
+ {isSearching ? (
154
+ <RefreshCwIcon className="text-muted-foreground absolute top-2.5 right-2.5 h-4 w-4 animate-spin" />
155
+ ) : searchTermRef.current ? (
156
+ <XIcon
157
+ className={\`absolute top-2.5 right-2.5 h-4 w-4 \${searchTermRef.current ? "cursor-pointer" : "text-muted-foreground"}\`}
158
+ onClick={() => {
159
+ setSearchTerm("");
160
+ search("");
161
+ }}
162
+ />
163
+ ) : (
164
+ <></>
171
165
  )}
166
+ </div>
167
+ <CommandList>
168
+ {data.data &&
169
+ data.data.length > 0 &&
170
+ (data.data as ${names.pascalCase}Interface[]).map((${names.camelCase}: ${names.pascalCase}Interface) => (
171
+ <CommandItem
172
+ className="cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent"
173
+ key={${names.camelCase}.id}
174
+ onSelect={() => set${names.pascalCase}(${names.camelCase})}
175
+ >
176
+ <span className="">{${names.camelCase}.${displayProp}}</span>
177
+ </CommandItem>
178
+ ))}
172
179
  </CommandList>
173
180
  </Command>
174
181
  </PopoverContent>
@@ -1 +1 @@
1
- {"version":3,"file":"selector.template.js","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/selector.template.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAUH,4DAwKC;AA9KD;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAC,IAA0B;IACjE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,YAAY,GAAG,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjD,OAAO;;;;;;;;;;;;;;;WAeE,KAAK,CAAC,UAAU,gCAAgC,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU;WAChH,KAAK,CAAC,UAAU,8BAA8B,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU;;;;;;;;;OASlH,KAAK,CAAC,UAAU;;;;;gBAKP,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU;;;;0BAI3B,KAAK,CAAC,UAAU;;;;;;;KAOrC,KAAK,CAAC,UAAU;;;;;;;;;;kCAUa,KAAK,CAAC,UAAU;;eAEnC,KAAK,CAAC,UAAU;;;sBAGT,KAAK,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;aAwBzB,KAAK,CAAC,UAAU,OAAO,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU;6BAC5C,KAAK,CAAC,SAAS;WACjC,KAAK,CAAC,SAAS;;;;;;8BAMI,KAAK,CAAC,SAAS,cAAc,KAAK,CAAC,SAAS,IAAI,WAAW;;;;;;;;;;;;;;;;;;;;;;kHAsByB,OAAO;;;;;;;;sCAQnF,KAAK,CAAC,UAAU;;;;;;;wFAOkC,OAAO;;;;;;;;;;;;;;;uCAexD,KAAK,CAAC,UAAU,qBAAqB,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU;;iCAE/E,KAAK,CAAC,SAAS;mCACb,KAAK,CAAC,SAAS;+CACH,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS;;;6BAGrD,KAAK,CAAC,SAAS,IAAI,WAAW;;;;;;;;;;;;;;CAc1D,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"selector.template.js","sourceRoot":"","sources":["../../../../../scripts/generate-web-module/templates/components/selector.template.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAUH,4DA2KC;AAjLD;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAC,IAA0B;IACjE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,YAAY,GAAG,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjD,OAAO;;;;;;;;;;;;WAYE,KAAK,CAAC,UAAU,gCAAgC,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU;WAChH,KAAK,CAAC,UAAU,8BAA8B,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU;;;;;;;;OAQlH,KAAK,CAAC,UAAU;;;;;gBAKP,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU;;;;0BAI3B,KAAK,CAAC,UAAU;;;;;;;KAOrC,KAAK,CAAC,UAAU;;;;;;;;;;kCAUa,KAAK,CAAC,UAAU;;eAEnC,KAAK,CAAC,UAAU;;;sBAGT,KAAK,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;aAwBzB,KAAK,CAAC,UAAU,OAAO,KAAK,CAAC,SAAS,MAAM,KAAK,CAAC,UAAU;6BAC5C,KAAK,CAAC,SAAS;WACjC,KAAK,CAAC,SAAS;;;;;;8BAMI,KAAK,CAAC,SAAS,cAAc,KAAK,CAAC,SAAS,IAAI,WAAW;;;;;;;;;;;;;;;;;;;;;;0FAsBC,OAAO;;;;;;;;sCAQ3D,KAAK,CAAC,UAAU;;;;;;;;;qFAS+B,OAAO;;;;;;;;;;;;;;;;;;;;;;;oCAuBxD,KAAK,CAAC,UAAU,qBAAqB,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,UAAU;;;+BAG9E,KAAK,CAAC,SAAS;6CACD,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,SAAS;;8CAElC,KAAK,CAAC,SAAS,IAAI,WAAW;;;;;;;;;;;;CAY3E,CAAC;AACF,CAAC"}
@@ -37,7 +37,7 @@ ${featureImport}
37
37
  export const ${names.pascalCase}Module = (factory: ModuleFactory) =>
38
38
  factory({
39
39
  pageUrl: "/${names.pluralKebab}",
40
- name: "${names.pluralCamel}",
40
+ name: "${endpoint}",
41
41
  model: ${names.pascalCase},
42
42
  moduleId: "${moduleId}",
43
43
  icon: ${field_mapping_types_1.DEFAULT_MODULE_ICON},
@@ -1 +1 @@
1
- {"version":3,"file":"module.template.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/templates/module.template.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAWH,wDA0CC;AAlDD,sEAAmE;AAEnE;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,IAA0B;IAC/D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAEnE,6BAA6B;IAC7B,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7E,4BAA4B;IAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzF,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,kBAAkB,GAAG,cAAc,CAAC,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC,EAAE,CAAC;IAExH,0DAA0D;IAC1D,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB;SACjD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,qCAAqC,GAAG,CAAC,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;SACvH,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,CAAC,KAAK,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAExF,OAAO,YAAY,KAAK,CAAC,UAAU,uBAAuB,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU;;;WAGjH,yCAAmB;EAC5B,aAAa;eACA,KAAK,CAAC,UAAU;;iBAEd,KAAK,CAAC,WAAW;aACrB,KAAK,CAAC,WAAW;aACjB,KAAK,CAAC,UAAU;iBACZ,QAAQ;YACb,yCAAmB;EAC7B,WAAW;;;oCAGuB,QAAQ,OAAO,mBAAmB,MAAM,kBAAkB,GAAG,qBAAqB;;;;;CAKrH,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAA0B;IACnD,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IACxC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,2CAA2C;IAC3C,IAAI,cAAc,EAAE,CAAC;QACnB,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,yDAAyD;IACzD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"module.template.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/templates/module.template.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAWH,wDA0CC;AAlDD,sEAAmE;AAEnE;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,IAA0B;IAC/D,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAEnE,6BAA6B;IAC7B,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,mBAAmB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7E,4BAA4B;IAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzF,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,kBAAkB,GAAG,cAAc,CAAC,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC,EAAE,CAAC;IAExH,0DAA0D;IAC1D,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB;SACjD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,qCAAqC,GAAG,CAAC,QAAQ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;SACvH,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,CAAC,KAAK,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAExF,OAAO,YAAY,KAAK,CAAC,UAAU,uBAAuB,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,UAAU;;;WAGjH,yCAAmB;EAC5B,aAAa;eACA,KAAK,CAAC,UAAU;;iBAEd,KAAK,CAAC,WAAW;aACrB,QAAQ;aACR,KAAK,CAAC,UAAU;iBACZ,QAAQ;YACb,yCAAmB;EAC7B,WAAW;;;oCAGuB,QAAQ,OAAO,mBAAmB,MAAM,kBAAkB,GAAG,qBAAqB;;;;;CAKrH,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAA0B;IACnD,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IACxC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,2CAA2C;IAC3C,IAAI,cAAc,EAAE,CAAC;QACnB,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,yDAAyD;IACzD,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -194,7 +194,7 @@ function generateFieldColumnEntries(data) {
194
194
  entries.push(` [${names.pascalCase}Fields.${key}]: () => ({
195
195
  id: "${key}",
196
196
  accessorKey: "${key}",
197
- header: t(\`generic.relationships.${key}.label\`),
197
+ header: t(\`features.${names.camelCase.toLowerCase()}.relationships.${key.toLowerCase()}.label\`),
198
198
  cell: ({ row }: { row: TableContent<${names.pascalCase}Interface> }) => {
199
199
  const ${names.camelCase}: ${names.pascalCase}Interface = row.original.jsonApiData;
200
200
  return <span>{${accessor}}</span>;
@@ -1 +1 @@
1
- {"version":3,"file":"table-hook.template.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/templates/table-hook.template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table-hook.template.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/templates/table-hook.template.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n-generator.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/transformers/i18n-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGnH;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,EAAE,EACvB,aAAa,EAAE,oBAAoB,EAAE,GACpC,UAAU,CAoDZ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAe3E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,MAAM,CAMR;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAsBrB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAa5E"}
1
+ {"version":3,"file":"i18n-generator.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/transformers/i18n-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGnH;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,EAAE,EACvB,aAAa,EAAE,oBAAoB,EAAE,GACpC,UAAU,CAoDZ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAgB3E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,MAAM,CAMR;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAsBrB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAa5E"}
@@ -85,6 +85,7 @@ function buildI18nMessages(i18nKeys) {
85
85
  [i18nKeys.moduleName]: {
86
86
  fields: i18nKeys.fields,
87
87
  relationships: i18nKeys.relationships,
88
+ sections: { details: "Details" },
88
89
  },
89
90
  },
90
91
  entities: {
@@ -1 +1 @@
1
- {"version":3,"file":"i18n-generator.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/transformers/i18n-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n-generator.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/transformers/i18n-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n-updater.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/utils/i18n-updater.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,oBAAoB,EAC1B,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAa,EACvB,MAAM,GAAE,OAAe,GACtB,gBAAgB,CA6FlB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAGtE"}
1
+ {"version":3,"file":"i18n-updater.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-web-module/utils/i18n-updater.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,oBAAoB,EAC1B,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAa,EACvB,MAAM,GAAE,OAAe,GACtB,gBAAgB,CAwFlB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAGtE"}
@@ -86,45 +86,44 @@ function updateI18n(data, webBasePath, language = "en", dryRun = false) {
86
86
  messages.entities[lowercasePluralKey] = moduleMessages.entities[entitiesKey];
87
87
  entitiesUpdated = true;
88
88
  }
89
- // Check if module already exists in features
90
- const featuresAlreadyExist = messages.features && messages.features[lowercaseModuleName];
91
- if (featuresAlreadyExist) {
92
- // Features exist, but we may have added entities
93
- if (entitiesUpdated) {
94
- if (dryRun) {
95
- return {
96
- success: true,
97
- message: `[DRY RUN] Module ${names.camelCase} exists, would add entities.${lowercasePluralKey}`,
98
- alreadyExists: true,
99
- };
89
+ // Additively merge this module's feature keys (fields / relationships /
90
+ // sections), FILLING missing keys without overwriting existing translations.
91
+ // Handles a brand-new module AND an existing-but-incomplete block (e.g. one
92
+ // first generated before its fields were known — which previously stayed an
93
+ // empty `{ fields: {}, relationships: {} }` skeleton forever).
94
+ const mergeMissing = (target, source) => {
95
+ const out = target && typeof target === "object" && !Array.isArray(target) ? { ...target } : {};
96
+ for (const k of Object.keys(source)) {
97
+ const v = source[k];
98
+ if (v && typeof v === "object" && !Array.isArray(v)) {
99
+ out[k] = mergeMissing(out[k], v);
100
+ }
101
+ else if (out[k] === undefined) {
102
+ out[k] = v;
100
103
  }
101
- // Write updated content (entities were added)
102
- const updatedContent = JSON.stringify(messages, null, 2);
103
- fs.writeFileSync(messagesPath, updatedContent, "utf-8");
104
- return {
105
- success: true,
106
- message: `Module ${names.camelCase} exists, added entities.${lowercasePluralKey}`,
107
- alreadyExists: true,
108
- };
109
104
  }
105
+ return out;
106
+ };
107
+ if (!messages.features) {
108
+ messages.features = {};
109
+ }
110
+ const moduleBlock = moduleMessages.features[i18nKeys.moduleName];
111
+ const beforeFeatures = JSON.stringify(messages.features[lowercaseModuleName] ?? null);
112
+ messages.features[lowercaseModuleName] = mergeMissing(messages.features[lowercaseModuleName], moduleBlock);
113
+ const featuresUpdated = JSON.stringify(messages.features[lowercaseModuleName]) !== beforeFeatures;
114
+ if (!entitiesUpdated && !featuresUpdated) {
110
115
  return {
111
116
  success: true,
112
- message: `Module ${names.camelCase} already exists in messages/${language}.json`,
117
+ message: `Module ${names.camelCase} already up to date in messages/${language}.json`,
113
118
  alreadyExists: true,
114
119
  };
115
120
  }
116
- // Add to features section (new module)
117
- if (!messages.features) {
118
- messages.features = {};
119
- }
120
- messages.features[lowercaseModuleName] = moduleMessages.features[i18nKeys.moduleName];
121
121
  if (dryRun) {
122
122
  return {
123
123
  success: true,
124
124
  message: `[DRY RUN] Would update messages/${language}.json with ${names.camelCase} translations`,
125
125
  };
126
126
  }
127
- // Write updated content with proper formatting
128
127
  const updatedContent = JSON.stringify(messages, null, 2);
129
128
  fs.writeFileSync(messagesPath, updatedContent, "utf-8");
130
129
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"i18n-updater.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/utils/i18n-updater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n-updater.js","sourceRoot":"","sources":["../../../../scripts/generate-web-module/utils/i18n-updater.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carlonicora/nextjs-jsonapi",
3
- "version": "1.112.0",
3
+ "version": "1.112.1",
4
4
  "description": "Next.js JSON:API client with server/client support and caching",
5
5
  "author": "Carlo Nicora",
6
6
  "license": "GPL-3.0-or-later",
@@ -2,23 +2,28 @@ import { describe, it, expect } from "vitest";
2
2
  import { makeFrontendData } from "./fixtures";
3
3
  import { generateSelectorTemplate } from "../templates/components/selector.template";
4
4
 
5
- describe("selector template — combobox style", () => {
6
- it("uses Button combobox trigger + Command primitives + Loader2", () => {
5
+ describe("selector template — UserSelector-style UI", () => {
6
+ it("uses the input-styled trigger + custom search Input (mirrors UserSelector)", () => {
7
7
  const out = generateSelectorTemplate(makeFrontendData());
8
- expect(out).toContain('role="combobox"');
9
- expect(out).toContain("ChevronsUpDown");
10
- expect(out).toContain("CommandInput");
11
- expect(out).toContain("CommandEmpty");
12
- expect(out).toContain("CommandGroup");
13
- expect(out).toContain("Loader2");
14
- expect(out).toContain("w-(--radix-popover-trigger-width) p-0");
8
+ expect(out).toContain("CircleX");
9
+ expect(out).toContain("SearchIcon");
10
+ expect(out).toContain("RefreshCwIcon");
11
+ expect(out).toContain("bg-input/20");
12
+ expect(out).toContain("w-(--anchor-width)");
13
+ expect(out).toContain("ui.search.placeholder");
14
+ // custom <Input> search, not the cmdk CommandInput
15
+ expect(out).toContain("<Input");
16
+ expect(out).toContain("CommandList");
17
+ expect(out).toContain("CommandItem");
15
18
  });
16
19
 
17
- it("drops the legacy bespoke styling", () => {
20
+ it("drops the legacy Button-combobox styling", () => {
18
21
  const out = generateSelectorTemplate(makeFrontendData());
19
- expect(out).not.toContain("CircleX");
20
- expect(out).not.toContain("RefreshCwIcon");
21
- expect(out).not.toContain("SearchIcon");
22
- expect(out).not.toContain("bg-input/20");
22
+ expect(out).not.toContain('role="combobox"');
23
+ expect(out).not.toContain("ChevronsUpDown");
24
+ expect(out).not.toContain("CommandInput");
25
+ expect(out).not.toContain("CommandEmpty");
26
+ expect(out).not.toContain("CommandGroup");
27
+ expect(out).not.toContain("w-(--radix-popover-trigger-width)");
23
28
  });
24
29
  });
@@ -53,7 +53,7 @@ export function ${names.pascalCase}Content({ ${camel} }: ${names.pascalCase}Cont
53
53
  .map(
54
54
  (field) => ` <div className="flex flex-col gap-y-3">
55
55
  <h3 className="text-muted-foreground text-xs font-semibold tracking-wider uppercase">
56
- {t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
56
+ {t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.label\`)}
57
57
  </h3>
58
58
  <Card className="flex w-full flex-col p-4">
59
59
  <BlockNoteEditorContainer id={${camel}.id} type="${camel}" initialContent={${camel}.${field.name}} />
@@ -65,7 +65,7 @@ export function ${names.pascalCase}Content({ ${camel} }: ${names.pascalCase}Cont
65
65
  const attributesBlock = hasAttributes
66
66
  ? `\n <div className="flex flex-col gap-y-3">
67
67
  <h3 className="text-muted-foreground text-xs font-semibold tracking-wider uppercase">
68
- {t(\`features.${names.camelCase}.sections.details\`)}
68
+ {t(\`features.${names.camelCase.toLowerCase()}.sections.details\`)}
69
69
  </h3>
70
70
  <div className="grid grid-cols-1 gap-4 md:grid-cols-3">
71
71
  ${attributeElements}
@@ -113,7 +113,7 @@ export function ${names.pascalCase}Content({ ${camel} }: ${names.pascalCase}Cont
113
113
  <div className="flex flex-col gap-y-8">
114
114
  <div className="flex flex-col gap-y-3">
115
115
  <h3 className="text-muted-foreground text-xs font-semibold tracking-wider uppercase">
116
- {t(\`features.${names.camelCase}.sections.details\`)}
116
+ {t(\`features.${names.camelCase.toLowerCase()}.sections.details\`)}
117
117
  </h3>
118
118
  <div className="grid grid-cols-1 gap-4 md:grid-cols-3">
119
119
  ${attributeElements}
@@ -145,17 +145,17 @@ function generateAttributeElements(data: FrontendTemplateData): string {
145
145
  displayableFields.forEach((field) => {
146
146
  if (field.type === "string") {
147
147
  elements.push(` <AttributeElement
148
- title={t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
148
+ title={t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.label\`)}
149
149
  value={${camel}.${field.name}}
150
150
  />`);
151
151
  } else if (field.type === "boolean") {
152
152
  elements.push(` <AttributeElement
153
- title={t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
153
+ title={t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.label\`)}
154
154
  value={${camel}.${field.name} ? t(\`generic.yes\`) : t(\`generic.no\`)}
155
155
  />`);
156
156
  } else if (field.type === "number") {
157
157
  elements.push(` <AttributeElement
158
- title={t(\`features.${names.camelCase}.fields.${field.name}.label\`)}
158
+ title={t(\`features.${names.camelCase.toLowerCase()}.fields.${field.name}.label\`)}
159
159
  value={${camel}.${field.name}?.toString()}
160
160
  />`);
161
161
  }
@@ -170,7 +170,7 @@ function generateAttributeElements(data: FrontendTemplateData): string {
170
170
  const propName = toCamelCase(rel.alias || rel.variant || rel.name);
171
171
  elements.push(` {${camel}.${propName} && (
172
172
  <AttributeElement
173
- title={t(\`generic.relationships.${propName}.label\`)}
173
+ title={t(\`features.${names.camelCase.toLowerCase()}.relationships.${propName.toLowerCase()}.label\`)}
174
174
  value={${camel}.${propName}.${displayProp}}
175
175
  />
176
176
  )}`);
@@ -2,6 +2,10 @@
2
2
  * Selector Template
3
3
  *
4
4
  * Generates {Module}Selector.tsx searchable combobox component.
5
+ *
6
+ * UI mirrors the framework's UserSelector (packages/.../features/user/components/forms/UserSelector.tsx):
7
+ * an input-styled trigger, a CircleX clear affordance, an `--anchor-width` popover, and a custom
8
+ * search Input with a SearchIcon + spinner/clear — minus the user-specific avatar.
5
9
  */
6
10
 
7
11
  import { FrontendTemplateData } from "../../types/template-data.interface";
@@ -21,25 +25,21 @@ export function generateSelectorTemplate(data: FrontendTemplateData): string {
21
25
  return `"use client";
22
26
 
23
27
  import {
24
- Button,
25
28
  Command,
26
- CommandEmpty,
27
- CommandGroup,
28
- CommandInput,
29
29
  CommandItem,
30
30
  CommandList,
31
31
  FormFieldWrapper,
32
+ Input,
32
33
  Popover,
33
34
  PopoverContent,
34
35
  PopoverTrigger,
35
36
  } from "@carlonicora/nextjs-jsonapi/components";
36
37
  import { ${names.pascalCase}Interface } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";
37
38
  import { ${names.pascalCase}Service } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Service";
38
- import { DataListRetriever, useDataListRetriever } from "@carlonicora/nextjs-jsonapi/client";
39
- import { useDebounce } from "@carlonicora/nextjs-jsonapi/client";
39
+ import { DataListRetriever, useDataListRetriever, useDebounce } from "@carlonicora/nextjs-jsonapi/client";
40
40
  import { Modules } from "@carlonicora/nextjs-jsonapi/core";
41
41
 
42
- import { ChevronsUpDown, Loader2, XIcon } from "lucide-react";
42
+ import { CircleX, RefreshCwIcon, SearchIcon, XIcon } from "lucide-react";
43
43
  import { useTranslations } from "next-intl";
44
44
  import { useCallback, useEffect, useRef, useState } from "react";
45
45
 
@@ -121,55 +121,62 @@ export default function ${names.pascalCase}Selector({
121
121
  <Popover open={open} onOpenChange={setOpen} modal={true}>
122
122
  <div className="flex w-full flex-row items-center justify-between">
123
123
  <PopoverTrigger className="w-full">
124
- <Button
125
- variant="outline"
126
- role="combobox"
127
- aria-expanded={open}
128
- className="h-auto min-h-10 w-full justify-between px-3 py-2"
129
- >
130
- <span className={field.value ? "" : "text-muted-foreground"}>
131
- {field.value?.name ?? placeholder ?? t(\`generic.search.placeholder\`, { type: t(\`entities.${i18nKey}\`, { count: 1 }) })}
132
- </span>
133
- <ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
134
- </Button>
124
+ <div className="flex w-full flex-row items-center justify-start rounded-md">
125
+ {field.value ? (
126
+ <div className="bg-input/20 dark:bg-input/30 border-input flex h-7 w-full flex-row items-center justify-start rounded-md border px-2 py-0.5 text-sm md:text-xs/relaxed">
127
+ <span>{field.value?.name ?? ""}</span>
128
+ </div>
129
+ ) : (
130
+ <div className="bg-input/20 dark:bg-input/30 border-input text-muted-foreground flex h-7 w-full flex-row items-center justify-start rounded-md border px-2 py-0.5 text-sm md:text-xs/relaxed">
131
+ {placeholder ?? t(\`ui.search.placeholder\`, { type: t(\`entities.${i18nKey}\`, { count: 1 }) })}
132
+ </div>
133
+ )}
134
+ </div>
135
135
  </PopoverTrigger>
136
136
  {field.value && (
137
- <XIcon
138
- className="text-muted-foreground hover:text-destructive ml-2 h-5 w-5 cursor-pointer"
137
+ <CircleX
138
+ className="text-muted hover:text-destructive ml-2 h-4 w-4 shrink-0 cursor-pointer"
139
139
  onClick={() => set${names.pascalCase}()}
140
140
  />
141
141
  )}
142
142
  </div>
143
- <PopoverContent className="w-(--radix-popover-trigger-width) p-0" align="start">
143
+ <PopoverContent align="start" className="w-(--anchor-width)">
144
144
  <Command shouldFilter={false}>
145
- <CommandInput
146
- placeholder={t(\`generic.search.placeholder\`, { type: t(\`entities.${i18nKey}\`, { count: 1 }) })}
147
- value={searchTerm}
148
- onValueChange={setSearchTerm}
149
- />
150
- <CommandList>
151
- {isSearching && (
152
- <div className="flex items-center justify-center py-6">
153
- <Loader2 className="text-muted-foreground h-4 w-4 animate-spin" />
154
- </div>
155
- )}
156
- {!isSearching && data.data && data.data.length === 0 && (
157
- <CommandEmpty>{t(\`generic.search.no_results\`)}</CommandEmpty>
158
- )}
159
- {!isSearching && data.data && data.data.length > 0 && (
160
- <CommandGroup>
161
- {(data.data as ${names.pascalCase}Interface[]).map((${names.camelCase}: ${names.pascalCase}Interface) => (
162
- <CommandItem
163
- key={${names.camelCase}.id}
164
- value={${names.camelCase}.id}
165
- onSelect={() => set${names.pascalCase}(${names.camelCase})}
166
- className="hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent cursor-pointer"
167
- >
168
- {${names.camelCase}.${displayProp}}
169
- </CommandItem>
170
- ))}
171
- </CommandGroup>
145
+ <div className="relative mb-2 w-full">
146
+ <SearchIcon className="text-muted-foreground absolute top-2.5 left-2.5 h-4 w-4" />
147
+ <Input
148
+ placeholder={t(\`ui.search.placeholder\`, { type: t(\`entities.${i18nKey}\`, { count: 1 }) })}
149
+ type="text"
150
+ className="w-full pr-8 pl-8"
151
+ onChange={(e) => setSearchTerm(e.target.value)}
152
+ value={searchTerm}
153
+ />
154
+ {isSearching ? (
155
+ <RefreshCwIcon className="text-muted-foreground absolute top-2.5 right-2.5 h-4 w-4 animate-spin" />
156
+ ) : searchTermRef.current ? (
157
+ <XIcon
158
+ className={\`absolute top-2.5 right-2.5 h-4 w-4 \${searchTermRef.current ? "cursor-pointer" : "text-muted-foreground"}\`}
159
+ onClick={() => {
160
+ setSearchTerm("");
161
+ search("");
162
+ }}
163
+ />
164
+ ) : (
165
+ <></>
172
166
  )}
167
+ </div>
168
+ <CommandList>
169
+ {data.data &&
170
+ data.data.length > 0 &&
171
+ (data.data as ${names.pascalCase}Interface[]).map((${names.camelCase}: ${names.pascalCase}Interface) => (
172
+ <CommandItem
173
+ className="cursor-pointer hover:bg-muted data-selected:hover:bg-muted bg-transparent data-selected:bg-transparent"
174
+ key={${names.camelCase}.id}
175
+ onSelect={() => set${names.pascalCase}(${names.camelCase})}
176
+ >
177
+ <span className="">{${names.camelCase}.${displayProp}}</span>
178
+ </CommandItem>
179
+ ))}
173
180
  </CommandList>
174
181
  </Command>
175
182
  </PopoverContent>
@@ -42,7 +42,7 @@ ${featureImport}
42
42
  export const ${names.pascalCase}Module = (factory: ModuleFactory) =>
43
43
  factory({
44
44
  pageUrl: "/${names.pluralKebab}",
45
- name: "${names.pluralCamel}",
45
+ name: "${endpoint}",
46
46
  model: ${names.pascalCase},
47
47
  moduleId: "${moduleId}",
48
48
  icon: ${DEFAULT_MODULE_ICON},
@@ -205,7 +205,7 @@ function generateFieldColumnEntries(data: FrontendTemplateData): string {
205
205
  entries.push(` [${names.pascalCase}Fields.${key}]: () => ({
206
206
  id: "${key}",
207
207
  accessorKey: "${key}",
208
- header: t(\`generic.relationships.${key}.label\`),
208
+ header: t(\`features.${names.camelCase.toLowerCase()}.relationships.${key.toLowerCase()}.label\`),
209
209
  cell: ({ row }: { row: TableContent<${names.pascalCase}Interface> }) => {
210
210
  const ${names.camelCase}: ${names.pascalCase}Interface = row.original.jsonApiData;
211
211
  return <span>{${accessor}}</span>;
@@ -88,6 +88,7 @@ export function buildI18nMessages(i18nKeys: I18nKeySet): Record<string, any> {
88
88
  [i18nKeys.moduleName]: {
89
89
  fields: i18nKeys.fields,
90
90
  relationships: i18nKeys.relationships,
91
+ sections: { details: "Details" },
91
92
  },
92
93
  },
93
94
  entities: {
@@ -68,44 +68,40 @@ export function updateI18n(
68
68
  entitiesUpdated = true;
69
69
  }
70
70
 
71
- // Check if module already exists in features
72
- const featuresAlreadyExist = messages.features && messages.features[lowercaseModuleName];
73
-
74
- if (featuresAlreadyExist) {
75
- // Features exist, but we may have added entities
76
- if (entitiesUpdated) {
77
- if (dryRun) {
78
- return {
79
- success: true,
80
- message: `[DRY RUN] Module ${names.camelCase} exists, would add entities.${lowercasePluralKey}`,
81
- alreadyExists: true,
82
- };
71
+ // Additively merge this module's feature keys (fields / relationships /
72
+ // sections), FILLING missing keys without overwriting existing translations.
73
+ // Handles a brand-new module AND an existing-but-incomplete block (e.g. one
74
+ // first generated before its fields were known — which previously stayed an
75
+ // empty `{ fields: {}, relationships: {} }` skeleton forever).
76
+ const mergeMissing = (target: Record<string, any>, source: Record<string, any>): Record<string, any> => {
77
+ const out = target && typeof target === "object" && !Array.isArray(target) ? { ...target } : {};
78
+ for (const k of Object.keys(source)) {
79
+ const v = source[k];
80
+ if (v && typeof v === "object" && !Array.isArray(v)) {
81
+ out[k] = mergeMissing(out[k], v);
82
+ } else if (out[k] === undefined) {
83
+ out[k] = v;
83
84
  }
84
-
85
- // Write updated content (entities were added)
86
- const updatedContent = JSON.stringify(messages, null, 2);
87
- fs.writeFileSync(messagesPath, updatedContent, "utf-8");
88
-
89
- return {
90
- success: true,
91
- message: `Module ${names.camelCase} exists, added entities.${lowercasePluralKey}`,
92
- alreadyExists: true,
93
- };
94
85
  }
86
+ return out;
87
+ };
88
+
89
+ if (!messages.features) {
90
+ messages.features = {};
91
+ }
92
+ const moduleBlock = moduleMessages.features[i18nKeys.moduleName];
93
+ const beforeFeatures = JSON.stringify(messages.features[lowercaseModuleName] ?? null);
94
+ messages.features[lowercaseModuleName] = mergeMissing(messages.features[lowercaseModuleName], moduleBlock);
95
+ const featuresUpdated = JSON.stringify(messages.features[lowercaseModuleName]) !== beforeFeatures;
95
96
 
97
+ if (!entitiesUpdated && !featuresUpdated) {
96
98
  return {
97
99
  success: true,
98
- message: `Module ${names.camelCase} already exists in messages/${language}.json`,
100
+ message: `Module ${names.camelCase} already up to date in messages/${language}.json`,
99
101
  alreadyExists: true,
100
102
  };
101
103
  }
102
104
 
103
- // Add to features section (new module)
104
- if (!messages.features) {
105
- messages.features = {};
106
- }
107
- messages.features[lowercaseModuleName] = moduleMessages.features[i18nKeys.moduleName];
108
-
109
105
  if (dryRun) {
110
106
  return {
111
107
  success: true,
@@ -113,7 +109,6 @@ export function updateI18n(
113
109
  };
114
110
  }
115
111
 
116
- // Write updated content with proper formatting
117
112
  const updatedContent = JSON.stringify(messages, null, 2);
118
113
  fs.writeFileSync(messagesPath, updatedContent, "utf-8");
119
114