@solidxai/core-ui 0.1.12-beta.7 → 0.1.12-beta.8

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 (233) hide show
  1. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  2. package/dist/components/auth/AuthLayout.js +19 -17
  3. package/dist/components/auth/AuthLayout.js.map +1 -1
  4. package/dist/components/auth/AuthLayout.tsx +59 -34
  5. package/dist/components/common/BackendReconnectIndicator.d.ts +6 -0
  6. package/dist/components/common/BackendReconnectIndicator.d.ts.map +1 -0
  7. package/dist/components/common/BackendReconnectIndicator.js +25 -0
  8. package/dist/components/common/BackendReconnectIndicator.js.map +1 -0
  9. package/dist/components/common/BackendReconnectIndicator.tsx +45 -0
  10. package/dist/components/common/SettingsComponent.d.ts.map +1 -1
  11. package/dist/components/common/SettingsComponent.js +7 -3
  12. package/dist/components/common/SettingsComponent.js.map +1 -1
  13. package/dist/components/common/SettingsComponent.module.css +144 -12
  14. package/dist/components/common/SettingsComponent.tsx +22 -3
  15. package/dist/components/common/SolidAdmin.d.ts.map +1 -1
  16. package/dist/components/common/SolidAdmin.js +7 -2
  17. package/dist/components/common/SolidAdmin.js.map +1 -1
  18. package/dist/components/common/SolidAdmin.tsx +7 -2
  19. package/dist/components/common/SolidBreadcrumb.d.ts.map +1 -1
  20. package/dist/components/common/SolidBreadcrumb.js +1 -6
  21. package/dist/components/common/SolidBreadcrumb.js.map +1 -1
  22. package/dist/components/common/SolidBreadcrumb.tsx +1 -8
  23. package/dist/components/common/SolidMaterialSymbol.d.ts +10 -0
  24. package/dist/components/common/SolidMaterialSymbol.d.ts.map +1 -0
  25. package/dist/components/common/SolidMaterialSymbol.js +69 -0
  26. package/dist/components/common/SolidMaterialSymbol.js.map +1 -0
  27. package/dist/components/common/SolidMaterialSymbol.tsx +96 -0
  28. package/dist/components/common/SolidToastProvider.d.ts.map +1 -1
  29. package/dist/components/common/SolidToastProvider.js +14 -1
  30. package/dist/components/common/SolidToastProvider.js.map +1 -1
  31. package/dist/components/common/SolidToastProvider.tsx +19 -1
  32. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +3 -1
  33. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  34. package/dist/components/core/common/SolidGlobalSearchElement.js +3 -2
  35. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  36. package/dist/components/core/common/SolidGlobalSearchElement.tsx +14 -18
  37. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
  38. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +43 -16
  39. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  40. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +24 -2
  41. package/dist/components/core/form/SolidFormFooter.js +1 -1
  42. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  43. package/dist/components/core/form/SolidFormFooter.tsx +1 -1
  44. package/dist/components/core/form/SolidFormLayouts.js +1 -1
  45. package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
  46. package/dist/components/core/form/SolidFormLayouts.tsx +2 -2
  47. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  48. package/dist/components/core/form/fields/SolidMediaMultipleField.js +120 -56
  49. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  50. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +63 -50
  51. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  52. package/dist/components/core/form/fields/SolidMediaSingleField.js +115 -37
  53. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  54. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +36 -35
  55. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
  56. package/dist/components/core/form/fields/SolidRichTextField.js +67 -4
  57. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  58. package/dist/components/core/form/fields/SolidRichTextField.tsx +89 -7
  59. package/dist/components/core/form/fields/mediaFieldUtils.d.ts +3 -0
  60. package/dist/components/core/form/fields/mediaFieldUtils.d.ts.map +1 -0
  61. package/dist/components/core/form/fields/mediaFieldUtils.js +30 -0
  62. package/dist/components/core/form/fields/mediaFieldUtils.js.map +1 -0
  63. package/dist/components/core/form/fields/mediaFieldUtils.ts +45 -0
  64. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
  65. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +1 -1
  66. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
  67. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +3 -1
  68. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  69. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +22 -23
  70. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  71. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +13 -7
  72. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.d.ts.map +1 -1
  73. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +16 -11
  74. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  75. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +32 -18
  76. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.d.ts.map +1 -1
  77. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js +3 -1
  78. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js.map +1 -1
  79. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.tsx +11 -5
  80. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
  81. package/dist/components/core/list/SolidDataTable.js +3 -2
  82. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  83. package/dist/components/core/list/SolidDataTable.tsx +3 -2
  84. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  85. package/dist/components/core/list/SolidListView.js +11 -5
  86. package/dist/components/core/list/SolidListView.js.map +1 -1
  87. package/dist/components/core/list/SolidListView.tsx +15 -8
  88. package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
  89. package/dist/components/core/list/SolidListViewColumn.js +1 -0
  90. package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
  91. package/dist/components/core/list/SolidListViewColumn.tsx +1 -0
  92. package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
  93. package/dist/components/core/list/columns/SolidShortTextColumn.js +7 -2
  94. package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
  95. package/dist/components/core/list/columns/SolidShortTextColumn.tsx +7 -2
  96. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.d.ts.map +1 -1
  97. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js +4 -1
  98. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js.map +1 -1
  99. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +5 -2
  100. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  101. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
  102. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  103. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +2 -1
  104. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.d.ts.map +1 -1
  105. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js +4 -1
  106. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js.map +1 -1
  107. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +5 -2
  108. package/dist/components/core/locales/SolidLocale.d.ts.map +1 -1
  109. package/dist/components/core/locales/SolidLocale.js +1 -1
  110. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  111. package/dist/components/core/locales/SolidLocale.tsx +1 -0
  112. package/dist/components/core/model/CreateModel.css +26 -0
  113. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  114. package/dist/components/core/model/FieldMetaData.js +21 -3
  115. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  116. package/dist/components/core/model/FieldMetaData.tsx +45 -4
  117. package/dist/components/core/model/FieldMetaDataForm.css +82 -0
  118. package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -0
  119. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  120. package/dist/components/core/model/FieldMetaDataForm.js +246 -235
  121. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  122. package/dist/components/core/model/FieldMetaDataForm.tsx +46 -34
  123. package/dist/components/core/model/FieldSelector.js +1 -1
  124. package/dist/components/core/model/FieldSelector.js.map +1 -1
  125. package/dist/components/core/model/FieldSelector.tsx +1 -1
  126. package/dist/components/core/model/ModelMetaData.js +1 -1
  127. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  128. package/dist/components/core/model/ModelMetaData.tsx +1 -1
  129. package/dist/components/core/module/CreateModule.css +55 -2
  130. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  131. package/dist/components/core/module/CreateModule.js +2 -2
  132. package/dist/components/core/module/CreateModule.js.map +1 -1
  133. package/dist/components/core/module/CreateModule.tsx +3 -2
  134. package/dist/components/core/module/ModuleMetadataExplorer.css +27 -0
  135. package/dist/components/core/module/ModuleMetadataExplorer.d.ts.map +1 -1
  136. package/dist/components/core/module/ModuleMetadataExplorer.js +1 -1
  137. package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -1
  138. package/dist/components/core/module/ModuleMetadataExplorer.tsx +1 -0
  139. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  140. package/dist/components/core/tree/SolidTreeView.js +6 -1
  141. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  142. package/dist/components/core/tree/SolidTreeView.tsx +7 -1
  143. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
  144. package/dist/components/layout/AdminHeaderActions.js +10 -9
  145. package/dist/components/layout/AdminHeaderActions.js.map +1 -1
  146. package/dist/components/layout/AdminHeaderActions.tsx +2 -0
  147. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  148. package/dist/components/layout/AppSidebar.js +2 -1
  149. package/dist/components/layout/AppSidebar.js.map +1 -1
  150. package/dist/components/layout/AppSidebar.tsx +12 -5
  151. package/dist/components/layout/SolidMenuItemIcon.d.ts +9 -0
  152. package/dist/components/layout/SolidMenuItemIcon.d.ts.map +1 -0
  153. package/dist/components/layout/SolidMenuItemIcon.js +20 -0
  154. package/dist/components/layout/SolidMenuItemIcon.js.map +1 -0
  155. package/dist/components/layout/SolidMenuItemIcon.tsx +45 -0
  156. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  157. package/dist/components/layout/navbar-two-menu.js +6 -7
  158. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  159. package/dist/components/layout/navbar-two-menu.tsx +4 -12
  160. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
  161. package/dist/components/shad-cn-ui/SolidCodeEditor.js +30 -2
  162. package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
  163. package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +38 -1
  164. package/dist/helpers/backendHealthMonitor.d.ts +39 -0
  165. package/dist/helpers/backendHealthMonitor.d.ts.map +1 -0
  166. package/dist/helpers/backendHealthMonitor.js +255 -0
  167. package/dist/helpers/backendHealthMonitor.js.map +1 -0
  168. package/dist/helpers/backendHealthMonitor.ts +177 -0
  169. package/dist/helpers/helpers.d.ts +1 -0
  170. package/dist/helpers/helpers.d.ts.map +1 -1
  171. package/dist/helpers/helpers.js +9 -0
  172. package/dist/helpers/helpers.js.map +1 -1
  173. package/dist/helpers/helpers.ts +11 -1
  174. package/dist/helpers/menuItemIcons.d.ts +34 -0
  175. package/dist/helpers/menuItemIcons.d.ts.map +1 -0
  176. package/dist/helpers/menuItemIcons.js +144 -0
  177. package/dist/helpers/menuItemIcons.js.map +1 -0
  178. package/dist/helpers/menuItemIcons.ts +191 -0
  179. package/dist/helpers/relationDisplay.d.ts +3 -0
  180. package/dist/helpers/relationDisplay.d.ts.map +1 -0
  181. package/dist/helpers/relationDisplay.js +92 -0
  182. package/dist/helpers/relationDisplay.js.map +1 -0
  183. package/dist/helpers/relationDisplay.ts +101 -0
  184. package/dist/helpers/settingsPayload.d.ts +1 -0
  185. package/dist/helpers/settingsPayload.d.ts.map +1 -1
  186. package/dist/helpers/settingsPayload.js.map +1 -1
  187. package/dist/helpers/settingsPayload.ts +1 -0
  188. package/dist/helpers/solidIcons.d.ts +2 -0
  189. package/dist/helpers/solidIcons.d.ts.map +1 -1
  190. package/dist/helpers/solidIcons.js +8 -0
  191. package/dist/helpers/solidIcons.js.map +1 -1
  192. package/dist/helpers/solidIcons.tsx +10 -1
  193. package/dist/helpers/waitForBackendAvailability.d.ts +1 -0
  194. package/dist/helpers/waitForBackendAvailability.d.ts.map +1 -1
  195. package/dist/helpers/waitForBackendAvailability.js +35 -22
  196. package/dist/helpers/waitForBackendAvailability.js.map +1 -1
  197. package/dist/helpers/waitForBackendAvailability.ts +18 -12
  198. package/dist/http/solidHttp.d.ts.map +1 -1
  199. package/dist/http/solidHttp.js +10 -4
  200. package/dist/http/solidHttp.js.map +1 -1
  201. package/dist/http/solidHttp.ts +9 -4
  202. package/dist/redux/api/datasourceIntrospectionApi.d.ts +4 -0
  203. package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -1
  204. package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -1
  205. package/dist/redux/api/datasourceIntrospectionApi.ts +4 -0
  206. package/dist/redux/api/fetchBaseQuery.d.ts.map +1 -1
  207. package/dist/redux/api/fetchBaseQuery.js +9 -3
  208. package/dist/redux/api/fetchBaseQuery.js.map +1 -1
  209. package/dist/redux/api/fetchBaseQuery.tsx +9 -3
  210. package/dist/redux/store/StoreProvider.d.ts.map +1 -1
  211. package/dist/redux/store/StoreProvider.js +4 -3
  212. package/dist/redux/store/StoreProvider.js.map +1 -1
  213. package/dist/redux/store/StoreProvider.tsx +4 -3
  214. package/dist/resources/globals.css +341 -49
  215. package/dist/resources/solid-custom.css +410 -12
  216. package/dist/resources/solid-responsive.css +27 -16
  217. package/dist/resources/solid-tailwind-generated.css +1 -1
  218. package/dist/routes/AppEventListener.d.ts.map +1 -1
  219. package/dist/routes/AppEventListener.js +23 -0
  220. package/dist/routes/AppEventListener.js.map +1 -1
  221. package/dist/routes/AppEventListener.tsx +29 -0
  222. package/dist/routes/pages/admin/core/DashboardPage.module.css +12 -0
  223. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +306 -3
  224. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -1
  225. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +745 -393
  226. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -1
  227. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +1074 -420
  228. package/dist/routes/pages/admin/core/DatasourcesPage.css +15 -0
  229. package/dist/routes/pages/admin/core/DatasourcesPage.d.ts.map +1 -1
  230. package/dist/routes/pages/admin/core/DatasourcesPage.js +7 -188
  231. package/dist/routes/pages/admin/core/DatasourcesPage.js.map +1 -1
  232. package/dist/routes/pages/admin/core/DatasourcesPage.tsx +3 -393
  233. package/package.json +1 -1
