@postxl/generators 1.0.1 → 1.0.4

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.
@@ -15,7 +15,7 @@ export type WithBase<Context extends Generator.Context = Generator.Context> = Ge
15
15
  export type BaseContext = {
16
16
  packageJson: Generator.PackageJsonConfig;
17
17
  /**
18
- * An example for the module's env configuration.
18
+ * Parameters that will be generated in root .env.example file.
19
19
  *
20
20
  * Example:
21
21
  * DATABASE_CONNECTION=postgresql://postgres:postgres@localhost:5432/pxl
@@ -59,13 +59,15 @@ const baseDevDependencies = [
59
59
  { packageName: 'jest', version: '29.7.0' },
60
60
  { packageName: 'prettier', version: '3.4.2' },
61
61
  { packageName: 'rimraf', version: '6.1.0' },
62
+ { packageName: 'ts-node', version: '10.9.2' },
62
63
  ];
63
64
  const workspaceScripts = [
64
65
  { name: 'generate', command: 'pnpm run generate:project' },
65
- { name: 'generate:project', command: 'node ../../packages/cli/dist/index.js generate' },
66
+ { name: 'generate:project', command: 'pnpm run generate:project:pxl' },
67
+ { name: 'generate:project:pxl', command: 'node ../../packages/cli/dist/index.js generate' },
66
68
  {
67
69
  name: 'generate:watch',
68
- command: "chokidar '../../packages/**/dist/**' '../../generators/**/dist/**' '../../generators/**/template/**' './generate.ts' './postxl-schema.json' -c 'pnpm run generate:project -f -i'",
70
+ command: "chokidar '../../packages/**/dist/**' '../../generators/**/dist/**' '../../generators/**/template/**' './generate.ts' './postxl-schema.json' -c 'pnpm run generate:project:pxl -f -i'",
69
71
  },
70
72
  { name: 'pxl', command: 'node ../../packages/cli/dist/index.js' },
71
73
  ];
@@ -115,10 +117,22 @@ exports.baseGenerator = {
115
117
  },
116
118
  generate: async (ctx) => {
117
119
  const vfs = new Generator.VirtualFileSystem();
118
- // Load the template
120
+ const templateContext = { schema: ctx.schema };
121
+ const SONAR_PROJECT_PROPERTIES_FILENAME = 'sonar-project.properties';
122
+ // Load the template, excluding files that need template substitution
119
123
  await vfs.loadFolder({
120
124
  diskPath: path.resolve(__dirname, './template'),
125
+ filter: (filePath) => !filePath.endsWith(SONAR_PROJECT_PROPERTIES_FILENAME),
121
126
  });
127
+ // Load file with template substitution
128
+ const sonarProjectPropertiesContent = await Generator.generateFromTemplate({
129
+ file: path.resolve(__dirname, './template', SONAR_PROJECT_PROPERTIES_FILENAME),
130
+ context: templateContext,
131
+ });
132
+ if (sonarProjectPropertiesContent.isErr()) {
133
+ throw new Error(`Failed to generate sonar-project.properties: ${sonarProjectPropertiesContent.unwrapErr().message}`);
134
+ }
135
+ vfs.write(`/${SONAR_PROJECT_PROPERTIES_FILENAME}`, sonarProjectPropertiesContent.unwrap());
122
136
  // write dynamic files
123
137
  vfs.write('/package.json', Generator.generatePackageJson(ctx.base.packageJson));
124
138
  const env = ctx.base.dotEnvExamples.join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"base.generator.js","sourceRoot":"","sources":["../../src/base/base.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.generator.js","sourceRoot":"","sources":["../../src/base/base.generator.ts"],"names":[],"mappings":"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"}
File without changes
@@ -1,4 +1,4 @@
1
- sonar.projectKey=PostXL_template
1
+ sonar.projectKey=PostXL_<%schema.slug%>
2
2
  sonar.organization=postxl
3
3
 
4
4
  # This is the name and version displayed in the SonarCloud UI.
@@ -7,7 +7,7 @@ sonar.organization=postxl
7
7
 
8
8
 
9
9
  # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
10
- sonar.sources=backend,web
10
+ sonar.sources=backend,frontend
11
11
 
12
12
  # Encoding of the source code. Default is default system encoding
13
13
  #sonar.sourceEncoding=UTF-8
@@ -59,7 +59,7 @@ const configureDevopsGenerator = (config) => ({
59
59
  connectionString: `postgresql://postgres:postgres@localhost:5432/${context.schema.slug}`,
60
60
  username: 'postgres',
61
61
  password: 'postgres', // NOSONAR: only for local development
62
- database: 'pxl',
62
+ database: `${context.schema.slug}`,
63
63
  }
64
64
  : undefined,
65
65
  keycloak: config?.keycloakComponents
@@ -67,9 +67,9 @@ const configureDevopsGenerator = (config) => ({
67
67
  components: config.keycloakComponents,
68
68
  host: 'http://localhost:8080',
69
69
  pathPrefix: '/auth',
70
- clientId: 'pxl',
70
+ clientId: `${context.schema.slug}-client`,
71
71
  clientSecret: 'secret',
72
- realm: 'pxl',
72
+ realm: `${context.schema.slug}`,
73
73
  }
74
74
  : undefined,
75
75
  useBitbucket: config?.useBitbucket ?? false,
@@ -1 +1 @@
1
- {"version":3,"file":"devops.generator.js","sourceRoot":"","sources":["../../src/devops/devops.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devops.generator.js","sourceRoot":"","sources":["../../src/devops/devops.generator.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import { DevOpsContextResult } from '../devops.generator';
2
- export declare function generateE2EYaml({ devOps: { database } }: DevOpsContextResult): string;
2
+ export declare function generateE2EYaml(context: DevOpsContextResult): string;
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateE2EYaml = generateE2EYaml;
4
- function generateE2EYaml({ devOps: { database } }) {
4
+ function generateE2EYaml(context) {
5
+ const { devOps: { database }, } = context;
6
+ // Use 'postgres' as hostname instead of 'localhost' for GitHub Actions service containers
7
+ const connectionString = `postgresql://postgres:postgres@postgres:5432/${context.schema.slug}`;
5
8
  return /*yml*/ `
6
9
  name: End-to-End Visual Tests
7
10
 
@@ -41,14 +44,14 @@ function generateE2EYaml({ devOps: { database } }) {
41
44
  cache: 'pnpm'
42
45
 
43
46
  - name: Setup Workspace
44
- run: pnpm run setup
47
+ run: apt-get update && apt-get -y install unzip && pnpm run setup
45
48
 
46
- ${database ? databaseSetup(database.connectionString) : ''}
49
+ ${database ? databaseSetup(connectionString) : ''}
47
50
 
48
51
  - name: Start backend
49
52
  run: pnpm e2e:coverage:stateless > backend.log 2>&1 &
50
53
  working-directory: backend
51
- ${database ? databaseConnectionEnv(database.connectionString) : ''}
54
+ ${database ? databaseConnectionEnv(connectionString) : ''}
52
55
 
53
56
  - name: Start frontend
54
57
  run: pnpm e2e:ci > frontend.log 2>&1 &
@@ -184,7 +187,7 @@ const postgresContainerSetup = ({ username, password, database }) => `
184
187
  `;
185
188
  const databaseConnectionEnv = (connectionString) => `
186
189
  env:
187
- # We need to use postgres service name as the host!
190
+ # We need to use postgres service name as the host when running in a container!
188
191
  DATABASE_CONNECTION: '${connectionString}'
189
192
  `;
190
193
  const databaseSetup = (connectionString) => `
@@ -1 +1 @@
1
- {"version":3,"file":"e2e-yml.generator.js","sourceRoot":"","sources":["../../../src/devops/generators/e2e-yml.generator.ts"],"names":[],"mappings":";;AAEA,0CAmKC;AAnKD,SAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAuB;IAC3E,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;QAqBT,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;UAoB9C,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;YAKtD,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmH3E,CAAA;AACD,CAAC;AAED,MAAM,sBAAsB,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAkB,EAAE,EAAE,CAAC;;;;;6BAKxD,QAAQ;iCACJ,QAAQ;2BACd,QAAQ;;;;;;;;;CASlC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,gBAAwB,EAAE,EAAE,CAAC;;;oCAGxB,gBAAgB;CACnD,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,gBAAwB,EAAE,EAAE,CAAC;;;EAGlD,qBAAqB,CAAC,gBAAgB,CAAC;CACxC,CAAA"}
1
+ {"version":3,"file":"e2e-yml.generator.js","sourceRoot":"","sources":["../../../src/devops/generators/e2e-yml.generator.ts"],"names":[],"mappings":";;AAEA,0CAyKC;AAzKD,SAAgB,eAAe,CAAC,OAA4B;IAC1D,MAAM,EACJ,MAAM,EAAE,EAAE,QAAQ,EAAE,GACrB,GAAG,OAAO,CAAA;IACX,0FAA0F;IAC1F,MAAM,gBAAgB,GAAG,gDAAgD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAE9F,OAAO,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;QAqBT,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;UAoB9C,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;YAK7C,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmHlE,CAAA;AACD,CAAC;AAED,MAAM,sBAAsB,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAkB,EAAE,EAAE,CAAC;;;;;6BAKxD,QAAQ;iCACJ,QAAQ;2BACd,QAAQ;;;;;;;;;CASlC,CAAA;AAED,MAAM,qBAAqB,GAAG,CAAC,gBAAwB,EAAE,EAAE,CAAC;;;oCAGxB,gBAAgB;CACnD,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,gBAAwB,EAAE,EAAE,CAAC;;;EAGlD,qBAAqB,CAAC,gBAAgB,CAAC;CACxC,CAAA"}
@@ -38,8 +38,9 @@ jobs:
38
38
  VITE_PUBLIC_API_URL: http://localhost:3001
39
39
  VITE_PUBLIC_BASE_URL: http://localhost:3000
40
40
 
41
- - name: Test Packages
42
- run: pnpm run test
41
+ # We skip this step for now. We will reintroduce tests later.
42
+ # - name: Test Packages
43
+ # run: pnpm run test
43
44
 
44
45
  - name: Lint Code
45
46
  run: pnpm run lint
@@ -13,5 +13,5 @@ if [[ "$(uname)" = "Linux" ]]; then
13
13
  USER_FLAG="-u $(id -u):$(id -g)"
14
14
  fi
15
15
 
16
- docker run -p 3030:3030 $USER_FLAG -v ${PWD}/../..:/pxl -w /pxl/projects/<%schema.slug%>/e2e --rm -it $IMAGE_NAME /bin/bash
16
+ docker run -p 3030:3030 $USER_FLAG -v ${PWD}:/pxl -w /pxl/e2e --rm -it $IMAGE_NAME /bin/bash
17
17
 
@@ -44,17 +44,15 @@ function generateAdminSidebar({ context }) {
44
44
  //
45
45
  .from(Generator.toBackendModuleLocation('@ui/admin/AdminSidebar'))
46
46
  .addImport({
47
- from: Generator.toBackendModuleLocation('@components/ui/sidebar/sidebar'),
47
+ from: Generator.toPackageName('react'),
48
+ items: [Generator.toFunctionName('useState')],
49
+ })
50
+ .addImport({
51
+ from: Generator.toPackageName('@radix-ui/react-icons'),
48
52
  items: [
49
- Generator.toFunctionName('Sidebar'),
50
- Generator.toFunctionName('SidebarContent'),
51
- Generator.toFunctionName('SidebarHeader'),
52
- Generator.toFunctionName('SidebarItem'),
53
- Generator.toFunctionName('sidebarLinkClassName'),
54
- Generator.toFunctionName('SidebarMobileToggle'),
55
- Generator.toFunctionName('SidebarOverlay'),
56
- Generator.toFunctionName('SidebarProvider'),
57
- Generator.toFunctionName('SidebarSection'),
53
+ Generator.toFunctionName('ChevronRightIcon'),
54
+ Generator.toFunctionName('ChevronDownIcon'),
55
+ Generator.toFunctionName('ChevronLeftIcon'),
58
56
  ],
59
57
  });
60
58
  const { schemas: sortedSchemas, modelsBySchema } = (0, utils_1.groupAndSortModelsBySchema)(context);
@@ -64,16 +62,34 @@ function generateAdminSidebar({ context }) {
64
62
  const models = modelsBySchema.get(schema);
65
63
  const modelLinks = models
66
64
  .map((model) => `
67
- <SidebarItem key="${model.name}">
68
- <Link to="${model.route}" className={sidebarLinkClassName}>
69
- ${model.userFriendlyName}
70
- </Link>
71
- </SidebarItem>`)
65
+ <li key="${model.name}">
66
+ <Link
67
+ to="${model.route}"
68
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
69
+ >
70
+ ${model.userFriendlyName}
71
+ </Link>
72
+ </li>`)
72
73
  .join('');
73
74
  return `
74
- <SidebarSection key="${schema}" title="${schema}">
75
- ${modelLinks}
76
- </SidebarSection>`;
75
+ <div key="${schema}" className="mb-4">
76
+ <button
77
+ onClick={() => toggleSchema('${schema}')}
78
+ className="flex items-center justify-between w-full px-4 py-2 font-semibold text-left hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
79
+ >
80
+ <span>${schema}</span>
81
+ {expandedSchemas['${schema}'] ? (
82
+ <ChevronDownIcon className="w-4 h-4" />
83
+ ) : (
84
+ <ChevronRightIcon className="w-4 h-4" />
85
+ )}
86
+ </button>
87
+ {expandedSchemas['${schema}'] && (
88
+ <ul className="mt-2 ml-2 space-y-1">
89
+ ${modelLinks}
90
+ </ul>
91
+ )}
92
+ </div>`;
77
93
  })
78
94
  .join('');
79
95
  return `
@@ -81,34 +97,98 @@ import { Link } from '@tanstack/react-router'
81
97
  ${imports.generate()}
82
98
 
83
99
  export function AdminSidebar() {
100
+ const [isOpen, setIsOpen] = useState(false)
101
+ const [isCollapsed, setIsCollapsed] = useState(false)
102
+ const [expandedSchemas, setExpandedSchemas] = useState<Record<string, boolean>>({
103
+ ${sortedSchemas.map((schema) => `'${schema}': true`).join(',\n ')},
104
+ 'Advanced': true
105
+ })
106
+
107
+ const toggleSchema = (schema: string) => {
108
+ setExpandedSchemas((prev) => ({
109
+ ...prev,
110
+ [schema]: !prev[schema],
111
+ }))
112
+ }
113
+
84
114
  return (
85
- <SidebarProvider>
86
- <SidebarMobileToggle />
87
- <Sidebar>
115
+ <>
116
+ {/* Mobile toggle button */}
117
+ <button
118
+ onClick={() => setIsOpen(!isOpen)}
119
+ className="fixed top-4 left-4 z-50 md:hidden p-2 bg-white dark:bg-gray-900 rounded shadow-lg border border-gray-200 dark:border-gray-700"
120
+ aria-label="Toggle admin menu"
121
+ >
122
+ {isOpen ? <ChevronDownIcon className="w-6 h-6" /> : <ChevronRightIcon className="w-6 h-6" />}
123
+ </button>
124
+
125
+ {/* Sidebar */}
126
+ <aside
127
+ className={\`
128
+ fixed md:sticky top-0 left-0 h-screen bg-white dark:bg-gray-900 border-r border-gray-200 dark:border-gray-700
129
+ overflow-y-auto transition-all duration-300 z-40
130
+ \${isOpen ? 'translate-x-0' : '-translate-x-full md:translate-x-0'}
131
+ \${isCollapsed ? 'w-16 min-w-16' : 'w-64 min-w-64'}
132
+ \`}
133
+ >
88
134
  <div className="p-4">
89
- <SidebarHeader
90
- title={
135
+ <div className="flex items-center justify-between mb-4">
136
+ {!isCollapsed && (
91
137
  <Link to="/admin" className="text-lg font-bold hover:text-blue-600 dark:hover:text-blue-400 transition-colors">
92
138
  Admin
93
139
  </Link>
94
- }
95
- />
96
- <SidebarContent>
97
- ${schemaSections}
98
- {import.meta.env.NEXT_PUBLIC_ALLOW_ADMIN === 'true' && (
99
- <SidebarSection title="Advanced">
100
- <SidebarItem>
101
- <Link to="/admin/data-management" className={sidebarLinkClassName}>
102
- Data Management
103
- </Link>
104
- </SidebarItem>
105
- </SidebarSection>
106
140
  )}
107
- </SidebarContent>
141
+ <button
142
+ onClick={() => setIsCollapsed(!isCollapsed)}
143
+ className="hidden md:block p-1 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors ml-auto"
144
+ aria-label={isCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}
145
+ >
146
+ {isCollapsed ? <ChevronRightIcon className="w-5 h-5" /> : <ChevronLeftIcon className="w-5 h-5" />}
147
+ </button>
148
+ </div>
149
+ {!isCollapsed && (
150
+ <nav>
151
+ ${schemaSections}
152
+ {import.meta.env.NEXT_PUBLIC_ALLOW_ADMIN === 'true' && (
153
+ <div key="Advanced" className="mb-4">
154
+ <button
155
+ onClick={() => toggleSchema('Advanced')}
156
+ className="flex items-center justify-between w-full px-4 py-2 font-semibold text-left hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
157
+ >
158
+ <span>Advanced</span>
159
+ {expandedSchemas['Advanced'] ? (
160
+ <ChevronDownIcon className="w-4 h-4" />
161
+ ) : (
162
+ <ChevronRightIcon className="w-4 h-4" />
163
+ )}
164
+ </button>
165
+ {expandedSchemas['Advanced'] && (
166
+ <ul className="mt-2 ml-2 space-y-1">
167
+ <li key="DataManagement">
168
+ <Link
169
+ to="/admin/data-management"
170
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
171
+ >
172
+ Data Management
173
+ </Link>
174
+ </li>
175
+ </ul>
176
+ )}
177
+ </div>
178
+ )}
179
+ </nav>
180
+ )}
108
181
  </div>
109
- </Sidebar>
110
- <SidebarOverlay />
111
- </SidebarProvider>
182
+ </aside>
183
+
184
+ {/* Overlay for mobile */}
185
+ {isOpen && (
186
+ <div
187
+ className="fixed inset-0 bg-black/20 z-30 md:hidden"
188
+ onClick={() => setIsOpen(false)}
189
+ />
190
+ )}
191
+ </>
112
192
  )
113
193
  }
114
194
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"admin-sidebar.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/admin-sidebar.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,oDA+EC;AAvFD,6DAA8C;AAG9C,oCAAqD;AAErD;;GAEG;AACH,SAAgB,oBAAoB,CAAC,EAAE,OAAO,EAA8B;IAC1E,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;QACvC,EAAE;SACD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;SACjE,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,uBAAuB,CAAC,gCAAgC,CAAC;QACzE,KAAK,EAAE;YACL,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;YACnC,SAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC;YAC1C,SAAS,CAAC,cAAc,CAAC,eAAe,CAAC;YACzC,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC;YACvC,SAAS,CAAC,cAAc,CAAC,sBAAsB,CAAC;YAChD,SAAS,CAAC,cAAc,CAAC,qBAAqB,CAAC;YAC/C,SAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC;YAC1C,SAAS,CAAC,cAAc,CAAC,iBAAiB,CAAC;YAC3C,SAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC;SAC3C;KACF,CAAC,CAAA;IAEJ,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,IAAA,kCAA0B,EAAC,OAAO,CAAC,CAAA;IAEtF,+BAA+B;IAC/B,MAAM,cAAc,GAAG,aAAa;SACjC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAC1C,MAAM,UAAU,GAAG,MAAM;aACtB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CAAC;kCACa,KAAK,CAAC,IAAI;4BAChB,KAAK,CAAC,KAAK;oBACnB,KAAK,CAAC,gBAAgB;;6BAEb,CACpB;aACA,IAAI,CAAC,EAAE,CAAC,CAAA;QAEX,OAAO;mCACsB,MAAM,YAAY,MAAM;gBAC3C,UAAU;8BACI,CAAA;IAC1B,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO;;EAEP,OAAO,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;cAgBN,cAAc;;;;;;;;;;;;;;;;;CAiB3B,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"admin-sidebar.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/admin-sidebar.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,oDA+JC;AAvKD,6DAA8C;AAG9C,oCAAqD;AAErD;;GAEG;AACH,SAAgB,oBAAoB,CAAC,EAAE,OAAO,EAA8B;IAC1E,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;QACvC,EAAE;SACD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC;SACjE,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;QACtC,KAAK,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;KAC9C,CAAC;SACD,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,uBAAuB,CAAC;QACtD,KAAK,EAAE;YACL,SAAS,CAAC,cAAc,CAAC,kBAAkB,CAAC;YAC5C,SAAS,CAAC,cAAc,CAAC,iBAAiB,CAAC;YAC3C,SAAS,CAAC,cAAc,CAAC,iBAAiB,CAAC;SAC5C;KACF,CAAC,CAAA;IAEJ,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,IAAA,kCAA0B,EAAC,OAAO,CAAC,CAAA;IAEtF,+BAA+B;IAC/B,MAAM,cAAc,GAAG,aAAa;SACjC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAC1C,MAAM,UAAU,GAAG,MAAM;aACtB,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CAAC;qBACA,KAAK,CAAC,IAAI;;oBAEX,KAAK,CAAC,KAAK;;;gBAGf,KAAK,CAAC,gBAAgB;;gBAEtB,CACP;aACA,IAAI,CAAC,EAAE,CAAC,CAAA;QAEX,OAAO;gBACG,MAAM;;uCAEiB,MAAM;;;gBAG7B,MAAM;4BACM,MAAM;;;;;;0BAMR,MAAM;;YAEpB,UAAU;;;WAGX,CAAA;IACP,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO;;EAEP,OAAO,CAAC,QAAQ,EAAE;;;;;;MAMd,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAgDxD,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C7B,CAAA;AACD,CAAC"}
@@ -1,6 +1,8 @@
1
1
  import * as Generator from '@postxl/generator';
2
2
  import { ConfigBuilder } from '@postxl/generator';
3
+ import { WithBase } from '../base';
3
4
  import { Component, FrontendContextEntry } from './types';
5
+ export type ContextRequirements = WithBase<Generator.Context>;
4
6
  export declare const base: FrontendContextEntry;
5
7
  /**
6
8
  * Can be used to augment the base config with our form input components.
@@ -15,7 +17,7 @@ export declare const forms: {
15
17
  };
16
18
  };
17
19
  /**
18
- * TODO backport chats from portfolex (when ready)
20
+ * TODO backport charts from portfolex (when ready)
19
21
  */
20
22
  export declare const charts: {
21
23
  components: "chart"[];
@@ -61,7 +61,6 @@ exports.base = {
61
61
  'progress',
62
62
  'radio-group',
63
63
  'select',
64
- 'sidebar',
65
64
  'skeleton',
66
65
  'slider',
67
66
  'spinner',
@@ -217,7 +216,7 @@ exports.forms = {
217
216
  },
218
217
  };
219
218
  /**
220
- * TODO backport chats from portfolex (when ready)
219
+ * TODO backport charts from portfolex (when ready)
221
220
  */
222
221
  exports.charts = {
223
222
  components: ['chart'],
@@ -337,9 +336,23 @@ const configureFrontendGenerator = (into) => ({
337
336
  implementsInterface: [exports.frontendGeneratorId],
338
337
  requires: [],
339
338
  register: (context) => {
339
+ const packageName = (0, generator_1.toPostXlPackageName)(`@postxl/${context.schema.slug}-frontend`);
340
340
  const frontend = into ? into(new generator_1.ConfigBuilder(exports.base)).done() : exports.base;
341
- frontend.packageJson.name = (0, generator_1.toPostXlPackageName)(`@postxl/${context.schema.slug}-frontend`);
341
+ frontend.packageJson.name = packageName;
342
342
  frontend.packageJson.description = `Frontend for the ${context.schema.slug} project`;
343
+ frontend.packageJson.scripts.push({ name: 'generate:tsr', command: 'tsr generate' });
344
+ context.base.packageJson.scripts.push({
345
+ name: 'generate:tsr',
346
+ command: `pnpm --filter ${packageName} exec tsr generate`,
347
+ });
348
+ // replace the generate script to also run tsr generate
349
+ const generateScript = context.base.packageJson.scripts.find((s) => s.name === 'generate:project');
350
+ if (generateScript) {
351
+ generateScript.command += ' && pnpm run generate:tsr';
352
+ }
353
+ else {
354
+ context.base.packageJson.scripts.push({ name: 'generate:project', command: 'pnpm run generate:tsr' });
355
+ }
343
356
  return { ...context, frontend };
344
357
  },
345
358
  // TODO @Peter: context type <Context extends ContextResult>(context: Context): void => {
@@ -1 +1 @@
1
- {"version":3,"file":"frontend.generator.js","sourceRoot":"","sources":["../../src/frontend-core/frontend.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontend.generator.js","sourceRoot":"","sources":["../../src/frontend-core/frontend.generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from '@radix-ui/react-icons'
2
+
3
+ import { useState } from 'react'
4
+
5
+ export function AdminSidebar() {
6
+ const [isOpen, setIsOpen] = useState(false)
7
+ const [isCollapsed, setIsCollapsed] = useState(false)
8
+ const [expandedSchemas, setExpandedSchemas] = useState<Record<string, boolean>>({
9
+ Data: true,
10
+ PXL: true,
11
+ Advanced: true,
12
+ })
13
+
14
+ const toggleSchema = (schema: string) => {
15
+ setExpandedSchemas((prev) => ({
16
+ ...prev,
17
+ [schema]: !prev[schema],
18
+ }))
19
+ }
20
+
21
+ return (
22
+ <>
23
+ {/* Mobile toggle button */}
24
+ <button
25
+ onClick={() => setIsOpen(!isOpen)}
26
+ className="fixed top-4 left-4 z-50 md:hidden p-2 bg-white dark:bg-gray-900 rounded shadow-lg border border-gray-200 dark:border-gray-700"
27
+ aria-label="Toggle admin menu"
28
+ >
29
+ {isOpen ? <ChevronDownIcon className="w-6 h-6" /> : <ChevronRightIcon className="w-6 h-6" />}
30
+ </button>
31
+
32
+ {/* Sidebar */}
33
+ <aside
34
+ className={`
35
+ fixed md:sticky top-0 left-0 h-screen bg-white dark:bg-gray-900 border-r border-gray-200 dark:border-gray-700
36
+ overflow-y-auto transition-all duration-300 z-40
37
+ ${isOpen ? 'translate-x-0' : '-translate-x-full md:translate-x-0'}
38
+ ${isCollapsed ? 'w-16 min-w-16' : 'w-64 min-w-64'}
39
+ `}
40
+ >
41
+ <div className="p-4">
42
+ <div className="flex items-center justify-between mb-4">
43
+ {!isCollapsed && (
44
+ <a
45
+ href="/admin"
46
+ className="text-lg font-bold hover:text-blue-600 dark:hover:text-blue-400 transition-colors"
47
+ >
48
+ Admin
49
+ </a>
50
+ )}
51
+ <button
52
+ onClick={() => setIsCollapsed(!isCollapsed)}
53
+ className="hidden md:block p-1 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors ml-auto"
54
+ aria-label={isCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}
55
+ >
56
+ {isCollapsed ? <ChevronRightIcon className="w-5 h-5" /> : <ChevronLeftIcon className="w-5 h-5" />}
57
+ </button>
58
+ </div>
59
+ {!isCollapsed && (
60
+ <nav>
61
+ <div key="Data" className="mb-4">
62
+ <button
63
+ onClick={() => toggleSchema('Data')}
64
+ className="flex items-center justify-between w-full px-4 py-2 font-semibold text-left hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
65
+ >
66
+ <span>Data</span>
67
+ {expandedSchemas['Data'] ? (
68
+ <ChevronDownIcon className="w-4 h-4" />
69
+ ) : (
70
+ <ChevronRightIcon className="w-4 h-4" />
71
+ )}
72
+ </button>
73
+ {expandedSchemas['Data'] && (
74
+ <ul className="mt-2 ml-2 space-y-1">
75
+ <li key="Country">
76
+ <a
77
+ href="/admin/countries"
78
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
79
+ >
80
+ Country
81
+ </a>
82
+ </li>
83
+ <li key="Post">
84
+ <a
85
+ href="/admin/posts"
86
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
87
+ >
88
+ Post
89
+ </a>
90
+ </li>
91
+ <li key="Publication">
92
+ <a
93
+ href="/admin/publications"
94
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
95
+ >
96
+ Publication
97
+ </a>
98
+ </li>
99
+ <li key="ViewStatistic">
100
+ <Link
101
+ href="/admin/viewStatistics"
102
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
103
+ >
104
+ ViewStatistic
105
+ </Link>
106
+ </li>
107
+ </ul>
108
+ )}
109
+ </div>
110
+ <div key="PXL" className="mb-4">
111
+ <button
112
+ onClick={() => toggleSchema('PXL')}
113
+ className="flex items-center justify-between w-full px-4 py-2 font-semibold text-left hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
114
+ >
115
+ <span>PXL</span>
116
+ {expandedSchemas['PXL'] ? (
117
+ <ChevronDownIcon className="w-4 h-4" />
118
+ ) : (
119
+ <ChevronRightIcon className="w-4 h-4" />
120
+ )}
121
+ </button>
122
+ {expandedSchemas['PXL'] && (
123
+ <ul className="mt-2 ml-2 space-y-1">
124
+ <li key="Action">
125
+ <a
126
+ href="/admin/actions"
127
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
128
+ >
129
+ Action
130
+ </a>
131
+ </li>
132
+ <li key="ActionOperation">
133
+ <a
134
+ href="/admin/actionOperations"
135
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
136
+ >
137
+ ActionOperation
138
+ </a>
139
+ </li>
140
+ <li key="File">
141
+ <a
142
+ href="/admin/files"
143
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
144
+ >
145
+ File
146
+ </a>
147
+ </li>
148
+ <li key="User">
149
+ <a
150
+ href="/admin/users"
151
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
152
+ >
153
+ User
154
+ </a>
155
+ </li>
156
+ </ul>
157
+ )}
158
+ </div>
159
+ {process.env.NEXT_PUBLIC_ALLOW_ADMIN === 'true' && (
160
+ <div key="Advanced" className="mb-4">
161
+ <button
162
+ onClick={() => toggleSchema('Advanced')}
163
+ className="flex items-center justify-between w-full px-4 py-2 font-semibold text-left hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
164
+ >
165
+ <span>Advanced</span>
166
+ {expandedSchemas['Advanced'] ? (
167
+ <ChevronDownIcon className="w-4 h-4" />
168
+ ) : (
169
+ <ChevronRightIcon className="w-4 h-4" />
170
+ )}
171
+ </button>
172
+ {expandedSchemas['Advanced'] && (
173
+ <ul className="mt-2 ml-2 space-y-1">
174
+ <li key="DataManagement">
175
+ <Link
176
+ href="/admin/data-management"
177
+ className="block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
178
+ >
179
+ Data Management
180
+ </Link>
181
+ </li>
182
+ </ul>
183
+ )}
184
+ </div>
185
+ )}
186
+ </nav>
187
+ )}
188
+ </div>
189
+ </aside>
190
+
191
+ {/* Overlay for mobile */}
192
+ {isOpen && <div className="fixed inset-0 bg-black/20 z-30 md:hidden" onClick={() => setIsOpen(false)} />}
193
+ </>
194
+ )
195
+ }
@@ -40,22 +40,25 @@ export default defineConfig({
40
40
  // Split large dependencies into separate chunks
41
41
  if (id.includes('node_modules')) {
42
42
  switch (true) {
43
- // TanStack Dev Tools - MUST be first (contains 'react' and 'router'/'query')
44
- case id.includes('@tanstack/router-devtools-core') ||
45
- id.includes('@tanstack/react-devtools') ||
46
- id.includes('@tanstack/react-query-devtools') ||
47
- id.includes('@tanstack/react-router-devtools') ||
48
- id.includes('@tanstack/devtools'):
43
+ case id.includes('/@tanstack/router-devtools-core/') ||
44
+ id.includes('/@tanstack/react-devtools/') ||
45
+ id.includes('/@tanstack/react-query-devtools/') ||
46
+ id.includes('/@tanstack/react-router-devtools/') ||
47
+ id.includes('/@tanstack/devtools/'):
49
48
  return 'tanstack-dev-tools'
50
49
 
50
+ // TanStack Router
51
+ case id.includes('@tanstack/react-router'):
52
+ return 'tanstack-router'
53
+
54
+ // TanStack Query + tRPC
55
+ case id.includes('@tanstack/react-query') || id.includes('@trpc/'):
56
+ return 'tanstack-query'
57
+
51
58
  // zod
52
59
  case id.includes('/zod'):
53
60
  return 'zod'
54
61
 
55
- // radix library
56
- case id.includes('@radix-ui/react'):
57
- return 'radix-ui'
58
-
59
62
  // React core - MUST be together to avoid duplication
60
63
  case id.includes('react') || id.includes('react-dom'):
61
64
  return 'react-vendor'
@@ -68,18 +71,6 @@ export default defineConfig({
68
71
  case id.includes('@visx/'):
69
72
  return 'visx'
70
73
 
71
- // Radix UI - design system components
72
- case id.includes('@radix-ui/'):
73
- return 'radix-ui'
74
-
75
- // TanStack Router
76
- case id.includes('@tanstack/react-router'):
77
- return 'tanstack-router'
78
-
79
- // TanStack Query + tRPC
80
- case id.includes('@tanstack/react-query') || id.includes('@trpc/'):
81
- return 'tanstack-query'
82
-
83
74
  default:
84
75
  // All other vendor code
85
76
  return 'vendor'
@@ -1 +1 @@
1
- export type Component = 'accordion' | 'admin-sidebar' | 'alert' | 'alert-dialog' | 'avatar' | 'badge' | 'breadcrumb' | 'button' | 'calendar' | 'card' | 'card-hover' | 'carousel' | 'chart' | 'checkbox' | 'collapse' | 'combobox' | 'command' | 'command-palette' | 'content-frame' | 'context-menu' | 'data-grid' | 'data-table' | 'date-picker' | 'dialog' | 'drawer' | 'dropdown-menu' | 'input' | 'label' | 'loader' | 'mark-value-renderer' | 'menubar' | 'modal' | 'navigation-menu' | 'pagination' | 'popover' | 'progress' | 'radio-group' | 'resizable' | 'scroll-area' | 'select' | 'separator' | 'sheet' | 'sidebar' | 'skeleton' | 'slider' | 'spinner' | 'spreadsheet' | 'switch' | 'tabs' | 'textarea' | 'toast' | 'toggle' | 'toggle-group' | 'tooltip';
1
+ export type Component = 'accordion' | 'admin-sidebar' | 'alert' | 'alert-dialog' | 'avatar' | 'badge' | 'breadcrumb' | 'button' | 'calendar' | 'card' | 'card-hover' | 'carousel' | 'chart' | 'checkbox' | 'collapse' | 'combobox' | 'command' | 'command-palette' | 'content-frame' | 'context-menu' | 'data-grid' | 'data-table' | 'date-picker' | 'dialog' | 'drawer' | 'dropdown-menu' | 'input' | 'label' | 'loader' | 'mark-value-renderer' | 'menubar' | 'modal' | 'navigation-menu' | 'pagination' | 'popover' | 'progress' | 'radio-group' | 'resizable' | 'scroll-area' | 'select' | 'separator' | 'sheet' | 'skeleton' | 'slider' | 'spinner' | 'spreadsheet' | 'switch' | 'tabs' | 'textarea' | 'toast' | 'toggle' | 'toggle-group' | 'tooltip';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@postxl/generators",
3
- "version": "1.0.1",
3
+ "version": "1.0.4",
4
4
  "description": "Code generators for PXL - generates backend, frontend, Prisma schemas, and more",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -35,17 +35,6 @@
35
35
  "files": [
36
36
  "dist"
37
37
  ],
38
- "scripts": {
39
- "build": "tsc -b tsconfig.build.json && pnpm run copy:templates",
40
- "copy:templates": "find src -type d -name 'template' -exec sh -c 'mkdir -p \"dist/$(dirname \"$1\" | sed \"s|^src/||\")\" && cp -r \"$1\" \"dist/$(dirname \"$1\" | sed \"s|^src/||\")\"' _ {} \\;",
41
- "generate": "tsx src/frontend-core/scripts/generate-types.ts",
42
- "lint": "eslint .",
43
- "prettier:check": "prettier --check \"**/*.{ts,tsx}\" --config ../../prettier.config.js --ignore-path ../../.prettierignore",
44
- "test:jest": "cross-env NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest",
45
- "test:coverage": "cross-env NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest --coverage",
46
- "test:watch": "cross-env NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest --watch",
47
- "test:types": "tsc --noEmit"
48
- },
49
38
  "repository": {
50
39
  "type": "git",
51
40
  "url": "https://github.com/postxl/pxl",
@@ -53,10 +42,10 @@
53
42
  },
54
43
  "dependencies": {
55
44
  "@faker-js/faker": "^9.4.0",
56
- "@postxl/generator": "workspace:*",
57
- "@postxl/schema": "workspace:*",
58
45
  "@prisma/prisma-schema-wasm": "6.20.0-5.46b83975fec203f6665832b932ab3dc58be23eab",
59
- "exceljs": "^4.4.0"
46
+ "exceljs": "^4.4.0",
47
+ "@postxl/generator": "^1.0.4",
48
+ "@postxl/schema": "^1.0.0"
60
49
  },
61
50
  "devDependencies": {},
62
51
  "wallaby": {
@@ -66,5 +55,16 @@
66
55
  "runner": "--experimental-vm-modules"
67
56
  }
68
57
  }
58
+ },
59
+ "scripts": {
60
+ "build": "tsc -b tsconfig.build.json && pnpm run copy:templates",
61
+ "copy:templates": "find src -type d -name 'template' -exec sh -c 'mkdir -p \"dist/$(dirname \"$1\" | sed \"s|^src/||\")\" && cp -r \"$1\" \"dist/$(dirname \"$1\" | sed \"s|^src/||\")\"' _ {} \\;",
62
+ "generate": "tsx src/frontend-core/scripts/generate-types.ts",
63
+ "lint": "eslint .",
64
+ "prettier:check": "prettier --check \"**/*.{ts,tsx}\" --config ../../prettier.config.js --ignore-path ../../.prettierignore",
65
+ "test:jest": "cross-env NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest",
66
+ "test:coverage": "cross-env NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest --coverage",
67
+ "test:watch": "cross-env NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest --watch",
68
+ "test:types": "tsc --noEmit"
69
69
  }
70
- }
70
+ }
@@ -1,194 +0,0 @@
1
- import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from '@radix-ui/react-icons'
2
-
3
- import * as React from 'react'
4
-
5
- import { cn } from '@lib/utils'
6
-
7
- // Context for sidebar state
8
- type SidebarContextValue = {
9
- isOpen: boolean
10
- setIsOpen: (open: boolean) => void
11
- isCollapsed: boolean
12
- setIsCollapsed: (collapsed: boolean) => void
13
- }
14
-
15
- const SidebarContext = React.createContext<SidebarContextValue | null>(null)
16
-
17
- function useSidebar() {
18
- const context = React.useContext(SidebarContext)
19
- if (!context) {
20
- throw new Error('useSidebar must be used within a SidebarProvider')
21
- }
22
- return context
23
- }
24
-
25
- // Provider
26
- type SidebarProviderProps = {
27
- children: React.ReactNode
28
- defaultOpen?: boolean
29
- defaultCollapsed?: boolean
30
- }
31
-
32
- function SidebarProvider({ children, defaultOpen = false, defaultCollapsed = false }: SidebarProviderProps) {
33
- const [isOpen, setIsOpen] = React.useState(defaultOpen)
34
- const [isCollapsed, setIsCollapsed] = React.useState(defaultCollapsed)
35
-
36
- return (
37
- <SidebarContext.Provider value={{ isOpen, setIsOpen, isCollapsed, setIsCollapsed }}>
38
- {children}
39
- </SidebarContext.Provider>
40
- )
41
- }
42
-
43
- // Root sidebar container
44
- type SidebarProps = React.HTMLAttributes<HTMLElement> & {
45
- children: React.ReactNode
46
- }
47
-
48
- function Sidebar({ children, className, ...props }: SidebarProps) {
49
- const { isOpen, isCollapsed } = useSidebar()
50
-
51
- return (
52
- <aside
53
- className={cn(
54
- 'fixed md:sticky top-0 left-0 h-screen bg-white dark:bg-gray-900 border-r border-gray-200 dark:border-gray-700',
55
- 'overflow-y-auto transition-all duration-300 z-40',
56
- isOpen ? 'translate-x-0' : '-translate-x-full md:translate-x-0',
57
- isCollapsed ? 'w-16 min-w-16' : 'w-64 min-w-64',
58
- className,
59
- )}
60
- {...props}
61
- >
62
- {children}
63
- </aside>
64
- )
65
- }
66
-
67
- // Mobile toggle button
68
- type SidebarMobileToggleProps = React.ButtonHTMLAttributes<HTMLButtonElement>
69
-
70
- function SidebarMobileToggle({ className, ...props }: SidebarMobileToggleProps) {
71
- const { isOpen, setIsOpen } = useSidebar()
72
-
73
- return (
74
- <button
75
- onClick={() => setIsOpen(!isOpen)}
76
- className={cn(
77
- 'fixed top-4 left-4 z-50 md:hidden p-2 bg-white dark:bg-gray-900 rounded shadow-lg border border-gray-200 dark:border-gray-700',
78
- className,
79
- )}
80
- aria-label="Toggle menu"
81
- {...props}
82
- >
83
- {isOpen ? <ChevronDownIcon className="w-6 h-6" /> : <ChevronRightIcon className="w-6 h-6" />}
84
- </button>
85
- )
86
- }
87
-
88
- // Mobile overlay
89
- type SidebarOverlayProps = React.HTMLAttributes<HTMLDivElement>
90
-
91
- function SidebarOverlay({ className, ...props }: SidebarOverlayProps) {
92
- const { isOpen, setIsOpen } = useSidebar()
93
-
94
- if (!isOpen) return null
95
-
96
- return (
97
- <div
98
- className={cn('fixed inset-0 bg-black/20 z-30 md:hidden', className)}
99
- onClick={() => setIsOpen(false)}
100
- {...props}
101
- />
102
- )
103
- }
104
-
105
- // Header with title and collapse toggle
106
- type SidebarHeaderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> & {
107
- title?: React.ReactNode
108
- showCollapseToggle?: boolean
109
- }
110
-
111
- function SidebarHeader({ title, showCollapseToggle = true, className, children, ...props }: SidebarHeaderProps) {
112
- const { isCollapsed, setIsCollapsed } = useSidebar()
113
-
114
- return (
115
- <div className={cn('flex items-center justify-between mb-4', className)} {...props}>
116
- {!isCollapsed && (title || children)}
117
- {showCollapseToggle && (
118
- <button
119
- onClick={() => setIsCollapsed(!isCollapsed)}
120
- className="hidden md:block p-1 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors ml-auto"
121
- aria-label={isCollapsed ? 'Expand sidebar' : 'Collapse sidebar'}
122
- >
123
- {isCollapsed ? <ChevronRightIcon className="w-5 h-5" /> : <ChevronLeftIcon className="w-5 h-5" />}
124
- </button>
125
- )}
126
- </div>
127
- )
128
- }
129
-
130
- // Content container (hidden when collapsed)
131
- type SidebarContentProps = React.HTMLAttributes<HTMLDivElement>
132
-
133
- function SidebarContent({ className, children, ...props }: SidebarContentProps) {
134
- const { isCollapsed } = useSidebar()
135
-
136
- if (isCollapsed) return null
137
-
138
- return (
139
- <nav className={className} {...props}>
140
- {children}
141
- </nav>
142
- )
143
- }
144
-
145
- // Collapsible section
146
- type SidebarSectionProps = {
147
- title: string
148
- defaultExpanded?: boolean
149
- children: React.ReactNode
150
- className?: string
151
- }
152
-
153
- function SidebarSection({ title, defaultExpanded = true, children, className }: SidebarSectionProps) {
154
- const [isExpanded, setIsExpanded] = React.useState(defaultExpanded)
155
-
156
- return (
157
- <div className={cn('mb-4', className)}>
158
- <button
159
- onClick={() => setIsExpanded(!isExpanded)}
160
- className="flex items-center justify-between w-full px-4 py-2 font-semibold text-left hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors"
161
- >
162
- <span>{title}</span>
163
- {isExpanded ? <ChevronDownIcon className="w-4 h-4" /> : <ChevronRightIcon className="w-4 h-4" />}
164
- </button>
165
- {isExpanded && <ul className="mt-2 ml-2 space-y-1">{children}</ul>}
166
- </div>
167
- )
168
- }
169
-
170
- // Individual navigation item
171
- type SidebarItemProps = {
172
- children: React.ReactNode
173
- className?: string
174
- }
175
-
176
- function SidebarItem({ children, className }: SidebarItemProps) {
177
- return <li className={cn('', className)}>{children}</li>
178
- }
179
-
180
- // Link styling helper
181
- const sidebarLinkClassName = 'block px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded transition-colors'
182
-
183
- export {
184
- Sidebar,
185
- SidebarContent,
186
- SidebarHeader,
187
- SidebarItem,
188
- sidebarLinkClassName,
189
- SidebarMobileToggle,
190
- SidebarOverlay,
191
- SidebarProvider,
192
- SidebarSection,
193
- useSidebar,
194
- }