betterstart-cli 0.0.104 → 0.0.106

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 (159) hide show
  1. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-body.tsx +20 -0
  2. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-cell.tsx +20 -0
  3. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-head.tsx +21 -0
  4. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-header.tsx +20 -0
  5. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid-row.tsx +22 -0
  6. package/dist/assets/adapters/next/templates/init/components/shared/data-table/data-grid.tsx +7 -81
  7. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/blockquote-button/blockquote-button.tsx +4 -11
  8. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/blockquote-button/blockquote-shortcut-badge.tsx +15 -0
  9. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/code-block-button/code-block-button.tsx +4 -11
  10. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/code-block-button/code-block-shortcut-badge.tsx +15 -0
  11. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/color-highlight-button.tsx +6 -42
  12. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/color-highlight-shortcut-badge.tsx +15 -0
  13. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/color-highlight-button/highlight-swatch.tsx +34 -0
  14. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/mark-button/mark-button.tsx +5 -14
  15. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/mark-button/mark-shortcut-badge.tsx +18 -0
  16. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/undo-redo-button/history-shortcut-badge.tsx +18 -0
  17. package/dist/assets/shared-assets/react-admin/custom/content-editor/tiptap-ui/undo-redo-button/undo-redo-button.tsx +5 -14
  18. package/dist/assets/shared-assets/react-admin/custom/icon-picker/memoized-icon.tsx +10 -0
  19. package/dist/assets/shared-assets/react-admin/custom/icon-picker.tsx +1 -3
  20. package/dist/cli.js +6432 -5165
  21. package/dist/cli.js.map +1 -1
  22. package/package.json +1 -1
  23. package/dist/assets/adapters/next/templates/renderers/commands/init/banner-art.ts +0 -7
  24. package/dist/assets/adapters/next/templates/renderers/commands/init/verify-database-reachable.ts +0 -30
  25. package/dist/assets/adapters/next/templates/renderers/commands/seed/build-seed-script.ts +0 -171
  26. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-authorship-alias-block.ts +0 -4
  27. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-authorship-data-fields.ts +0 -4
  28. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-format-action-date-source.ts +0 -18
  29. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-read-select-option-type.ts +0 -6
  30. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-relationship-data-types.ts +0 -25
  31. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-result-mapping.ts +0 -62
  32. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/generate-populate-list-rels-function.ts +0 -50
  33. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/build-restore-many-to-many-statements.ts +0 -27
  34. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/build-select-option-types.ts +0 -37
  35. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-bulk-sort-order-content.ts +0 -93
  36. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-create-content.ts +0 -157
  37. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-create-select-option-content.ts +0 -134
  38. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-delete-bulk-content.ts +0 -85
  39. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-delete-content.ts +0 -66
  40. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-distinct-files.ts +0 -45
  41. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-get-by-id-content.ts +0 -55
  42. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-get-by-slug-content.ts +0 -55
  43. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-get-plural-content.ts +0 -106
  44. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-get-select-options-content.ts +0 -55
  45. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-get-versions-content.ts +0 -19
  46. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-m2m-files.ts +0 -151
  47. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-restore-content.ts +0 -123
  48. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-update-content.ts +0 -187
  49. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/generate-resolve-media-function.ts +0 -40
  50. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/generate-slug-helpers.ts +0 -73
  51. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/generate-version-snapshot-helpers.ts +0 -104
  52. package/dist/assets/adapters/next/templates/renderers/generators/actions/lifecycle-hook-emissions/lifecycle-context.ts +0 -22
  53. package/dist/assets/adapters/next/templates/renderers/generators/actions/lifecycle-hook-emissions/lifecycle-hook-import.ts +0 -4
  54. package/dist/assets/adapters/next/templates/renderers/generators/actions/markdown-renderer.ts +0 -411
  55. package/dist/assets/adapters/next/templates/renderers/generators/actions/select-fields-resolver.ts +0 -99
  56. package/dist/assets/adapters/next/templates/renderers/generators/actions/single-actions/generate-single-actions.ts +0 -292
  57. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-authorship-value.ts +0 -8
  58. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-column-def.ts +0 -297
  59. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-first-column-def.ts +0 -483
  60. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-image-cell-media.ts +0 -38
  61. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-image-element.ts +0 -22
  62. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-relationship-label.ts +0 -26
  63. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-select-label.ts +0 -17
  64. package/dist/assets/adapters/next/templates/renderers/generators/columns/custom-cell.ts +0 -24
  65. package/dist/assets/adapters/next/templates/renderers/generators/columns/generate-columns.ts +0 -55
  66. package/dist/assets/adapters/next/templates/renderers/generators/create-page.ts +0 -16
  67. package/dist/assets/adapters/next/templates/renderers/generators/database/generate-database.ts +0 -5
  68. package/dist/assets/adapters/next/templates/renderers/generators/database/generate-junction-table.ts +0 -27
  69. package/dist/assets/adapters/next/templates/renderers/generators/database/generate-select-options-table.ts +0 -35
  70. package/dist/assets/adapters/next/templates/renderers/generators/database/generate-table-definition.ts +0 -25
  71. package/dist/assets/adapters/next/templates/renderers/generators/dev-mode-integration/build-entity-dev-mode-snippets.ts +0 -180
  72. package/dist/assets/adapters/next/templates/renderers/generators/dev-mode-integration/build-form-dev-mode-snippets.ts +0 -97
  73. package/dist/assets/adapters/next/templates/renderers/generators/dev-mode-integration/build-single-dev-mode-snippets.ts +0 -60
  74. package/dist/assets/adapters/next/templates/renderers/generators/dev-mode-integration/create-dev-mode-integration-artifact.ts +0 -89
  75. package/dist/assets/adapters/next/templates/renderers/generators/dev-mode-integration/lifecycle-hook-code.ts +0 -55
  76. package/dist/assets/adapters/next/templates/renderers/generators/edit-page.ts +0 -33
  77. package/dist/assets/adapters/next/templates/renderers/generators/email-template/generate-email-template.ts +0 -248
  78. package/dist/assets/adapters/next/templates/renderers/generators/email-template/generate-field-value.ts +0 -31
  79. package/dist/assets/adapters/next/templates/renderers/generators/emitted-helpers.ts +0 -16
  80. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/generate-icon-postfix.ts +0 -27
  81. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-boolean-field.ts +0 -47
  82. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-creatable-select-field.ts +0 -122
  83. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-date-field.ts +0 -47
  84. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-default-field.ts +0 -53
  85. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-gallery-field.ts +0 -46
  86. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-group-field.ts +0 -16
  87. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-icon-field.ts +0 -31
  88. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-markdown-field.ts +0 -50
  89. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-media-field.ts +0 -47
  90. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-multi-relationship-field.ts +0 -91
  91. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-multi-select-field.ts +0 -219
  92. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-number-field.ts +0 -48
  93. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-richtext-field.ts +0 -50
  94. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-select-field.ts +0 -61
  95. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-separator-field.ts +0 -16
  96. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-single-relationship-field.ts +0 -93
  97. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-textarea-field.ts +0 -53
  98. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx-nested/render-list-field.ts +0 -163
  99. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx-nested/render-nested-field.ts +0 -164
  100. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx-nested/render-nested-object-list-field.ts +0 -59
  101. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx-nested/render-text-input-field.ts +0 -27
  102. package/dist/assets/adapters/next/templates/renderers/generators/form/form-entity/generate-form.ts +0 -822
  103. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/build-default-value-from-sync-functions.ts +0 -41
  104. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/build-ui-imports.ts +0 -58
  105. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/generate-default-value.ts +0 -67
  106. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/generate-nested-list-default-value.ts +0 -13
  107. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/label-with-description.ts +0 -14
  108. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/render-tabs-trigger.ts +0 -18
  109. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/select-read-values-expression.ts +0 -21
  110. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/build-group-creatable-select-handlers.ts +0 -67
  111. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/build-group-creatable-select-state.ts +0 -29
  112. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/build-group-field-array-hooks.ts +0 -13
  113. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/build-group-fields-jsx.ts +0 -30
  114. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/generate-card-component.ts +0 -129
  115. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/generate-single-form.ts +0 -66
  116. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-columns/generate-column-def.ts +0 -72
  117. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-columns/generate-columns.ts +0 -89
  118. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-page/generate-page.ts +0 -23
  119. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-page-content.ts +0 -246
  120. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-submission-drawer.ts +0 -216
  121. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-table.ts +0 -273
  122. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-actions/exclusive-date-upper-bound-helper.ts +0 -11
  123. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-actions/generate-form-actions.ts +0 -505
  124. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-multistep/build-component-source.ts +0 -197
  125. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/build-field-error-helper.ts +0 -16
  126. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/error-message-line.ts +0 -13
  127. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-field-jsx.ts +0 -226
  128. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-file-upload-field-jsx.ts +0 -41
  129. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-list-field-jsx.ts +0 -160
  130. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-multiselect-field-jsx.ts +0 -40
  131. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-number-field-jsx.ts +0 -41
  132. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-text-field-jsx.ts +0 -39
  133. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/label-with-description-line.ts +0 -14
  134. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-single/build-single-step-form-component-source.ts +0 -100
  135. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-database.ts +0 -29
  136. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-hook.ts +0 -142
  137. package/dist/assets/adapters/next/templates/renderers/generators/hook/generate-hook.ts +0 -169
  138. package/dist/assets/adapters/next/templates/renderers/generators/hook/generate-single-hook.ts +0 -30
  139. package/dist/assets/adapters/next/templates/renderers/generators/navigation-extract.ts +0 -19
  140. package/dist/assets/adapters/next/templates/renderers/generators/page-content/generate-page-content.ts +0 -419
  141. package/dist/assets/adapters/next/templates/renderers/generators/page.ts +0 -24
  142. package/dist/assets/adapters/next/templates/renderers/generators/row-actions-emitters/build-delete-dialog-source.ts +0 -108
  143. package/dist/assets/adapters/next/templates/renderers/generators/row-actions-emitters/build-row-actions-source.ts +0 -61
  144. package/dist/assets/adapters/next/templates/renderers/generators/single-page.ts +0 -59
  145. package/dist/assets/adapters/next/templates/renderers/generators/sortable-header/build-sort-label-expr.ts +0 -9
  146. package/dist/assets/adapters/next/templates/renderers/generators/sortable-header/build-sortable-header-button-jsx.ts +0 -20
  147. package/dist/assets/adapters/next/templates/renderers/generators/sortable-header/build-sortable-header-def.ts +0 -14
  148. package/dist/assets/adapters/next/templates/renderers/generators/table.ts +0 -284
  149. package/dist/assets/adapters/next/templates/renderers/generators/thankyou-email-template.ts +0 -110
  150. package/dist/assets/adapters/next/templates/renderers/generators/webhook-events/render-extract.ts +0 -14
  151. package/dist/assets/adapters/next/templates/renderers/init/scaffolders/next-config/create-next-config-template.ts +0 -48
  152. package/dist/assets/adapters/next/templates/renderers/init/scaffolders/tailwind/admin-shadow-input-utility.ts +0 -9
  153. package/dist/assets/adapters/next/templates/renderers/init/scaffolders/tailwind/admin-theme-block.ts +0 -42
  154. package/dist/assets/adapters/next/templates/renderers/init/templates/app/admin.ts +0 -12
  155. package/dist/assets/adapters/next/templates/renderers/integration-runtime/render-core-email-provider.ts +0 -27
  156. package/dist/assets/adapters/next/templates/renderers/integration-runtime/render-core-storage-provider.ts +0 -27
  157. package/dist/assets/adapters/next/templates/renderers/snapshots/barrels/render-db-barrel.ts +0 -8
  158. package/dist/assets/adapters/next/templates/renderers/snapshots/barrels/render-navigation-barrel.ts +0 -63
  159. package/dist/assets/adapters/next/templates/renderers/snapshots/barrels/render-webhook-events-barrel.ts +0 -16
