@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
@@ -1 +1 @@
1
- {"version":3,"file":"GeneralSettings.js","sourceRoot":"","sources":["../../../src/components/common/GeneralSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useFormik } from 'formik';\nimport { useCallback, useEffect, useState } from 'react'\nimport { CancelButton } from './CancelButton';\nimport { ApiKeysTab } from '../core/users/ApiKeysTab';\nimport { useSession } from '../../hooks/useSession';\nimport { SolidButton, SolidDivider, SolidInput, SolidSegmentedControl, SolidSwitch, SolidTabGroup, SolidTextarea } from '../shad-cn-ui';\nimport { usePathname } from \"../../hooks/usePathname\";\nimport SolidLogo from '../../resources/images/SolidXLogo.svg'\nimport AuthScreenRightBackgroundImage from '../../resources/images/auth/solid-left-layout-bg.png';\nimport AuthScreenLeftBackgroundImage from '../../resources/images/auth/solid-right-layout-bg.png';\nimport AuthScreenCenterBackgroundImage from '../../resources/images/auth/solid-login-light.png';\nimport { useDropzone } from 'react-dropzone';\nimport { SettingDropzoneActivePlaceholder } from './SolidSettings/SettingDropzoneActivePlaceholder';\nimport { SolidUploadedImage } from './SolidSettings/SolidUploadedImage';\nimport { SettingsImageRemoveButton } from './SolidSettings/SettingsImageRemoveButton';\nimport { ModelConfigTab, ProvidersTab, ModelBehavior, ModelEntry, SolidAiConfig, ensureBuiltInProviders } from './SolidSettings/LlmSettings/AiModelConfigTab';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ERROR_MESSAGES } from '../../constants/error-messages';\nimport { useBulkUpdateSolidSettingsMutation, useLazyGetSolidSettingsQuery } from '../../redux/api/solidSettingsApi';\nimport { env } from \"../../adapters/env\";\nimport { showToast } from \"../../redux/features/toastSlice\";\n\nexport const GeneralSettings = () => {\n const { data: session } = useSession();\n const [appLogoPreview, setAppLogoPreview] = useState<string | null>(null);\n const [companyLogoPreview, setCompanyLogoPreview] = useState<string | null>(null);\n const [authScreenRightBackgroundImagePreview, setAuthScreenRightBackgroundImagePreview] = useState<string | null>(null);\n const [authScreenLeftBackgroundImagePreview, setAuthScreenLeftBackgroundImagePreview] = useState<string | null>(null);\n const [authScreenCenterBackgroundImagePreview, setAuthScreenCenterBackgroundImagePreview] = useState<string | null>(null);\n const dispatch = useDispatch()\n\n const [trigger, { data: solidSettingsData }] = useLazyGetSolidSettingsQuery();\n\n useEffect(() => {\n trigger(\"\") // Fetch settings on mount\n }, [trigger])\n const pathname = usePathname();\n const [bulkUpdateSolidSettings] = useBulkUpdateSolidSettingsMutation();\n const initialValues = {\n appLogo: solidSettingsData?.data?.appLogo ?? null,\n companylogo: solidSettingsData?.data?.companylogo ?? null,\n passwordlessRegistrationValidateWhat: solidSettingsData?.data?.passwordlessRegistrationValidateWhat ?? \"email\",\n passwordlessLoginValidateWhat: solidSettingsData?.data?.passwordlessLoginValidateWhat ?? \"email\",\n allowPublicRegistration: solidSettingsData?.data?.allowPublicRegistration ?? false,\n passwordBasedAuth: solidSettingsData?.data?.passwordBasedAuth ?? false,\n passwordLessAuth: solidSettingsData?.data?.passwordLessAuth ?? false,\n activateUserOnRegistration: solidSettingsData?.data?.activateUserOnRegistration ?? false,\n iamGoogleOAuthEnabled: solidSettingsData?.data?.iamGoogleOAuthEnabled ?? false,\n iamMicrosoftOAuthEnabled: solidSettingsData?.data?.iamMicrosoftOAuthEnabled ?? false,\n iamMicrosoftActiveDirectoryOAuthEnabled: solidSettingsData?.data?.iamMicrosoftActiveDirectoryOAuthEnabled ?? false,\n iamFacebookOAuthEnabled: solidSettingsData?.data?.iamFacebookOAuthEnabled ?? false,\n iamAppleOAuthEnabled: solidSettingsData?.data?.iamAppleOAuthEnabled ?? false,\n // shouldQueueEmails: solidSettingsData?.data?.shouldQueueEmails ?? false,\n // shouldQueueSms: solidSettingsData?.data?.shouldQueueSms ?? false,\n authPagesLayout: solidSettingsData?.data?.authPagesLayout ?? \"center\",\n defaultRole: solidSettingsData?.data?.defaultRole ?? \"Admin\",\n appLogoPosition: solidSettingsData?.data?.appLogoPosition ?? \"in_form_view\",\n showAuthContent: solidSettingsData?.data?.showAuthContent ?? false,\n appTitle: solidSettingsData?.data?.appTitle ?? \"SolidX\",\n appSubtitle: solidSettingsData?.data?.appSubtitle ?? \"Welcome To\",\n appDescription: solidSettingsData?.data?.appDescription ?? \"appDescription\",\n showLegalLinks: solidSettingsData?.data?.showLegalLinks ?? false,\n appTnc: solidSettingsData?.data?.appTnc ?? null,\n appPrivacyPolicy: solidSettingsData?.data?.appPrivacyPolicy ?? null,\n enableDarkMode: solidSettingsData?.data?.enableDarkMode ?? false,\n copyright: solidSettingsData?.data?.copyright ?? null,\n forceChangePasswordOnFirstLogin: solidSettingsData?.data?.forceChangePasswordOnFirstLogin ?? false,\n contactSupportEmail: solidSettingsData?.data?.contactSupportEmail ?? null,\n contactSupportDisplayName: solidSettingsData?.data?.contactSupportDisplayName ?? null,\n contactSupportIcon: solidSettingsData?.data?.contactSupportIcon ?? null,\n authScreenRightBackgroundImage: solidSettingsData?.data?.authScreenRightBackgroundImage ?? null,\n authScreenLeftBackgroundImage: solidSettingsData?.data?.authScreenLeftBackgroundImage ?? null,\n authScreenCenterBackgroundImage: solidSettingsData?.data?.authScreenCenterBackgroundImage ?? null,\n solidXGenAiCodeBuilderConfig: (() => {\n const defaultAiConfig: SolidAiConfig = {\n models: {\n default: { providerId: \"\", model: \"\", behavior: { streaming: false, custom: \"\" } },\n fast: { providerId: \"\", model: \"\", behavior: { streaming: false, custom: \"\" } },\n },\n providers: {},\n };\n const raw = solidSettingsData?.data?.solidXGenAiCodeBuilderConfig;\n if (!raw) return defaultAiConfig;\n try {\n const parsed = typeof raw === \"string\" ? JSON.parse(raw) : raw;\n return (parsed && typeof parsed === \"object\" ? parsed : defaultAiConfig) as SolidAiConfig;\n } catch {\n return defaultAiConfig;\n }\n })(),\n // llmProvider: solidSettingsData?.data?.llmProvider ?? null,\n // llModelName: solidSettingsData?.data?.llModelName ?? null,\n // llmProviderApiKey: solidSettingsData?.data?.llmProviderApiKey ?? null,\n // llmProviderBaseURL: solidSettingsData?.data?.llmProviderBaseURL ?? null,\n // llmModelIdentifier: solidSettingsData?.data?.llmModelIdentifier ?? null\n\n\n };\n const formik = useFormik({\n initialValues: initialValues,\n enableReinitialize: true,\n onSubmit: async (values) => {\n try {\n\n const updatedSettingsArray: Array<{ key: string; value: string; type: string }> = [];\n const currentSettings = solidSettingsData?.data || {};\n\n const formData = new FormData();\n\n // Compare changed fields\n Object.entries(values).forEach(([key, value]) => {\n const currentValue = currentSettings[key];\n\n const wasCleared = currentValue != null && currentValue !== \"\" && (value === null || value === \"\");\n const isFile = value instanceof File;\n const normalizedCurrent = currentValue ?? \"\";\n const normalizedValue = value ?? \"\";\n const changed = isFile || wasCleared || normalizedCurrent !== normalizedValue;\n\n if (changed) {\n if (isFile) {\n formData.append(key, value as File);\n updatedSettingsArray.push({\n key,\n value: \"\",\n type: \"system\",\n });\n } else {\n updatedSettingsArray.push({\n key,\n value:\n value === null || value === undefined ? \"\" : (typeof value === \"string\" ? value : JSON.stringify(value)),\n type: \"system\",\n });\n }\n }\n });\n\n if (updatedSettingsArray.length === 0) {\n dispatch(\n showToast({\n severity: \"success\",\n summary: \"No Changes\",\n detail: \"No settings were updated\",\n }),\n );\n return;\n }\n\n // Append settings array to formData\n formData.append(\"settings\", JSON.stringify(updatedSettingsArray));\n\n // Call API\n const response = await bulkUpdateSolidSettings({\n data: formData,\n }).unwrap();\n\n if (response.statusCode === 200) {\n dispatch(\n showToast({\n severity: \"success\",\n summary: \"Updated\",\n detail: \"Settings updated\",\n }),\n );\n trigger(\"\");\n }\n } catch (error: any) {\n console.log(\"Error updating settings:\", error);\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.FAILED,\n detail: error?.data?.message || ERROR_MESSAGES.SOMETHING_WRONG,\n }),\n );\n }\n },\n });\n\n const showError = async () => {\n const errors = await formik.validateForm();\n const errorMessages = Object.values(errors);\n\n if (errorMessages.length > 0) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: \"Error\",\n detail: Array.isArray(errorMessages)\n ? errorMessages.join(\", \")\n : errorMessages,\n }),\n );\n }\n };\n useEffect(() => {}, [pathname]);\n\n const positionMap: Record<\"left\" | \"center\" | \"right\", string> = {\n left: \"The form will appear on the left side of the screen, while the banner will be positioned on the right side\",\n center:\n \"The form will be centered in the middle of the screen for balanced alignment\",\n right:\n \"The form will appear on the right side of the screen, and the banner will be positioned on the left side\",\n };\n\n const onAppLogoDrop = useCallback(\n (acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n if (file.size > 2 * 1024 * 1024) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: \"File too large\",\n detail: \"Maximum file size is 2MB\",\n }),\n );\n return;\n }\n formik.setFieldValue(\"appLogo\", file);\n setAppLogoPreview(URL.createObjectURL(file));\n }\n },\n [formik],\n );\n\n const onCompanyLogoDrop = useCallback(\n (acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n if (file.size > 2 * 1024 * 1024) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: \"File too large\",\n detail: \"Maximum file size is 2MB\",\n }),\n );\n return;\n }\n formik.setFieldValue(\"companylogo\", file);\n setCompanyLogoPreview(URL.createObjectURL(file));\n }\n },\n [formik],\n );\n\n const {\n getRootProps: getAppLogoRootProps,\n getInputProps: getAppLogoInputProps,\n isDragActive: isAppLogoDragActive,\n } = useDropzone({\n accept: {\n \"image/png\": [\".png\"],\n \"image/jpeg\": [\".jpeg\", \".jpg\"],\n \"image/svg+xml\": [\".svg\"],\n \"image/webp\": [\".webp\"],\n },\n multiple: false,\n onDrop: onAppLogoDrop,\n });\n const {\n getRootProps: getCompanyLogoRootProps,\n getInputProps: getCompanyLogoInputProps,\n isDragActive: isCompanyLogoDragActive,\n } = useDropzone({\n accept: {\n 'image/png': ['.png'],\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/svg+xml': ['.svg'],\n 'image/webp': ['.webp'],\n },\n multiple: false,\n onDrop: onCompanyLogoDrop,\n });\n\n const removeAppLogo = () => {\n formik.setFieldValue(\"appLogo\", null);\n if (appLogoPreview) {\n URL.revokeObjectURL(appLogoPreview);\n setAppLogoPreview(null);\n }\n };\n\n const removeCompanyLogo = () => {\n formik.setFieldValue(\"companylogo\", null);\n if (companyLogoPreview) {\n URL.revokeObjectURL(companyLogoPreview);\n setCompanyLogoPreview(null);\n }\n };\n\n const onAuthScreenRightBackgroundImageDrop = useCallback(\n (acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n if (file.size > 2 * 1024 * 1024) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.FILE_LARGE,\n detail: ERROR_MESSAGES.MAX_FILE_SIZE,\n }),\n );\n return;\n }\n formik.setFieldValue(\"authScreenRightBackgroundImage\", file);\n setAuthScreenRightBackgroundImagePreview(URL.createObjectURL(file));\n }\n },\n [formik],\n );\n\n const onAuthScreenLeftBackgroundImageDrop = useCallback(\n (acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n if (file.size > 2 * 1024 * 1024) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.FILE_LARGE,\n detail: ERROR_MESSAGES.MAX_FILE_SIZE,\n }),\n );\n return;\n }\n formik.setFieldValue(\"authScreenLeftBackgroundImage\", file);\n setAuthScreenLeftBackgroundImagePreview(URL.createObjectURL(file));\n }\n },\n [formik],\n );\n\n const onAuthScreenCenterBackgroundImageDrop = useCallback(\n (acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n if (file.size > 2 * 1024 * 1024) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.FILE_LARGE,\n detail: ERROR_MESSAGES.MAX_FILE_SIZE,\n }),\n );\n return;\n }\n formik.setFieldValue(\"authScreenCenterBackgroundImage\", file);\n setAuthScreenCenterBackgroundImagePreview(URL.createObjectURL(file));\n }\n },\n [formik],\n );\n\n const {\n getRootProps: getAuthScreenRightBackgroundImageRootProps,\n getInputProps: getAuthScreenRightBackgroundImageInputProps,\n isDragActive: isAuthScreenRightBackgroundImageDragActive,\n } = useDropzone({\n accept: {\n 'image/png': ['.png'],\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/svg+xml': ['.svg'],\n 'image/webp': ['.webp'],\n },\n multiple: false,\n onDrop: onAuthScreenRightBackgroundImageDrop,\n });\n\n const {\n getRootProps: getAuthScreenLeftBackgroundImageRootProps,\n getInputProps: getAuthScreenLeftBackgroundImageInputProps,\n isDragActive: isAuthScreenLeftBackgroundImageDragActive,\n } = useDropzone({\n accept: {\n 'image/png': ['.png'],\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/svg+xml': ['.svg'],\n 'image/webp': ['.webp']\n },\n multiple: false,\n onDrop: onAuthScreenLeftBackgroundImageDrop\n });\n\n const {\n getRootProps: getAuthScreenCenterBackgroundImageRootProps,\n getInputProps: getAuthScreenCenterBackgroundImageInputProps,\n isDragActive: isAuthScreenCenterBackgroundImageDragActive\n } = useDropzone({\n accept: {\n 'image/png': ['.png'],\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/svg+xml': ['.svg'],\n 'image/webp': ['.webp']\n },\n multiple: false,\n onDrop: onAuthScreenCenterBackgroundImageDrop\n });\n\n const removeAuthScreenRightBackgroundImage = () => {\n formik.setFieldValue(\"authScreenRightBackgroundImage\", null);\n if (authScreenRightBackgroundImagePreview) {\n URL.revokeObjectURL(authScreenRightBackgroundImagePreview);\n setAuthScreenRightBackgroundImagePreview(null);\n }\n };\n\n const removeAuthScreenLeftBackgroundImage = () => {\n formik.setFieldValue(\"authScreenLeftBackgroundImage\", null);\n if (authScreenLeftBackgroundImagePreview) {\n URL.revokeObjectURL(authScreenLeftBackgroundImagePreview);\n setAuthScreenLeftBackgroundImagePreview(null);\n }\n };\n\n const removeAuthScreenCenterBackgroundImage = () => {\n formik.setFieldValue(\"authScreenCenterBackgroundImage\", null);\n if (authScreenCenterBackgroundImagePreview) {\n URL.revokeObjectURL(authScreenCenterBackgroundImagePreview);\n setAuthScreenCenterBackgroundImagePreview(null);\n }\n };\n\n const handleAiConfigChange = (newConfig: SolidAiConfig) => {\n formik.setFieldValue(\"solidXGenAiCodeBuilderConfig\", newConfig);\n };\n\n return (\n <div className=\"page-parent-wrapper\">\n <div className=\"solid-form-wrapper\">\n <div className=\"solid-form-section\">\n <form onSubmit={formik.handleSubmit}>\n <div className=\"page-header secondary-border-bottom\">\n <div className=\"form-wrapper-title \">Settings</div>\n <div className=\"flex gap-4\">\n {formik.dirty && (\n <SolidButton\n size=\"sm\"\n type=\"submit\"\n loading={formik.isSubmitting}\n onClick={() => showError()}\n >\n Save\n </SolidButton>\n )}\n {/* <CancelButton /> */}\n </div>\n </div>\n <div className=\"px-3 py-3 md:p-4 solid-form-content\">\n {pathname.includes(\"app-settings\") && (\n <>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <p className=\"solid-settings-subheading\">App Logo</p>\n <div>\n <div\n {...getAppLogoRootProps()}\n className=\"solid-dropzone-wrapper\"\n style={{ borderRadius: 8 }}\n >\n <input {...getAppLogoInputProps()} />\n {/* {isAppLogoDragActive && */}\n <SettingDropzoneActivePlaceholder />\n {/* } */}\n </div>\n <div className=\"mt-2\">\n {(() => {\n const logoSrc =\n (SolidLogo as any).src || SolidLogo;\n\n let src = appLogoPreview\n ? appLogoPreview\n : formik.values.appLogo\n ? formik.values.appLogo\n : logoSrc;\n\n const isBlobOrAbsolute =\n src?.startsWith(\"blob:\") ||\n src?.startsWith(\"http\");\n\n if (!isBlobOrAbsolute && !src.startsWith(\"/\")) {\n src = `${env(\"API_URL\")}/${src}`;\n }\n return (\n <SolidUploadedImage\n src={src}\n className=\"solid-app-logo\"\n />\n );\n })()}\n </div>\n {formik.values.appLogo && (\n <SettingsImageRemoveButton\n onClick={removeAppLogo}\n />\n )}\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <p className=\"solid-settings-subheading\">\n Company Logo\n </p>\n <div>\n <div\n {...getCompanyLogoRootProps()}\n className=\"solid-dropzone-wrapper\"\n style={{ borderRadius: 8 }}\n >\n <input {...getCompanyLogoInputProps()} />\n {/* {isCompanyLogoDragActive && */}\n <SettingDropzoneActivePlaceholder />\n {/* } */}\n </div>\n <div className=\"mt-2\">\n {(() => {\n const logoSrc =\n (SolidLogo as any).src || SolidLogo;\n\n let src = companyLogoPreview\n ? companyLogoPreview\n : formik.values.companylogo\n ? formik.values.companylogo\n : logoSrc;\n\n const isBlobOrAbsolute =\n src?.startsWith(\"blob:\") ||\n src?.startsWith(\"http\");\n\n if (!isBlobOrAbsolute && !src.startsWith(\"/\")) {\n src = `${env(\"API_URL\")}/${src}`;\n }\n\n return (\n <SolidUploadedImage\n src={src}\n className=\"solid-compony-logo\"\n />\n );\n })()}\n </div>\n {formik.values.companylogo && (\n <SettingsImageRemoveButton\n onClick={removeCompanyLogo}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n <p className=\"solid-settings-heading\">App Logo Position</p>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className=\"flex\">\n <SolidSegmentedControl\n className=\"solid-settings-segmented\"\n value={formik.values.appLogoPosition}\n options={[\n { value: \"in_form_view\", label: \"In Form View\" },\n { value: \"in_image_view\", label: \"In Image View\" },\n ]}\n onChange={(value) => formik.setFieldValue(\"appLogoPosition\", value)}\n />\n </div>\n </div>\n </div>\n <SolidDivider className=\"my-6\" />\n <p className=\"solid-settings-heading\">Title & Description Details</p>\n <div className='flex flex-wrap -mx-2 -mt-2'>\n <div className='w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2'>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">Show Details on Authentication Screen</label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"showAuthContent\"\n checked={formik.values.showAuthContent}\n onChange={(checked) =>\n formik.setFieldValue(\n \"showAuthContent\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">\n App Title\n </label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"appTitle\"\n name=\"appTitle\"\n onChange={formik.handleChange}\n value={formik.values.appTitle ?? ''}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2 mt-6\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">\n App Subtitle\n </label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"appSubtitle\"\n name=\"appSubtitle\"\n onChange={formik.handleChange}\n value={formik.values.appSubtitle ?? ''}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2 mt-6\">\n <div className=\"flex flex-wrap items-start -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">\n Description\n </label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidTextarea\n rows={3}\n id=\"appDescription\"\n name=\"appDescription\"\n onChange={formik.handleChange}\n value={formik.values.appDescription ?? ''}\n className='w-full'\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2 mt-6\">\n <div className=\"flex flex-wrap items-start -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">Copyright</label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidTextarea\n rows={3}\n id=\"copyright\"\n name=\"copyright\"\n onChange={formik.handleChange}\n value={formik.values.copyright ?? ''}\n className='w-full'\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <SolidDivider className=\"my-6\" />\n\n <p className=\"solid-settings-heading\">Legal Links</p>\n <div className='flex flex-wrap -mx-2 -mt-2'>\n <div className='w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2'>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">Show Legal Links</label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"showLegalLinks\"\n checked={formik.values.showLegalLinks}\n onChange={(checked) => formik.setFieldValue(\"showLegalLinks\", checked)}\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 py-2 md:py-0\">\n <label className=\"form-field-label\">\n Terms and Conditions Link\n </label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"appTnc\"\n name=\"appTnc\"\n onChange={formik.handleChange}\n value={formik.values.appTnc ?? \"\"}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">\n Privacy Policy Link\n </label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"appPrivacyPolicy\"\n name=\"appPrivacyPolicy\"\n onChange={formik.handleChange}\n value={formik.values.appPrivacyPolicy ?? \"\"}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <SolidDivider className=\"my-6\" />\n <p className=\"solid-settings-heading\">Theme</p>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[83.333333%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Enable Dark Mode\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"enableDarkMode\"\n checked={formik.values.enableDarkMode}\n onChange={(checked) => formik.setFieldValue(\"enableDarkMode\",checked)}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </>\n )}\n {pathname.includes(\"authentication-settings\") && (\n <>\n <p className=\"solid-settings-heading\">User Authentication</p>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Public Registration\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"allowPublicRegistration\"\n checked={formik.values.allowPublicRegistration}\n onChange={(checked) =>\n formik.setFieldValue(\n \"allowPublicRegistration\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Password Based Authentication\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"passwordBasedAuth\"\n checked={formik.values.passwordBasedAuth}\n onChange={(checked) =>\n formik.setFieldValue(\n \"passwordBasedAuth\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Password Less Authentication\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"passwordLessAuth\"\n checked={formik.values.passwordLessAuth}\n onChange={(checked) =>\n formik.setFieldValue(\n \"passwordLessAuth\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Auto Activate User on Registration{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"activateUserOnRegistration\"\n checked={\n formik.values.activateUserOnRegistration\n }\n onChange={(checked) =>\n formik.setFieldValue(\n \"activateUserOnRegistration\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Allow Login/ Signup with Google{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"iamGoogleOAuthEnabled\"\n checked={formik.values.iamGoogleOAuthEnabled}\n onChange={(checked) =>\n formik.setFieldValue(\n \"iamGoogleOAuthEnabled\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Allow Login/ Signup with Microsoft{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"iamMicrosoftOAuthEnabled\"\n checked={formik.values.iamMicrosoftOAuthEnabled}\n onChange={(checked) =>\n formik.setFieldValue(\n \"iamMicrosoftOAuthEnabled\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Allow Login/ Signup with Microsoft Active Directory{\" \"}\n </label>\n </div>\n <div className=\"col-2 sm:col-3 lg:col-7\">\n <SolidSwitch\n name=\"iamMicrosoftActiveDirectoryOAuthEnabled\"\n checked={formik.values.iamMicrosoftActiveDirectoryOAuthEnabled}\n onChange={(checked) =>\n formik.setFieldValue(\n \"iamMicrosoftActiveDirectoryOAuthEnabled\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"col-12 mt-3\">\n <div className=\"formgrid grid align-items-center\">\n <div className=\"col-10 sm:col-9 lg:col-5\">\n <label className=\"form-field-label\">\n Allow Login/ Signup with Facebook{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"iamFacebookOAuthEnabled\"\n checked={formik.values.iamFacebookOAuthEnabled}\n onChange={(checked) =>\n formik.setFieldValue(\n \"iamFacebookOAuthEnabled\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Allow Login/ Signup with Apple{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"iamAppleOAuthEnabled\"\n checked={formik.values.iamAppleOAuthEnabled}\n onChange={(checked) =>\n formik.setFieldValue(\n \"iamAppleOAuthEnabled\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Force Password change on first Login{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"forceChangePasswordOnFirstLogin\"\n checked={\n formik.values.forceChangePasswordOnFirstLogin\n }\n onChange={(checked) =>\n formik.setFieldValue(\n \"forceChangePasswordOnFirstLogin\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n {formik.values.passwordLessAuth === true && (\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full sm:w-full lg:w-[41.666667%] xl:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Password Less Registration Method\n </label>\n </div>\n <div className=\"w-full sm:w-full lg:w-1/2 xl:w-1/2 px-2 pt-2\">\n <SolidSegmentedControl\n className=\"solid-settings-segmented mt-4 lg:mt-0\"\n value={\n formik.values\n .passwordlessRegistrationValidateWhat\n }\n options={[\n { value: \"email\", label: \"Email\" },\n { value: \"mobile\", label: \"Mobile\" },\n ]}\n onChange={(value) =>\n formik.setFieldValue(\n \"passwordlessRegistrationValidateWhat\",\n value,\n )\n }\n />\n </div>\n </div>\n </div>\n )}\n {formik.values.passwordLessAuth === true && (\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full sm:w-full lg:w-[41.666667%] xl:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Password Less Login Method\n </label>\n </div>\n <div className=\"w-full sm:w-full lg:w-1/2 xl:w-1/2 px-2 pt-2\">\n <SolidSegmentedControl\n className=\"solid-settings-segmented mt-4 lg:mt-0\"\n value={\n formik.values.passwordlessLoginValidateWhat\n }\n options={[\n { value: \"email\", label: \"Email\" },\n { value: \"mobile\", label: \"Mobile\" },\n {\n value: \"selectable\",\n label: \"Selectable\",\n },\n ]}\n onChange={(value) =>\n formik.setFieldValue(\n \"passwordlessLoginValidateWhat\",\n value,\n )\n }\n />\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n <SolidDivider className=\"my-6\" />\n <p className=\"solid-settings-heading\">\n Authentication Screen Layout\n </p>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <SolidSegmentedControl\n className=\"solid-settings-segmented\"\n value={formik.values.authPagesLayout}\n options={[\n { value: \"left\", label: \"Left\" },\n { value: \"center\", label: \"Center\" },\n { value: \"right\", label: \"Right\" },\n ]}\n onChange={(value) =>\n formik.setFieldValue(\"authPagesLayout\", value)\n }\n />\n <p className=\"mt-4 text-sm font-bold\">\n Note :{\" \"}\n {\n positionMap[\n formik.values.authPagesLayout as\n | \"left\"\n | \"center\"\n | \"right\"\n ]\n }\n </p>\n </div>\n </div>\n {formik.values.authPagesLayout === \"center\" && <></>}\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-[66.666667%] lg:w-1/2 px-2 pt-2\">\n <p className=\"solid-settings-subheading\">\n {formik.values.authPagesLayout === \"center\"\n ? \"Background\"\n : \"Banner\"}{\" \"}\n Image\n </p>\n {formik.values.authPagesLayout === \"left\" && (\n <div>\n <div\n {...getAuthScreenLeftBackgroundImageRootProps()}\n className=\"solid-dropzone-wrapper\"\n style={{ borderRadius: 8 }}\n >\n <input\n {...getAuthScreenLeftBackgroundImageInputProps()}\n />\n {/* {isAuthScreenLeftBackgroundImageDragActive && */}\n <SettingDropzoneActivePlaceholder\n note={\n \"Recommended: 724×724px | Aspect ratio: 1:1\"\n }\n />\n {/* } */}\n </div>\n <div className=\"mt-2\">\n {(() => {\n const logoSrc =\n (AuthScreenLeftBackgroundImage as any)\n .src || AuthScreenLeftBackgroundImage;\n\n let src = authScreenLeftBackgroundImagePreview\n ? authScreenLeftBackgroundImagePreview\n : formik.values\n .authScreenLeftBackgroundImage\n ? formik.values\n .authScreenLeftBackgroundImage\n : logoSrc;\n\n const isBlobOrAbsolute =\n src?.startsWith(\"blob:\") ||\n src?.startsWith(\"http\");\n\n if (\n !isBlobOrAbsolute &&\n !src.startsWith(\"/\")\n ) {\n src = `${env(\"API_URL\")}/${src}`;\n }\n return (\n <SolidUploadedImage\n src={src}\n height={400}\n width={400}\n maxHeight={400}\n />\n );\n })()}\n </div>\n {formik.values.authScreenLeftBackgroundImage && (\n <SettingsImageRemoveButton\n onClick={removeAuthScreenLeftBackgroundImage}\n />\n )}\n </div>\n )}\n {formik.values.authPagesLayout === \"right\" && (\n <div>\n <div\n {...getAuthScreenRightBackgroundImageRootProps()}\n className=\"solid-dropzone-wrapper\"\n style={{ borderRadius: 8 }}\n >\n <input\n {...getAuthScreenRightBackgroundImageInputProps()}\n />\n {/* {isAuthScreenRightBackgroundImageDragActive && */}\n <SettingDropzoneActivePlaceholder\n note={\n \"Recommended: 724×724px | Aspect ratio: 1:1\"\n }\n />\n {/* } */}\n </div>\n <div className=\"mt-2\">\n {(() => {\n const logoSrc =\n (AuthScreenRightBackgroundImage as any)\n .src || AuthScreenRightBackgroundImage;\n\n let src =\n authScreenRightBackgroundImagePreview\n ? authScreenRightBackgroundImagePreview\n : formik.values\n .authScreenRightBackgroundImage\n ? formik.values\n .authScreenRightBackgroundImage\n : logoSrc;\n\n const isBlobOrAbsolute =\n src?.startsWith(\"blob:\") ||\n src?.startsWith(\"http\");\n\n if (\n !isBlobOrAbsolute &&\n !src.startsWith(\"/\")\n ) {\n src = `${env(\"API_URL\")}/${src}`;\n }\n return (\n <SolidUploadedImage\n src={src}\n height={400}\n width={400}\n maxHeight={400}\n />\n );\n })()}\n </div>\n {formik.values.authScreenRightBackgroundImage && (\n <SettingsImageRemoveButton\n onClick={removeAuthScreenRightBackgroundImage}\n />\n )}\n </div>\n )}\n {formik.values.authPagesLayout === \"center\" && (\n <div>\n <div\n {...getAuthScreenCenterBackgroundImageRootProps()}\n className=\"solid-dropzone-wrapper\"\n style={{ borderRadius: 8 }}\n >\n <input\n {...getAuthScreenCenterBackgroundImageInputProps()}\n />\n <SettingDropzoneActivePlaceholder\n note={\n \"Recommended: 1440px × 724px | Aspect ratio: 2:1\"\n }\n />\n </div>\n <div className=\"mt-2\">\n {(() => {\n const logoSrc =\n (AuthScreenCenterBackgroundImage as any)\n .src || AuthScreenCenterBackgroundImage;\n\n let src =\n authScreenCenterBackgroundImagePreview\n ? authScreenCenterBackgroundImagePreview\n : formik.values\n .authScreenCenterBackgroundImage\n ? formik.values\n .authScreenCenterBackgroundImage\n : logoSrc;\n\n const isBlobOrAbsolute =\n src?.startsWith(\"blob:\") ||\n src?.startsWith(\"http\");\n\n if (!isBlobOrAbsolute && !src.startsWith(\"/\")) {\n src = `${env(\"API_URL\")}/${src}`;\n }\n return (\n <SolidUploadedImage src={src} height={300} width={600} maxHeight={300} />\n );\n })()}\n </div>\n {formik.values.authScreenCenterBackgroundImage && (\n <SettingsImageRemoveButton onClick={removeAuthScreenCenterBackgroundImage} />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n <SolidDivider className=\"my-6\" />\n </>\n )}\n\n {pathname.includes(\"misc-settings\") && (\n <>\n {/* \n <p className='font-bold' style={{ fontSize: 16, color: 'var(--solid-setting-title)' }}>Misc Details</p>\n <div className='flex flex-wrap -mx-2 -mt-2'>\n <div className='w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2'>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-1/2 px-2 pt-2 pb-4 md:pb-0\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">Use queue for sending emails</label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <InputSwitch\n name=\"shouldQueueEmails\"\n checked={formik.values.shouldQueueEmails}\n onChange={(e) => formik.setFieldValue(\"shouldQueueEmails\", e.value)}\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">Use queue for sending SMS</label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <InputSwitch\n name=\"shouldQueueSms\"\n checked={formik.values.shouldQueueSms}\n onChange={(e) => formik.setFieldValue(\"shouldQueueSms\", e.value)}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <Divider />\n */}\n <p className=\"solid-settings-heading\">Contact Support</p>\n <div className='flex flex-wrap -mx-2 -mt-2'>\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className='flex flex-wrap -mx-2 -mt-2'>\n <div className=\"w-full md:w-1/2 px-2 pt-2 pb-4 md:pb-0\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">Contact Support Email</label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"contactSupportEmail\"\n name=\"contactSupportEmail\"\n onChange={formik.handleChange}\n value={formik.values.contactSupportEmail ?? ''}\n className='w-full'\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">Display Name</label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"contactSupportDisplayName\"\n name=\"contactSupportDisplayName\"\n onChange={formik.handleChange}\n value={formik.values.contactSupportDisplayName ?? ''}\n className='w-full'\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </>\n )}\n {pathname.includes(\"ai-settings\") &&\n <AiSettingsSection\n aiConfig={formik.values.solidXGenAiCodeBuilderConfig as SolidAiConfig}\n onAiConfigChange={handleAiConfigChange}\n />\n }\n {pathname.includes(\"api-keys\") && session?.user?.id &&\n <ApiKeysTab\n userId={session.user.id}\n canCreate={session?.user?.isAllowedToGenerateApiKeys ?? false}\n />\n }\n </div>\n </form>\n </div>\n </div>\n </div>\n )\n}\n\ninterface AiSettingsSectionProps {\n aiConfig: SolidAiConfig;\n onAiConfigChange: (config: SolidAiConfig) => void;\n}\n\nconst DEFAULT_BEHAVIOR: ModelBehavior = { streaming: false, custom: \"\" };\nconst DEFAULT_MODEL_ENTRY: ModelEntry = { providerId: \"\", model: \"\", behavior: DEFAULT_BEHAVIOR };\n\nconst AiSettingsSection = ({ aiConfig, onAiConfigChange }: AiSettingsSectionProps) => {\n const [activeTab, setActiveTab] = useState<\"providers\" | \"default\" | \"fast\">(\"providers\");\n const [showAddProvider, setShowAddProvider] = useState(false);\n\n const providers = ensureBuiltInProviders(aiConfig.providers ?? {});\n\n const tabItems = [\n {\n value: \"providers\" as const,\n label: \"Providers\",\n content: (\n <ProvidersTab\n providers={providers}\n onProvidersChange={(newProviders) => {\n onAiConfigChange({ ...aiConfig, providers: newProviders });\n }}\n showAddModal={showAddProvider}\n onAddModalClose={() => setShowAddProvider(false)}\n />\n ),\n },\n {\n value: \"default\" as const,\n label: \"Intelligent Model\",\n content: (\n <ModelConfigTab\n modelEntry={aiConfig.models?.default ?? DEFAULT_MODEL_ENTRY}\n providers={providers}\n onModelEntryChange={(entry) => {\n onAiConfigChange({ ...aiConfig, models: { ...aiConfig.models, default: entry } });\n }}\n />\n ),\n },\n {\n value: \"fast\" as const,\n label: \"Fast Model\",\n content: (\n <ModelConfigTab\n modelEntry={aiConfig.models?.fast ?? DEFAULT_MODEL_ENTRY}\n providers={providers}\n onModelEntryChange={(entry) => {\n onAiConfigChange({ ...aiConfig, models: { ...aiConfig.models, fast: entry } });\n }}\n />\n ),\n },\n ];\n\n return (\n <div>\n <p className=\"solid-settings-heading\" style={{ marginBottom: \"1rem\" }}>\n AI Model Configuration\n </p>\n <SolidTabGroup\n tabs={tabItems}\n value={activeTab}\n onValueChange={(value) => setActiveTab(value as \"providers\" | \"default\" | \"fast\")}\n tabPosition=\"left\"\n extra={\n activeTab === \"providers\" ? (\n <SolidButton size=\"sm\" onClick={() => setShowAddProvider(true)}>\n Add\n </SolidButton>\n ) : undefined\n }\n />\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"GeneralSettings.js","sourceRoot":"","sources":["../../../src/components/common/GeneralSettings.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useFormik } from 'formik';\nimport { useCallback, useEffect, useState } from 'react'\nimport { CancelButton } from './CancelButton';\nimport { ApiKeysTab } from '../core/users/ApiKeysTab';\nimport { useSession } from '../../hooks/useSession';\nimport { SolidButton, SolidDivider, SolidInput, SolidSegmentedControl, SolidSwitch, SolidTabGroup, SolidTextarea } from '../shad-cn-ui';\nimport { usePathname } from \"../../hooks/usePathname\";\nimport SolidLogo from '../../resources/images/SolidXLogo.svg'\nimport AuthScreenRightBackgroundImage from '../../resources/images/auth/solid-left-layout-bg.png';\nimport AuthScreenLeftBackgroundImage from '../../resources/images/auth/solid-right-layout-bg.png';\nimport AuthScreenCenterBackgroundImage from '../../resources/images/auth/solid-login-light.png';\nimport { useDropzone } from 'react-dropzone';\nimport { SettingDropzoneActivePlaceholder } from './SolidSettings/SettingDropzoneActivePlaceholder';\nimport { SolidUploadedImage } from './SolidSettings/SolidUploadedImage';\nimport { SettingsImageRemoveButton } from './SolidSettings/SettingsImageRemoveButton';\nimport { ModelConfigTab, ProvidersTab, ModelBehavior, ModelEntry, SolidAiConfig, ensureBuiltInProviders } from './SolidSettings/LlmSettings/AiModelConfigTab';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ERROR_MESSAGES } from '../../constants/error-messages';\nimport { normalizeAssetUrl } from '../../helpers/assetUrl';\nimport { useBulkUpdateSolidSettingsMutation, useLazyGetSolidSettingsQuery } from '../../redux/api/solidSettingsApi';\nimport { showToast } from \"../../redux/features/toastSlice\";\n\nexport const GeneralSettings = () => {\n const { data: session } = useSession();\n const [appLogoPreview, setAppLogoPreview] = useState<string | null>(null);\n const [companyLogoPreview, setCompanyLogoPreview] = useState<string | null>(null);\n const [authScreenRightBackgroundImagePreview, setAuthScreenRightBackgroundImagePreview] = useState<string | null>(null);\n const [authScreenLeftBackgroundImagePreview, setAuthScreenLeftBackgroundImagePreview] = useState<string | null>(null);\n const [authScreenCenterBackgroundImagePreview, setAuthScreenCenterBackgroundImagePreview] = useState<string | null>(null);\n const dispatch = useDispatch()\n\n const [trigger, { data: solidSettingsData }] = useLazyGetSolidSettingsQuery();\n\n useEffect(() => {\n trigger(\"\") // Fetch settings on mount\n }, [trigger])\n const pathname = usePathname();\n const [bulkUpdateSolidSettings] = useBulkUpdateSolidSettingsMutation();\n const initialValues = {\n appLogo: solidSettingsData?.data?.appLogo ?? null,\n companylogo: solidSettingsData?.data?.companylogo ?? null,\n passwordlessRegistrationValidateWhat: solidSettingsData?.data?.passwordlessRegistrationValidateWhat ?? \"email\",\n passwordlessLoginValidateWhat: solidSettingsData?.data?.passwordlessLoginValidateWhat ?? \"email\",\n allowPublicRegistration: solidSettingsData?.data?.allowPublicRegistration ?? false,\n passwordBasedAuth: solidSettingsData?.data?.passwordBasedAuth ?? false,\n passwordLessAuth: solidSettingsData?.data?.passwordLessAuth ?? false,\n activateUserOnRegistration: solidSettingsData?.data?.activateUserOnRegistration ?? false,\n iamGoogleOAuthEnabled: solidSettingsData?.data?.iamGoogleOAuthEnabled ?? false,\n iamMicrosoftOAuthEnabled: solidSettingsData?.data?.iamMicrosoftOAuthEnabled ?? false,\n iamMicrosoftActiveDirectoryOAuthEnabled: solidSettingsData?.data?.iamMicrosoftActiveDirectoryOAuthEnabled ?? false,\n iamFacebookOAuthEnabled: solidSettingsData?.data?.iamFacebookOAuthEnabled ?? false,\n iamAppleOAuthEnabled: solidSettingsData?.data?.iamAppleOAuthEnabled ?? false,\n // shouldQueueEmails: solidSettingsData?.data?.shouldQueueEmails ?? false,\n // shouldQueueSms: solidSettingsData?.data?.shouldQueueSms ?? false,\n authPagesLayout: solidSettingsData?.data?.authPagesLayout ?? \"center\",\n defaultRole: solidSettingsData?.data?.defaultRole ?? \"Admin\",\n appLogoPosition: solidSettingsData?.data?.appLogoPosition ?? \"in_form_view\",\n showAuthContent: solidSettingsData?.data?.showAuthContent ?? false,\n appTitle: solidSettingsData?.data?.appTitle ?? \"SolidX\",\n appSubtitle: solidSettingsData?.data?.appSubtitle ?? \"Welcome To\",\n appDescription: solidSettingsData?.data?.appDescription ?? \"appDescription\",\n showLegalLinks: solidSettingsData?.data?.showLegalLinks ?? false,\n appTnc: solidSettingsData?.data?.appTnc ?? null,\n appPrivacyPolicy: solidSettingsData?.data?.appPrivacyPolicy ?? null,\n enableDarkMode: solidSettingsData?.data?.enableDarkMode ?? false,\n copyright: solidSettingsData?.data?.copyright ?? null,\n forceChangePasswordOnFirstLogin: solidSettingsData?.data?.forceChangePasswordOnFirstLogin ?? false,\n contactSupportEmail: solidSettingsData?.data?.contactSupportEmail ?? null,\n contactSupportDisplayName: solidSettingsData?.data?.contactSupportDisplayName ?? null,\n contactSupportIcon: solidSettingsData?.data?.contactSupportIcon ?? null,\n authScreenRightBackgroundImage: solidSettingsData?.data?.authScreenRightBackgroundImage ?? null,\n authScreenLeftBackgroundImage: solidSettingsData?.data?.authScreenLeftBackgroundImage ?? null,\n authScreenCenterBackgroundImage: solidSettingsData?.data?.authScreenCenterBackgroundImage ?? null,\n solidXGenAiCodeBuilderConfig: (() => {\n const defaultAiConfig: SolidAiConfig = {\n models: {\n default: { providerId: \"\", model: \"\", behavior: { streaming: false, custom: \"\" } },\n fast: { providerId: \"\", model: \"\", behavior: { streaming: false, custom: \"\" } },\n },\n providers: {},\n };\n const raw = solidSettingsData?.data?.solidXGenAiCodeBuilderConfig;\n if (!raw) return defaultAiConfig;\n try {\n const parsed = typeof raw === \"string\" ? JSON.parse(raw) : raw;\n return (parsed && typeof parsed === \"object\" ? parsed : defaultAiConfig) as SolidAiConfig;\n } catch {\n return defaultAiConfig;\n }\n })(),\n // llmProvider: solidSettingsData?.data?.llmProvider ?? null,\n // llModelName: solidSettingsData?.data?.llModelName ?? null,\n // llmProviderApiKey: solidSettingsData?.data?.llmProviderApiKey ?? null,\n // llmProviderBaseURL: solidSettingsData?.data?.llmProviderBaseURL ?? null,\n // llmModelIdentifier: solidSettingsData?.data?.llmModelIdentifier ?? null\n\n\n };\n const formik = useFormik({\n initialValues: initialValues,\n enableReinitialize: true,\n onSubmit: async (values) => {\n try {\n\n const updatedSettingsArray: Array<{ key: string; value: string; type: string }> = [];\n const currentSettings = solidSettingsData?.data || {};\n\n const formData = new FormData();\n\n // Compare changed fields\n Object.entries(values).forEach(([key, value]) => {\n const currentValue = currentSettings[key];\n\n const wasCleared = currentValue != null && currentValue !== \"\" && (value === null || value === \"\");\n const isFile = value instanceof File;\n const normalizedCurrent = currentValue ?? \"\";\n const normalizedValue = value ?? \"\";\n const changed = isFile || wasCleared || normalizedCurrent !== normalizedValue;\n\n if (changed) {\n if (isFile) {\n formData.append(key, value as File);\n updatedSettingsArray.push({\n key,\n value: \"\",\n type: \"system\",\n });\n } else {\n updatedSettingsArray.push({\n key,\n value:\n value === null || value === undefined ? \"\" : (typeof value === \"string\" ? value : JSON.stringify(value)),\n type: \"system\",\n });\n }\n }\n });\n\n if (updatedSettingsArray.length === 0) {\n dispatch(\n showToast({\n severity: \"success\",\n summary: \"No Changes\",\n detail: \"No settings were updated\",\n }),\n );\n return;\n }\n\n // Append settings array to formData\n formData.append(\"settings\", JSON.stringify(updatedSettingsArray));\n\n // Call API\n const response = await bulkUpdateSolidSettings({\n data: formData,\n }).unwrap();\n\n if (response.statusCode === 200) {\n dispatch(\n showToast({\n severity: \"success\",\n summary: \"Updated\",\n detail: \"Settings updated\",\n }),\n );\n trigger(\"\");\n }\n } catch (error: any) {\n console.log(\"Error updating settings:\", error);\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.FAILED,\n detail: error?.data?.message || ERROR_MESSAGES.SOMETHING_WRONG,\n }),\n );\n }\n },\n });\n\n const showError = async () => {\n const errors = await formik.validateForm();\n const errorMessages = Object.values(errors);\n\n if (errorMessages.length > 0) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: \"Error\",\n detail: Array.isArray(errorMessages)\n ? errorMessages.join(\", \")\n : errorMessages,\n }),\n );\n }\n };\n useEffect(() => {}, [pathname]);\n\n const positionMap: Record<\"left\" | \"center\" | \"right\", string> = {\n left: \"The form will appear on the left side of the screen, while the banner will be positioned on the right side\",\n center:\n \"The form will be centered in the middle of the screen for balanced alignment\",\n right:\n \"The form will appear on the right side of the screen, and the banner will be positioned on the left side\",\n };\n\n const onAppLogoDrop = useCallback(\n (acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n if (file.size > 2 * 1024 * 1024) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: \"File too large\",\n detail: \"Maximum file size is 2MB\",\n }),\n );\n return;\n }\n formik.setFieldValue(\"appLogo\", file);\n setAppLogoPreview(URL.createObjectURL(file));\n }\n },\n [formik],\n );\n\n const onCompanyLogoDrop = useCallback(\n (acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n if (file.size > 2 * 1024 * 1024) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: \"File too large\",\n detail: \"Maximum file size is 2MB\",\n }),\n );\n return;\n }\n formik.setFieldValue(\"companylogo\", file);\n setCompanyLogoPreview(URL.createObjectURL(file));\n }\n },\n [formik],\n );\n\n const {\n getRootProps: getAppLogoRootProps,\n getInputProps: getAppLogoInputProps,\n isDragActive: isAppLogoDragActive,\n } = useDropzone({\n accept: {\n \"image/png\": [\".png\"],\n \"image/jpeg\": [\".jpeg\", \".jpg\"],\n \"image/svg+xml\": [\".svg\"],\n \"image/webp\": [\".webp\"],\n },\n multiple: false,\n onDrop: onAppLogoDrop,\n });\n const {\n getRootProps: getCompanyLogoRootProps,\n getInputProps: getCompanyLogoInputProps,\n isDragActive: isCompanyLogoDragActive,\n } = useDropzone({\n accept: {\n 'image/png': ['.png'],\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/svg+xml': ['.svg'],\n 'image/webp': ['.webp'],\n },\n multiple: false,\n onDrop: onCompanyLogoDrop,\n });\n\n const removeAppLogo = () => {\n formik.setFieldValue(\"appLogo\", null);\n if (appLogoPreview) {\n URL.revokeObjectURL(appLogoPreview);\n setAppLogoPreview(null);\n }\n };\n\n const removeCompanyLogo = () => {\n formik.setFieldValue(\"companylogo\", null);\n if (companyLogoPreview) {\n URL.revokeObjectURL(companyLogoPreview);\n setCompanyLogoPreview(null);\n }\n };\n\n const onAuthScreenRightBackgroundImageDrop = useCallback(\n (acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n if (file.size > 2 * 1024 * 1024) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.FILE_LARGE,\n detail: ERROR_MESSAGES.MAX_FILE_SIZE,\n }),\n );\n return;\n }\n formik.setFieldValue(\"authScreenRightBackgroundImage\", file);\n setAuthScreenRightBackgroundImagePreview(URL.createObjectURL(file));\n }\n },\n [formik],\n );\n\n const onAuthScreenLeftBackgroundImageDrop = useCallback(\n (acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n if (file.size > 2 * 1024 * 1024) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.FILE_LARGE,\n detail: ERROR_MESSAGES.MAX_FILE_SIZE,\n }),\n );\n return;\n }\n formik.setFieldValue(\"authScreenLeftBackgroundImage\", file);\n setAuthScreenLeftBackgroundImagePreview(URL.createObjectURL(file));\n }\n },\n [formik],\n );\n\n const onAuthScreenCenterBackgroundImageDrop = useCallback(\n (acceptedFiles: File[]) => {\n const file = acceptedFiles[0];\n if (file) {\n if (file.size > 2 * 1024 * 1024) {\n dispatch(\n showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.FILE_LARGE,\n detail: ERROR_MESSAGES.MAX_FILE_SIZE,\n }),\n );\n return;\n }\n formik.setFieldValue(\"authScreenCenterBackgroundImage\", file);\n setAuthScreenCenterBackgroundImagePreview(URL.createObjectURL(file));\n }\n },\n [formik],\n );\n\n const {\n getRootProps: getAuthScreenRightBackgroundImageRootProps,\n getInputProps: getAuthScreenRightBackgroundImageInputProps,\n isDragActive: isAuthScreenRightBackgroundImageDragActive,\n } = useDropzone({\n accept: {\n 'image/png': ['.png'],\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/svg+xml': ['.svg'],\n 'image/webp': ['.webp'],\n },\n multiple: false,\n onDrop: onAuthScreenRightBackgroundImageDrop,\n });\n\n const {\n getRootProps: getAuthScreenLeftBackgroundImageRootProps,\n getInputProps: getAuthScreenLeftBackgroundImageInputProps,\n isDragActive: isAuthScreenLeftBackgroundImageDragActive,\n } = useDropzone({\n accept: {\n 'image/png': ['.png'],\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/svg+xml': ['.svg'],\n 'image/webp': ['.webp']\n },\n multiple: false,\n onDrop: onAuthScreenLeftBackgroundImageDrop\n });\n\n const {\n getRootProps: getAuthScreenCenterBackgroundImageRootProps,\n getInputProps: getAuthScreenCenterBackgroundImageInputProps,\n isDragActive: isAuthScreenCenterBackgroundImageDragActive\n } = useDropzone({\n accept: {\n 'image/png': ['.png'],\n 'image/jpeg': ['.jpeg', '.jpg'],\n 'image/svg+xml': ['.svg'],\n 'image/webp': ['.webp']\n },\n multiple: false,\n onDrop: onAuthScreenCenterBackgroundImageDrop\n });\n\n const removeAuthScreenRightBackgroundImage = () => {\n formik.setFieldValue(\"authScreenRightBackgroundImage\", null);\n if (authScreenRightBackgroundImagePreview) {\n URL.revokeObjectURL(authScreenRightBackgroundImagePreview);\n setAuthScreenRightBackgroundImagePreview(null);\n }\n };\n\n const removeAuthScreenLeftBackgroundImage = () => {\n formik.setFieldValue(\"authScreenLeftBackgroundImage\", null);\n if (authScreenLeftBackgroundImagePreview) {\n URL.revokeObjectURL(authScreenLeftBackgroundImagePreview);\n setAuthScreenLeftBackgroundImagePreview(null);\n }\n };\n\n const removeAuthScreenCenterBackgroundImage = () => {\n formik.setFieldValue(\"authScreenCenterBackgroundImage\", null);\n if (authScreenCenterBackgroundImagePreview) {\n URL.revokeObjectURL(authScreenCenterBackgroundImagePreview);\n setAuthScreenCenterBackgroundImagePreview(null);\n }\n };\n\n const handleAiConfigChange = (newConfig: SolidAiConfig) => {\n formik.setFieldValue(\"solidXGenAiCodeBuilderConfig\", newConfig);\n };\n\n return (\n <div className=\"page-parent-wrapper\">\n <div className=\"solid-form-wrapper\">\n <div className=\"solid-form-section\">\n <form onSubmit={formik.handleSubmit}>\n <div className=\"page-header secondary-border-bottom\">\n <div className=\"form-wrapper-title \">Settings</div>\n <div className=\"flex gap-4\">\n {formik.dirty && (\n <SolidButton\n size=\"sm\"\n type=\"submit\"\n loading={formik.isSubmitting}\n onClick={() => showError()}\n >\n Save\n </SolidButton>\n )}\n {/* <CancelButton /> */}\n </div>\n </div>\n <div className=\"px-3 py-3 md:p-4 solid-form-content\">\n {pathname.includes(\"app-settings\") && (\n <>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <p className=\"solid-settings-subheading\">App Logo</p>\n <div>\n <div\n {...getAppLogoRootProps()}\n className=\"solid-dropzone-wrapper\"\n style={{ borderRadius: 8 }}\n >\n <input {...getAppLogoInputProps()} />\n {/* {isAppLogoDragActive && */}\n <SettingDropzoneActivePlaceholder />\n {/* } */}\n </div>\n <div className=\"mt-2\">\n {(() => {\n const logoSrc =\n (SolidLogo as any).src || SolidLogo;\n\n let src = appLogoPreview\n ? appLogoPreview\n : formik.values.appLogo\n ? formik.values.appLogo\n : logoSrc;\n\n return (\n <SolidUploadedImage\n src={normalizeAssetUrl(src)}\n className=\"solid-app-logo\"\n />\n );\n })()}\n </div>\n {formik.values.appLogo && (\n <SettingsImageRemoveButton\n onClick={removeAppLogo}\n />\n )}\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <p className=\"solid-settings-subheading\">\n Company Logo\n </p>\n <div>\n <div\n {...getCompanyLogoRootProps()}\n className=\"solid-dropzone-wrapper\"\n style={{ borderRadius: 8 }}\n >\n <input {...getCompanyLogoInputProps()} />\n {/* {isCompanyLogoDragActive && */}\n <SettingDropzoneActivePlaceholder />\n {/* } */}\n </div>\n <div className=\"mt-2\">\n {(() => {\n const logoSrc =\n (SolidLogo as any).src || SolidLogo;\n\n let src = companyLogoPreview\n ? companyLogoPreview\n : formik.values.companylogo\n ? formik.values.companylogo\n : logoSrc;\n\n return (\n <SolidUploadedImage\n src={normalizeAssetUrl(src)}\n className=\"solid-compony-logo\"\n />\n );\n })()}\n </div>\n {formik.values.companylogo && (\n <SettingsImageRemoveButton\n onClick={removeCompanyLogo}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n <p className=\"solid-settings-heading\">App Logo Position</p>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className=\"flex\">\n <SolidSegmentedControl\n className=\"solid-settings-segmented\"\n value={formik.values.appLogoPosition}\n options={[\n { value: \"in_form_view\", label: \"In Form View\" },\n { value: \"in_image_view\", label: \"In Image View\" },\n ]}\n onChange={(value) => formik.setFieldValue(\"appLogoPosition\", value)}\n />\n </div>\n </div>\n </div>\n <SolidDivider className=\"my-6\" />\n <p className=\"solid-settings-heading\">Title & Description Details</p>\n <div className='flex flex-wrap -mx-2 -mt-2'>\n <div className='w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2'>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">Show Details on Authentication Screen</label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"showAuthContent\"\n checked={formik.values.showAuthContent}\n onChange={(checked) =>\n formik.setFieldValue(\n \"showAuthContent\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">\n App Title\n </label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"appTitle\"\n name=\"appTitle\"\n onChange={formik.handleChange}\n value={formik.values.appTitle ?? ''}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2 mt-6\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">\n App Subtitle\n </label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"appSubtitle\"\n name=\"appSubtitle\"\n onChange={formik.handleChange}\n value={formik.values.appSubtitle ?? ''}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2 mt-6\">\n <div className=\"flex flex-wrap items-start -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">\n Description\n </label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidTextarea\n rows={3}\n id=\"appDescription\"\n name=\"appDescription\"\n onChange={formik.handleChange}\n value={formik.values.appDescription ?? ''}\n className='w-full'\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2 mt-6\">\n <div className=\"flex flex-wrap items-start -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">Copyright</label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidTextarea\n rows={3}\n id=\"copyright\"\n name=\"copyright\"\n onChange={formik.handleChange}\n value={formik.values.copyright ?? ''}\n className='w-full'\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <SolidDivider className=\"my-6\" />\n\n <p className=\"solid-settings-heading\">Legal Links</p>\n <div className='flex flex-wrap -mx-2 -mt-2'>\n <div className='w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2'>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">Show Legal Links</label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"showLegalLinks\"\n checked={formik.values.showLegalLinks}\n onChange={(checked) => formik.setFieldValue(\"showLegalLinks\", checked)}\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 py-2 md:py-0\">\n <label className=\"form-field-label\">\n Terms and Conditions Link\n </label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"appTnc\"\n name=\"appTnc\"\n onChange={formik.handleChange}\n value={formik.values.appTnc ?? \"\"}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">\n Privacy Policy Link\n </label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"appPrivacyPolicy\"\n name=\"appPrivacyPolicy\"\n onChange={formik.handleChange}\n value={formik.values.appPrivacyPolicy ?? \"\"}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <SolidDivider className=\"my-6\" />\n <p className=\"solid-settings-heading\">Theme</p>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[83.333333%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Enable Dark Mode\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"enableDarkMode\"\n checked={formik.values.enableDarkMode}\n onChange={(checked) => formik.setFieldValue(\"enableDarkMode\",checked)}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </>\n )}\n {pathname.includes(\"authentication-settings\") && (\n <>\n <p className=\"solid-settings-heading\">User Authentication</p>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Public Registration\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"allowPublicRegistration\"\n checked={formik.values.allowPublicRegistration}\n onChange={(checked) =>\n formik.setFieldValue(\n \"allowPublicRegistration\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Password Based Authentication\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"passwordBasedAuth\"\n checked={formik.values.passwordBasedAuth}\n onChange={(checked) =>\n formik.setFieldValue(\n \"passwordBasedAuth\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Password Less Authentication\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"passwordLessAuth\"\n checked={formik.values.passwordLessAuth}\n onChange={(checked) =>\n formik.setFieldValue(\n \"passwordLessAuth\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Auto Activate User on Registration{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"activateUserOnRegistration\"\n checked={\n formik.values.activateUserOnRegistration\n }\n onChange={(checked) =>\n formik.setFieldValue(\n \"activateUserOnRegistration\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Allow Login/ Signup with Google{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"iamGoogleOAuthEnabled\"\n checked={formik.values.iamGoogleOAuthEnabled}\n onChange={(checked) =>\n formik.setFieldValue(\n \"iamGoogleOAuthEnabled\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Allow Login/ Signup with Microsoft{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"iamMicrosoftOAuthEnabled\"\n checked={formik.values.iamMicrosoftOAuthEnabled}\n onChange={(checked) =>\n formik.setFieldValue(\n \"iamMicrosoftOAuthEnabled\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Allow Login/ Signup with Microsoft Active Directory{\" \"}\n </label>\n </div>\n <div className=\"col-2 sm:col-3 lg:col-7\">\n <SolidSwitch\n name=\"iamMicrosoftActiveDirectoryOAuthEnabled\"\n checked={formik.values.iamMicrosoftActiveDirectoryOAuthEnabled}\n onChange={(checked) =>\n formik.setFieldValue(\n \"iamMicrosoftActiveDirectoryOAuthEnabled\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"col-12 mt-3\">\n <div className=\"formgrid grid align-items-center\">\n <div className=\"col-10 sm:col-9 lg:col-5\">\n <label className=\"form-field-label\">\n Allow Login/ Signup with Facebook{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"iamFacebookOAuthEnabled\"\n checked={formik.values.iamFacebookOAuthEnabled}\n onChange={(checked) =>\n formik.setFieldValue(\n \"iamFacebookOAuthEnabled\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Allow Login/ Signup with Apple{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"iamAppleOAuthEnabled\"\n checked={formik.values.iamAppleOAuthEnabled}\n onChange={(checked) =>\n formik.setFieldValue(\n \"iamAppleOAuthEnabled\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Force Password change on first Login{\" \"}\n </label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <SolidSwitch\n name=\"forceChangePasswordOnFirstLogin\"\n checked={\n formik.values.forceChangePasswordOnFirstLogin\n }\n onChange={(checked) =>\n formik.setFieldValue(\n \"forceChangePasswordOnFirstLogin\",\n checked,\n )\n }\n />\n </div>\n </div>\n </div>\n {formik.values.passwordLessAuth === true && (\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full sm:w-full lg:w-[41.666667%] xl:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Password Less Registration Method\n </label>\n </div>\n <div className=\"w-full sm:w-full lg:w-1/2 xl:w-1/2 px-2 pt-2\">\n <SolidSegmentedControl\n className=\"solid-settings-segmented mt-4 lg:mt-0\"\n value={\n formik.values\n .passwordlessRegistrationValidateWhat\n }\n options={[\n { value: \"email\", label: \"Email\" },\n { value: \"mobile\", label: \"Mobile\" },\n ]}\n onChange={(value) =>\n formik.setFieldValue(\n \"passwordlessRegistrationValidateWhat\",\n value,\n )\n }\n />\n </div>\n </div>\n </div>\n )}\n {formik.values.passwordLessAuth === true && (\n <div className=\"w-full px-2 pt-2 mt-4\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full sm:w-full lg:w-[41.666667%] xl:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">\n Password Less Login Method\n </label>\n </div>\n <div className=\"w-full sm:w-full lg:w-1/2 xl:w-1/2 px-2 pt-2\">\n <SolidSegmentedControl\n className=\"solid-settings-segmented mt-4 lg:mt-0\"\n value={\n formik.values.passwordlessLoginValidateWhat\n }\n options={[\n { value: \"email\", label: \"Email\" },\n { value: \"mobile\", label: \"Mobile\" },\n {\n value: \"selectable\",\n label: \"Selectable\",\n },\n ]}\n onChange={(value) =>\n formik.setFieldValue(\n \"passwordlessLoginValidateWhat\",\n value,\n )\n }\n />\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n <SolidDivider className=\"my-6\" />\n <p className=\"solid-settings-heading\">\n Authentication Screen Layout\n </p>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <SolidSegmentedControl\n className=\"solid-settings-segmented\"\n value={formik.values.authPagesLayout}\n options={[\n { value: \"left\", label: \"Left\" },\n { value: \"center\", label: \"Center\" },\n { value: \"right\", label: \"Right\" },\n ]}\n onChange={(value) =>\n formik.setFieldValue(\"authPagesLayout\", value)\n }\n />\n <p className=\"mt-4 text-sm font-bold\">\n Note :{\" \"}\n {\n positionMap[\n formik.values.authPagesLayout as\n | \"left\"\n | \"center\"\n | \"right\"\n ]\n }\n </p>\n </div>\n </div>\n {formik.values.authPagesLayout === \"center\" && <></>}\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-[66.666667%] lg:w-1/2 px-2 pt-2\">\n <p className=\"solid-settings-subheading\">\n {formik.values.authPagesLayout === \"center\"\n ? \"Background\"\n : \"Banner\"}{\" \"}\n Image\n </p>\n {formik.values.authPagesLayout === \"left\" && (\n <div>\n <div\n {...getAuthScreenLeftBackgroundImageRootProps()}\n className=\"solid-dropzone-wrapper\"\n style={{ borderRadius: 8 }}\n >\n <input\n {...getAuthScreenLeftBackgroundImageInputProps()}\n />\n {/* {isAuthScreenLeftBackgroundImageDragActive && */}\n <SettingDropzoneActivePlaceholder\n note={\n \"Recommended: 724×724px | Aspect ratio: 1:1\"\n }\n />\n {/* } */}\n </div>\n <div className=\"mt-2\">\n {(() => {\n const logoSrc =\n (AuthScreenLeftBackgroundImage as any)\n .src || AuthScreenLeftBackgroundImage;\n\n let src = authScreenLeftBackgroundImagePreview\n ? authScreenLeftBackgroundImagePreview\n : formik.values\n .authScreenLeftBackgroundImage\n ? formik.values\n .authScreenLeftBackgroundImage\n : logoSrc;\n\n return (\n <SolidUploadedImage\n src={normalizeAssetUrl(src)}\n height={400}\n width={400}\n maxHeight={400}\n />\n );\n })()}\n </div>\n {formik.values.authScreenLeftBackgroundImage && (\n <SettingsImageRemoveButton\n onClick={removeAuthScreenLeftBackgroundImage}\n />\n )}\n </div>\n )}\n {formik.values.authPagesLayout === \"right\" && (\n <div>\n <div\n {...getAuthScreenRightBackgroundImageRootProps()}\n className=\"solid-dropzone-wrapper\"\n style={{ borderRadius: 8 }}\n >\n <input\n {...getAuthScreenRightBackgroundImageInputProps()}\n />\n {/* {isAuthScreenRightBackgroundImageDragActive && */}\n <SettingDropzoneActivePlaceholder\n note={\n \"Recommended: 724×724px | Aspect ratio: 1:1\"\n }\n />\n {/* } */}\n </div>\n <div className=\"mt-2\">\n {(() => {\n const logoSrc =\n (AuthScreenRightBackgroundImage as any)\n .src || AuthScreenRightBackgroundImage;\n\n let src =\n authScreenRightBackgroundImagePreview\n ? authScreenRightBackgroundImagePreview\n : formik.values\n .authScreenRightBackgroundImage\n ? formik.values\n .authScreenRightBackgroundImage\n : logoSrc;\n\n return (\n <SolidUploadedImage\n src={normalizeAssetUrl(src)}\n height={400}\n width={400}\n maxHeight={400}\n />\n );\n })()}\n </div>\n {formik.values.authScreenRightBackgroundImage && (\n <SettingsImageRemoveButton\n onClick={removeAuthScreenRightBackgroundImage}\n />\n )}\n </div>\n )}\n {formik.values.authPagesLayout === \"center\" && (\n <div>\n <div\n {...getAuthScreenCenterBackgroundImageRootProps()}\n className=\"solid-dropzone-wrapper\"\n style={{ borderRadius: 8 }}\n >\n <input\n {...getAuthScreenCenterBackgroundImageInputProps()}\n />\n <SettingDropzoneActivePlaceholder\n note={\n \"Recommended: 1440px × 724px | Aspect ratio: 2:1\"\n }\n />\n </div>\n <div className=\"mt-2\">\n {(() => {\n const logoSrc =\n (AuthScreenCenterBackgroundImage as any)\n .src || AuthScreenCenterBackgroundImage;\n\n let src =\n authScreenCenterBackgroundImagePreview\n ? authScreenCenterBackgroundImagePreview\n : formik.values\n .authScreenCenterBackgroundImage\n ? formik.values\n .authScreenCenterBackgroundImage\n : logoSrc;\n\n return (\n <SolidUploadedImage\n src={normalizeAssetUrl(src)}\n height={300}\n width={600}\n maxHeight={300}\n />\n );\n })()}\n </div>\n {formik.values.authScreenCenterBackgroundImage && (\n <SettingsImageRemoveButton onClick={removeAuthScreenCenterBackgroundImage} />\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n <SolidDivider className=\"my-6\" />\n </>\n )}\n\n {pathname.includes(\"misc-settings\") && (\n <>\n {/* \n <p className='font-bold' style={{ fontSize: 16, color: 'var(--solid-setting-title)' }}>Misc Details</p>\n <div className='flex flex-wrap -mx-2 -mt-2'>\n <div className='w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2'>\n <div className=\"flex flex-wrap -mx-2 -mt-2\">\n <div className=\"w-full md:w-1/2 px-2 pt-2 pb-4 md:pb-0\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">Use queue for sending emails</label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <InputSwitch\n name=\"shouldQueueEmails\"\n checked={formik.values.shouldQueueEmails}\n onChange={(e) => formik.setFieldValue(\"shouldQueueEmails\", e.value)}\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-[83.333333%] sm:w-[75%] lg:w-[41.666667%] px-2 pt-2\">\n <label className=\"form-field-label\">Use queue for sending SMS</label>\n </div>\n <div className=\"w-[16.666667%] sm:w-1/4 lg:w-[58.333333%] px-2 pt-2\">\n <InputSwitch\n name=\"shouldQueueSms\"\n checked={formik.values.shouldQueueSms}\n onChange={(e) => formik.setFieldValue(\"shouldQueueSms\", e.value)}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <Divider />\n */}\n <p className=\"solid-settings-heading\">Contact Support</p>\n <div className='flex flex-wrap -mx-2 -mt-2'>\n <div className=\"w-full lg:w-[83.333333%] xl:w-[66.666667%] px-2 pt-2\">\n <div className='flex flex-wrap -mx-2 -mt-2'>\n <div className=\"w-full md:w-1/2 px-2 pt-2 pb-4 md:pb-0\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">Contact Support Email</label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"contactSupportEmail\"\n name=\"contactSupportEmail\"\n onChange={formik.handleChange}\n value={formik.values.contactSupportEmail ?? ''}\n className='w-full'\n />\n </div>\n </div>\n </div>\n <div className=\"w-full md:w-1/2 px-2 pt-2\">\n <div className=\"flex flex-wrap items-center -mx-2 -mt-2\">\n <div className=\"w-full md:w-[41.666667%] px-2 pt-2 pb-2 md:pb-0\">\n <label className=\"form-field-label\">Display Name</label>\n </div>\n <div className=\"w-full md:w-[58.333333%] px-2 pt-2\">\n <SolidInput\n type=\"text\"\n id=\"contactSupportDisplayName\"\n name=\"contactSupportDisplayName\"\n onChange={formik.handleChange}\n value={formik.values.contactSupportDisplayName ?? ''}\n className='w-full'\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </>\n )}\n {pathname.includes(\"ai-settings\") &&\n <AiSettingsSection\n aiConfig={formik.values.solidXGenAiCodeBuilderConfig as SolidAiConfig}\n onAiConfigChange={handleAiConfigChange}\n />\n }\n {pathname.includes(\"api-keys\") && session?.user?.id &&\n <ApiKeysTab\n userId={session.user.id}\n canCreate={session?.user?.isAllowedToGenerateApiKeys ?? false}\n />\n }\n </div>\n </form>\n </div>\n </div>\n </div>\n )\n}\n\ninterface AiSettingsSectionProps {\n aiConfig: SolidAiConfig;\n onAiConfigChange: (config: SolidAiConfig) => void;\n}\n\nconst DEFAULT_BEHAVIOR: ModelBehavior = { streaming: false, custom: \"\" };\nconst DEFAULT_MODEL_ENTRY: ModelEntry = { providerId: \"\", model: \"\", behavior: DEFAULT_BEHAVIOR };\n\nconst AiSettingsSection = ({ aiConfig, onAiConfigChange }: AiSettingsSectionProps) => {\n const [activeTab, setActiveTab] = useState<\"providers\" | \"default\" | \"fast\">(\"providers\");\n const [showAddProvider, setShowAddProvider] = useState(false);\n\n const providers = ensureBuiltInProviders(aiConfig.providers ?? {});\n\n const tabItems = [\n {\n value: \"providers\" as const,\n label: \"Providers\",\n content: (\n <ProvidersTab\n providers={providers}\n onProvidersChange={(newProviders) => {\n onAiConfigChange({ ...aiConfig, providers: newProviders });\n }}\n showAddModal={showAddProvider}\n onAddModalClose={() => setShowAddProvider(false)}\n />\n ),\n },\n {\n value: \"default\" as const,\n label: \"Intelligent Model\",\n content: (\n <ModelConfigTab\n modelEntry={aiConfig.models?.default ?? DEFAULT_MODEL_ENTRY}\n providers={providers}\n onModelEntryChange={(entry) => {\n onAiConfigChange({ ...aiConfig, models: { ...aiConfig.models, default: entry } });\n }}\n />\n ),\n },\n {\n value: \"fast\" as const,\n label: \"Fast Model\",\n content: (\n <ModelConfigTab\n modelEntry={aiConfig.models?.fast ?? DEFAULT_MODEL_ENTRY}\n providers={providers}\n onModelEntryChange={(entry) => {\n onAiConfigChange({ ...aiConfig, models: { ...aiConfig.models, fast: entry } });\n }}\n />\n ),\n },\n ];\n\n return (\n <div>\n <p className=\"solid-settings-heading\" style={{ marginBottom: \"1rem\" }}>\n AI Model Configuration\n </p>\n <SolidTabGroup\n tabs={tabItems}\n value={activeTab}\n onValueChange={(value) => setActiveTab(value as \"providers\" | \"default\" | \"fast\")}\n tabPosition=\"left\"\n extra={\n activeTab === \"providers\" ? (\n <SolidButton size=\"sm\" onClick={() => setShowAddProvider(true)}>\n Add\n </SolidButton>\n ) : undefined\n }\n />\n </div>\n );\n};\n"]}