@@ -1,27 +1,8 @@
1
- import { Database, Plus, RefreshCw } from "lucide-react";
2
- import { useEffect, useState } from "react";
3
- import { useDispatch } from "react-redux";
4
- import { showToast } from "../../../../redux/features/toastSlice";
5
- import {
6
- type CreateDatasourceManagementPayload,
7
- type DatasourceManagementRecord,
8
- useCreateDatasourceMutation,
9
- useGetDatasourcesQuery,
10
- } from "../../../../redux/api/datasourceManagementApi";
1
+ import { Database, RefreshCw } from "lucide-react";
2
+ import { useGetDatasourcesQuery } from "../../../../redux/api/datasourceManagementApi";
11
3
  import {
12
4
  SolidButton,
13
- SolidDialog,
14
- SolidDialogBody,
15
- SolidDialogDescription,
16
- SolidDialogFooter,
17
- SolidDialogHeader,
18
- SolidDialogSeparator,
19
- SolidDialogTitle,
20
- SolidInput,
21
- SolidPanel,
22
- SolidSelect,
23
5
  SolidSpinner,
24
- SolidSwitch,
25
6
  } from "../../../../components/shad-cn-ui";
26
7
  import "./DatasourcesPage.css";
27
8
 
@@ -31,45 +12,6 @@ const providerOptions = [
31
12
  { label: "MS SQL Server", value: "mssql" },
32
13
  ] as const;
