@solidxai/core-ui 0.1.12-beta.0 → 0.1.12-beta.2

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 (241) hide show
  1. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  2. package/dist/components/auth/AuthLayout.js +15 -19
  3. package/dist/components/auth/AuthLayout.js.map +1 -1
  4. package/dist/components/auth/AuthLayout.tsx +26 -20
  5. package/dist/components/auth/SolidLogin.d.ts.map +1 -1
  6. package/dist/components/auth/SolidLogin.js +6 -3
  7. package/dist/components/auth/SolidLogin.js.map +1 -1
  8. package/dist/components/auth/SolidLogin.tsx +16 -2
  9. package/dist/components/auth/SolidRegister.d.ts.map +1 -1
  10. package/dist/components/auth/SolidRegister.js +7 -4
  11. package/dist/components/auth/SolidRegister.js.map +1 -1
  12. package/dist/components/auth/SolidRegister.tsx +16 -2
  13. package/dist/components/common/BackButton.js +1 -1
  14. package/dist/components/common/BackButton.js.map +1 -1
  15. package/dist/components/common/BackButton.tsx +1 -1
  16. package/dist/components/common/CancelButton.js +1 -1
  17. package/dist/components/common/CancelButton.js.map +1 -1
  18. package/dist/components/common/CancelButton.tsx +1 -1
  19. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  20. package/dist/components/common/GeneralSettings.js +6 -33
  21. package/dist/components/common/GeneralSettings.js.map +1 -1
  22. package/dist/components/common/GeneralSettings.tsx +20 -57
  23. package/dist/components/common/SettingsComponent.d.ts.map +1 -1
  24. package/dist/components/common/SettingsComponent.js +1 -9
  25. package/dist/components/common/SettingsComponent.js.map +1 -1
  26. package/dist/components/common/SettingsComponent.tsx +1 -8
  27. package/dist/components/common/SolidBreadcrumb.js +1 -1
  28. package/dist/components/common/SolidBreadcrumb.js.map +1 -1
  29. package/dist/components/common/SolidBreadcrumb.tsx +2 -2
  30. package/dist/components/common/SolidFaviconProvider.d.ts.map +1 -1
  31. package/dist/components/common/SolidFaviconProvider.js +1 -8
  32. package/dist/components/common/SolidFaviconProvider.js.map +1 -1
  33. package/dist/components/common/SolidFaviconProvider.tsx +1 -7
  34. package/dist/components/common/SolidLoadingState.d.ts +10 -0
  35. package/dist/components/common/SolidLoadingState.d.ts.map +1 -0
  36. package/dist/components/common/SolidLoadingState.js +8 -0
  37. package/dist/components/common/SolidLoadingState.js.map +1 -0
  38. package/dist/components/common/SolidLoadingState.module.css +56 -0
  39. package/dist/components/common/SolidLoadingState.tsx +28 -0
  40. package/dist/components/core/card/CardItem.d.ts.map +1 -1
  41. package/dist/components/core/card/CardItem.js +3 -4
  42. package/dist/components/core/card/CardItem.js.map +1 -1
  43. package/dist/components/core/card/CardItem.tsx +3 -4
  44. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  45. package/dist/components/core/card/SolidCardView.js +6 -1
  46. package/dist/components/core/card/SolidCardView.js.map +1 -1
  47. package/dist/components/core/card/SolidCardView.tsx +6 -1
  48. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  49. package/dist/components/core/card/SolidCardViewConfigure.js +4 -1
  50. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  51. package/dist/components/core/card/SolidCardViewConfigure.tsx +4 -1
  52. package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
  53. package/dist/components/core/common/SolidCreateButton.js +2 -13
  54. package/dist/components/core/common/SolidCreateButton.js.map +1 -1
  55. package/dist/components/core/common/SolidCreateButton.tsx +2 -15
  56. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  57. package/dist/components/core/common/SolidGlobalSearchElement.js +34 -15
  58. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  59. package/dist/components/core/common/SolidGlobalSearchElement.tsx +37 -17
  60. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js +15 -13
  61. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.js.map +1 -1
  62. package/dist/components/core/extension/solid-core/modelMetadata/list/GenerateModelCodeRowAction.tsx +4 -4
  63. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js +6 -5
  64. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.js.map +1 -1
  65. package/dist/components/core/extension/solid-core/moduleMetadata/list/GenerateModuleCodeRowAction.tsx +1 -1
  66. package/dist/components/core/form/SolidFormFooter.d.ts +2 -1
  67. package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
  68. package/dist/components/core/form/SolidFormFooter.js +48 -14
  69. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  70. package/dist/components/core/form/SolidFormFooter.tsx +50 -4
  71. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  72. package/dist/components/core/form/SolidFormView.js +52 -50
  73. package/dist/components/core/form/SolidFormView.js.map +1 -1
  74. package/dist/components/core/form/SolidFormView.tsx +16 -9
  75. package/dist/components/core/json/SolidJsonEditor.css +195 -0
  76. package/dist/components/core/json/SolidJsonEditor.d.ts +19 -0
  77. package/dist/components/core/json/SolidJsonEditor.d.ts.map +1 -0
  78. package/dist/components/core/json/SolidJsonEditor.js +109 -0
  79. package/dist/components/core/json/SolidJsonEditor.js.map +1 -0
  80. package/dist/components/core/json/SolidJsonEditor.tsx +150 -0
  81. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  82. package/dist/components/core/kanban/KanbanCard.js +2 -10
  83. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  84. package/dist/components/core/kanban/KanbanCard.tsx +2 -10
  85. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  86. package/dist/components/core/kanban/SolidKanbanView.js +11 -4
  87. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  88. package/dist/components/core/kanban/SolidKanbanView.tsx +13 -5
  89. package/dist/components/core/list/SolidListView.d.ts +2 -0
  90. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  91. package/dist/components/core/list/SolidListView.js +195 -111
  92. package/dist/components/core/list/SolidListView.js.map +1 -1
  93. package/dist/components/core/list/SolidListView.tsx +136 -39
  94. package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -1
  95. package/dist/components/core/list/SolidListViewConfigure.js +2 -0
  96. package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
  97. package/dist/components/core/list/SolidListViewConfigure.tsx +2 -0
  98. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  99. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +16 -19
  100. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  101. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +16 -22
  102. package/dist/components/core/locales/SolidChatterLocaleTabView.d.ts.map +1 -1
  103. package/dist/components/core/locales/SolidChatterLocaleTabView.js +9 -8
  104. package/dist/components/core/locales/SolidChatterLocaleTabView.js.map +1 -1
  105. package/dist/components/core/locales/SolidChatterLocaleTabView.tsx +4 -1
  106. package/dist/components/core/locales/SolidLocale.d.ts.map +1 -1
  107. package/dist/components/core/locales/SolidLocale.js +1 -2
  108. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  109. package/dist/components/core/locales/SolidLocale.tsx +1 -2
  110. package/dist/components/core/model/CreateModel.d.ts.map +1 -1
  111. package/dist/components/core/model/CreateModel.js +1 -1
  112. package/dist/components/core/model/CreateModel.js.map +1 -1
  113. package/dist/components/core/model/CreateModel.tsx +0 -1
  114. package/dist/components/core/model/ModelMetaData.d.ts.map +1 -1
  115. package/dist/components/core/model/ModelMetaData.js +1 -2
  116. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  117. package/dist/components/core/model/ModelMetaData.tsx +1 -3
  118. package/dist/components/core/module/CreateModule.css +70 -2
  119. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  120. package/dist/components/core/module/CreateModule.js +2 -2
  121. package/dist/components/core/module/CreateModule.js.map +1 -1
  122. package/dist/components/core/module/CreateModule.tsx +13 -1
  123. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  124. package/dist/components/core/tree/SolidTreeView.js +47 -26
  125. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  126. package/dist/components/core/tree/SolidTreeView.tsx +55 -23
  127. package/dist/components/layout/AdminTopHeader.js +2 -3
  128. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  129. package/dist/components/layout/AdminTopHeader.tsx +2 -2
  130. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  131. package/dist/components/layout/AppSidebar.js +5 -2
  132. package/dist/components/layout/AppSidebar.js.map +1 -1
  133. package/dist/components/layout/AppSidebar.tsx +7 -4
  134. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  135. package/dist/components/layout/navbar-two-menu.js +6 -4
  136. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  137. package/dist/components/layout/navbar-two-menu.tsx +4 -2
  138. package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
  139. package/dist/components/shad-cn-ui/SolidTabs.js +1 -1
  140. package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
  141. package/dist/components/shad-cn-ui/SolidTabs.tsx +1 -0
  142. package/dist/constants/error-messages.d.ts +1 -0
  143. package/dist/constants/error-messages.d.ts.map +1 -1
  144. package/dist/constants/error-messages.js +1 -0
  145. package/dist/constants/error-messages.js.map +1 -1
  146. package/dist/constants/error-messages.ts +1 -0
  147. package/dist/helpers/assetUrl.d.ts +3 -0
  148. package/dist/helpers/assetUrl.d.ts.map +1 -0
  149. package/dist/helpers/assetUrl.js +22 -0
  150. package/dist/helpers/assetUrl.js.map +1 -0
  151. package/dist/helpers/assetUrl.ts +26 -0
  152. package/dist/helpers/modelViewPersistence.d.ts +5 -0
  153. package/dist/helpers/modelViewPersistence.d.ts.map +1 -0
  154. package/dist/helpers/modelViewPersistence.js +168 -0
  155. package/dist/helpers/modelViewPersistence.js.map +1 -0
  156. package/dist/helpers/modelViewPersistence.ts +201 -0
  157. package/dist/helpers/routePaths.d.ts +6 -0
  158. package/dist/helpers/routePaths.d.ts.map +1 -1
  159. package/dist/helpers/routePaths.js +13 -0
  160. package/dist/helpers/routePaths.js.map +1 -1
  161. package/dist/helpers/routePaths.ts +25 -0
  162. package/dist/index.d.ts +3 -0
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js +3 -0
  165. package/dist/index.js.map +1 -1
  166. package/dist/index.ts +14 -0
  167. package/dist/redux/api/datasourceIntrospectionApi.d.ts +203 -0
  168. package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -0
  169. package/dist/redux/api/datasourceIntrospectionApi.js +71 -0
  170. package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -0
  171. package/dist/redux/api/datasourceIntrospectionApi.ts +261 -0
  172. package/dist/redux/api/datasourceManagementApi.d.ts +46 -0
  173. package/dist/redux/api/datasourceManagementApi.d.ts.map +1 -0
  174. package/dist/redux/api/datasourceManagementApi.js +35 -0
  175. package/dist/redux/api/datasourceManagementApi.js.map +1 -0
  176. package/dist/redux/api/datasourceManagementApi.ts +86 -0
  177. package/dist/redux/api/solidServiceApi.d.ts +10 -2
  178. package/dist/redux/api/solidServiceApi.d.ts.map +1 -1
  179. package/dist/redux/api/solidServiceApi.js +2 -4
  180. package/dist/redux/api/solidServiceApi.js.map +1 -1
  181. package/dist/redux/api/solidServiceApi.ts +4 -6
  182. package/dist/redux/store/StoreProvider.d.ts.map +1 -1
  183. package/dist/redux/store/StoreProvider.js +4 -2
  184. package/dist/redux/store/StoreProvider.js.map +1 -1
  185. package/dist/redux/store/StoreProvider.tsx +9 -1
  186. package/dist/redux/store/defaultStoreConfig.d.ts +28 -1
  187. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  188. package/dist/redux/store/defaultStoreConfig.js +4 -0
  189. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  190. package/dist/redux/store/defaultStoreConfig.ts +4 -0
  191. package/dist/resources/solid-custom.css +73 -16
  192. package/dist/routes/guards/AdminGuard.d.ts.map +1 -1
  193. package/dist/routes/guards/AdminGuard.js +2 -1
  194. package/dist/routes/guards/AdminGuard.js.map +1 -1
  195. package/dist/routes/guards/AdminGuard.tsx +7 -1
  196. package/dist/routes/guards/AuthGuard.d.ts.map +1 -1
  197. package/dist/routes/guards/AuthGuard.js +2 -1
  198. package/dist/routes/guards/AuthGuard.js.map +1 -1
  199. package/dist/routes/guards/AuthGuard.tsx +8 -2
  200. package/dist/routes/guards/GuestGuard.d.ts.map +1 -1
  201. package/dist/routes/guards/GuestGuard.js +2 -1
  202. package/dist/routes/guards/GuestGuard.js.map +1 -1
  203. package/dist/routes/guards/GuestGuard.tsx +8 -2
  204. package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
  205. package/dist/routes/pages/admin/core/CardPage.js +11 -0
  206. package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
  207. package/dist/routes/pages/admin/core/CardPage.tsx +13 -0
  208. package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
  209. package/dist/routes/pages/admin/core/DashboardPage.js +7 -5
  210. package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
  211. package/dist/routes/pages/admin/core/DashboardPage.module.css +18 -0
  212. package/dist/routes/pages/admin/core/DashboardPage.tsx +50 -32
  213. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +828 -0
  214. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts +3 -0
  215. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -0
  216. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +947 -0
  217. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -0
  218. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +1719 -0
  219. package/dist/routes/pages/admin/core/DatasourcesPage.css +337 -0
  220. package/dist/routes/pages/admin/core/DatasourcesPage.d.ts +3 -0
  221. package/dist/routes/pages/admin/core/DatasourcesPage.d.ts.map +1 -0
  222. package/dist/routes/pages/admin/core/DatasourcesPage.js +221 -0
  223. package/dist/routes/pages/admin/core/DatasourcesPage.js.map +1 -0
  224. package/dist/routes/pages/admin/core/DatasourcesPage.tsx +540 -0
  225. package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
  226. package/dist/routes/pages/admin/core/KanbanPage.js +11 -0
  227. package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
  228. package/dist/routes/pages/admin/core/KanbanPage.tsx +13 -0
  229. package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
  230. package/dist/routes/pages/admin/core/ListPage.js +25 -2
  231. package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
  232. package/dist/routes/pages/admin/core/ListPage.tsx +29 -2
  233. package/dist/routes/pages/admin/core/TreePage.d.ts.map +1 -1
  234. package/dist/routes/pages/admin/core/TreePage.js +10 -2
  235. package/dist/routes/pages/admin/core/TreePage.js.map +1 -1
  236. package/dist/routes/pages/admin/core/TreePage.tsx +11 -2
  237. package/dist/routes/solidRoutes.d.ts.map +1 -1
  238. package/dist/routes/solidRoutes.js +5 -1
  239. package/dist/routes/solidRoutes.js.map +1 -1
  240. package/dist/routes/solidRoutes.tsx +4 -0
  241. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatasourceIntrospectionPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/DatasourceIntrospectionPage.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Cog,\n Database,\n ExternalLink,\n RefreshCw,\n Save,\n Search,\n ShieldAlert,\n Sparkles,\n} from \"lucide-react\";\nimport { camelCase, startCase } from \"lodash\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { showToast } from \"../../../../redux/features/toastSlice\";\nimport { SolidJsonEditor } from \"../../../../components/core/json/SolidJsonEditor\";\nimport { Column, SolidDataTable } from \"../../../../components/core/list/SolidDataTable\";\nimport {\n SolidButton,\n SolidCheckbox,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidInput,\n SolidSelect,\n SolidSpinner,\n SolidSwitch,\n SolidTabGroup,\n SolidTextarea,\n} from \"../../../../components/shad-cn-ui\";\nimport {\n type DatasourceIntrospectionTableDetail,\n type DatasourceIntrospectionMappingPreview,\n type DatasourceIntrospectionMappingRequest,\n type DatasourceIntrospectionTableRecord,\n useApplyDatasourceIntrospectionMappingMutation,\n useGetDatasourceIntrospectionBootstrapQuery,\n useGetDatasourceIntrospectionTableDetailQuery,\n useGetDatasourceIntrospectionTablesQuery,\n usePreviewDatasourceIntrospectionMappingMutation,\n} from \"../../../../redux/api/datasourceIntrospectionApi\";\nimport { useGetmodelByIdQuery } from \"../../../../redux/api/modelApi\";\nimport \"./DatasourceIntrospectionPage.css\";\n\ntype SessionSettings = {\n relationInferenceEnabled: boolean;\n prioritizeUnmappedTables: boolean;\n};\n\ntype DrawerColumnDraft = {\n columnName: string;\n fieldName: string;\n dataType: string;\n solidFieldType: string;\n ormType: string;\n nullable: boolean;\n defaultValue: string | null;\n characterMaximumLength: number | null;\n numericPrecision: number | null;\n numericScale: number | null;\n ordinalPosition: number | null;\n isAutoGenerated: boolean;\n handledBySuperclass: boolean;\n superclassFieldName: string | null;\n fieldId: number | null;\n include: boolean;\n matched: boolean;\n isPrimaryKey: boolean;\n};\n\ntype DrawerDraft = {\n mapped: boolean;\n modelId: number | null;\n mappedModuleLabel: string | null;\n singularName: string;\n pluralName: string;\n displayName: string;\n description: string;\n tableName: string;\n schema: string | null;\n dataSource: string;\n dataSourceType: string;\n legacyTableType: \"none\" | \"existing_id\" | \"generated_id\";\n baseClassName: string;\n userKeyField: string;\n enableAuditTracking: boolean;\n enableSoftDelete: boolean;\n draftPublishWorkflow: boolean;\n internationalisation: boolean;\n columns: DrawerColumnDraft[];\n preservedFields: any[];\n};\n\nfunction providerLabel(type: string) {\n if (type === \"postgres\") return \"PostgreSQL\";\n if (type === \"mysql\") return \"MySQL\";\n if (type === \"mssql\") return \"MS SQL Server\";\n return type;\n}\n\nconst scalarFieldTypeOptions = [\n { value: \"shortText\", label: \"Short Text\" },\n { value: \"longText\", label: \"Long Text\" },\n { value: \"richText\", label: \"Rich Text\" },\n { value: \"boolean\", label: \"Boolean\" },\n { value: \"int\", label: \"Integer\" },\n { value: \"bigint\", label: \"Big Integer\" },\n { value: \"decimal\", label: \"Decimal\" },\n { value: \"date\", label: \"Date\" },\n { value: \"datetime\", label: \"Date Time\" },\n { value: \"time\", label: \"Time\" },\n { value: \"json\", label: \"JSON\" },\n { value: \"uuid\", label: \"UUID\" },\n { value: \"email\", label: \"Email\" },\n { value: \"password\", label: \"Password\" },\n];\n\nconst scalarFieldTypeValueSet = new Set(scalarFieldTypeOptions.map((option) => option.value));\n\nfunction getDefaultOrmTypeForSolidFieldType(dataSourceType: string, solidFieldType: string) {\n const normalizedDatasourceType = dataSourceType.toLowerCase();\n\n const ormTypesByDatasource: Record<string, Record<string, string>> = {\n mssql: {\n shortText: \"varchar\",\n longText: \"nvarchar\",\n richText: \"nvarchar\",\n boolean: \"bit\",\n int: \"int\",\n bigint: \"bigint\",\n decimal: \"numeric\",\n date: \"date\",\n datetime: \"datetime\",\n time: \"time\",\n json: \"simple-json\",\n uuid: \"uniqueidentifier\",\n email: \"nvarchar\",\n password: \"nvarchar\",\n },\n mysql: {\n shortText: \"varchar\",\n longText: \"longtext\",\n richText: \"longtext\",\n boolean: \"boolean\",\n int: \"int\",\n bigint: \"int\",\n decimal: \"decimal\",\n date: \"date\",\n datetime: \"datetime\",\n time: \"time\",\n json: \"json\",\n uuid: \"varchar\",\n email: \"varchar\",\n password: \"varchar\",\n },\n postgres: {\n shortText: \"varchar\",\n longText: \"text\",\n richText: \"text\",\n boolean: \"boolean\",\n int: \"integer\",\n bigint: \"bigint\",\n decimal: \"decimal\",\n date: \"date\",\n datetime: \"timestamp\",\n time: \"time\",\n json: \"json\",\n uuid: \"varchar\",\n email: \"varchar\",\n password: \"varchar\",\n },\n };\n\n return ormTypesByDatasource[normalizedDatasourceType]?.[solidFieldType] ?? \"varchar\";\n}\n\nfunction legacyTypeLabel(value: string) {\n if (value === \"generated_id\") return \"Legacy generated id\";\n if (value === \"existing_id\") return \"Legacy existing id\";\n return \"Legacy generated id\";\n}\n\nfunction statusLabel(record: DatasourceIntrospectionTableRecord) {\n return record.mapped ? \"Mapped\" : \"Ready to map\";\n}\n\nfunction readQueryError(error: any) {\n return (\n error?.data?.message\n || error?.error\n || error?.message\n || \"Something went wrong.\"\n );\n}\n\nfunction normalizeName(value: string) {\n return value.trim().toLowerCase();\n}\n\nfunction findMatchingModelField(column: DatasourceIntrospectionTableDetail[\"columns\"][number], modelFields: any[]) {\n return modelFields.find((field) => {\n if (field?.isSystem) return false;\n\n const sameColumnName = normalizeName(field?.columnName ?? \"\") === normalizeName(column.columnName);\n if (sameColumnName) return true;\n\n return Boolean(column.isAutoGenerated && column.fieldName === \"id\" && field?.name === \"id\");\n }) ?? null;\n}\n\nfunction sanitizeExistingFieldPayload(field: any) {\n const {\n createdAt,\n updatedAt,\n deletedAt,\n model,\n mediaStorageProvider,\n identifier,\n ...rest\n } = field ?? {};\n\n if (mediaStorageProvider?.id && !rest.mediaStorageProviderId) {\n rest.mediaStorageProviderId = mediaStorageProvider.id;\n }\n\n return rest;\n}\n\nfunction buildDrawerDraft(\n tableDetail: DatasourceIntrospectionTableDetail,\n selectedTable: DatasourceIntrospectionTableRecord,\n mappedModelData?: any,\n): DrawerDraft {\n const modelData = selectedTable.mapped ? (mappedModelData?.data ?? null) : null;\n const modelFields = modelData?.fields ?? [];\n const preservedFields = modelFields.map((field: any) => sanitizeExistingFieldPayload(field));\n const modelUserKeyField =\n modelData?.userKeyField?.name\n || modelFields.find((field: any) => field?.isUserKey)?.name\n || \"\";\n\n const columns: DrawerColumnDraft[] = tableDetail.columns.map((column) => {\n const matchingField = findMatchingModelField(column, modelFields);\n return {\n columnName: column.columnName,\n fieldName: matchingField?.name ?? column.fieldName,\n dataType: column.dataType,\n solidFieldType: matchingField?.type ?? column.solidFieldType,\n ormType: matchingField?.ormType ?? column.ormType,\n nullable: column.nullable,\n defaultValue: matchingField?.defaultValue ?? column.defaultValue,\n characterMaximumLength: column.characterMaximumLength,\n numericPrecision: column.numericPrecision,\n numericScale: column.numericScale,\n ordinalPosition: column.ordinalPosition,\n isAutoGenerated: column.isAutoGenerated,\n handledBySuperclass: column.handledBySuperclass,\n superclassFieldName: column.superclassFieldName,\n fieldId: matchingField?.id ?? null,\n include: column.handledBySuperclass ? false : Boolean(matchingField) || !selectedTable.mapped,\n matched: Boolean(matchingField),\n isPrimaryKey: Boolean(matchingField?.isPrimaryKey) || (column.isAutoGenerated && column.fieldName === \"id\"),\n };\n });\n\n const draftUserKeyField = modelUserKeyField || tableDetail.suggestedMetadata.userKeyField;\n\n return {\n mapped: selectedTable.mapped,\n modelId: selectedTable.mappedModelId,\n mappedModuleLabel: selectedTable.mappedModuleDisplayName || selectedTable.mappedModuleName || null,\n singularName: modelData?.singularName ?? tableDetail.suggestedMetadata.singularName,\n pluralName: modelData?.pluralName ?? tableDetail.suggestedMetadata.pluralName,\n displayName: modelData?.displayName ?? tableDetail.suggestedMetadata.displayName,\n description: modelData?.description ?? tableDetail.suggestedMetadata.displayName,\n tableName: modelData?.tableName ?? tableDetail.suggestedMetadata.tableName,\n schema: tableDetail.suggestedMetadata.schema,\n dataSource: modelData?.dataSource ?? tableDetail.suggestedMetadata.dataSource,\n dataSourceType: modelData?.dataSourceType ?? tableDetail.suggestedMetadata.dataSourceType,\n legacyTableType: modelData?.legacyTableType ?? tableDetail.suggestedMetadata.legacyTableType,\n baseClassName: tableDetail.suggestedMetadata.baseClassName,\n userKeyField: draftUserKeyField,\n enableAuditTracking: modelData?.enableAuditTracking ?? true,\n enableSoftDelete: modelData?.enableSoftDelete ?? false,\n draftPublishWorkflow: modelData?.draftPublishWorkflow ?? false,\n internationalisation: modelData?.internationalisation ?? false,\n columns,\n preservedFields,\n };\n}\n\nfunction getDrawerValidationErrors(draft: DrawerDraft) {\n const errors: string[] = [];\n const includedColumns = draft.columns.filter((column) => !column.handledBySuperclass && column.include);\n const seenFieldNames = new Set<string>();\n\n if (!draft.singularName.trim()) {\n errors.push(\"Singular name is required.\");\n }\n if (!draft.pluralName.trim()) {\n errors.push(\"Plural name is required.\");\n }\n if (!draft.displayName.trim()) {\n errors.push(\"Display name is required.\");\n }\n if (!includedColumns.length) {\n errors.push(\"Select at least one physical column to include in the mapping.\");\n }\n\n for (const column of includedColumns) {\n const normalizedFieldName = column.fieldName.trim();\n if (!normalizedFieldName) {\n errors.push(`Field name is required for column \"${column.columnName}\".`);\n continue;\n }\n\n if (!scalarFieldTypeValueSet.has(column.solidFieldType)) {\n errors.push(`SolidX type \"${column.solidFieldType}\" is not allowed in step 1 for column \"${column.columnName}\".`);\n continue;\n }\n\n if (seenFieldNames.has(normalizedFieldName.toLowerCase())) {\n errors.push(`Field name \"${normalizedFieldName}\" is duplicated in the mapping draft.`);\n continue;\n }\n\n seenFieldNames.add(normalizedFieldName.toLowerCase());\n }\n\n if (!draft.userKeyField.trim()) {\n errors.push(\"Choose a user key field before saving the mapping.\");\n } else {\n const userKeyExists = includedColumns.some((column) => column.fieldName === draft.userKeyField);\n if (!userKeyExists) {\n errors.push(\"The chosen user key field must remain part of the mapped columns.\");\n }\n }\n\n if (draft.legacyTableType === \"existing_id\") {\n const hasPrimaryKey = includedColumns.some((column) => column.isPrimaryKey);\n if (!hasPrimaryKey) {\n errors.push(\"Legacy existing-id mappings must keep the generated id column mapped to field name \\\"id\\\".\");\n }\n }\n\n return errors;\n}\n\nfunction buildMappingRequest(\n draft: DrawerDraft,\n plannedMigrationTimestamp?: number | null,\n): DatasourceIntrospectionMappingRequest {\n return {\n mapped: draft.mapped,\n modelId: draft.modelId,\n singularName: draft.singularName.trim(),\n pluralName: draft.pluralName.trim(),\n displayName: draft.displayName.trim(),\n description: draft.description.trim() || draft.displayName.trim(),\n tableName: draft.tableName,\n schema: draft.schema ?? null,\n dataSource: draft.dataSource,\n dataSourceType: draft.dataSourceType,\n legacyTableType: draft.legacyTableType,\n baseClassName: draft.baseClassName,\n userKeyField: draft.userKeyField,\n enableAuditTracking: draft.enableAuditTracking,\n enableSoftDelete: draft.enableSoftDelete,\n draftPublishWorkflow: draft.draftPublishWorkflow,\n internationalisation: draft.internationalisation,\n plannedMigrationTimestamp: plannedMigrationTimestamp ?? null,\n columns: draft.columns.map((column) => ({\n columnName: column.columnName,\n fieldName: column.fieldName,\n dataType: column.dataType,\n solidFieldType: column.solidFieldType,\n ormType: column.ormType,\n nullable: column.nullable,\n defaultValue: column.defaultValue,\n characterMaximumLength: column.characterMaximumLength,\n numericPrecision: column.numericPrecision,\n numericScale: column.numericScale,\n ordinalPosition: column.ordinalPosition,\n isAutoGenerated: column.isAutoGenerated,\n handledBySuperclass: column.handledBySuperclass,\n superclassFieldName: column.superclassFieldName,\n fieldId: column.fieldId,\n include: column.include,\n matched: column.matched,\n isPrimaryKey: column.isPrimaryKey,\n })),\n };\n}\n\nfunction parseAndValidateReviewedModelJson(\n metadataJsonText: string,\n draft: DrawerDraft,\n) {\n let parsed: any;\n\n try {\n parsed = JSON.parse(metadataJsonText);\n } catch (error: any) {\n return {\n error: `Metadata JSON is not valid JSON: ${error?.message ?? \"Unknown parse error.\"}`,\n parsed: null,\n };\n }\n\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n return {\n error: \"Metadata JSON must be an object.\",\n parsed: null,\n };\n }\n\n const requiredStringKeys = [\n \"singularName\",\n \"pluralName\",\n \"displayName\",\n \"description\",\n \"dataSource\",\n \"dataSourceType\",\n \"tableName\",\n \"userKeyFieldUserKey\",\n ];\n\n for (const key of requiredStringKeys) {\n if (typeof parsed[key] !== \"string\" || !parsed[key].trim()) {\n return {\n error: `Metadata JSON must include a non-empty \"${key}\" string.`,\n parsed: null,\n };\n }\n }\n\n const immutableChecks: Array<{ key: string; expected: string }> = [\n { key: \"dataSource\", expected: draft.dataSource },\n { key: \"dataSourceType\", expected: draft.dataSourceType },\n { key: \"tableName\", expected: draft.tableName },\n { key: \"legacyTableType\", expected: draft.legacyTableType },\n ];\n\n for (const check of immutableChecks) {\n if (`${parsed[check.key] ?? \"\"}` !== `${check.expected}`) {\n return {\n error: `Metadata JSON cannot change immutable binding key \"${check.key}\".`,\n parsed: null,\n };\n }\n }\n\n const requiredBooleanKeys = [\n \"enableAuditTracking\",\n \"enableSoftDelete\",\n \"draftPublishWorkflow\",\n \"internationalisation\",\n ];\n\n for (const key of requiredBooleanKeys) {\n if (typeof parsed[key] !== \"boolean\") {\n return {\n error: `Metadata JSON must include a boolean \"${key}\" value.`,\n parsed: null,\n };\n }\n }\n\n if (!Array.isArray(parsed.fields)) {\n return {\n error: \"Metadata JSON must include a fields array.\",\n parsed: null,\n };\n }\n\n const seenFieldNames = new Set<string>();\n for (const [index, field] of parsed.fields.entries()) {\n if (!field || typeof field !== \"object\" || Array.isArray(field)) {\n return {\n error: `Field at index ${index} is not a valid object.`,\n parsed: null,\n };\n }\n\n if (typeof field.name !== \"string\" || !field.name.trim()) {\n return {\n error: `Field at index ${index} must include a non-empty \"name\".`,\n parsed: null,\n };\n }\n\n if (typeof field.type !== \"string\" || !field.type.trim()) {\n return {\n error: `Field \"${field.name}\" must include a non-empty \"type\".`,\n parsed: null,\n };\n }\n\n if (typeof field.ormType !== \"string\" || !field.ormType.trim()) {\n return {\n error: `Field \"${field.name}\" must include a non-empty \"ormType\".`,\n parsed: null,\n };\n }\n\n if (typeof field.columnName !== \"string\" || !field.columnName.trim()) {\n return {\n error: `Field \"${field.name}\" must include a non-empty \"columnName\".`,\n parsed: null,\n };\n }\n\n const normalizedFieldName = field.name.trim().toLowerCase();\n if (seenFieldNames.has(normalizedFieldName)) {\n return {\n error: `Field name \"${field.name}\" is duplicated in metadata JSON.`,\n parsed: null,\n };\n }\n\n seenFieldNames.add(normalizedFieldName);\n }\n\n if (!parsed.fields.some((field: any) => field?.name === parsed.userKeyFieldUserKey && !field?.isMarkedForRemoval)) {\n return {\n error: \"Metadata JSON must keep userKeyFieldUserKey present in the fields array.\",\n parsed: null,\n };\n }\n\n return {\n error: null,\n parsed,\n };\n}\n\nexport function DatasourceIntrospectionPage() {\n const params = useParams();\n const dispatch = useDispatch();\n const moduleId = Number(params.moduleId ?? 0);\n const isValidModuleId = Number.isFinite(moduleId) && moduleId > 0;\n\n const {\n data: bootstrap,\n isLoading: isBootstrapLoading,\n isFetching: isBootstrapFetching,\n error: bootstrapError,\n refetch: refetchBootstrap,\n } = useGetDatasourceIntrospectionBootstrapQuery(moduleId, {\n skip: !isValidModuleId,\n });\n\n const [selectedDatasource, setSelectedDatasource] = useState(\"\");\n const [selectedTableKey, setSelectedTableKey] = useState(\"\");\n const [tableSearch, setTableSearch] = useState(\"\");\n const [settingsOpen, setSettingsOpen] = useState(false);\n const [settingsTab, setSettingsTab] = useState(\"datasource-info\");\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [drawerDraft, setDrawerDraft] = useState<DrawerDraft | null>(null);\n const [drawerTab, setDrawerTab] = useState(\"general-info\");\n const [drawerStep, setDrawerStep] = useState<\"edit\" | \"review\">(\"edit\");\n const [reviewTab, setReviewTab] = useState(\"metadata-json\");\n const [mappingPreview, setMappingPreview] = useState<DatasourceIntrospectionMappingPreview | null>(null);\n const [reviewedMetadataJsonValue, setReviewedMetadataJsonValue] = useState<any>(null);\n const [metadataJsonText, setMetadataJsonText] = useState(\"\");\n const [metadataJsonValidationError, setMetadataJsonValidationError] = useState<string | null>(null);\n const [metadataJsonResetToken, setMetadataJsonResetToken] = useState(\"initial\");\n const [drawerBootstrapping, setDrawerBootstrapping] = useState(false);\n const [sessionSettings, setSessionSettings] = useState<SessionSettings>({\n relationInferenceEnabled: false,\n prioritizeUnmappedTables: true,\n });\n const [draftSessionSettings, setDraftSessionSettings] = useState<SessionSettings>(sessionSettings);\n const drawerBootstrapTimerRef = useRef<number | null>(null);\n\n const scrollDrawerBodyToTop = () => {\n if (typeof document === \"undefined\") return;\n\n window.requestAnimationFrame(() => {\n const drawerBody = document.querySelector<HTMLDivElement>(\".sdix-drawer-body\");\n drawerBody?.scrollTo({ top: 0, left: 0 });\n });\n };\n\n const [\n previewMapping,\n { isLoading: isPreviewMappingLoading },\n ] = usePreviewDatasourceIntrospectionMappingMutation();\n\n const [\n applyMapping,\n { isLoading: isApplyMappingLoading },\n ] = useApplyDatasourceIntrospectionMappingMutation();\n\n const isSavingMapping = isApplyMappingLoading;\n\n useEffect(() => {\n if (!bootstrap) return;\n if (selectedDatasource) return;\n if (bootstrap.recommendedDatasourceName) {\n setSelectedDatasource(bootstrap.recommendedDatasourceName);\n }\n }, [bootstrap, selectedDatasource]);\n\n useEffect(() => {\n setSelectedTableKey(\"\");\n setDrawerDraft(null);\n setDrawerOpen(false);\n setTableSearch(\"\");\n setDrawerStep(\"edit\");\n setReviewTab(\"metadata-json\");\n setMappingPreview(null);\n setReviewedMetadataJsonValue(null);\n setMetadataJsonText(\"\");\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`datasource-${Date.now()}`);\n }, [selectedDatasource]);\n\n useEffect(() => () => {\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n }, []);\n\n useEffect(() => {\n if (!drawerOpen) return;\n scrollDrawerBodyToTop();\n }, [drawerOpen, drawerStep, drawerTab, reviewTab, selectedTableKey]);\n\n const datasourceOptions = useMemo(\n () => (bootstrap?.datasources ?? []).map((datasource) => ({\n label: `${datasource.displayName} (${providerLabel(datasource.type)})`,\n value: datasource.name,\n })),\n [bootstrap],\n );\n\n const {\n data: tablesResponse,\n isLoading: isTablesLoading,\n isFetching: isTablesFetching,\n error: tablesError,\n refetch: refetchTables,\n } = useGetDatasourceIntrospectionTablesQuery(\n { moduleId, datasource: selectedDatasource },\n {\n skip: !isValidModuleId || !selectedDatasource,\n },\n );\n\n const selectedTable = useMemo(\n () => tablesResponse?.records?.find((record) => `${record.schema ?? \"\"}::${record.tableName}` === selectedTableKey) ?? null,\n [tablesResponse, selectedTableKey],\n );\n\n const {\n data: tableDetail,\n isLoading: isTableDetailLoading,\n isFetching: isTableDetailFetching,\n error: tableDetailError,\n refetch: refetchTableDetail,\n } = useGetDatasourceIntrospectionTableDetailQuery(\n {\n moduleId,\n datasource: selectedDatasource,\n table: selectedTable?.tableName ?? \"\",\n schema: selectedTable?.schema ?? undefined,\n },\n {\n skip: !drawerOpen || !isValidModuleId || !selectedDatasource || !selectedTable || !!tablesResponse?.synchronizeBlocked,\n },\n );\n\n const {\n data: mappedModelResponse,\n isLoading: isMappedModelLoading,\n isFetching: isMappedModelFetching,\n error: mappedModelError,\n } = useGetmodelByIdQuery(selectedTable?.mappedModelId ?? 0, {\n skip: !drawerOpen || !selectedTable?.mapped || !selectedTable?.mappedModelId,\n });\n\n const mappedModelData = mappedModelResponse?.data;\n const selectedDatasourceRecord = bootstrap?.datasources?.find((datasource) => datasource.name === selectedDatasource) ?? null;\n const drawerLoadingError = selectedTable?.mapped ? (tableDetailError || mappedModelError) : tableDetailError;\n const isDrawerBlockingLoading = Boolean(\n selectedTable\n && (\n drawerBootstrapping\n || !drawerDraft\n || isTableDetailLoading\n || isTableDetailFetching\n || (selectedTable.mapped && (isMappedModelLoading || isMappedModelFetching))\n ),\n );\n\n useEffect(() => {\n if (!drawerOpen || !selectedTable || !tableDetail) return;\n if (selectedTable.mapped && (!mappedModelData || mappedModelData.id !== selectedTable.mappedModelId)) return;\n\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n\n setDrawerDraft(buildDrawerDraft(\n tableDetail,\n selectedTable,\n selectedTable.mapped ? mappedModelResponse : undefined,\n ));\n drawerBootstrapTimerRef.current = window.setTimeout(() => {\n setDrawerBootstrapping(false);\n }, 150);\n }, [drawerOpen, selectedTable, tableDetail, mappedModelData, mappedModelResponse]);\n\n const filteredRecords = useMemo(() => {\n const records = [...(tablesResponse?.records ?? [])];\n const searchNeedle = tableSearch.trim().toLowerCase();\n\n const filtered = searchNeedle\n ? records.filter((record) => {\n const haystack = `${record.tableName} ${record.schema ?? \"\"} ${record.mappedModelSingularName ?? \"\"} ${record.mappedModelDisplayName ?? \"\"}`.toLowerCase();\n return haystack.includes(searchNeedle);\n })\n : records;\n\n if (sessionSettings.prioritizeUnmappedTables) {\n filtered.sort((left, right) => {\n if (left.mapped !== right.mapped) {\n return left.mapped ? 1 : -1;\n }\n\n const leftLabel = `${left.schema ?? \"\"}.${left.tableName}`.toLowerCase();\n const rightLabel = `${right.schema ?? \"\"}.${right.tableName}`.toLowerCase();\n return leftLabel.localeCompare(rightLabel);\n });\n }\n\n return filtered;\n }, [sessionSettings.prioritizeUnmappedTables, tableSearch, tablesResponse?.records]);\n\n const drawerUserKeyOptions = useMemo(() => {\n const options = new Map<string, { label: string; value: string }>();\n\n tableDetail?.userKeyCandidates?.forEach((candidate) => {\n options.set(candidate.name, {\n label: `${candidate.label} · ${candidate.reason}`,\n value: candidate.name,\n });\n });\n\n drawerDraft?.columns\n .filter((column) => !column.handledBySuperclass && column.include)\n .forEach((column) => {\n if (!options.has(column.fieldName)) {\n options.set(column.fieldName, {\n label: `${column.fieldName} · mapped from ${column.columnName}`,\n value: column.fieldName,\n });\n }\n });\n\n return Array.from(options.values());\n }, [drawerDraft?.columns, tableDetail?.userKeyCandidates]);\n\n const settingsTabs = [\n {\n value: \"datasource-info\",\n label: \"Datasource Info\",\n content: (\n <div className=\"sdix-settings-grid\">\n <div className=\"sdix-settings-static\">\n <span>Target module</span>\n <strong>{bootstrap?.module?.displayName}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Default datasource</span>\n <strong>{bootstrap?.module?.defaultDataSource || \"Not set\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Datasource name</span>\n <strong>{selectedDatasourceRecord?.displayName || \"Not selected\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Datasource type</span>\n <strong>{selectedDatasourceRecord ? providerLabel(selectedDatasourceRecord.type) : \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Host</span>\n <strong>{selectedDatasourceRecord?.host || \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Port</span>\n <strong>{selectedDatasourceRecord?.port ?? \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Database</span>\n <strong>{selectedDatasourceRecord?.database || \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Env Prefix</span>\n <strong>{selectedDatasourceRecord?.envPrefix || \"-\"}</strong>\n </div>\n <div className=\"sdix-settings-static\">\n <span>Synchronize</span>\n <strong>{selectedDatasourceRecord ? (selectedDatasourceRecord.synchronize === true ? \"true\" : \"false\") : \"-\"}</strong>\n </div>\n </div>\n ),\n },\n {\n value: \"session-settings\",\n label: \"Session Settings\",\n content: (\n <div className=\"sdix-settings-grid\">\n <div className=\"sdix-settings-row\">\n <div>\n <label>Relation inference</label>\n <p>Keep this off until we deliberately introduce relation discovery across engines.</p>\n </div>\n <SolidSwitch\n checked={draftSessionSettings.relationInferenceEnabled}\n onChange={(checked) => setDraftSessionSettings((current) => ({ ...current, relationInferenceEnabled: checked }))}\n />\n </div>\n\n <div className=\"sdix-settings-row\">\n <div>\n <label>Prioritize unmapped tables</label>\n <p>Bubble unmapped tables to the top of the inventory so the first pass stays focused.</p>\n </div>\n <SolidSwitch\n checked={draftSessionSettings.prioritizeUnmappedTables}\n onChange={(checked) => setDraftSessionSettings((current) => ({ ...current, prioritizeUnmappedTables: checked }))}\n />\n </div>\n </div>\n ),\n },\n ];\n\n const handleRefresh = async () => {\n await refetchBootstrap();\n if (selectedDatasource) {\n await refetchTables();\n }\n if (selectedTable) {\n await refetchTableDetail();\n }\n };\n\n const openTableDrawer = (record: DatasourceIntrospectionTableRecord) => {\n if (drawerBootstrapTimerRef.current) {\n window.clearTimeout(drawerBootstrapTimerRef.current);\n }\n\n setSelectedTableKey(`${record.schema ?? \"\"}::${record.tableName}`);\n setDrawerDraft(null);\n setDrawerTab(\"general-info\");\n setDrawerStep(\"edit\");\n setReviewTab(\"metadata-json\");\n setMappingPreview(null);\n setReviewedMetadataJsonValue(null);\n setMetadataJsonText(\"\");\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`table-${record.schema ?? \"default\"}-${record.tableName}-${Date.now()}`);\n setDrawerBootstrapping(true);\n setDrawerOpen(true);\n };\n\n const applyDraftSettings = () => {\n setSessionSettings(draftSessionSettings);\n setSettingsOpen(false);\n };\n\n const updateDrawerDraft = (updater: (current: DrawerDraft) => DrawerDraft) => {\n setMappingPreview(null);\n setDrawerDraft((current) => (current ? updater(current) : current));\n };\n\n const updateGeneralField = (field: keyof DrawerDraft, value: any) => {\n updateDrawerDraft((current) => ({ ...current, [field]: value }));\n };\n\n const updateColumnFieldName = (columnName: string, nextFieldName: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.columnName !== columnName) return column;\n return { ...column, fieldName: camelCase(nextFieldName) };\n }),\n userKeyField: current.userKeyField === current.columns.find((column) => column.columnName === columnName)?.fieldName\n ? camelCase(nextFieldName)\n : current.userKeyField,\n }));\n };\n\n const updateColumnSolidFieldType = (columnName: string, nextSolidFieldType: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.columnName !== columnName) return column;\n if (column.handledBySuperclass) return column;\n\n return {\n ...column,\n solidFieldType: nextSolidFieldType,\n ormType: getDefaultOrmTypeForSolidFieldType(current.dataSourceType, nextSolidFieldType),\n };\n }),\n }));\n };\n\n const setColumnIncluded = (columnName: string, include: boolean) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.columnName !== columnName) return column;\n if (column.handledBySuperclass || column.isPrimaryKey) return column;\n return { ...column, include };\n }),\n }));\n };\n\n const changeUserKeyField = (fieldName: string) => {\n updateDrawerDraft((current) => ({\n ...current,\n userKeyField: fieldName,\n columns: current.columns.map((column) => (\n column.fieldName === fieldName\n ? { ...column, include: column.handledBySuperclass ? false : true }\n : column\n )),\n }));\n };\n\n const setUnmappedColumnsIncluded = (include: boolean) => {\n updateDrawerDraft((current) => ({\n ...current,\n columns: current.columns.map((column) => {\n if (column.handledBySuperclass || column.matched || column.isPrimaryKey) {\n return column;\n }\n return { ...column, include };\n }),\n }));\n };\n\n const openMappedModelForm = () => {\n const targetModelId = drawerDraft?.modelId ?? selectedTable?.mappedModelId;\n if (!targetModelId) return;\n window.open(`/admin/core/solid-core/model-metadata/form/${targetModelId}`, \"_blank\", \"noopener,noreferrer\");\n };\n\n const viewChanges = async () => {\n if (!drawerDraft || !bootstrap?.module?.id) return;\n\n const validationErrors = getDrawerValidationErrors(drawerDraft);\n if (validationErrors.length) {\n validationErrors.forEach((detail) => {\n dispatch(showToast({ severity: \"error\", summary: \"Validation\", detail }));\n });\n return;\n }\n\n try {\n const preview = await previewMapping({\n moduleId: bootstrap.module.id,\n payload: buildMappingRequest(drawerDraft),\n }).unwrap();\n\n setMappingPreview(preview);\n setReviewedMetadataJsonValue(preview.metadataJson.model);\n setMetadataJsonText(JSON.stringify(preview.metadataJson.model, null, 2));\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`preview-${preview.metadataJson.filePath}-${Date.now()}`);\n setReviewTab(\"metadata-json\");\n setDrawerStep(\"review\");\n } catch (error: any) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Preview failed\",\n detail: readQueryError(error),\n }));\n }\n };\n\n const saveMapping = async () => {\n if (!drawerDraft || !bootstrap?.module?.id) return;\n\n const validationErrors = getDrawerValidationErrors(drawerDraft);\n if (validationErrors.length) {\n validationErrors.forEach((detail) => {\n dispatch(showToast({ severity: \"error\", summary: \"Validation\", detail }));\n });\n setDrawerStep(\"edit\");\n return;\n }\n\n const reviewedModelValidation = parseAndValidateReviewedModelJson(metadataJsonText, drawerDraft);\n if (reviewedModelValidation.error || !reviewedModelValidation.parsed) {\n setMetadataJsonValidationError(reviewedModelValidation.error ?? \"Metadata JSON is invalid.\");\n setReviewTab(\"metadata-json\");\n setDrawerStep(\"review\");\n dispatch(showToast({\n severity: \"error\",\n summary: \"Validation\",\n detail: reviewedModelValidation.error ?? \"Metadata JSON is invalid.\",\n }));\n return;\n }\n\n setMetadataJsonValidationError(null);\n\n try {\n const response = await applyMapping({\n moduleId: bootstrap.module.id,\n payload: {\n ...buildMappingRequest(drawerDraft, mappingPreview?.migration.timestamp ?? null),\n reviewedModel: reviewedModelValidation.parsed,\n },\n }).unwrap();\n\n dispatch(showToast({\n severity: \"success\",\n summary: \"Saved\",\n detail: response.migration.written\n ? \"The mapping, metadata JSON, and migration template were written successfully.\"\n : drawerDraft.mapped\n ? \"The model mapping was updated and written back to metadata JSON.\"\n : \"The model mapping was created and written to metadata JSON.\",\n }));\n\n setDrawerOpen(false);\n setDrawerDraft(null);\n setMappingPreview(null);\n setReviewedMetadataJsonValue(null);\n setMetadataJsonText(\"\");\n setMetadataJsonValidationError(null);\n setMetadataJsonResetToken(`saved-${Date.now()}`);\n setDrawerStep(\"edit\");\n await refetchTables();\n await refetchBootstrap();\n } catch (error: any) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Save failed\",\n detail: readQueryError(error),\n }));\n }\n };\n\n if (!isValidModuleId) {\n return (\n <div className=\"sdix-page\">\n <div className=\"sdix-empty-state\">\n <ShieldAlert size={24} />\n <h2>Module not found</h2>\n <p>Open datasource introspection from a saved module so SolidX knows which module should receive the mapped models.</p>\n </div>\n </div>\n );\n }\n\n const selectableUnmappedColumns = drawerDraft?.columns.filter(\n (column) => !column.handledBySuperclass && !column.matched && !column.isPrimaryKey,\n ) ?? [];\n const allSelectableUnmappedIncluded = selectableUnmappedColumns.length > 0\n && selectableUnmappedColumns.every((column) => column.include);\n const drawerRawDdl = tableDetail?.rawDdl ?? null;\n const drawerTabs = drawerDraft ? [\n {\n value: \"general-info\",\n label: \"General Info\",\n content: (\n <div className=\"sdix-drawer-form\">\n <section className=\"sdix-form-section\">\n <h4 className=\"solid-form-layout-label\">Model Info</h4>\n <div className=\"sdix-form-grid\">\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-singular-name\">Singular Name</label>\n <SolidInput\n id=\"sdix-singular-name\"\n value={drawerDraft.singularName}\n onChange={(event) => updateGeneralField(\"singularName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-plural-name\">Plural Name</label>\n <SolidInput\n id=\"sdix-plural-name\"\n value={drawerDraft.pluralName}\n onChange={(event) => updateGeneralField(\"pluralName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-display-name\">Display Name</label>\n <SolidInput\n id=\"sdix-display-name\"\n value={drawerDraft.displayName}\n onChange={(event) => updateGeneralField(\"displayName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-user-key-field\">User Key Field</label>\n <SolidSelect\n id=\"sdix-user-key-field\"\n value={drawerDraft.userKeyField}\n options={drawerUserKeyOptions}\n placeholder=\"Select user key field\"\n onChange={(event) => changeUserKeyField(event.value)}\n />\n </div>\n <div className=\"sdix-form-field sdix-form-field--full\">\n <label htmlFor=\"sdix-description\">Description</label>\n <SolidTextarea\n id=\"sdix-description\"\n rows={3}\n value={drawerDraft.description}\n onChange={(event) => updateGeneralField(\"description\", event.target.value)}\n />\n </div>\n </div>\n </section>\n\n <section className=\"sdix-form-section\">\n <h4 className=\"solid-form-layout-label\">Datasource Binding</h4>\n <div className=\"sdix-form-grid\">\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-table-name\">Table Name</label>\n <SolidInput\n id=\"sdix-table-name\"\n value={drawerDraft.tableName}\n onChange={(event) => updateGeneralField(\"tableName\", event.target.value)}\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-schema-name\">Schema</label>\n <SolidInput\n id=\"sdix-schema-name\"\n value={drawerDraft.schema ?? \"default\"}\n disabled\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-datasource-name\">Datasource</label>\n <SolidInput\n id=\"sdix-datasource-name\"\n value={drawerDraft.dataSource}\n disabled\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-datasource-type\">Provider</label>\n <SolidInput\n id=\"sdix-datasource-type\"\n value={providerLabel(drawerDraft.dataSourceType)}\n disabled\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-legacy-type\">Legacy Strategy</label>\n <SolidInput\n id=\"sdix-legacy-type\"\n value={legacyTypeLabel(drawerDraft.legacyTableType)}\n disabled\n />\n </div>\n <div className=\"sdix-form-field\">\n <label htmlFor=\"sdix-base-class\">Superclass</label>\n <SolidInput\n id=\"sdix-base-class\"\n value={drawerDraft.baseClassName}\n disabled\n />\n </div>\n </div>\n </section>\n </div>\n ),\n },\n {\n value: \"columns-mapping\",\n label: \"Columns Mapping\",\n content: (\n <div className=\"sdix-columns\">\n <div className=\"sdix-columns__toolbar\">\n <div className=\"sdix-columns__legend\" aria-label=\"Column legend\">\n <span className=\"sdix-status-badge is-superclass\">System column</span>\n <span className=\"sdix-status-badge is-muted\">Application column</span>\n </div>\n </div>\n <div className=\"sdix-column-table\">\n <div className=\"sdix-column-row sdix-column-row--head sdix-column-row--mapping\">\n <span>Column</span>\n <span>Field</span>\n <span>Database</span>\n <span>SolidX</span>\n <span className=\"sdix-column-select-header\">\n {selectableUnmappedColumns.length ? (\n <SolidCheckbox\n checked={allSelectableUnmappedIncluded}\n onChange={(event) => setUnmappedColumnsIncluded(event.target.checked)}\n aria-label={allSelectableUnmappedIncluded ? \"Deselect all unmapped columns\" : \"Select all unmapped columns\"}\n />\n ) : (\n \"Include\"\n )}\n </span>\n <span>Status</span>\n <span>Action</span>\n </div>\n {drawerDraft.columns.map((column) => {\n const isUserKey = drawerDraft.userKeyField === column.fieldName;\n const statusClassName = column.handledBySuperclass\n ? \"is-superclass\"\n : column.include\n ? column.matched\n ? \"is-mapped\"\n : \"is-unmapped\"\n : \"is-muted\";\n\n const statusText = column.handledBySuperclass\n ? \"System\"\n : column.include\n ? column.matched\n ? \"Mapped\"\n : \"Queued for save\"\n : column.matched\n ? \"Currently omitted\"\n : \"Skipped for now\";\n\n return (\n <div key={column.columnName} className=\"sdix-column-row sdix-column-row--mapping\">\n <span className=\"sdix-column-meta\">\n <strong>{column.columnName}</strong>\n {column.isAutoGenerated ? <small>Generated id column</small> : null}\n </span>\n <span>\n <SolidInput\n value={column.fieldName}\n disabled={column.handledBySuperclass}\n onChange={(event) => updateColumnFieldName(column.columnName, event.target.value)}\n />\n {isUserKey ? <small className=\"sdix-inline-note\">User key</small> : null}\n </span>\n <span className=\"sdix-column-meta\">\n <strong>{column.dataType}</strong>\n </span>\n <span>\n {column.handledBySuperclass ? (\n <span>{column.solidFieldType}</span>\n ) : (\n <SolidSelect\n value={column.solidFieldType}\n options={scalarFieldTypeOptions}\n onChange={(event) => updateColumnSolidFieldType(column.columnName, event.value)}\n />\n )}\n </span>\n <span className=\"sdix-column-include\">\n {column.handledBySuperclass ? (\n <span className=\"sdix-column-placeholder\">-</span>\n ) : column.matched ? (\n <span className=\"sdix-column-placeholder\">-</span>\n ) : column.isPrimaryKey ? (\n <SolidCheckbox checked disabled label=\"Required\" />\n ) : (\n <SolidCheckbox\n checked={column.include}\n onChange={(event) => setColumnIncluded(column.columnName, event.target.checked)}\n />\n )}\n </span>\n <span>\n <span className={`sdix-status-badge ${statusClassName}`}>{statusText}</span>\n </span>\n <span className=\"sdix-column-action\">\n {column.handledBySuperclass ? (\n <SolidButton size=\"small\" variant=\"outline\" disabled>\n Managed\n </SolidButton>\n ) : column.isPrimaryKey ? (\n <SolidButton size=\"small\" variant=\"outline\" disabled>\n Required\n </SolidButton>\n ) : column.matched ? (\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setColumnIncluded(column.columnName, false)}>\n Remove mapping\n </SolidButton>\n ) : (\n <span className=\"sdix-column-placeholder\">-</span>\n )}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n ),\n },\n {\n value: \"raw-ddl\",\n label: \"Raw DDL\",\n content: (\n <div className=\"sdix-ddl-tab\">\n {drawerRawDdl?.available && drawerRawDdl.statement ? (\n <pre className=\"sdix-ddl-code\"><code>{drawerRawDdl.statement}</code></pre>\n ) : (\n <div className=\"sdix-empty-state is-inline sdix-ddl-empty\">\n <Database size={18} />\n <p>{drawerRawDdl?.note || \"DDL preview is not available for this table.\"}</p>\n </div>\n )}\n </div>\n ),\n },\n ] : [];\n\n const reviewTabs = mappingPreview ? [\n {\n value: \"metadata-json\",\n label: \"Metadata JSON\",\n content: (\n <div className=\"sdix-review-panel sdix-review-panel--metadata\">\n <div className=\"sdix-review-meta sdix-review-meta--compact\">\n <span>Target file</span>\n <strong>{mappingPreview.metadataJson.filePath}</strong>\n </div>\n <SolidJsonEditor\n className=\"sdix-json-editor\"\n value={reviewedMetadataJsonValue ?? mappingPreview.metadataJson.model}\n resetToken={metadataJsonResetToken}\n onValueChange={(nextValue) => {\n setReviewedMetadataJsonValue(nextValue);\n if (metadataJsonValidationError) {\n setMetadataJsonValidationError(null);\n }\n }}\n onTextChange={(nextText) => {\n setMetadataJsonText(nextText);\n }}\n onErrorChange={setMetadataJsonValidationError}\n />\n {metadataJsonValidationError ? (\n <div className=\"sdix-json-validation-error\">\n <span>{metadataJsonValidationError}</span>\n </div>\n ) : null}\n </div>\n ),\n },\n {\n value: \"migration\",\n label: \"Migration\",\n content: (\n <div className=\"sdix-review-panel sdix-review-panel--migration\">\n {mappingPreview.migration.willGenerate && mappingPreview.migration.filePath ? (\n <>\n <div className=\"sdix-review-meta sdix-review-meta--compact\">\n <span>Target file</span>\n <strong>{mappingPreview.migration.filePath}</strong>\n </div>\n <p className=\"sdix-review-note\">\n This migration preview is generated from the current mapping and is read-only here. Saving the mapping will write a new template migration file to the target location.\n </p>\n {mappingPreview.migration.content ? (\n <pre className=\"sdix-ddl-code sdix-ddl-code--fill\"><code>{mappingPreview.migration.content}</code></pre>\n ) : null}\n </>\n ) : (\n <div className=\"sdix-empty-state is-inline sdix-ddl-empty\">\n <Database size={18} />\n <p>{mappingPreview.migration.note}</p>\n </div>\n )}\n </div>\n ),\n },\n ] : [];\n\n return (\n <div className=\"sdix-page\">\n <div className=\"sdix-toolbar\">\n <div className=\"sdix-toolbar__left\">\n <div className=\"sdix-toolbar-search\">\n <Search size={15} />\n <SolidInput\n value={tableSearch}\n onChange={(event) => setTableSearch(event.target.value)}\n placeholder=\"Search tables\"\n disabled={!selectedDatasource}\n />\n </div>\n </div>\n\n <div className=\"sdix-toolbar__actions\">\n {isBootstrapFetching || isTablesFetching || isTableDetailFetching || isMappedModelFetching ? (\n <div className=\"sdix-inline-status\">\n <SolidSpinner size={16} />\n <span>Refreshing</span>\n </div>\n ) : null}\n <SolidSelect\n value={selectedDatasource}\n options={datasourceOptions}\n placeholder=\"Datasource\"\n className=\"sdix-toolbar-select sdix-toolbar-select--compact\"\n onChange={(event) => setSelectedDatasource(event.value)}\n />\n <SolidButton\n size=\"small\"\n className=\"sdix-icon-button\"\n leftIcon={<RefreshCw size={16} />}\n onClick={() => void handleRefresh()}\n tooltip=\"Refresh\"\n aria-label=\"Refresh\"\n />\n <SolidButton\n size=\"small\"\n className=\"sdix-icon-button\"\n leftIcon={<Cog size={16} />}\n onClick={() => {\n setDraftSessionSettings(sessionSettings);\n setSettingsTab(\"datasource-info\");\n setSettingsOpen(true);\n }}\n tooltip=\"Session settings\"\n aria-label=\"Session settings\"\n />\n </div>\n </div>\n\n {isBootstrapLoading ? (\n <div className=\"sdix-loading\">\n <SolidSpinner size={28} />\n <p>Loading introspection workspace...</p>\n </div>\n ) : bootstrapError ? (\n <div className=\"sdix-error\">\n <span>{readQueryError(bootstrapError)}</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetchBootstrap()}>\n Retry\n </SolidButton>\n </div>\n ) : (\n <>\n {selectedDatasource && tablesResponse?.synchronizeBlocked ? (\n <div className=\"sdix-blocker\">\n <ShieldAlert size={20} />\n <div>\n <h3>Synchronize must be disabled before introspection</h3>\n <p>{tablesResponse.synchronizeMessage}</p>\n </div>\n </div>\n ) : null}\n\n <div className=\"sdix-workbench\">\n <div className=\"sdix-table-shell\">\n {!selectedDatasource ? (\n <div className=\"sdix-empty-state is-inline\">\n <Database size={22} />\n <p>Select a datasource to load its tables.</p>\n </div>\n ) : isTablesLoading ? (\n <div className=\"sdix-loading is-inline\">\n <SolidSpinner size={24} />\n <p>Inspecting datasource tables...</p>\n </div>\n ) : tablesError ? (\n <div className=\"sdix-error is-inline\">\n <span>{readQueryError(tablesError)}</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetchTables()}>\n Retry\n </SolidButton>\n </div>\n ) : !filteredRecords.length ? (\n <div className=\"sdix-empty-state is-inline\">\n <Database size={22} />\n <p>{tableSearch ? \"No tables match the current quick filter.\" : \"No database tables were discovered for this datasource.\"}</p>\n </div>\n ) : (\n <div className=\"sdix-table-area\">\n <SolidDataTable\n value={filteredRecords}\n dataKey=\"tableName\"\n viewportHeight=\"calc(100vh - 162px)\"\n size=\"small\"\n onRowClick={({ data }) => openTableDrawer(data)}\n rowClassName={(rowData) => `${rowData.schema ?? \"\"}::${rowData.tableName}` === selectedTableKey && drawerOpen ? \"sdix-table-row-selected\" : \"\"}\n emptyMessage=\"No datasource tables found\"\n >\n <Column\n field=\"tableName\"\n header=\"Table\"\n body={(rowData: DatasourceIntrospectionTableRecord) => (\n <div className=\"sdix-table-primary-cell\">\n <strong>{rowData.tableName}</strong>\n </div>\n )}\n style={{ minWidth: 240 }}\n />\n <Column field=\"schema\" header=\"Schema\" body={(rowData: DatasourceIntrospectionTableRecord) => rowData.schema || \"dbo/default\"} style={{ minWidth: 120 }} />\n <Column\n header=\"Status\"\n body={(rowData: DatasourceIntrospectionTableRecord) => (\n <span\n className={`sdix-status-badge ${rowData.mapped ? \"is-mapped\" : \"is-unmapped\"}`}\n >\n {statusLabel(rowData)}\n </span>\n )}\n style={{ minWidth: 150 }}\n />\n <Column\n header=\"Superclass\"\n body={(rowData: DatasourceIntrospectionTableRecord) => rowData.suggestedBaseClassName}\n style={{ minWidth: 220 }}\n />\n <Column field=\"suggestedUserKeyField\" header=\"User Key\" style={{ minWidth: 160 }} />\n <Column\n header=\"Mapped Model\"\n body={(rowData: DatasourceIntrospectionTableRecord) => (\n rowData.mapped\n ? (rowData.mappedModelDisplayName || rowData.mappedModelSingularName || \"-\")\n : <span className=\"sdix-muted-cell\">Not mapped</span>\n )}\n style={{ minWidth: 200 }}\n />\n <Column\n header=\"System Columns\"\n body={(rowData: DatasourceIntrospectionTableRecord) => Math.max(rowData.columnCount - rowData.physicalColumnCount, 0)}\n style={{ minWidth: 130 }}\n />\n <Column\n header=\"Columns\"\n body={(rowData: DatasourceIntrospectionTableRecord) => rowData.physicalColumnCount}\n style={{ minWidth: 110 }}\n />\n </SolidDataTable>\n </div>\n )}\n </div>\n </div>\n\n <SolidDialog\n open={settingsOpen}\n onOpenChange={setSettingsOpen}\n style={{ width: \"min(560px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader>\n <div>\n <SolidDialogTitle>Session settings</SolidDialogTitle>\n <SolidDialogDescription>\n Review the selected datasource and adjust the session-specific introspection flags.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <SolidTabGroup\n tabs={settingsTabs}\n value={settingsTab}\n onValueChange={setSettingsTab}\n className=\"sdix-settings-tabs\"\n panelClassName=\"sdix-settings-tab-panel\"\n />\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton variant=\"outline\" onClick={() => setSettingsOpen(false)}>\n Cancel\n </SolidButton>\n <SolidButton onClick={applyDraftSettings}>\n Apply\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n\n <SolidDialog\n open={drawerOpen}\n onOpenChange={setDrawerOpen}\n className=\"sdix-drawer\"\n overlayClassName=\"sdix-drawer-overlay\"\n dismissible\n >\n <SolidDialogHeader className=\"sdix-drawer-header\">\n <div className=\"sdix-drawer-header__identity\">\n <SolidDialogTitle>{selectedTable?.tableName || \"Table details\"}</SolidDialogTitle>\n <SolidDialogDescription className=\"sdix-drawer-header__meta\">\n {selectedTable\n ? `${selectedTable.schema || \"default\"} · ${selectedDatasourceRecord?.database || selectedDatasourceRecord?.displayName || \"Datasource\"}${selectedDatasourceRecord ? ` · ${providerLabel(selectedDatasourceRecord.type)}` : \"\"}`\n : \"Review mapping details\"}\n </SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody className=\"sdix-drawer-body\">\n {!selectedTable ? (\n <div className=\"sdix-empty-state is-inline\">\n <Sparkles size={22} />\n <p>Select a table row to review its structure.</p>\n </div>\n ) : drawerLoadingError ? (\n <div className=\"sdix-error is-inline\">\n <span>{readQueryError(drawerLoadingError)}</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetchTableDetail()}>\n Retry\n </SolidButton>\n </div>\n ) : isDrawerBlockingLoading ? (\n <div className=\"sdix-loading is-inline\">\n <SolidSpinner size={24} />\n <p>Preparing column mapping preview...</p>\n </div>\n ) : (\n <div className=\"sdix-drawer-stack\">\n {drawerDraft && !drawerDraft.mapped && drawerStep === \"edit\" ? (\n <div className=\"sdix-detail-callout sdix-system-fields-callout\">\n <h3>SolidX system fields are added later</h3>\n <p>\n This preview only lists the legacy table columns that already exist today.\n {\" \"}\n Framework system fields from the selected superclass, including the namespaced\n {\" \"}\n <code>ss_*</code>\n {\" \"}\n columns, are introduced when you save the mapping and then generate/apply the follow-up migrations.\n </p>\n </div>\n ) : null}\n {drawerStep === \"edit\" ? (\n <SolidTabGroup\n tabs={drawerTabs}\n value={drawerTab}\n onValueChange={setDrawerTab}\n className=\"sdix-drawer-tabs\"\n panelClassName=\"sdix-drawer-tab-panel\"\n />\n ) : (\n <SolidTabGroup\n tabs={reviewTabs}\n value={reviewTab}\n onValueChange={setReviewTab}\n className=\"sdix-drawer-tabs\"\n panelClassName=\"sdix-drawer-tab-panel\"\n />\n )}\n </div>\n )}\n </SolidDialogBody>\n {drawerDraft && !isDrawerBlockingLoading ? (\n <>\n <SolidDialogSeparator />\n <SolidDialogFooter className=\"sdix-drawer-footer\">\n <div className=\"sdix-drawer-footer__meta\">\n {drawerStep === \"review\" && mappingPreview ? (\n <span>\n Review the metadata update first, then save to apply\n {\" \"}\n <strong>{mappingPreview.summary.includedColumnNames.length}</strong>\n {\" \"}\n mapped columns\n {mappingPreview.summary.generatedSystemColumnCount\n ? ` and ${mappingPreview.summary.generatedSystemColumnCount} SolidX system column migration changes`\n : \"\"}\n .\n </span>\n ) : drawerDraft.mapped ? (\n <span>\n Editing mapped model\n {\" \"}\n <strong>{selectedTable?.mappedModelDisplayName || selectedTable?.mappedModelSingularName}</strong>\n {drawerDraft.mappedModuleLabel ? ` in ${drawerDraft.mappedModuleLabel}` : \"\"}\n </span>\n ) : (\n <span>Saving will create the model metadata and write it to the module JSON.</span>\n )}\n </div>\n <div className=\"sdix-drawer-footer__actions\">\n {drawerDraft.mapped && drawerDraft.modelId ? (\n <SolidButton size=\"small\" variant=\"outline\" leftIcon={<ExternalLink size={14} />} onClick={openMappedModelForm}>\n Open model form\n </SolidButton>\n ) : null}\n {drawerStep === \"review\" ? (\n <>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => setDrawerStep(\"edit\")}>\n Back to editing\n </SolidButton>\n <SolidButton size=\"small\" leftIcon={<Save size={14} />} loading={isSavingMapping} onClick={() => void saveMapping()}>\n Save mapping\n </SolidButton>\n </>\n ) : (\n <SolidButton\n size=\"small\"\n leftIcon={<Save size={14} />}\n loading={isPreviewMappingLoading}\n onClick={() => void viewChanges()}\n >\n View Changes\n </SolidButton>\n )}\n </div>\n </SolidDialogFooter>\n </>\n ) : null}\n </SolidDialog>\n </>\n )}\n </div>\n );\n}\n"]}