@carlonicora/nextjs-jsonapi 1.38.1 → 1.38.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{BlockNoteEditor-VB72JQEO.js → BlockNoteEditor-RG5BCHLC.js} +6 -6
- package/dist/{BlockNoteEditor-VB72JQEO.js.map → BlockNoteEditor-RG5BCHLC.js.map} +1 -1
- package/dist/{BlockNoteEditor-5CEV5TZT.mjs → BlockNoteEditor-YP7ZYOPD.mjs} +2 -2
- package/dist/billing/index.js +299 -299
- package/dist/billing/index.mjs +1 -1
- package/dist/{chunk-BYMBRMKS.js → chunk-6CYZMNDG.js} +6 -6
- package/dist/{chunk-BYMBRMKS.js.map → chunk-6CYZMNDG.js.map} +1 -1
- package/dist/{chunk-VMK2N3TQ.mjs → chunk-XPWXQWXX.mjs} +6 -6
- package/dist/{chunk-VMK2N3TQ.mjs.map → chunk-XPWXQWXX.mjs.map} +1 -1
- package/dist/client/index.js +2 -2
- package/dist/client/index.mjs +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/index.mjs +1 -1
- package/dist/contexts/index.js +2 -2
- package/dist/contexts/index.mjs +1 -1
- package/dist/scripts/generate-web-module/generator.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/generator.js +5 -0
- package/dist/scripts/generate-web-module/generator.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/container.template.js +7 -7
- package/dist/scripts/generate-web-module/templates/components/container.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/content.template.js +1 -1
- package/dist/scripts/generate-web-module/templates/components/content.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/deleter.template.js +2 -2
- package/dist/scripts/generate-web-module/templates/components/deleter.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/details.template.js +1 -1
- package/dist/scripts/generate-web-module/templates/components/details.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/editor.template.js +8 -13
- package/dist/scripts/generate-web-module/templates/components/editor.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/list-container.template.js +1 -1
- package/dist/scripts/generate-web-module/templates/components/list-container.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/list.template.js +5 -5
- package/dist/scripts/generate-web-module/templates/components/list.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js +2 -2
- package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/selector.template.js +2 -2
- package/dist/scripts/generate-web-module/templates/components/selector.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/context.template.js +4 -4
- package/dist/scripts/generate-web-module/templates/context.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/data/interface.template.js +3 -3
- package/dist/scripts/generate-web-module/templates/data/interface.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/data/model.template.js +2 -2
- package/dist/scripts/generate-web-module/templates/data/model.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/data/service.template.js +1 -1
- package/dist/scripts/generate-web-module/templates/data/service.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/module.template.js +1 -1
- package/dist/scripts/generate-web-module/templates/module.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js +4 -4
- package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/pages/list-page.template.js +2 -2
- package/dist/scripts/generate-web-module/templates/pages/list-page.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/table-hook.template.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/table-hook.template.js +10 -6
- package/dist/scripts/generate-web-module/templates/table-hook.template.js.map +1 -1
- package/dist/scripts/generate-web-module/types/template-data.interface.d.ts +2 -0
- package/dist/scripts/generate-web-module/types/template-data.interface.d.ts.map +1 -1
- package/package.json +1 -1
- package/scripts/generate-web-module/generator.ts +5 -0
- package/scripts/generate-web-module/templates/components/container.template.ts +7 -7
- package/scripts/generate-web-module/templates/components/content.template.ts +1 -1
- package/scripts/generate-web-module/templates/components/deleter.template.ts +2 -2
- package/scripts/generate-web-module/templates/components/details.template.ts +1 -1
- package/scripts/generate-web-module/templates/components/editor.template.ts +23 -18
- package/scripts/generate-web-module/templates/components/list-container.template.ts +1 -1
- package/scripts/generate-web-module/templates/components/list.template.ts +5 -5
- package/scripts/generate-web-module/templates/components/multi-selector.template.ts +2 -2
- package/scripts/generate-web-module/templates/components/selector.template.ts +2 -2
- package/scripts/generate-web-module/templates/context.template.ts +4 -4
- package/scripts/generate-web-module/templates/data/interface.template.ts +5 -11
- package/scripts/generate-web-module/templates/data/model.template.ts +2 -2
- package/scripts/generate-web-module/templates/data/service.template.ts +1 -1
- package/scripts/generate-web-module/templates/module.template.ts +1 -1
- package/scripts/generate-web-module/templates/pages/detail-page.template.ts +4 -4
- package/scripts/generate-web-module/templates/pages/list-page.template.ts +2 -2
- package/scripts/generate-web-module/templates/table-hook.template.ts +16 -8
- package/scripts/generate-web-module/types/template-data.interface.ts +9 -1
- package/src/components/containers/PageContainer.tsx +1 -1
- package/src/components/pages/PageContentContainer.tsx +5 -5
- /package/dist/{BlockNoteEditor-5CEV5TZT.mjs.map → BlockNoteEditor-YP7ZYOPD.mjs.map} +0 -0
|
@@ -30,8 +30,8 @@ import {
|
|
|
30
30
|
PopoverContent,
|
|
31
31
|
PopoverTrigger,
|
|
32
32
|
} from "@carlonicora/nextjs-jsonapi/components";
|
|
33
|
-
import { ${names.pascalCase}Interface } from "@/features/${data.
|
|
34
|
-
import { ${names.pascalCase}Service } from "@/features/${data.
|
|
33
|
+
import { ${names.pascalCase}Interface } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";
|
|
34
|
+
import { ${names.pascalCase}Service } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Service";
|
|
35
35
|
import { DataListRetriever, useDataListRetriever } from "@carlonicora/nextjs-jsonapi/client";
|
|
36
36
|
import { useDebounce } from "@carlonicora/nextjs-jsonapi/client";
|
|
37
37
|
import { Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
@@ -17,10 +17,10 @@ export function generateContextTemplate(data: FrontendTemplateData): string {
|
|
|
17
17
|
|
|
18
18
|
return `"use client";
|
|
19
19
|
|
|
20
|
-
import ${names.pascalCase}Deleter from "@/features/${data.
|
|
21
|
-
import ${names.pascalCase}Editor from "@/features/${data.
|
|
22
|
-
import { ${names.pascalCase}Interface } from "@/features/${data.
|
|
23
|
-
import { ${names.pascalCase}Service } from "@/features/${data.
|
|
20
|
+
import ${names.pascalCase}Deleter from "@/features/${data.importTargetDir}/${names.kebabCase}/components/forms/${names.pascalCase}Deleter";
|
|
21
|
+
import ${names.pascalCase}Editor from "@/features/${data.importTargetDir}/${names.kebabCase}/components/forms/${names.pascalCase}Editor";
|
|
22
|
+
import { ${names.pascalCase}Interface } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";
|
|
23
|
+
import { ${names.pascalCase}Service } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Service";
|
|
24
24
|
import { SharedProvider } from "@carlonicora/nextjs-jsonapi/contexts";
|
|
25
25
|
import { usePageUrlGenerator } from "@carlonicora/nextjs-jsonapi/client";
|
|
26
26
|
import { BreadcrumbItemData } from "@carlonicora/nextjs-jsonapi/core";
|
|
@@ -37,20 +37,14 @@ function generateImports(data: FrontendTemplateData): string {
|
|
|
37
37
|
|
|
38
38
|
// Relationship interface imports
|
|
39
39
|
relationships.forEach((rel) => {
|
|
40
|
-
imports.push(
|
|
41
|
-
`import { ${rel.interfaceName} } from "${rel.interfaceImportPath}";`
|
|
42
|
-
);
|
|
40
|
+
imports.push(`import { ${rel.interfaceName} } from "${rel.interfaceImportPath}";`);
|
|
43
41
|
});
|
|
44
42
|
|
|
45
43
|
// Base interface import
|
|
46
44
|
if (extendsContent) {
|
|
47
|
-
imports.push(
|
|
48
|
-
`import { ContentInput, ContentInterface } from "@/features/features/content/data/ContentInterface";`
|
|
49
|
-
);
|
|
45
|
+
imports.push(`import { ContentInput, ContentInterface } from "@/features/content/data/ContentInterface";`);
|
|
50
46
|
} else {
|
|
51
|
-
imports.push(
|
|
52
|
-
`import { ApiDataInterface } from "@carlonicora/nextjs-jsonapi/core";`
|
|
53
|
-
);
|
|
47
|
+
imports.push(`import { ApiDataInterface } from "@carlonicora/nextjs-jsonapi/core";`);
|
|
54
48
|
}
|
|
55
49
|
|
|
56
50
|
return imports.join("\n");
|
|
@@ -132,7 +126,7 @@ function generateInterface(data: FrontendTemplateData): string {
|
|
|
132
126
|
// Build return type - use intersection if relationship has fields
|
|
133
127
|
let baseType = rel.interfaceName;
|
|
134
128
|
if (rel.fields && rel.fields.length > 0) {
|
|
135
|
-
const metaFields = rel.fields.map(f => `${f.name}?: ${f.tsType}`).join("; ");
|
|
129
|
+
const metaFields = rel.fields.map((f) => `${f.name}?: ${f.tsType}`).join("; ");
|
|
136
130
|
baseType = `${rel.interfaceName} & { ${metaFields} }`;
|
|
137
131
|
}
|
|
138
132
|
|
|
@@ -142,7 +136,7 @@ function generateInterface(data: FrontendTemplateData): string {
|
|
|
142
136
|
const propertyName = pluralize(toCamelCase(rel.name));
|
|
143
137
|
// Use intersection type if relationship has fields (edge properties)
|
|
144
138
|
if (rel.fields && rel.fields.length > 0) {
|
|
145
|
-
const metaFields = rel.fields.map(f => `${f.name}?: ${f.tsType}`).join("; ");
|
|
139
|
+
const metaFields = rel.fields.map((f) => `${f.name}?: ${f.tsType}`).join("; ");
|
|
146
140
|
getterLines.push(` get ${propertyName}(): (${rel.interfaceName} & { ${metaFields} })[];`);
|
|
147
141
|
} else {
|
|
148
142
|
getterLines.push(` get ${propertyName}(): ${rel.interfaceName}[];`);
|
|
@@ -48,7 +48,7 @@ function generateImports(data: FrontendTemplateData): string {
|
|
|
48
48
|
|
|
49
49
|
// Own interface import
|
|
50
50
|
imports.push(
|
|
51
|
-
`import { ${names.pascalCase}Input, ${names.pascalCase}Interface } from "@/features/${data.
|
|
51
|
+
`import { ${names.pascalCase}Input, ${names.pascalCase}Interface } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";`,
|
|
52
52
|
);
|
|
53
53
|
|
|
54
54
|
// Relationship interface imports
|
|
@@ -58,7 +58,7 @@ function generateImports(data: FrontendTemplateData): string {
|
|
|
58
58
|
|
|
59
59
|
// Base class and core imports
|
|
60
60
|
if (extendsContent) {
|
|
61
|
-
imports.push(`import { Content } from "@/features/
|
|
61
|
+
imports.push(`import { Content } from "@/features/content/data/Content";`);
|
|
62
62
|
imports.push(`import { JsonApiHydratedDataInterface, Modules } from "@carlonicora/nextjs-jsonapi/core";`);
|
|
63
63
|
} else {
|
|
64
64
|
imports.push(
|
|
@@ -49,7 +49,7 @@ function generateImports(data: FrontendTemplateData): string {
|
|
|
49
49
|
|
|
50
50
|
return `import { AbstractService, HttpMethod, NextRef, PreviousRef } from "@carlonicora/nextjs-jsonapi/core";
|
|
51
51
|
import { EndpointCreator } from "@carlonicora/nextjs-jsonapi/core";
|
|
52
|
-
import { ${names.pascalCase}Input, ${names.pascalCase}Interface } from "@/features/${data.
|
|
52
|
+
import { ${names.pascalCase}Input, ${names.pascalCase}Interface } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";
|
|
53
53
|
import { Modules } from "@carlonicora/nextjs-jsonapi/core";`;
|
|
54
54
|
}
|
|
55
55
|
|
|
@@ -20,7 +20,7 @@ export function generateModuleTemplate(data: FrontendTemplateData): string {
|
|
|
20
20
|
const listFieldNames = getListFieldNames(data);
|
|
21
21
|
const listInclusionFields = listFieldNames.map((f) => `\`${f}\``).join(", ");
|
|
22
22
|
|
|
23
|
-
return `import { ${names.pascalCase} } from "@/features/${data.
|
|
23
|
+
return `import { ${names.pascalCase} } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}";
|
|
24
24
|
import { createJsonApiInclusion } from "@carlonicora/nextjs-jsonapi/core";
|
|
25
25
|
import { ModuleFactory } from "@carlonicora/nextjs-jsonapi/core";
|
|
26
26
|
import { ${DEFAULT_MODULE_ICON} } from "lucide-react";
|
|
@@ -15,10 +15,10 @@ import { FrontendTemplateData } from "../../types/template-data.interface";
|
|
|
15
15
|
export function generateDetailPageTemplate(data: FrontendTemplateData): string {
|
|
16
16
|
const { names } = data;
|
|
17
17
|
|
|
18
|
-
return `import ${names.pascalCase}Container from "@/features/${data.
|
|
19
|
-
import { ${names.pascalCase}Provider } from "@/features/${data.
|
|
20
|
-
import { ${names.pascalCase}Interface } from "@/features/${data.
|
|
21
|
-
import { ${names.pascalCase}Service } from "@/features/${data.
|
|
18
|
+
return `import ${names.pascalCase}Container from "@/features/${data.importTargetDir}/${names.kebabCase}/components/containers/${names.pascalCase}Container";
|
|
19
|
+
import { ${names.pascalCase}Provider } from "@/features/${data.importTargetDir}/${names.kebabCase}/contexts/${names.pascalCase}Context";
|
|
20
|
+
import { ${names.pascalCase}Interface } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";
|
|
21
|
+
import { ${names.pascalCase}Service } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Service";
|
|
22
22
|
import { generateSpecificMetadata } from "@/utils/metadata";
|
|
23
23
|
import { PageContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
24
24
|
import { Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
@@ -15,8 +15,8 @@ import { FrontendTemplateData } from "../../types/template-data.interface";
|
|
|
15
15
|
export function generateListPageTemplate(data: FrontendTemplateData): string {
|
|
16
16
|
const { names } = data;
|
|
17
17
|
|
|
18
|
-
return `import ${names.pascalCase}ListContainer from "@/features/${data.
|
|
19
|
-
import { ${names.pascalCase}Provider } from "@/features/${data.
|
|
18
|
+
return `import ${names.pascalCase}ListContainer from "@/features/${data.importTargetDir}/${names.kebabCase}/components/containers/${names.pascalCase}ListContainer";
|
|
19
|
+
import { ${names.pascalCase}Provider } from "@/features/${data.importTargetDir}/${names.kebabCase}/contexts/${names.pascalCase}Context";
|
|
20
20
|
import { PageContainer } from "@carlonicora/nextjs-jsonapi/components";
|
|
21
21
|
import { Modules } from "@carlonicora/nextjs-jsonapi/core";
|
|
22
22
|
import { Action } from "@carlonicora/nextjs-jsonapi/core";
|
|
@@ -22,11 +22,15 @@ export function generateTableHookTemplate(data: FrontendTemplateData): string {
|
|
|
22
22
|
|
|
23
23
|
return `"use client";
|
|
24
24
|
|
|
25
|
-
import { ${names.pascalCase}Fields } from "@/features/${data.
|
|
26
|
-
import { ${names.pascalCase}Interface } from "@/features/${data.
|
|
25
|
+
import { ${names.pascalCase}Fields } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Fields";
|
|
26
|
+
import { ${names.pascalCase}Interface } from "@/features/${data.importTargetDir}/${names.kebabCase}/data/${names.pascalCase}Interface";
|
|
27
27
|
import { cellDate, cellId${hasAuthors ? ", ContributorsList" : ""} } from "@carlonicora/nextjs-jsonapi/components";
|
|
28
|
-
import { Modules } from "@carlonicora/nextjs-jsonapi/core";${
|
|
29
|
-
|
|
28
|
+
import { Modules } from "@carlonicora/nextjs-jsonapi/core";${
|
|
29
|
+
extendsContent
|
|
30
|
+
? `
|
|
31
|
+
import { ContentInterface } from "@carlonicora/nextjs-jsonapi/core";`
|
|
32
|
+
: ""
|
|
33
|
+
}
|
|
30
34
|
import {
|
|
31
35
|
registerTableGenerator,
|
|
32
36
|
TableContent,
|
|
@@ -107,9 +111,13 @@ function generateFieldColumnEntries(data: FrontendTemplateData): string {
|
|
|
107
111
|
<Tooltip>
|
|
108
112
|
<TooltipTrigger>
|
|
109
113
|
<Link href={generateUrl({ page: Modules.${names.pascalCase}, id: ${names.camelCase}.id })}>{${names.camelCase}.name}</Link>
|
|
110
|
-
</TooltipTrigger>${
|
|
111
|
-
|
|
112
|
-
|
|
114
|
+
</TooltipTrigger>${
|
|
115
|
+
extendsContent
|
|
116
|
+
? `
|
|
117
|
+
<TooltipContent>{${names.camelCase}.tldr}</TooltipContent>`
|
|
118
|
+
: `
|
|
119
|
+
<TooltipContent>{${names.camelCase}.name}</TooltipContent>`
|
|
120
|
+
}
|
|
113
121
|
</Tooltip>
|
|
114
122
|
);
|
|
115
123
|
},
|
|
@@ -135,7 +143,7 @@ function generateFieldColumnEntries(data: FrontendTemplateData): string {
|
|
|
135
143
|
|
|
136
144
|
// Other displayable fields (excluding id, name, tldr, abstract, content, dates)
|
|
137
145
|
const displayableFields = fields.filter(
|
|
138
|
-
(f) => !["id", "name", "tldr", "abstract", "content", "createdAt", "updatedAt"].includes(f.name)
|
|
146
|
+
(f) => !["id", "name", "tldr", "abstract", "content", "createdAt", "updatedAt"].includes(f.name),
|
|
139
147
|
);
|
|
140
148
|
|
|
141
149
|
displayableFields.forEach((field) => {
|
|
@@ -35,7 +35,13 @@ export interface FrontendField {
|
|
|
35
35
|
/**
|
|
36
36
|
* Form component types
|
|
37
37
|
*/
|
|
38
|
-
export type FormComponentType =
|
|
38
|
+
export type FormComponentType =
|
|
39
|
+
| "FormInput"
|
|
40
|
+
| "FormTextarea"
|
|
41
|
+
| "BlockNoteEditor"
|
|
42
|
+
| "Checkbox"
|
|
43
|
+
| "DatePicker"
|
|
44
|
+
| "FormInputNumber";
|
|
39
45
|
|
|
40
46
|
/**
|
|
41
47
|
* Frontend relationship representation
|
|
@@ -121,6 +127,8 @@ export interface FrontendTemplateData {
|
|
|
121
127
|
moduleId: string;
|
|
122
128
|
endpoint: string;
|
|
123
129
|
targetDir: string;
|
|
130
|
+
/** Stripped version of targetDir for use in imports (e.g., "culling" instead of "features/culling") */
|
|
131
|
+
importTargetDir: string;
|
|
124
132
|
|
|
125
133
|
// Parent class detection
|
|
126
134
|
extendsContent: boolean;
|
|
@@ -12,7 +12,7 @@ export function PageContainer({ children, testId, className }: PageContainerProp
|
|
|
12
12
|
return (
|
|
13
13
|
<div className={`flex h-full w-full flex-col`} data-testid={testId}>
|
|
14
14
|
<Header>{headerChildren}</Header>
|
|
15
|
-
<main className={cn(`flex w-full flex-1 flex-col gap-y-4 pt-4 pl-4 pr-
|
|
15
|
+
<main className={cn(`flex w-full flex-1 flex-col gap-y-4 pt-4 pl-4 pr-0 pb-20`, className)}>{children}</main>
|
|
16
16
|
</div>
|
|
17
17
|
);
|
|
18
18
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { ReactNode, useEffect, useState } from "react";
|
|
4
4
|
import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from "../../shadcnui";
|
|
5
|
-
import { useIsMobile } from "../../utils";
|
|
5
|
+
import { cn, useIsMobile } from "../../utils";
|
|
6
6
|
|
|
7
7
|
type PageContentContainerProps = {
|
|
8
8
|
header?: ReactNode;
|
|
@@ -27,7 +27,7 @@ export function PageContentContainer({ header, details, footer, content }: PageC
|
|
|
27
27
|
|
|
28
28
|
return (
|
|
29
29
|
<div className="flex h-[calc(100vh-4rem)] w-full flex-col transition-opacity duration-150 animate-in fade-in">
|
|
30
|
-
{header && <div className="mb-4 flex w-full shrink-0 border-b">{header}</div>}
|
|
30
|
+
{header && <div className="mb-4 flex w-full shrink-0 border-b pr-4">{header}</div>}
|
|
31
31
|
<div className="min-h-0 flex-1">
|
|
32
32
|
{details || footer ? (
|
|
33
33
|
<ResizablePanelGroup
|
|
@@ -49,12 +49,12 @@ export function PageContentContainer({ header, details, footer, content }: PageC
|
|
|
49
49
|
</div>
|
|
50
50
|
</ResizablePanel>
|
|
51
51
|
<ResizableHandle withHandle />
|
|
52
|
-
<ResizablePanel id="right-panel" className={isMobile ? "pt-4" : "
|
|
53
|
-
<div className="h-full overflow-x-hidden overflow-y-auto
|
|
52
|
+
<ResizablePanel id="right-panel" className={cn("w-full", isMobile ? "pt-4" : "")}>
|
|
53
|
+
<div className="h-full overflow-x-hidden overflow-y-auto px-4 pb-20">{content}</div>
|
|
54
54
|
</ResizablePanel>
|
|
55
55
|
</ResizablePanelGroup>
|
|
56
56
|
) : (
|
|
57
|
-
<div className="h-full overflow-x-hidden overflow-y-auto
|
|
57
|
+
<div className="h-full overflow-x-hidden overflow-y-auto px-4 pb-20">{content}</div>
|
|
58
58
|
)}
|
|
59
59
|
</div>
|
|
60
60
|
</div>
|
|
File without changes
|