33
14
 
34
- const defaultFormState: CreateDatasourceManagementPayload = {
35
- name: "",
36
- displayName: "",
37
- type: "postgres",
38
- host: "",
39
- port: 5432,
40
- database: "",
41
- username: "",
42
- password: "",
43
- synchronize: false,
44
- logging: false,
45
- ssl: false,
46
- sslRejectUnauthorized: true,
47
- poolMax: 20,
48
- connectionTimeoutMs: 60000,
49
- idleTimeoutMs: 30000,
50
- statementTimeoutMs: 60000,
51
- idleInTxTimeoutMs: 60000,
52
- retryAttempts: 0,
53
- retryDelayMs: 0,
54
- encrypt: false,
55
- trustServerCertificate: true,
56
- };
57
-
58
- function slugifyDatasourceName(value: string) {
59
- return value
60
- .toLowerCase()
61
- .trim()
62
- .replace(/[^a-z0-9]+/g, "-")
63
- .replace(/^-+|-+$/g, "")
64
- .slice(0, 48);
65
- }
66
-
67
- function getDefaultPort(type: CreateDatasourceManagementPayload["type"]) {
68
- if (type === "mysql") return 3306;
69
- if (type === "mssql") return 1433;
70
- return 5432;
71
- }
72
-
73
15
  function providerLabel(type: string) {
74
16
  return providerOptions.find((option) => option.value === type)?.label || type;
75
17
  }
