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,273 +0,0 @@
1
- export function renderTableClientModuleTemplate({
2
- pascal,
3
- actionImportPath,
4
- kebab,
5
- label
6
- }: {
7
- pascal: string
8
- actionImportPath: string
9
- kebab: string
10
- label: string
11
- }): string {
12
- return `'use client'
13
-
14
- import type { ${pascal}SubmissionData } from '@admin/actions/${actionImportPath}'
15
- import {
16
- DataGrid,
17
- DataGridBody,
18
- DataGridCell,
19
- DataGridHead,
20
- DataGridHeader,
21
- DataGridRow
22
- } from '@admin/components/shared/data-table/data-grid'
23
- import { DataTablePagination } from '@admin/components/shared/data-table/data-table-pagination'
24
- import { use${pascal}Submissions } from '@admin/hooks/use-${kebab}-form'
25
- import { useTableUtils } from '@admin/hooks/use-table-utils'
26
- import {
27
- type ColumnDef,
28
- flexRender,
29
- getCoreRowModel,
30
- useReactTable,
31
- } from '@tanstack/react-table'
32
- import { GripVertical } from 'lucide-react'
33
- import { parseAsInteger, parseAsString, useQueryStates } from 'nuqs'
34
- import * as React from 'react'
35
- import { cn } from '@admin/utils/shared/cn'
36
-
37
- interface ${pascal}SubmissionsTableProps<TValue> extends React.HTMLAttributes<HTMLDivElement> {
38
- columns: ColumnDef<${pascal}SubmissionData, TValue>[]
39
- selectedIds: string[]
40
- setSelectedIds: (ids: string[]) => void
41
- onViewSubmission: (id: string) => void
42
- search?: string
43
- submittedAtFrom?: string
44
- submittedAtTo?: string
45
- }
46
-
47
- export function ${pascal}SubmissionsTable<TValue>({
48
- columns,
49
- selectedIds,
50
- setSelectedIds,
51
- onViewSubmission,
52
- search,
53
- submittedAtFrom,
54
- submittedAtTo,
55
- className
56
- }: ${pascal}SubmissionsTableProps<TValue>) {
57
- const defaultPageSize = 20
58
- const [{
59
- page: pageIndex,
60
- size: pageSize,
61
- sort: sortField,
62
- dir: sortDir
63
- }, setTableQuery] = useQueryStates({
64
- page: parseAsInteger.withDefault(0),
65
- size: parseAsInteger.withDefault(defaultPageSize),
66
- sort: parseAsString.withDefault(''),
67
- dir: parseAsString.withDefault('')
68
- })
69
-
70
- const safePageIndex = Number.isFinite(pageIndex) && pageIndex > 0 ? pageIndex : 0
71
- const safePageSize = pageSize === -1 || (Number.isFinite(pageSize) && pageSize > 0) ? pageSize : defaultPageSize
72
-
73
- const { data, error, isPending } = use${pascal}Submissions(
74
- search,
75
- submittedAtFrom,
76
- submittedAtTo,
77
- safePageIndex,
78
- safePageSize,
79
- sortField || undefined,
80
- (sortDir as 'asc' | 'desc') || undefined
81
- )
82
-
83
- const tableData = data?.submissions ?? []
84
- const totalRows = data?.total ?? 0
85
- const effectivePageSize = safePageSize === -1 ? totalRows : safePageSize
86
- const pageCount = effectivePageSize > 0 ? Math.ceil(totalRows / effectivePageSize) : 1
87
- const shouldShowPagination = totalRows > defaultPageSize
88
-
89
- const {
90
- columnSizing,
91
- handleColumnSizingChange,
92
- handlePaginationChange,
93
- handleRowSelectionChange,
94
- handleSortingChange,
95
- hoveredColumnId,
96
- registerTable,
97
- resetColumnSizingToContainer,
98
- rowSelection,
99
- setHoveredColumnId,
100
- sorting,
101
- tableContainerRef
102
- } = useTableUtils<${pascal}SubmissionData>({
103
- data: tableData,
104
- selectedIds,
105
- onSelectedIdsChange: setSelectedIds,
106
- pageIndex: safePageIndex,
107
- pageSize: effectivePageSize,
108
- setPageIndex: (nextPageIndex) => setTableQuery({ page: nextPageIndex }),
109
- setSortingParams: ({
110
- pageIndex: nextPageIndex,
111
- sortDir: nextSortDir,
112
- sortField: nextSortField
113
- }) => setTableQuery({
114
- page: nextPageIndex,
115
- sort: nextSortField,
116
- dir: nextSortDir
117
- }),
118
- sortField,
119
- sortDir
120
- })
121
-
122
- const table = useReactTable({
123
- data: tableData,
124
- columns,
125
- columnResizeMode: 'onChange',
126
- defaultColumn: {
127
- minSize: 48,
128
- size: 220
129
- },
130
- getCoreRowModel: getCoreRowModel(),
131
- manualPagination: true,
132
- manualSorting: true,
133
- pageCount,
134
- rowCount: totalRows,
135
- onSortingChange: handleSortingChange,
136
- onColumnSizingChange: handleColumnSizingChange,
137
- onRowSelectionChange: handleRowSelectionChange,
138
- onPaginationChange: handlePaginationChange,
139
- state: {
140
- sorting,
141
- columnSizing,
142
- rowSelection,
143
- pagination: {
144
- pageIndex: safePageIndex,
145
- pageSize: effectivePageSize
146
- }
147
- }
148
- })
149
- registerTable(table)
150
- const gridTemplateColumns = table
151
- .getVisibleLeafColumns()
152
- .map((column) => \`\${column.getSize()}px\`)
153
- .join(' ')
154
-
155
- return (
156
- <div className={cn("flex flex-col gap-6 pt-px pb-2 h-full", className)}>
157
- <DataGrid containerClassName="min-h-0 flex-1" containerRef={tableContainerRef} gridTemplateColumns={gridTemplateColumns} style={{ width: table.getTotalSize() }}>
158
- <DataGridHeader>
159
- {table.getHeaderGroups().map((headerGroup) => (
160
- <DataGridRow key={headerGroup.id}>
161
- {headerGroup.headers.map((header, headerIndex) => {
162
- const meta = header.column.columnDef.meta as Record<string, unknown> | undefined
163
- const resizeLabel = typeof header.column.columnDef.header === 'string' ? header.column.columnDef.header : header.column.id
164
- const nextHeader = headerGroup.headers[headerIndex + 1]
165
- const canResizeColumn = header.column.getCanResize() && nextHeader?.column.getCanResize() === true
166
- return (
167
- <DataGridHead
168
- key={header.id}
169
- className={cn('group/resize-header relative overflow-hidden', {
170
- 'text-center': meta?.align === 'center',
171
- 'text-right': meta?.align === 'right'
172
- })}
173
- data-column-id={header.column.id}
174
- onMouseEnter={() => setHoveredColumnId(header.column.id)}
175
- onMouseLeave={() => setHoveredColumnId((current) => (current === header.column.id ? null : current))}
176
- >
177
- {header.isPlaceholder
178
- ? null
179
- : flexRender(header.column.columnDef.header, header.getContext())}
180
- {canResizeColumn ? (
181
- <button
182
- type="button"
183
- aria-label={\`Resize \${resizeLabel} column\`}
184
- className="group/resize-handle absolute right-0 top-0 z-10 flex h-full w-5 cursor-col-resize touch-none select-none items-center justify-center text-muted-foreground opacity-0 transition-opacity hover:text-foreground focus-visible:text-foreground focus-visible:opacity-100 focus-visible:outline-none group-focus-within/resize-header:opacity-100 data-[column-hovered=true]:opacity-100 data-[resizing=true]:opacity-100"
185
- data-resize-handle
186
- data-column-hovered={hoveredColumnId === header.column.id ? 'true' : 'false'}
187
- data-resizing={header.column.getIsResizing() ? 'true' : 'false'}
188
- onDoubleClick={resetColumnSizingToContainer}
189
- onMouseDown={header.getResizeHandler()}
190
- onTouchStart={header.getResizeHandler()}
191
- >
192
- <GripVertical aria-hidden="true" className={cn('size-3.5', { 'text-ring': header.column.getIsResizing() })} />
193
- </button>
194
- ) : null}
195
- </DataGridHead>
196
- )
197
- })}
198
- </DataGridRow>
199
- ))}
200
- </DataGridHeader>
201
- <DataGridBody>
202
- {isPending ? (
203
- <DataGridRow>
204
- <DataGridCell className="flex h-24 items-center justify-center text-center" style={{ gridColumn: '1 / -1' }}>
205
- <div className="text-muted-foreground">Loading ${label} submissions…</div>
206
- </DataGridCell>
207
- </DataGridRow>
208
- ) : error ? (
209
- <DataGridRow>
210
- <DataGridCell className="flex h-24 items-center justify-center text-center" style={{ gridColumn: '1 / -1' }}>
211
- <div className="text-destructive">Error loading ${label} submissions: {error.message}</div>
212
- </DataGridCell>
213
- </DataGridRow>
214
- ) : table.getRowModel().rows?.length ? (
215
- table.getRowModel().rows.map((row) => (
216
- <DataGridRow
217
- key={row.id}
218
- data-state={row.getIsSelected() ? 'selected' : undefined}
219
- className="cursor-pointer hover:bg-muted/50"
220
- onClick={(e) => {
221
- const target = e.target as HTMLElement
222
- if (!e.currentTarget.contains(target)) return
223
- if (target.closest('button, a, input, [role="checkbox"]')) return
224
- onViewSubmission(row.original.id)
225
- }}
226
- >
227
- {row.getVisibleCells().map((cell) => {
228
- const meta = cell.column.columnDef.meta as Record<string, unknown> | undefined
229
- return (
230
- <DataGridCell
231
- key={cell.id}
232
- className={cn({
233
- 'text-center': meta?.align === 'center',
234
- 'text-right': meta?.align === 'right'
235
- })}
236
- data-column-id={cell.column.id}
237
- onMouseEnter={() => setHoveredColumnId(cell.column.id)}
238
- onMouseLeave={() => setHoveredColumnId((current) => (current === cell.column.id ? null : current))}
239
- >
240
- {flexRender(cell.column.columnDef.cell, cell.getContext())}
241
- </DataGridCell>
242
- )
243
- })}
244
- </DataGridRow>
245
- ))
246
- ) : (
247
- <DataGridRow>
248
- <DataGridCell className="flex h-24 items-center justify-center text-center" style={{ gridColumn: '1 / -1' }}>
249
- No ${label} submissions found.
250
- </DataGridCell>
251
- </DataGridRow>
252
- )}
253
- </DataGridBody>
254
- </DataGrid>
255
-
256
- {shouldShowPagination ? (
257
- <DataTablePagination
258
- table={table}
259
- paginationMode="controlled"
260
- pageSize={safePageSize}
261
- pageIndex={safePageIndex}
262
- pageCount={pageCount}
263
- setPageIndex={(nextPageIndex) => setTableQuery({ page: nextPageIndex })}
264
- setPageSize={(nextPageSize) =>
265
- setTableQuery({ page: 0, size: nextPageSize })
266
- }
267
- />
268
- ) : null}
269
- </div>
270
- )
271
- }
272
- `
273
- }
@@ -1,11 +0,0 @@
1
- export function renderExclusiveDateUpperBoundHelper(): string {
2
- return `function getExclusiveDateUpperBound(value?: string): string | null {
3
- if (!value) return null
4
-
5
- const date = new Date(\`\${value}T00:00:00.000Z\`)
6
- if (Number.isNaN(date.getTime())) return null
7
-
8
- date.setUTCDate(date.getUTCDate() + 1)
9
- return date.toISOString().slice(0, 10)
10
- }`
11
- }