@@ -1,29 +0,0 @@
1
- export function renderFormDatabaseImportsTemplate({
2
- imports,
3
- tableName,
4
- toPascalCase,
5
- fieldDefs,
6
- customFieldsCol
7
- }: {
8
- imports: string
9
- tableName: string
10
- toPascalCase: string
11
- fieldDefs: string
12
- customFieldsCol: string
13
- }): string {
14
- return `import { sql } from 'drizzle-orm'
15
- import {
16
- ${imports}
17
- } from 'drizzle-orm/pg-core'
18
-
19
- export const ${tableName} = pgTable('${toPascalCase}Submissions', {
20
- id: uuid().defaultRandom().primaryKey().notNull(),
21
- ${fieldDefs}${customFieldsCol}
22
- ipAddress: text(),
23
- userAgent: text(),
24
- submittedAt: timestamp({ precision: 3, mode: 'string' }).default(sql\`CURRENT_TIMESTAMP\`).notNull(),
25
- createdAt: timestamp({ precision: 3, mode: 'string' }).default(sql\`CURRENT_TIMESTAMP\`).notNull(),
26
- updatedAt: timestamp({ precision: 3, mode: 'string' }).default(sql\`CURRENT_TIMESTAMP\`).notNull()
27
- })
28
- `
29
- }
@@ -1,142 +0,0 @@
1
- export function renderFormHookGeneratedFunctionTemplate({
2
- submissionActionImports,
3
- actionImportPath,
4
- pascal,
5
- camel,
6
- successMsg,
7
- hasExportCreateObjectUrl
8
- }: {
9
- submissionActionImports: string
10
- actionImportPath: string
11
- pascal: string
12
- camel: string
13
- successMsg: string
14
- hasExportCreateObjectUrl: string
15
- }): string {
16
- return `import {
17
- ${submissionActionImports}
18
- } from '@admin/actions/${actionImportPath}'
19
- import type {
20
- Create${pascal}SubmissionInput,
21
- Get${pascal}SubmissionsFilters
22
- } from '@admin/actions/${actionImportPath}'
23
- import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
24
- import { toast } from 'sonner'
25
-
26
- export function use${pascal}Submissions(
27
- search?: string,
28
- submittedAtFrom?: string,
29
- submittedAtTo?: string,
30
- page?: number,
31
- pageSize?: number,
32
- orderBy?: string,
33
- orderDirection?: 'asc' | 'desc'
34
- ) {
35
- return useQuery({
36
- queryKey: [
37
- '${camel}-submissions',
38
- search ?? '',
39
- submittedAtFrom ?? '',
40
- submittedAtTo ?? '',
41
- page ?? 0,
42
- pageSize ?? 20,
43
- orderBy ?? '',
44
- orderDirection ?? ''
45
- ],
46
- queryFn: () => {
47
- const filters: Get${pascal}SubmissionsFilters = {}
48
-
49
- if (search) filters.search = search
50
- if (submittedAtFrom) filters.submittedAtFrom = submittedAtFrom
51
- if (submittedAtTo) filters.submittedAtTo = submittedAtTo
52
- if (pageSize != null && pageSize !== -1) {
53
- filters.limit = pageSize
54
- filters.offset = (page ?? 0) * pageSize
55
- }
56
- if (orderBy) filters.orderBy = orderBy
57
- if (orderDirection) filters.orderDirection = orderDirection
58
-
59
- return get${pascal}Submissions(Object.keys(filters).length > 0 ? filters : undefined)
60
- }
61
- })
62
- }
63
-
64
- export function use${pascal}Submission(id: string | null) {
65
- return useQuery({
66
- queryKey: ['${camel}-submission', id],
67
- queryFn: () => {
68
- if (!id) {
69
- throw new Error('Submission ID is required')
70
- }
71
- return get${pascal}Submission(id)
72
- },
73
- enabled: !!id
74
- })
75
- }
76
-
77
- export function useCreate${pascal}Submission() {
78
- const queryClient = useQueryClient()
79
-
80
- return useMutation({
81
- mutationFn: (data: Create${pascal}SubmissionInput) => create${pascal}Submission(data),
82
- onSuccess: async (result) => {
83
- if (result.success) {
84
- toast.success('${successMsg}')
85
- await queryClient.refetchQueries({ queryKey: ['${camel}-submissions'] })
86
- } else {
87
- toast.error(result.error || 'Failed to submit form')
88
- }
89
- },
90
- onError: (error: Error) => {
91
- toast.error(error.message || 'Failed to submit form')
92
- }
93
- })
94
- }
95
-
96
- export function useDelete${pascal}Submission() {
97
- const queryClient = useQueryClient()
98
-
99
- return useMutation({
100
- mutationFn: (id: string) => delete${pascal}Submission(id),
101
- onSuccess: async () => {
102
- toast.success('Submission deleted successfully')
103
- await queryClient.refetchQueries({ queryKey: ['${camel}-submissions'] })
104
- },
105
- onError: (error: Error) => {
106
- toast.error(error.message || 'Failed to delete submission')
107
- }
108
- })
109
- }
110
- ${hasExportCreateObjectUrl}`
111
- }
112
-
113
- export function renderFormHookGeneratedFunctionDetailsTemplate({
114
- pascal,
115
- formName
116
- }: {
117
- pascal: string
118
- formName: string
119
- }): string {
120
- return `
121
- export function useExport${pascal}SubmissionsCSV() {
122
- return useMutation({
123
- mutationFn: export${pascal}SubmissionsCSV,
124
- onSuccess: (csvContent) => {
125
- const blob = new Blob([csvContent], { type: 'text/csv' })
126
- const url = window.URL.createObjectURL(blob)
127
- const link = document.createElement('a')
128
- link.href = url
129
- link.download = \`${formName}-submissions-\${new Date().toISOString().split('T')[0]}.csv\`
130
- document.body.appendChild(link)
131
- link.click()
132
- document.body.removeChild(link)
133
- window.URL.revokeObjectURL(url)
134
- toast.success('CSV exported successfully')
135
- },
136
- onError: (error: Error) => {
137
- toast.error(error.message || 'Failed to export CSV')
138
- }
139
- })
140
- }
141
- `
142
- }
@@ -1,169 +0,0 @@
1
- export function renderHookContentTemplate(): string {
2
- return ` if (safePageSize !== -1) {
3
- filters.limit = safePageSize
4
- filters.offset = safePage * safePageSize
5
- }
6
- if (orderBy) filters.orderBy = orderBy
7
- if (orderDirection) filters.orderDirection = orderDirection`
8
- }
9
-
10
- export function renderHookFiltersTemplate({
11
- plural,
12
- map,
13
- paginationBlock
14
- }: {
15
- plural: string
16
- map: string
17
- paginationBlock: string
18
- }): string {
19
- return `const filters: ${plural}Query = {}
20
- if (search) filters.search = search
21
- ${map}
22
- ${paginationBlock}
23
- return get${plural}(Object.keys(filters).length > 0 ? filters : undefined)`
24
- }
25
-
26
- export function renderHookContentDetailsTemplate(): string {
27
- return ` if (status === 'published') filters.published = true
28
- if (status === 'draft') filters.published = false`
29
- }
30
-
31
- export function renderHookContentDetailsBranchTemplate({
32
- filterFromVariableName,
33
- filterField,
34
- filterToVariableName
35
- }: {
36
- filterFromVariableName: string
37
- filterField: string
38
- filterToVariableName: string
39
- }): string {
40
- return ` if (${filterFromVariableName}) filters.${filterField}From = ${filterFromVariableName}
41
- if (${filterToVariableName}) filters.${filterField}To = ${filterToVariableName}`
42
- }
43
-
44
- export function renderHookContentDetailsBranchBodyTemplate({
45
- filterVariableName,
46
- filterField
47
- }: {
48
- filterVariableName: string
49
- filterField: string
50
- }): string {
51
- return ` if (${filterVariableName} === 'true') filters.${filterField} = true
52
- if (${filterVariableName} === 'false') filters.${filterField} = false`
53
- }
54
-
55
- export function renderHookFiltersDetailsTemplate({
56
- plural,
57
- paginationBlock
58
- }: {
59
- plural: string
60
- paginationBlock: string
61
- }): string {
62
- return `const filters: ${plural}Query = {}
63
- if (search) filters.search = search
64
- ${paginationBlock}
65
- return get${plural}(Object.keys(filters).length > 0 ? filters : undefined)`
66
- }
67
-
68
- export function renderHookGeneratedFunctionTemplate({
69
- singular,
70
- singularText
71
- }: {
72
- singular: string
73
- singularText: string
74
- }): string {
75
- return `
76
- export function use${singular}(id: string | null | undefined): UseQueryResult<${singular} | null, Error> {
77
- return useQuery({
78
- queryKey: ['${singularText}', id],
79
- queryFn: () => (id ? get${singular}ById(id) : Promise.resolve(null)),
80
- enabled: !!id,
81
- })
82
- }`
83
- }
84
-
85
- export function renderHookGeneratedFunctionDetailsTemplate({
86
- singular,
87
- singularText
88
- }: {
89
- singular: string
90
- singularText: string
91
- }): string {
92
- return `
93
-
94
- export function use${singular}BySlug(slug: string | null | undefined): UseQueryResult<${singular} | null, Error> {
95
- return useQuery({
96
- queryKey: ['${singularText}', 'slug', slug],
97
- queryFn: () => (slug ? get${singular}BySlug(slug) : Promise.resolve(null)),
98
- enabled: !!slug,
99
- })
100
- }`
101
- }
102
-
103
- export function renderHookGeneratedFunctionDetailsBranchTemplate({
104
- plural,
105
- filterPascalName,
106
- pluralText,
107
- filterKey
108
- }: {
109
- plural: string
110
- filterPascalName: string
111
- pluralText: string
112
- filterKey: string
113
- }): string {
114
- return `
115
-
116
- export function use${plural}Distinct${filterPascalName}(): UseQueryResult<string[], Error> {
117
- return useQuery({
118
- queryKey: ['${pluralText}', 'distinct', '${filterKey}'],
119
- queryFn: () => getDistinct${plural}${filterPascalName}()
120
- })
121
- }`
122
- }
123
-
124
- export function renderHookGeneratedFunctionDetailsBranchBodyTemplate({
125
- join,
126
- actionImportPath,
127
- plural,
128
- allParamsContent,
129
- pluralText,
130
- queryKeyParts,
131
- filtersBody,
132
- singularHook,
133
- slugHook,
134
- distinctHooks
135
- }: {
136
- join: string
137
- actionImportPath: string
138
- plural: string
139
- allParamsContent: string
140
- pluralText: string
141
- queryKeyParts: string
142
- filtersBody: string
143
- singularHook: string
144
- slugHook: string
145
- distinctHooks: string
146
- }): string {
147
- return `import {
148
- ${join}
149
- } from '@admin/actions/${actionImportPath}'
150
- import { type UseQueryResult, useQuery } from '@tanstack/react-query'
151
-
152
- export function use${plural}(
153
- ${allParamsContent}
154
- options?: { enabled?: boolean }
155
- ): UseQueryResult<${plural}Page, Error> {
156
- const safePage = Number.isFinite(page ?? 0) && (page ?? 0) > 0 ? (page ?? 0) : 0
157
- const safePageSize = pageSize === -1 || (Number.isFinite(pageSize ?? 20) && (pageSize ?? 20) > 0) ? (pageSize ?? 20) : 20
158
-
159
- return useQuery({
160
- queryKey: ['${pluralText}', ${queryKeyParts}],
161
- queryFn: () => {
162
- ${filtersBody}
163
- },
164
- enabled: options?.enabled ?? true,
165
- })
166
- }
167
- ${singularHook}${slugHook}${distinctHooks}
168
- `
169
- }
@@ -1,30 +0,0 @@
1
- export function renderSingleHookComponentTemplate({
2
- singular,
3
- actionImportPath,
4
- schemaName
5
- }: {
6
- singular: string
7
- actionImportPath: string
8
- schemaName: string
9
- }): string {
10
- return `import {
11
- get${singular},
12
- type ${singular}
13
- } from '@admin/actions/${actionImportPath}'
14
- import { type UseQueryResult, useQuery } from '@tanstack/react-query'
15
-
16
- interface Use${singular}Options {
17
- initialData?: ${singular} | null
18
- }
19
-
20
- export function use${singular}(options: Use${singular}Options = {}): UseQueryResult<${singular} | null, Error> {
21
- return useQuery({
22
- queryKey: ['${schemaName}'],
23
- queryFn: () => get${singular}(),
24
- staleTime: Number.POSITIVE_INFINITY,
25
- gcTime: Number.POSITIVE_INFINITY,
26
- ...(options.initialData !== undefined ? { initialData: options.initialData } : {}),
27
- })
28
- }
29
- `
30
- }
@@ -1,19 +0,0 @@
1
- export function renderBuildNavigationExtractSourceImportsTemplate({
2
- join,
3
- toCamelCase,
4
- joinText
5
- }: {
6
- join: string
7
- toCamelCase: string
8
- joinText: string
9
- }): string {
10
- return `import type { AdminNavigationItem } from '@admin/types/navigation'
11
- import { ${join} } from 'lucide-react'
12
-
13
- export const ${toCamelCase}Nav: AdminNavigationItem[] = [
14
- {
15
- ${joinText}
16
- }
17
- ]
18
- `
19
- }