@@ -86,39 +28,6 @@ function providerGlyph(type: string) {
86
28
  return "MS";
87
29
  }
88
30
 
89
- function readMutationError(error: any) {
90
- return (
91
- error?.data?.message
92
- || error?.error
93
- || error?.message
94
- || "Unable to save the datasource."
95
- );
96
- }
97
-
98
- function sanitizePayload(formState: CreateDatasourceManagementPayload): CreateDatasourceManagementPayload {
99
- const payload: CreateDatasourceManagementPayload = {
100
- ...formState,
101
- name: slugifyDatasourceName(formState.name),
102
- };
103
-
104
- if (payload.type === "mssql") {
105
- delete payload.ssl;
106
- delete payload.sslRejectUnauthorized;
107
- delete payload.statementTimeoutMs;
108
- delete payload.idleInTxTimeoutMs;
109
- } else {
110
- delete payload.encrypt;
111
- delete payload.trustServerCertificate;
112
- }
113
-
114
- if (payload.type !== "postgres") {
115
- delete payload.statementTimeoutMs;
116
- delete payload.idleInTxTimeoutMs;
117
- }
118
-
119
- return payload;
120
- }
121
-
122
31
  function DatasourceProviderMark({ type }: { type: string }) {
123
32
  return (
124
33
  <div className={`sdm-provider-mark ${providerTone(type)}`}>
@@ -128,7 +37,6 @@ function DatasourceProviderMark({ type }: { type: string }) {
128
37
  }
129
38
 
130
39
  export function DatasourcesPage() {
131
- const dispatch = useDispatch();
132
40
  const {
133
41
  data: datasources = [],
134
42
  isLoading,
@@ -136,68 +44,6 @@ export function DatasourcesPage() {
136
44
  error,
137
45
  refetch,
138
46
  } = useGetDatasourcesQuery();
139
- const [createDatasource, { isLoading: isCreating }] = useCreateDatasourceMutation();
140
- const [dialogOpen, setDialogOpen] = useState(false);
141
- const [nameTouched, setNameTouched] = useState(false);
142
- const [formState, setFormState] = useState<CreateDatasourceManagementPayload>(defaultFormState);
143
-
144
- useEffect(() => {
145
- if (!dialogOpen) {
146
- setFormState(defaultFormState);
147
- setNameTouched(false);
148
- }
149
- }, [dialogOpen]);
150
-
151
- const handleFieldChange = <K extends keyof CreateDatasourceManagementPayload>(
152
- key: K,
153
- value: CreateDatasourceManagementPayload[K],
154
- ) => {
155
- setFormState((current) => ({
156
- ...current,
157
- [key]: value,
158
- }));
159
- };
160
-
161
- const handleDisplayNameChange = (value: string) => {
162
- setFormState((current) => ({
163
- ...current,
164
- displayName: value,
165
- name: nameTouched ? current.name : slugifyDatasourceName(value),
166
- }));
167
- };
168
-
169
- const handleTypeChange = (value: CreateDatasourceManagementPayload["type"]) => {
170
- handleFieldChange("type", value);
171
- handleFieldChange("port", getDefaultPort(value));
172
- };
173
-
174
- const handleSubmit = async () => {
175
- if (!formState.name || !formState.host || !formState.database || !formState.username || !formState.password) {
176
- dispatch(showToast({
177
- severity: "warn",
178
- summary: "Missing details",
179
- detail: "Fill in the datasource name, host, database, username, and password.",
180
- }));
181
- return;
182
- }
183
-
184
- try {
185
- const payload = sanitizePayload(formState);
186
- await createDatasource(payload).unwrap();
187
- setDialogOpen(false);
188
- dispatch(showToast({
189
- severity: "success",
190
- summary: "Datasource created",
191
- detail: `${payload.displayName || payload.name} is now registered in SolidX.`,
192
- }));
193
- } catch (mutationError: any) {
194
- dispatch(showToast({
195
- severity: "error",
196
- summary: "Datasource creation failed",
197
- detail: readMutationError(mutationError),
198
- }));
199
- }
200
- };
201
47
 
202
48
  return (
203
49
  <div className="sdm-page">
@@ -215,14 +61,6 @@ export function DatasourcesPage() {
215
61
  </div>
216
62
  ) : null}
217
63
 
218
- <SolidButton
219
- className="sdm-icon-button"
220
- leftIcon={<Plus size={16} />}
221
- onClick={() => setDialogOpen(true)}
222
- tooltip="Add datasource"
223
- aria-label="Add datasource"
224
- />
225
-
226
64
  <SolidButton
227
65
  className="sdm-icon-button"
228
66
  leftIcon={<RefreshCw size={16} />}
@@ -303,238 +141,10 @@ export function DatasourcesPage() {
303
141
  <Database size={22} />
304
142
  <div>
305
143
  <h3>No datasources configured</h3>
306
- <p>Create one here and SolidX will wire the module and environment variables for you.</p>
144
+ <p>Datasource creation is temporarily unavailable from this screen.</p>
307
145
  </div>
308
- <SolidButton size="small" onClick={() => setDialogOpen(true)} leftIcon={<Plus size={14} />}>
309
- Add datasource
310
- </SolidButton>
311
146
  </div>
312
147
  )}
313
-
314
- <SolidDialog open={dialogOpen} onOpenChange={setDialogOpen} style={{ width: "min(860px, calc(100vw - 32px))" }}>
315
- <SolidDialogHeader>
316
- <div>
317
- <SolidDialogTitle>Add datasource</SolidDialogTitle>
318
- <SolidDialogDescription>
319
- Create a new datasource module, register it in `app.module.ts`, and persist its env variables to disk.
320
- </SolidDialogDescription>
321
- </div>
322
- </SolidDialogHeader>
323
- <SolidDialogSeparator />
324
- <SolidDialogBody>
325
- <div className="sdm-form-grid">
326
- <label className="sdm-form-field">
327
- <span>Display name</span>
328
- <SolidInput
329
- value={formState.displayName || ""}
330
- placeholder="Applications"
331
- onChange={(event) => handleDisplayNameChange(event.target.value)}
332
- />
333
- </label>
334
-
335
- <label className="sdm-form-field">
336
- <span>Datasource key</span>
337
- <SolidInput
338
- value={formState.name}
339
- placeholder="applications"
340
- onChange={(event) => {
341
- setNameTouched(true);
342
- handleFieldChange("name", slugifyDatasourceName(event.target.value));
343
- }}
344
- />
345
- </label>
346
-
347
- <label className="sdm-form-field">
348
- <span>Provider</span>
349
- <SolidSelect
350
- value={formState.type}
351
- options={providerOptions as any}
352
- onChange={(event) => handleTypeChange(event.value)}
353
- />
354
- </label>
355
-
356
- <label className="sdm-form-field">
357
- <span>Port</span>
358
- <SolidInput
359
- type="number"
360
- value={formState.port}
361
- onChange={(event) => handleFieldChange("port", Number(event.target.value) || getDefaultPort(formState.type))}
362
- />
363
- </label>
364
-
365
- <label className="sdm-form-field">
366
- <span>Host</span>
367
- <SolidInput
368
- value={formState.host}
369
- placeholder="localhost"
370
- onChange={(event) => handleFieldChange("host", event.target.value)}
371
- />
372
- </label>
373
-
374
- <label className="sdm-form-field">
375
- <span>Database</span>
376
- <SolidInput
377
- value={formState.database}
378
- placeholder="solidx_app"
379
- onChange={(event) => handleFieldChange("database", event.target.value)}
380
- />
381
- </label>
382
-
383
- <label className="sdm-form-field">
384
- <span>Username</span>
385
- <SolidInput
386
- value={formState.username}
387
- placeholder="postgres"
388
- onChange={(event) => handleFieldChange("username", event.target.value)}
389
- />
390
- </label>
391
-
392
- <label className="sdm-form-field">
393
- <span>Password</span>
394
- <SolidInput
395
- type="password"
396
- value={formState.password}
397
- onChange={(event) => handleFieldChange("password", event.target.value)}
398
- />
399
- </label>
400
- </div>
401
-
402
- <div className="sdm-switch-row">
403
- <label className="sdm-switch-field">
404
- <div>
405
- <strong>Synchronize</strong>
406
- <span>Write `*_DATABASE_SYNCHRONIZE` for this datasource.</span>
407
- </div>
408
- <SolidSwitch checked={!!formState.synchronize} onChange={(checked) => handleFieldChange("synchronize", checked)} />
409
- </label>
410
-
411
- <label className="sdm-switch-field">
412
- <div>
413
- <strong>Logging</strong>
414
- <span>Enable TypeORM logging through the generated datasource module.</span>
415
- </div>
416
- <SolidSwitch checked={!!formState.logging} onChange={(checked) => handleFieldChange("logging", checked)} />
417
- </label>
418
- </div>
419
-
420
- <SolidPanel header="Advanced options" toggleable className="solid-column-panel sdm-advanced-panel">
421
- <div className="sdm-advanced-grid">
422
- {formState.type === "mssql" ? (
423
- <>
424
- <label className="sdm-switch-field sdm-switch-field--inline">
425
- <div>
426
- <strong>Encrypt</strong>
427
- <span>MSSQL connection option.</span>
428
- </div>
429
- <SolidSwitch checked={!!formState.encrypt} onChange={(checked) => handleFieldChange("encrypt", checked)} />
430
- </label>
431
-
432
- <label className="sdm-switch-field sdm-switch-field--inline">
433
- <div>
434
- <strong>Trust certificate</strong>
435
- <span>Allow self-signed development certificates.</span>
436
- </div>
437
- <SolidSwitch checked={!!formState.trustServerCertificate} onChange={(checked) => handleFieldChange("trustServerCertificate", checked)} />
438
- </label>
439
- </>
440
- ) : (
441
- <>
442
- <label className="sdm-switch-field sdm-switch-field--inline">
443
- <div>
444
- <strong>SSL</strong>
445
- <span>Enable SSL for PostgreSQL or MySQL.</span>
446
- </div>
447
- <SolidSwitch checked={!!formState.ssl} onChange={(checked) => handleFieldChange("ssl", checked)} />
448
- </label>
449
-
450
- <label className="sdm-switch-field sdm-switch-field--inline">
451
- <div>
452
- <strong>Reject unauthorized</strong>
453
- <span>Keep certificate validation strict when SSL is enabled.</span>
454
- </div>
455
- <SolidSwitch checked={!!formState.sslRejectUnauthorized} onChange={(checked) => handleFieldChange("sslRejectUnauthorized", checked)} />
456
- </label>
457
- </>
458
- )}
459
-
460
- <label className="sdm-form-field">
461
- <span>Pool max</span>
462
- <SolidInput
463
- type="number"
464
- value={formState.poolMax ?? ""}
465
- onChange={(event) => handleFieldChange("poolMax", Number(event.target.value) || 0)}
466
- />
467
- </label>
468
-
469
- <label className="sdm-form-field">
470
- <span>Connection timeout (ms)</span>
471
- <SolidInput
472
- type="number"
473
- value={formState.connectionTimeoutMs ?? ""}
474
- onChange={(event) => handleFieldChange("connectionTimeoutMs", Number(event.target.value) || 0)}
475
- />
476
- </label>
477
-
478
- <label className="sdm-form-field">
479
- <span>Idle timeout (ms)</span>
480
- <SolidInput
481
- type="number"
482
- value={formState.idleTimeoutMs ?? ""}
483
- onChange={(event) => handleFieldChange("idleTimeoutMs", Number(event.target.value) || 0)}
484
- />
485
- </label>
486
-
487
- {formState.type === "postgres" ? (
488
- <>
489
- <label className="sdm-form-field">
490
- <span>Statement timeout (ms)</span>
491
- <SolidInput
492
- type="number"
493
- value={formState.statementTimeoutMs ?? ""}
494
- onChange={(event) => handleFieldChange("statementTimeoutMs", Number(event.target.value) || 0)}
495
- />
496
- </label>
497
-
498
- <label className="sdm-form-field">
499
- <span>Idle in transaction timeout (ms)</span>
500
- <SolidInput
501
- type="number"
502
- value={formState.idleInTxTimeoutMs ?? ""}
503
- onChange={(event) => handleFieldChange("idleInTxTimeoutMs", Number(event.target.value) || 0)}
504
- />
505
- </label>
506
- </>
507
- ) : null}
508
-
509
- <label className="sdm-form-field">
510
- <span>Retry attempts</span>
511
- <SolidInput
512
- type="number"
513
- value={formState.retryAttempts ?? ""}
514
- onChange={(event) => handleFieldChange("retryAttempts", Number(event.target.value) || 0)}
515
- />
516
- </label>
517
-
518
- <label className="sdm-form-field">
519
- <span>Retry delay (ms)</span>
520
- <SolidInput
521
- type="number"
522
- value={formState.retryDelayMs ?? ""}
523
- onChange={(event) => handleFieldChange("retryDelayMs", Number(event.target.value) || 0)}
524
- />
525
- </label>
526
- </div>
527
- </SolidPanel>
528
- </SolidDialogBody>
529
- <SolidDialogFooter>
530
- <SolidButton variant="outline" onClick={() => setDialogOpen(false)}>
531
- Cancel
532
- </SolidButton>
533
- <SolidButton onClick={() => void handleSubmit()} loading={isCreating}>
534
- Create datasource
535
- </SolidButton>
536
- </SolidDialogFooter>
537
- </SolidDialog>
538
148
  </div>
539
149
  );
540
150
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidxai/core-ui",
3
- "version": "0.1.12-beta.7",
3
+ "version": "0.1.12-beta.8",
4
4
  "scripts": {
5
5
  "build:tailwind": "tailwindcss -i ./src/resources/solid-tailwind.css -o ./src/resources/solid-tailwind-generated.css -c ./tailwind.config.js --minify",
6
6
  "prebuild": "npm run build:tailwind && npm run copy-resources && npm run copy-styles",