@postxl/generators 1.17.2 → 1.18.0

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 (23) hide show
  1. package/dist/frontend-actions/actions.generator.js +1 -20
  2. package/dist/frontend-actions/actions.generator.js.map +1 -1
  3. package/dist/frontend-admin/admin.generator.js +2 -2
  4. package/dist/frontend-admin/admin.generator.js.map +1 -1
  5. package/dist/frontend-admin/generators/admin-sidebar.generator.d.ts +2 -1
  6. package/dist/frontend-admin/generators/admin-sidebar.generator.js +8 -26
  7. package/dist/frontend-admin/generators/admin-sidebar.generator.js.map +1 -1
  8. package/dist/frontend-admin/generators/data-management-page.generator.js +14 -7
  9. package/dist/frontend-admin/generators/data-management-page.generator.js.map +1 -1
  10. package/dist/frontend-admin/generators/excel-io-page.generator.js +16 -9
  11. package/dist/frontend-admin/generators/excel-io-page.generator.js.map +1 -1
  12. package/dist/frontend-admin/generators/import-review-page.generator.js +16 -10
  13. package/dist/frontend-admin/generators/import-review-page.generator.js.map +1 -1
  14. package/dist/frontend-admin/generators/model-admin-page.generator.js +125 -76
  15. package/dist/frontend-admin/generators/model-admin-page.generator.js.map +1 -1
  16. package/dist/frontend-core/template/src/components/ui/application-header/application-header.tsx +44 -0
  17. package/dist/frontend-core/template/src/components/ui/color-mode-toggle/color-mode-toggle.tsx +1 -1
  18. package/dist/frontend-core/template/src/context-providers/header-context-provider.tsx +41 -0
  19. package/dist/frontend-core/template/src/pages/authorized-page-layout.tsx +49 -0
  20. package/dist/frontend-core/template/src/pages/dashboard/dashboard.page.tsx +73 -50
  21. package/dist/frontend-core/template/src/routes/_auth-routes.tsx +3 -2
  22. package/dist/frontend-core/template/src/styles/theme-default.css +7 -3
  23. package/package.json +2 -2
@@ -84,26 +84,7 @@ exports.generator = {
84
84
  const rootDocumentPath = 'frontend/src/pages/root-document.tsx';
85
85
  const rootDocument = context.vfs.get(rootDocumentPath);
86
86
  if (typeof rootDocument === 'string') {
87
- let content = rootDocument;
88
- if (!content.includes("import { CommandPalette } from '@app-actions/command-palette'")) {
89
- content = content.replace("import { APP_CONFIG } from '@lib/config'", "import { CommandPalette } from '@app-actions/command-palette'\nimport { APP_CONFIG } from '@lib/config'");
90
- }
91
- if (!content.includes("import { AiSidepane } from '@app-actions/ai-sidepane'")) {
92
- content = content.replace("import { CommandPalette } from '@app-actions/command-palette'", "import { AiSidepane } from '@app-actions/ai-sidepane'\nimport { CommandPalette } from '@app-actions/command-palette'");
93
- }
94
- if (!content.includes("import { SidepanelToggle } from '@app-actions/sidepanel-toggle'")) {
95
- content = content.replace("import { AiSidepane } from '@app-actions/ai-sidepane'", "import { AiSidepane } from '@app-actions/ai-sidepane'\nimport { SidepanelToggle } from '@app-actions/sidepanel-toggle'");
96
- }
97
- if (!content.includes('<CommandPalette />')) {
98
- content = content.replace('<Outlet />', '<Outlet />\n <CommandPalette />');
99
- }
100
- if (!content.includes('<AiSidepane />')) {
101
- content = content.replace('<CommandPalette />', '<CommandPalette />\n <AiSidepane />');
102
- }
103
- if (!content.includes('<SidepanelToggle />')) {
104
- content = content.replace('<AiSidepane />', '<AiSidepane />\n <SidepanelToggle />');
105
- }
106
- context.vfs.write(rootDocumentPath, content);
87
+ context.vfs.write(rootDocumentPath, rootDocument);
107
88
  }
108
89
  return context;
109
90
  },
@@ -1 +1 @@
1
- {"version":3,"file":"actions.generator.js","sourceRoot":"","sources":["../../src/frontend-actions/actions.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.generator.js","sourceRoot":"","sources":["../../src/frontend-actions/actions.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA8C;AAE9C,gEAA4F;AAC5F,kCAAmD;AACnD,oDAAoE;AACpE,kEAA+F;AAE/F,gGAAuF;AACvF,4FAAoF;AACpF,4FAAoF;AACpF,8EAAuE;AACvE,8FAAsF;AACtF,sFAA+E;AAC/E,oGAA4F;AAC5F,kGAA0F;AAC1F,gFAAyE;AACzE,wFAAiF;AAgBpE,QAAA,WAAW,GAAG,SAAS,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,CAAA;AAElE,QAAA,SAAS,GAAiC;IACrD,EAAE,EAAE,mBAAW;IACf,QAAQ,EAAE,CAAC,sBAAe,EAAE,mCAAmB,EAAE,kDAA4B,EAAE,oDAA6B,CAAC;IAE7G,QAAQ,EAAE,CAAsC,OAAgB,EAAiB,EAAE;QACjF,MAAM,cAAc,GAAiC;YACnD,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC;YAChD,QAAQ,EAAE,SAAS,CAAC,uBAAuB,CAAC,8BAA8B,CAAC;SAC5E,CAAA;QAED,MAAM,iBAAiB,GAAiC;YACtD,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,sBAAsB,CAAC;YACtD,QAAQ,EAAE,SAAS,CAAC,uBAAuB,CAAC,kCAAkC,CAAC;SAChF,CAAA;QAED,OAAO;YACL,GAAG,OAAO;YACV,eAAe,EAAE;gBACf,cAAc;gBACd,iBAAiB,EAAE,CAAC,iBAAiB,CAAC;aACvC;SACF,CAAA;IACH,CAAC;IAED,QAAQ,EAAE,CAAgC,OAAgB,EAAW,EAAE;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,gDAAgD,EAAE,IAAA,+DAA4B,GAAE,CAAC,CAAA;QACnG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE,IAAA,6DAA2B,GAAE,CAAC,CAAA;QACjG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA4C,EAAE,IAAA,uDAAwB,GAAE,CAAC,CAAA;QAC3F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,8CAA8C,EAAE,IAAA,0DAAyB,GAAE,CAAC,CAAA;QAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,6CAA6C,EAAE,IAAA,uDAAwB,GAAE,CAAC,CAAA;QAC5F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,sCAAsC,EAAE,IAAA,0CAAkB,GAAE,CAAC,CAAA;QAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,2CAA2C,EAAE,IAAA,oDAAuB,GAAE,CAAC,CAAA;QACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,8CAA8C,EAAE,IAAA,yDAAyB,GAAE,CAAC,CAAA;QAC9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,IAAA,kDAAsB,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QAClG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,IAAA,4CAAmB,GAAE,CAAC,CAAA;QAE5F,MAAM,gBAAgB,GAAG,sCAAsC,CAAA;QAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QAEtD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAA"}
@@ -67,8 +67,8 @@ exports.generator = {
67
67
  const admin = {
68
68
  components: {
69
69
  sidebar: {
70
- name: Generator.toFunctionName('AdminSidebar'),
71
- location: Generator.toBackendModuleLocation('@admin/admin-sidebar'),
70
+ name: Generator.toFunctionName('AdminSidebarNavContent'),
71
+ location: Generator.toBackendModuleLocation('@admin/admin-sidebar-nav-content'),
72
72
  },
73
73
  auditLogSidebar: {
74
74
  name: Generator.toFunctionName('AuditLogSidebar'),
@@ -1 +1 @@
1
- {"version":3,"file":"admin.generator.js","sourceRoot":"","sources":["../../src/frontend-admin/admin.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin.generator.js","sourceRoot":"","sources":["../../src/frontend-admin/admin.generator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { ContextResult } from '../admin.generator';
2
2
  /**
3
- * Generator function that generates the shared Admin sidebar component
3
+ * Generator function that generates the shared Admin sidebar nav content component.
4
+ * This is just the SidebarContent (no Sidebar shell) — the shell is provided by DynamicTabbedSidebar.
4
5
  */
5
6
  export declare function generateAdminSidebar({ context }: {
6
7
  context: ContextResult;
@@ -37,19 +37,20 @@ exports.generateAdminSidebar = generateAdminSidebar;
37
37
  const Generator = __importStar(require("@postxl/generator"));
38
38
  const utils_1 = require("../utils");
39
39
  /**
40
- * Generator function that generates the shared Admin sidebar component
40
+ * Generator function that generates the shared Admin sidebar nav content component.
41
+ * This is just the SidebarContent (no Sidebar shell) — the shell is provided by DynamicTabbedSidebar.
41
42
  */
42
43
  function generateAdminSidebar({ context }) {
43
44
  const imports = Generator.ImportGenerator
44
45
  //
45
- .from(Generator.toBackendModuleLocation('@ui/admin/AdminSidebar'))
46
+ .from(Generator.toBackendModuleLocation('@ui/admin/AdminSidebarNavContent'))
46
47
  .addImport({
47
48
  from: Generator.toPackageName('react'),
48
49
  items: [Generator.toFunctionName('ComponentProps')],
49
50
  })
50
51
  .addImport({
51
52
  from: Generator.toPackageName('lucide-react'),
52
- items: [Generator.toFunctionName('ChevronRight'), Generator.toFunctionName('Home')],
53
+ items: [Generator.toFunctionName('ChevronRight')],
53
54
  });
54
55
  const { schemas: sortedSchemas, modelsBySchema } = (0, utils_1.groupAndSortModelsBySchema)(context);
55
56
  // Generate schema keys for collapse state (lowercase for valid JS identifiers)
@@ -107,15 +108,11 @@ import {
107
108
  Collapse,
108
109
  CollapseContent,
109
110
  CollapseTrigger,
110
- Sidebar,
111
111
  SidebarContent,
112
112
  SidebarGroup,
113
113
  SidebarGroupContent,
114
114
  SidebarGroupLabel,
115
- SidebarHeader,
116
- SidebarMenu,
117
115
  SidebarMenuButton,
118
- SidebarMenuItem,
119
116
  SidebarMenuSub,
120
117
  SidebarMenuSubButton,
121
118
  SidebarMenuSubItem,
@@ -132,7 +129,7 @@ const defaultCollapseState: CollapseState = {
132
129
  ${defaultCollapseStateProps}
133
130
  }
134
131
 
135
- export function AdminSidebar({ ...props }: ComponentProps<typeof Sidebar>) {
132
+ export function AdminSidebarNavContent({ ...props }: ComponentProps<typeof SidebarContent>) {
136
133
  const [collapseState, setCollapseState] = useSessionStorageState<CollapseState>(STORAGE_KEY, {
137
134
  defaultValue: defaultCollapseState,
138
135
  })
@@ -142,23 +139,9 @@ export function AdminSidebar({ ...props }: ComponentProps<typeof Sidebar>) {
142
139
  }
143
140
 
144
141
  return (
145
- <Sidebar className="h-svh border-r" {...props}>
146
- <SidebarHeader>
147
- <SidebarMenu>
148
- <SidebarMenuItem>
149
- <SidebarMenuButton asChild>
150
- <Link to="/admin" className="hover:text-sidebar-primary transition-colors">
151
- <Home size={16} className="mr-2" />
152
- <span className="text-lg font-bold">Admin</span>
153
- </Link>
154
- </SidebarMenuButton>
155
- </SidebarMenuItem>
156
- </SidebarMenu>
157
- </SidebarHeader>
158
-
159
- <SidebarContent>
142
+ <SidebarContent {...props}>
160
143
  ${schemaSections}
161
-
144
+
162
145
  {import.meta.env.VITE_PUBLIC_ALLOW_ADMIN === 'true' && (
163
146
  <Collapse open={collapseState.advanced} onOpenChange={setOpen('advanced')} className="group/collapsible-advanced">
164
147
  <SidebarGroup>
@@ -210,8 +193,7 @@ export function AdminSidebar({ ...props }: ComponentProps<typeof Sidebar>) {
210
193
  </SidebarGroup>
211
194
  </Collapse>
212
195
  )}
213
- </SidebarContent>
214
- </Sidebar>
196
+ </SidebarContent>
215
197
  )
216
198
  }
217
199
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"admin-sidebar.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/admin-sidebar.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,oDAyLC;AAjMD,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,gBAAgB,CAAC,CAAC;KACpD,CAAC;SACD,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC;QAC7C,KAAK,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;KACpF,CAAC,CAAA;IAEJ,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,IAAA,kCAA0B,EAAC,OAAO,CAAC,CAAA;IAEtF,+EAA+E;IAC/E,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAEtE,6CAA6C;IAC7C,MAAM,sBAAsB,GAAG,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEvG,+CAA+C;IAC/C,MAAM,yBAAyB,GAAG,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAExG,+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;uCACkB,KAAK,CAAC,IAAI;;;wBAGzB,KAAK,CAAC,KAAK;;;oBAGf,KAAK,CAAC,gBAAgB;;;;WAI/B,CACF;aACA,IAAI,CAAC,EAAE,CAAC,CAAA;QAEX,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QACtC,OAAO;wCAC2B,SAAS,4BAA4B,SAAS,oCAAoC,SAAS,UAAU,SAAS;;;;;oBAKlI,MAAM;8GACoF,SAAS;;;;;;;;sBAQjG,UAAU;;;;;oBAKZ,CAAA;IAChB,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO;;;;;;;;;;;;;;;;;;;;EAoBP,OAAO,CAAC,QAAQ,EAAE;;;;;EAKlB,sBAAsB;;;;EAItB,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BjB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDvB,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"admin-sidebar.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/admin-sidebar.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,oDAsKC;AA/KD,6DAA8C;AAG9C,oCAAqD;AAErD;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,EAAE,OAAO,EAA8B;IAC1E,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;QACvC,EAAE;SACD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,kCAAkC,CAAC,CAAC;SAC3E,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC;QACtC,KAAK,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;KACpD,CAAC;SACD,SAAS,CAAC;QACT,IAAI,EAAE,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC;QAC7C,KAAK,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;KAClD,CAAC,CAAA;IAEJ,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,IAAA,kCAA0B,EAAC,OAAO,CAAC,CAAA;IAEtF,+EAA+E;IAC/E,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAEtE,6CAA6C;IAC7C,MAAM,sBAAsB,GAAG,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEvG,+CAA+C;IAC/C,MAAM,yBAAyB,GAAG,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAExG,+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;uCACkB,KAAK,CAAC,IAAI;;;wBAGzB,KAAK,CAAC,KAAK;;;oBAGf,KAAK,CAAC,gBAAgB;;;;WAI/B,CACF;aACA,IAAI,CAAC,EAAE,CAAC,CAAA;QAEX,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QACtC,OAAO;wCAC2B,SAAS,4BAA4B,SAAS,oCAAoC,SAAS,UAAU,SAAS;;;;;oBAKlI,MAAM;8GACoF,SAAS;;;;;;;;sBAQjG,UAAU;;;;;oBAKZ,CAAA;IAChB,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO;;;;;;;;;;;;;;;;EAgBP,OAAO,CAAC,QAAQ,EAAE;;;;;EAKlB,sBAAsB;;;;EAItB,yBAAyB;;;;;;;;;;;;;;UAcjB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDvB,CAAA;AACD,CAAC"}
@@ -46,7 +46,8 @@ function generateDataManagementPage({ context: { admin } }) {
46
46
  return `import { useState } from 'react'
47
47
 
48
48
  import { APP_CONFIG } from '@lib/config'
49
- import { SidebarInset, SidebarProvider } from '@postxl/ui-components'
49
+ import { SidebarTab } from '@postxl/ui-components'
50
+ import { ListTree } from 'lucide-react'
50
51
  ${imports.generate()}
51
52
 
52
53
  export default function DataManagementPage() {
@@ -472,10 +473,16 @@ export default function DataManagementPage() {
472
473
  }
473
474
 
474
475
  return (
475
- <SidebarProvider defaultOpen>
476
- <AdminSidebar />
477
-
478
- <SidebarInset className="p-4">
476
+ <>
477
+ <SidebarTab
478
+ side="left"
479
+ id="admin-navigation"
480
+ icon={ListTree}
481
+ label="Navigation"
482
+ >
483
+ <AdminSidebarNavContent />
484
+ </SidebarTab>
485
+ <div className="p-4 overflow-auto gap-4">
479
486
  <div className="max-w-7xl mx-auto">
480
487
  <h1 className="text-4xl font-bold mb-4">Data Management</h1>
481
488
  <p className="text-gray-600 dark:text-gray-400 mb-8">
@@ -770,8 +777,8 @@ export default function DataManagementPage() {
770
777
  </ul>
771
778
  </div>
772
779
  </div>
773
- </SidebarInset>
774
- </SidebarProvider>
780
+ </div>
781
+ </>
775
782
  )
776
783
  }
777
784
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"data-management-page.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/data-management-page.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,gEAiuBC;AAvuBD,6DAA8C;AAG9C;;GAEG;AACH,SAAgB,0BAA0B,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAA8B;IAC3F,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;QACvC,EAAE;SACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC;SACvD,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAChC,OAAO;;;;EAIP,OAAO,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAutBnB,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"data-management-page.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/data-management-page.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,gEAwuBC;AA9uBD,6DAA8C;AAG9C;;GAEG;AACH,SAAgB,0BAA0B,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAA8B;IAC3F,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe;QACvC,EAAE;SACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC;SACvD,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAChC,OAAO;;;;;EAKP,OAAO,CAAC,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6tBnB,CAAA;AACD,CAAC"}
@@ -43,8 +43,8 @@ function generateExcelIoPage({ context }) {
43
43
  const defaultModel = [...context.models.values()].sort((a, b) => a.name.localeCompare(b.name))[0]?._conjugated.camelCase ?? 'user';
44
44
  const imports = Generator.ImportGenerator.from(Generator.toFilePath('./excel-io.page.tsx'))
45
45
  .addImport({
46
- from: Generator.toBackendModuleLocation('@admin/admin-sidebar'),
47
- items: [Generator.toFunctionName('AdminSidebar')],
46
+ from: Generator.toBackendModuleLocation('@admin/admin-sidebar-nav-content'),
47
+ items: [Generator.toFunctionName('AdminSidebarNavContent')],
48
48
  })
49
49
  .addImport({ from: Generator.toPackageName('react'), items: [Generator.toFunctionName('useState')] })
50
50
  .addImport({
@@ -66,12 +66,12 @@ function generateExcelIoPage({ context }) {
66
66
  Generator.toFunctionName('SelectItem'),
67
67
  Generator.toFunctionName('SelectTrigger'),
68
68
  Generator.toFunctionName('SelectValue'),
69
- Generator.toFunctionName('SidebarInset'),
70
- Generator.toFunctionName('SidebarProvider'),
69
+ Generator.toFunctionName('SidebarTab'),
71
70
  Generator.toFunctionName('Textarea'),
72
71
  ],
73
72
  });
74
73
  return /*tsx*/ `
74
+ import { ListTree } from 'lucide-react'
75
75
  ${imports.generate()}
76
76
 
77
77
  const MODELS = [
@@ -147,10 +147,17 @@ export default function ExcelIoPage() {
147
147
  }
148
148
 
149
149
  return (
150
- <SidebarProvider defaultOpen>
151
- <AdminSidebar />
150
+ <>
151
+ <SidebarTab
152
+ side="left"
153
+ id="admin-navigation"
154
+ icon={ListTree}
155
+ label="Navigation"
156
+ >
157
+ <AdminSidebarNavContent />
158
+ </SidebarTab>
152
159
 
153
- <SidebarInset className="p-4">
160
+ <div className="p-4 overflow-auto gap-4">
154
161
  <div className="mx-auto flex w-full max-w-5xl flex-col gap-4">
155
162
  <h1 className="text-3xl font-bold">Excel I/O</h1>
156
163
  <p className="text-sm text-muted-foreground">Export all data or one model as Excel, and import any Excel file.</p>
@@ -249,8 +256,8 @@ export default function ExcelIoPage() {
249
256
  </CardContent>
250
257
  </Card>
251
258
  </div>
252
- </SidebarInset>
253
- </SidebarProvider>
259
+ </div>
260
+ </>
254
261
  )
255
262
  }
256
263
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"excel-io-page.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/excel-io-page.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"excel-io-page.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/excel-io-page.generator.ts"],"names":[],"mappings":"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"}
@@ -28,11 +28,11 @@ function generateImportReviewPage({ context }) {
28
28
  .map((schema) => `'${schema}'`)
29
29
  .join(', ');
30
30
  return `
31
- import { AdminSidebar } from '@admin/admin-sidebar'
31
+ import { AdminSidebarNavContent } from '@admin/admin-sidebar-nav-content'
32
32
 
33
33
  import type { ColumnDef } from '@tanstack/react-table'
34
34
  import { useEffect, useMemo, useState } from 'react'
35
- import { AlertTriangleIcon, MinusIcon, PencilIcon, PlusIcon, Trash2Icon } from 'lucide-react'
35
+ import { AlertTriangleIcon, ListTree, MinusIcon, PencilIcon, PlusIcon, Trash2Icon } from 'lucide-react'
36
36
 
37
37
  import type {
38
38
  ImportExecutionSummary,
@@ -63,8 +63,7 @@ import {
63
63
  DataGrid,
64
64
  Input,
65
65
  Label,
66
- SidebarInset,
67
- SidebarProvider,
66
+ SidebarTab,
68
67
  Tooltip,
69
68
  TooltipContent,
70
69
  TooltipProvider,
@@ -105,10 +104,17 @@ export default function ImportReviewPage() {
105
104
  const showAdminSidebar = stage === 'upload' || stage === 'previewing' || stage === 'result'
106
105
 
107
106
  return (
108
- <SidebarProvider defaultOpen>
109
- {showAdminSidebar && <AdminSidebar />}
110
-
111
- <SidebarInset className="p-4">
107
+ <>
108
+ {showAdminSidebar && (<SidebarTab
109
+ side="left"
110
+ id="admin-navigation"
111
+ icon={ListTree}
112
+ label="Navigation"
113
+ >
114
+ <AdminSidebarNavContent />
115
+ </SidebarTab>)}
116
+
117
+ <div className="p-4 overflow-auto gap-4">
112
118
  <div className="mx-auto flex w-full max-w-[1400px] flex-col gap-4">
113
119
  <PageHeader stage={stage} />
114
120
 
@@ -137,8 +143,8 @@ export default function ImportReviewPage() {
137
143
 
138
144
  {stage === 'result' && executionResult && <ResultStage result={executionResult} onReset={reset} />}
139
145
  </div>
140
- </SidebarInset>
141
- </SidebarProvider>
146
+ </div>
147
+ </>
142
148
  )
143
149
  }
144
150
 
@@ -1 +1 @@
1
- {"version":3,"file":"import-review-page.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/import-review-page.generator.ts"],"names":[],"mappings":";;AASA,4DA8KC;AArLD,2GAA6F;AAC7F,2GAA6F;AAC7F,2GAA6F;AAE7F;;GAEG;AACH,SAAgB,wBAAwB,CAAC,EAAE,OAAO,EAA8B;IAC9E,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAEhH,MAAM,qBAAqB,GAAG,MAAM;SACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,eAAe,MAAM,KAAK,CAAC,cAAc,IAAI,CAAC;SACpF,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,oBAAoB,GAAG,MAAM;SAChC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,eAAe,MAAM,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;SAC7G,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,sBAAsB,GAAG,MAAM;SAClC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aAC7C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC;aACjC,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,OAAO,KAAK,KAAK,CAAC,WAAW,CAAC,eAAe,MAAM,MAAM,IAAI,CAAA;IAC/D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;SACjF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAClC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,GAAG,CAAC;SAC9B,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CP,qBAAqB;;;;EAIrB,oBAAoB;;;;EAIpB,sBAAsB;;;kCAGU,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqFlD,IAAA,2EAA+B,GAAE;;EAEjC,IAAA,2EAA+B,GAAE;;EAEjC,IAAA,2EAA+B,GAAE;CAClC,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"import-review-page.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/import-review-page.generator.ts"],"names":[],"mappings":";;AASA,4DAoLC;AA3LD,2GAA6F;AAC7F,2GAA6F;AAC7F,2GAA6F;AAE7F;;GAEG;AACH,SAAgB,wBAAwB,CAAC,EAAE,OAAO,EAA8B;IAC9E,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAEhH,MAAM,qBAAqB,GAAG,MAAM;SACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,eAAe,MAAM,KAAK,CAAC,cAAc,IAAI,CAAC;SACpF,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,oBAAoB,GAAG,MAAM;SAChC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,WAAW,CAAC,eAAe,MAAM,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;SAC7G,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,sBAAsB,GAAG,MAAM;SAClC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aAC7C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC;aACjC,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,OAAO,KAAK,KAAK,CAAC,WAAW,CAAC,eAAe,MAAM,MAAM,IAAI,CAAA;IAC/D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;SACjF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAClC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,GAAG,CAAC;SAC9B,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8CP,qBAAqB;;;;EAIrB,oBAAoB;;;;EAIpB,sBAAsB;;;kCAGU,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4FlD,IAAA,2EAA+B,GAAE;;EAEjC,IAAA,2EAA+B,GAAE;;EAEjC,IAAA,2EAA+B,GAAE;CAClC,CAAA;AACD,CAAC"}
@@ -44,7 +44,7 @@ function generateModelAdminPage({ model, context, }) {
44
44
  .from(model.admin.page.pageComponent.location)
45
45
  .add(model.table.component)
46
46
  .add(context.admin.components.sidebar)
47
- .add(context.admin.components.adminDetailSidebar)
47
+ .add(context.admin.components.auditLogSidebar)
48
48
  .add(model.itemsHook)
49
49
  .addImport({
50
50
  from: Generator.toPackageName('react'),
@@ -85,8 +85,8 @@ function generateModelAdminPage({ model, context, }) {
85
85
  items: [Generator.toFunctionName('useCommandPaletteActions')],
86
86
  })
87
87
  .addImport({
88
- from: Generator.toBackendModuleLocation('@app-actions/ai-assistant-store'),
89
- items: [Generator.toFunctionName('useAiAssistantActions'), Generator.toFunctionName('useAiAssistantState')],
88
+ from: Generator.toBackendModuleLocation('@app-actions/ai-sidebar-content'),
89
+ items: [Generator.toFunctionName('AiSidebarContent')],
90
90
  })
91
91
  .addImport({
92
92
  from: Generator.toBackendModuleLocation('@lib/command-palette-filter.utils'),
@@ -100,6 +100,28 @@ function generateModelAdminPage({ model, context, }) {
100
100
  ],
101
101
  });
102
102
  const showComments = model.name !== 'Comment' && !!context.admin.components.commentSidebar;
103
+ if (showComments) {
104
+ imports.add(context.admin.components.commentSidebar);
105
+ imports.addImport({
106
+ from: Generator.toPackageName('lucide-react'),
107
+ items: [
108
+ Generator.toFunctionName('ListTree'),
109
+ Generator.toFunctionName('MessageSquareText'),
110
+ Generator.toFunctionName('ScrollText'),
111
+ Generator.toFunctionName('Sparkles'),
112
+ ],
113
+ });
114
+ }
115
+ else {
116
+ imports.addImport({
117
+ from: Generator.toPackageName('lucide-react'),
118
+ items: [
119
+ Generator.toFunctionName('ListTree'),
120
+ Generator.toFunctionName('ScrollText'),
121
+ Generator.toFunctionName('Sparkles'),
122
+ ],
123
+ });
124
+ }
103
125
  const relatedModels = [];
104
126
  for (const relatedModelName of model.relatedModelNames) {
105
127
  const relatedModel = context.models.get(relatedModelName);
@@ -167,34 +189,26 @@ function generateModelAdminPage({ model, context, }) {
167
189
  />`;
168
190
  }
169
191
  return `
170
- import { SidebarInset, SidebarProvider, useDebouncedCallback } from '@postxl/ui-components'
171
- import useLocalStorageState from 'use-local-storage-state'
192
+ import { SidebarInset, SidebarTab, useDebouncedCallback } from '@postxl/ui-components'
193
+ import { APP_CONFIG } from '@lib/config'
172
194
  import { useAuth } from '@context-providers/auth-context-provider'
173
195
  ${imports.generate()}
174
196
 
175
- const SIDEBAR_WIDTH_KEY = 'audit-log-sidebar-width'
176
-
177
197
  export default function ${model.admin.page.pageComponent.name}() {
178
198
  const navigate = useNavigate()
179
199
  const { viewerData } = useAuth()
180
200
  const currentUserId = viewerData?.user?.id
181
201
  const isAdmin = viewerData?.userRoles?.includes('admin') ?? false
182
-
202
+ ${showComments ? 'const [commentCount, setCommentCount] = useState(0)' : ''}
203
+
183
204
  const { selectedKey, focusedCell } = useSearch({
184
205
  from: '/_auth-routes${model.admin.page.route}',
185
206
  select: (search) => ({ selectedKey: search.selectedKey, focusedCell: search.focusedCell }),
186
207
  })
187
-
208
+
188
209
  ${createModalHook}
189
210
  ${createModalIntentHook}
190
- const sidepanelOpen = useAiAssistantState((state) => state.open)
191
- const { setOpen: setSidepanelOpen } = useAiAssistantActions()
192
211
 
193
- // audit log sidebar width
194
- const [sidebarWidth, setSidebarWidth] = useLocalStorageState(SIDEBAR_WIDTH_KEY, {
195
- defaultValue: 350,
196
- })
197
-
198
212
  // Track selected row IDs from checkbox selection
199
213
  const [selectedRowIds, setSelectedRowIds] = useState<string[]>([])
200
214
 
@@ -442,72 +456,107 @@ export default function ${model.admin.page.pageComponent.name}() {
442
456
  }
443
457
  `}
444
458
 
459
+
445
460
  return (
446
- ${model.isReadonly ? '' : '<>'}
447
- <SidebarProvider open={sidepanelOpen} onOpenChange={setSidepanelOpen} width={sidebarWidth} onWidthChange={setSidebarWidth}>
448
- <AdminSidebar collapsible="none" className="w-64" />
449
-
450
- <SidebarInset className="p-4 overflow-hidden gap-4">
451
- <h3 className="font-bold text-[1.75rem]">${model.userFriendlyName}</h3>
452
- <${model.table.component.name}
453
- data={filteredDataList ?? []}
454
- filters={filters}
455
- onFilterChange={(filterKey, val) => {
456
- const config = ${model.types.filter.config.name}[filterKey]
457
- if (config.valueType === 'boolean') {
458
- handleFilterChange(
459
- config.filterKey,
460
- (val as string[]).map((v) => v === 'true'),
461
- )
462
- } else {
463
- handleFilterChange(config.filterKey, val)
464
- }
465
- }}
466
- searchInput={searchInput}
467
- onSearchInputChange={handleSearchInputChange}
468
- sort={sortState}
469
- onSortChange={setSortState}
470
- ${model.isReadonly
471
- ? ''
472
- : `onCellUpdate={handleCellUpdate}
473
- handleAddRow={() => setIsCreateModalOpen(true)}
474
- handleRemoveRows={handleRemoveRows}`}
475
- onCellChange={handleCellChange}
476
- onRowSelectionChange={handleRowSelectionChange}
477
- selectedKey={selectedKey}
478
- keyField="${model.keyField.name}"
479
- hasNextPage={hasNextPage}
480
- fetchNextPage={fetchNextPage}
481
- total={total}
482
- model="${model._conjugated.camelCase}"
483
- currentUserId={currentUserId}
484
- isAdmin={isAdmin}
485
- onFiltersReplace={setFilters}
486
- onSortReplace={setSortState}
487
- ${relatedModels.map((rm) => `${rm.model.table.propName}={${rm.mapName}}`).join('\n ')}
461
+ <>
462
+ <SidebarTab
463
+ side="left"
464
+ id="admin-navigation"
465
+ icon={ListTree}
466
+ label="Navigation"
467
+ >
468
+ <AdminSidebarNavContent />
469
+ </SidebarTab>
470
+ ${showComments
471
+ ? `<SidebarTab
472
+ side="right"
473
+ id="comment-content"
474
+ icon={MessageSquareText}
475
+ label="Comment"
476
+ order={0}
477
+ badge={{ label: String(commentCount) }}
478
+ >
479
+ <ModelCommentContent
480
+ model="${model.name}"
481
+ filteredIds={commentFilteredIds}
482
+ labelMap={commentLabelMap}
483
+ selectedEntityId={selectedEntityId ? String(selectedEntityId) : selectedRowIds.length === 1 ? selectedRowIds[0] : undefined}
484
+ onCommentCountChange={setCommentCount}
485
+ />
486
+ </SidebarTab>`
487
+ : ''}
488
+ <SidebarTab
489
+ side="right"
490
+ id="audit-log-content"
491
+ icon={ScrollText}
492
+ label="Audit Log"
493
+ order={1}
494
+ >
495
+ <AuditLogSidebar
496
+ model="${model.name}"
497
+ entityId={selectedEntityId}
498
+ entityIds={selectedRowIds}
499
+ field={selectedField}
500
+ labelField="${model.labelField.name}"
501
+ onClearField={handleClearField}
502
+ onClearEntity={handleClearEntity}
488
503
  />
489
- </SidebarInset>
504
+ </SidebarTab>
490
505
 
491
- <AdminDetailSidebar
506
+ {APP_CONFIG.enableAI && (
507
+ <SidebarTab
492
508
  side="right"
493
- collapsible="offcanvas"
494
- model="${model.name}"
495
- entityId={selectedEntityId}
496
- entityIds={selectedRowIds}
497
- field={selectedField}
498
- labelField="${model.labelField.name}"
499
- onClearField={handleClearField}
500
- onClearEntity={handleClearEntity}
501
- ${showComments
502
- ? `filteredIds={commentFilteredIds}
503
- labelMap={commentLabelMap}
504
- selectedEntityId={selectedEntityId ? String(selectedEntityId) : selectedRowIds.length === 1 ? selectedRowIds[0] : undefined}`
505
- : ''}
509
+ id="ai-assistant-content"
510
+ icon={Sparkles}
511
+ label="AI Assistant"
512
+ order={2}
513
+ >
514
+ <AiSidebarContent />
515
+ </SidebarTab>
516
+ )}
517
+ <SidebarInset className="p-4 overflow-hidden gap-4">
518
+ <h3 className="font-bold text-[1.75rem]">${model.userFriendlyName}</h3>
519
+ <${model.table.component.name}
520
+ data={filteredDataList ?? []}
521
+ filters={filters}
522
+ onFilterChange={(filterKey, val) => {
523
+ const config = ${model.types.filter.config.name}[filterKey]
524
+ if (config.valueType === 'boolean') {
525
+ handleFilterChange(
526
+ config.filterKey,
527
+ (val as string[]).map((v) => v === 'true'),
528
+ )
529
+ } else {
530
+ handleFilterChange(config.filterKey, val)
531
+ }
532
+ }}
533
+ searchInput={searchInput}
534
+ onSearchInputChange={handleSearchInputChange}
535
+ sort={sortState}
536
+ onSortChange={setSortState}
537
+ ${model.isReadonly
538
+ ? ''
539
+ : `onCellUpdate={handleCellUpdate}
540
+ handleAddRow={() => setIsCreateModalOpen(true)}
541
+ handleRemoveRows={handleRemoveRows}`}
542
+ onCellChange={handleCellChange}
543
+ onRowSelectionChange={handleRowSelectionChange}
544
+ selectedKey={selectedKey}
545
+ keyField="${model.keyField.name}"
546
+ hasNextPage={hasNextPage}
547
+ fetchNextPage={fetchNextPage}
548
+ total={total}
549
+ model="${model._conjugated.camelCase}"
550
+ currentUserId={currentUserId}
551
+ isAdmin={isAdmin}
552
+ onFiltersReplace={setFilters}
553
+ onSortReplace={setSortState}
554
+ ${relatedModels.map((rm) => `${rm.model.table.propName}={${rm.mapName}}`).join('\n ')}
506
555
  />
507
- </SidebarProvider>
508
-
556
+ </SidebarInset>
557
+
509
558
  ${createModal}
510
- ${model.isReadonly ? '' : '</>'}
559
+ </>
511
560
  )
512
561
  }
513
562
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"model-admin-page.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/model-admin-page.generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-admin-page.generator.js","sourceRoot":"","sources":["../../../src/frontend-admin/generators/model-admin-page.generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { useAuth } from '@context-providers/auth-context-provider'
2
+ import { useHeader } from '@context-providers/header-context-provider'
3
+ import { ColorMode } from '@context-providers/theme-context-provider'
4
+ import { PersonIcon } from '@radix-ui/react-icons'
5
+
6
+ import { PanelRightIcon } from 'lucide-react'
7
+ import { toast } from 'sonner'
8
+
9
+ import { ColorModeToggle } from '@components/ui/color-mode-toggle/color-mode-toggle'
10
+ import { APP_CONFIG } from '@lib/config'
11
+ import { Button, SidebarTrigger, useSidebarTabs } from '@postxl/ui-components'
12
+
13
+ export const ApplicationHeader = () => {
14
+ const { tabs: sidebarTabs } = useSidebarTabs()
15
+ const { title } = useHeader()
16
+ const { logout } = useAuth()
17
+
18
+ const hasLeftTabs = sidebarTabs['left']?.length > 0
19
+ const hasRightTabs = sidebarTabs['right']?.length > 0
20
+
21
+ const onToggleTheme = (nextMode: ColorMode) => {
22
+ toast.info("As you may see now it's " + nextMode + ' color mode')
23
+ }
24
+
25
+ return (
26
+ <div className="flex justify-between items-center p-2 border-b border-(--discreet-border) bg-sidebar dark:bg-sidebar">
27
+ <h1>{title ?? 'Dashboard'}</h1>
28
+ <div className="flex items-center gap-4">
29
+ <ColorModeToggle key="btn-color-mode" onClick={onToggleTheme} __e2e_test_id__="button-toggle-theme" />
30
+ {APP_CONFIG.AUTH && (
31
+ <Button key="btn-logout" onClick={() => logout()}>
32
+ <PersonIcon /> Logout
33
+ </Button>
34
+ )}
35
+ {hasLeftTabs && <SidebarTrigger side="left" />}
36
+ {hasRightTabs && (
37
+ <SidebarTrigger side="right">
38
+ <PanelRightIcon />
39
+ </SidebarTrigger>
40
+ )}
41
+ </div>
42
+ </div>
43
+ )
44
+ }
@@ -88,7 +88,7 @@ export const ColorModeToggle = ({
88
88
  variant="ghost"
89
89
  size="icon"
90
90
  onClick={toggleColorMode}
91
- className="mr-12 size-8 rounded-full bg-accent"
91
+ className="size-8 rounded-full bg-accent"
92
92
  __e2e_test_id__={__e2e_test_id__}
93
93
  >
94
94
  <SunIcon className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
@@ -0,0 +1,41 @@
1
+ import { createContext, useMemo, useState } from 'react'
2
+
3
+ import { createUseContext } from '@lib/react'
4
+
5
+ type HeaderProviderProps = {
6
+ title?: string
7
+ children: React.ReactNode
8
+ }
9
+
10
+ type HeaderProviderState = {
11
+ title?: string
12
+ setTitle: (title?: string) => void
13
+ }
14
+
15
+ const initialState: HeaderProviderState = {
16
+ setTitle: () => null,
17
+ }
18
+
19
+ const HeaderContext = createContext<HeaderProviderState>(initialState)
20
+
21
+ export function HeaderProvider({ children, title, ...props }: Readonly<HeaderProviderProps>) {
22
+ const [headerTitle, setHeaderTitle] = useState(title)
23
+
24
+ const value = useMemo(
25
+ () => ({
26
+ title: headerTitle,
27
+ setTitle: (title?: string) => {
28
+ setHeaderTitle(title)
29
+ },
30
+ }),
31
+ [headerTitle],
32
+ )
33
+
34
+ return (
35
+ <HeaderContext.Provider {...props} value={value}>
36
+ {children}
37
+ </HeaderContext.Provider>
38
+ )
39
+ }
40
+
41
+ export const useHeader = createUseContext(HeaderContext, 'HeaderProviderContext')
@@ -0,0 +1,49 @@
1
+ import { CommandPalette } from '@app-actions/command-palette'
2
+ import { HeaderProvider } from '@context-providers/header-context-provider'
3
+ import { Outlet } from '@tanstack/react-router'
4
+
5
+ import { ApplicationHeader } from '@components/ui/application-header/application-header'
6
+ import { DynamicTabbedSidebar, SidebarInset, SidebarProvider, SidebarTabsProvider } from '@postxl/ui-components'
7
+
8
+ export const AuthorizedPageLayout = () => {
9
+ return (
10
+ <>
11
+ <CommandPalette />
12
+
13
+ <SidebarTabsProvider>
14
+ <SidebarProvider
15
+ defaultOpenSidebars={{ left: true, right: false }}
16
+ defaultWidths={{ left: 300, right: 300 }}
17
+ keyboardShortcuts={{ b: 'left', '.': 'right' }}
18
+ storageKey={'app-sidebar-state'}
19
+ >
20
+ <HeaderProvider>
21
+ <div className="flex flex-col h-screen max-h-screen relative w-full">
22
+ <ApplicationHeader />
23
+
24
+ <div className="flex grow relative max-h-[calc(100vh-var(--header-height))]">
25
+ {/* sidebar left */}
26
+ <DynamicTabbedSidebar
27
+ side="left"
28
+ orientation="vertical"
29
+ className="top-[var(--header-height)] h-[calc(100%-var(--header-height))]"
30
+ />
31
+
32
+ {/* page content */}
33
+ <SidebarInset className="h-full grid">
34
+ <Outlet />
35
+ </SidebarInset>
36
+
37
+ {/* sidebar right */}
38
+ <DynamicTabbedSidebar
39
+ side="right"
40
+ className="top-[var(--header-height)] h-[calc(100%-var(--header-height))]"
41
+ />
42
+ </div>
43
+ </div>
44
+ </HeaderProvider>
45
+ </SidebarProvider>
46
+ </SidebarTabsProvider>
47
+ </>
48
+ )
49
+ }
@@ -1,29 +1,52 @@
1
+ import { AiSidebarContent } from '@app-actions/ai-sidebar-content'
1
2
  import { useAuth } from '@context-providers/auth-context-provider'
2
- import { ColorMode } from '@context-providers/theme-context-provider'
3
- import { PersonIcon } from '@radix-ui/react-icons'
4
3
  import { Post } from '@types'
5
4
 
6
- import { useState } from 'react'
5
+ import { FunnelPlus, ListTree, Sparkles } from 'lucide-react'
6
+ import React, { useState } from 'react'
7
7
  import { toast } from 'sonner'
8
8
 
9
9
  import { UpdatePostModal } from '@components/forms/post/update'
10
- import { ColorModeToggle } from '@components/ui/color-mode-toggle/color-mode-toggle'
11
10
  import { Spreadsheet } from '@components/ui/spreadsheet'
12
11
  import model from '@components/ui/spreadsheet/model.json'
13
12
  import type { Model } from '@components/ui/spreadsheet/types'
14
13
  import { usePosts } from '@hooks/use-posts'
15
- import { APP_CONFIG } from '@lib/config'
16
- import { Button, ContentFrame } from '@postxl/ui-components'
14
+ import {
15
+ ContentFrame,
16
+ SidebarGroup,
17
+ SidebarGroupContent,
18
+ SidebarMenu,
19
+ SidebarMenuButton,
20
+ SidebarMenuItem,
21
+ SidebarTab,
22
+ } from '@postxl/ui-components'
17
23
 
18
- export const DashboardPage = () => {
19
- const { logout, viewerData } = useAuth()
24
+ // ---------------------------------------------------------------------------
25
+ // placeholder tab content (only for demo)
26
+ // ---------------------------------------------------------------------------
27
+ function TabContent({ items }: Readonly<{ items: string[] }>) {
28
+ return (
29
+ <SidebarGroup>
30
+ <SidebarGroupContent>
31
+ <SidebarMenu>
32
+ {items.map((item) => (
33
+ <SidebarMenuItem key={item}>
34
+ <SidebarMenuButton>
35
+ <span>{item}</span>
36
+ </SidebarMenuButton>
37
+ </SidebarMenuItem>
38
+ ))}
39
+ </SidebarMenu>
40
+ </SidebarGroupContent>
41
+ </SidebarGroup>
42
+ )
43
+ }
20
44
 
45
+ export const DashboardPage = () => {
46
+ const { viewerData } = useAuth()
21
47
  const [selectedPost, setSelectedPost] = useState<Post | null>(null)
22
48
  const [isUpdateModalOpen, setIsUpdateModalOpen] = useState(false)
23
49
 
24
- const onToggleTheme = (nextMode: ColorMode) => {
25
- toast.info("As you may see now it's " + nextMode + ' color mode')
26
- }
27
50
  const { list } = usePosts()
28
51
 
29
52
  const data = {
@@ -36,44 +59,35 @@ export const DashboardPage = () => {
36
59
  }
37
60
 
38
61
  return (
39
- <div className="p-4 h-lvh">
40
- <ContentFrame
41
- title={APP_CONFIG.AUTH ? 'Dashboard (authorized route)' : 'Dashboard'}
42
- controls={[
43
- <ColorModeToggle key="btn-color-mode" onClick={onToggleTheme} __e2e_test_id__="button-toggle-theme" />,
44
- APP_CONFIG.AUTH && (
45
- <Button key="btn-logout" onClick={() => logout()}>
46
- <PersonIcon /> Logout
47
- </Button>
48
- ),
49
- ]}
50
- >
51
- <div className="p-3">
52
- <h3 className="mb-4">Hi {viewerData?.user?.name}!</h3>
53
- <p>eMail: {viewerData?.user?.email}</p>
54
- <p>roles: {viewerData?.userRoles.join(', ')}</p>
55
- </div>
56
- <div className="p-3">
57
- <h3 className="mb-4">Posts:</h3>
58
- <ul>
59
- {list
60
- .toSorted((a, b) => a.title.localeCompare(b.title))
61
- .map((post) => (
62
- <li
63
- key={post.id}
64
- onClick={() => {
65
- setSelectedPost(post)
66
- setIsUpdateModalOpen(true)
67
- }}
68
- className="cursor-pointer mb-2 hover:underline"
69
- >
70
- <strong>{post.title}</strong>: {post.body}
71
- </li>
72
- ))}
73
- </ul>
74
- </div>
75
- <div className="p-3">
76
- <Spreadsheet model={model as Model} data={data} />
62
+ <>
63
+ <ContentFrame title={`Hi ${viewerData?.user?.name}!`}>
64
+ <div className="grid">
65
+ <div className="p-3">
66
+ <p>eMail: {viewerData?.user?.email}</p>
67
+ <p>roles: {viewerData?.userRoles.join(', ')}</p>
68
+ </div>
69
+ <div className="p-3">
70
+ <h3 className="mb-4">Posts:</h3>
71
+ <ul>
72
+ {list
73
+ .toSorted((a, b) => a.title.localeCompare(b.title))
74
+ .map((post) => (
75
+ <li
76
+ key={post.id}
77
+ onClick={() => {
78
+ setSelectedPost(post)
79
+ setIsUpdateModalOpen(true)
80
+ }}
81
+ className="cursor-pointer mb-2 hover:underline"
82
+ >
83
+ <strong>{post.title}</strong>: {post.body}
84
+ </li>
85
+ ))}
86
+ </ul>
87
+ </div>
88
+ <div className="p-3 overflow-auto">
89
+ <Spreadsheet model={model as Model} data={data} />
90
+ </div>
77
91
  </div>
78
92
  </ContentFrame>
79
93
  <UpdatePostModal
@@ -88,6 +102,15 @@ export const DashboardPage = () => {
88
102
  toast.error(`Error updating post "${updatedPost.title}": ${String(error)}`)
89
103
  }}
90
104
  />
91
- </div>
105
+ <SidebarTab side="left" id="tab-l-1" icon={ListTree} label="Tab 1 label" order={0}>
106
+ <TabContent items={['Lorem ipsum', 'Dolor sit', 'Amet consectetur']} />
107
+ </SidebarTab>
108
+ <SidebarTab side="left" id="tab-l-2" icon={FunnelPlus} label="Tab 2 label" order={1}>
109
+ <TabContent items={['Donec felis neque', 'Tincidunt vel eros', 'Rutrum, porttitor pulvinar']} />
110
+ </SidebarTab>
111
+ <SidebarTab side="right" id="ai-assistant-content" icon={Sparkles} label="AI Assistant" order={2}>
112
+ <AiSidebarContent />
113
+ </SidebarTab>
114
+ </>
92
115
  )
93
116
  }
@@ -1,5 +1,6 @@
1
1
  import { useAuth } from '@context-providers/auth-context-provider'
2
- import { createFileRoute, Outlet } from '@tanstack/react-router'
2
+ import { AuthorizedPageLayout } from '@pages/authorized-page-layout'
3
+ import { createFileRoute } from '@tanstack/react-router'
3
4
 
4
5
  import { useEffect } from 'react'
5
6
 
@@ -28,5 +29,5 @@ function AuthGuard() {
28
29
  return null
29
30
  }
30
31
 
31
- return <Outlet />
32
+ return <AuthorizedPageLayout />
32
33
  }
@@ -3,6 +3,8 @@
3
3
  html.default.light {
4
4
  --color-scheme: light;
5
5
 
6
+ --header-height: 49px;
7
+
6
8
  --background: hsl(0 0% 100%);
7
9
  --foreground: hsl(0 0% 20%);
8
10
  --card: hsl(0 0% 100%);
@@ -36,7 +38,7 @@ html.default.light {
36
38
  --sidebar-border: hsl(220 13.0435% 90.9804%);
37
39
  --sidebar-ring: hsl(217.2193 91.2195% 59.8039%);
38
40
  --font-sans: Helvetica, sans-serif;
39
- --font-serif: "Times New Roman", Times, serif;
41
+ --font-serif: 'Times New Roman', Times, serif;
40
42
  --font-mono: JetBrains Mono, monospace;
41
43
  --radius: 0.375rem;
42
44
  --shadow-x: 0;
@@ -55,7 +57,7 @@ html.default.light {
55
57
  --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
56
58
  --tracking-normal: 0em;
57
59
  --spacing: 0.25rem;
58
-
60
+
59
61
  /* additional theme colors */
60
62
  --discreet-border: #c0c6c9;
61
63
 
@@ -75,6 +77,8 @@ html.default.light {
75
77
  html.default.dark {
76
78
  --color-scheme: dark;
77
79
 
80
+ --header-height: 49px;
81
+
78
82
  --background: hsl(0 0% 9.0196%);
79
83
  --foreground: hsl(0 0% 89.8039%);
80
84
  --card: hsl(0 0% 14.902%);
@@ -125,7 +129,7 @@ html.default.dark {
125
129
  --shadow-lg: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 4px 6px -1px hsl(0 0% 0% / 0.1);
126
130
  --shadow-xl: 0 1px 3px 0px hsl(0 0% 0% / 0.1), 0 8px 10px -1px hsl(0 0% 0% / 0.1);
127
131
  --shadow-2xl: 0 1px 3px 0px hsl(0 0% 0% / 0.25);
128
-
132
+
129
133
  /* additional theme colors */
130
134
  --discreet-border: #3f4143;
131
135
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@postxl/generators",
3
- "version": "1.17.2",
3
+ "version": "1.18.0",
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",
@@ -46,7 +46,7 @@
46
46
  "exceljs": "^4.4.0",
47
47
  "@postxl/generator": "^1.3.6",
48
48
  "@postxl/schema": "^1.6.0",
49
- "@postxl/ui-components": "^1.5.3",
49
+ "@postxl/ui-components": "^1.6.0",
50
50
  "@postxl/utils": "^1.3.4"
51
51
  },
52
52
  "devDependencies": {},