@cdmbase/wiki-browser 12.0.18-alpha.10

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 (367) hide show
  1. package/LICENSE +21 -0
  2. package/lib/components/Logo.d.ts +4 -0
  3. package/lib/components/Logo.d.ts.map +1 -0
  4. package/lib/components/Logo.js +16 -0
  5. package/lib/components/Logo.js.map +1 -0
  6. package/lib/components/help/SidebarSearch.d.ts +8 -0
  7. package/lib/components/help/SidebarSearch.d.ts.map +1 -0
  8. package/lib/components/help/SidebarSearch.js +111 -0
  9. package/lib/components/help/SidebarSearch.js.map +1 -0
  10. package/lib/components/help/index.d.ts +2 -0
  11. package/lib/components/help/index.d.ts.map +1 -0
  12. package/lib/components/landing/FeatureCard.d.ts +13 -0
  13. package/lib/components/landing/FeatureCard.d.ts.map +1 -0
  14. package/lib/components/landing/FeatureCard.js +85 -0
  15. package/lib/components/landing/FeatureCard.js.map +1 -0
  16. package/lib/components/landing/QuickLinkCard.d.ts +8 -0
  17. package/lib/components/landing/QuickLinkCard.d.ts.map +1 -0
  18. package/lib/components/landing/QuickLinkCard.js +26 -0
  19. package/lib/components/landing/QuickLinkCard.js.map +1 -0
  20. package/lib/components/landing/SearchInput.d.ts +10 -0
  21. package/lib/components/landing/SearchInput.d.ts.map +1 -0
  22. package/lib/components/landing/SearchInput.js +223 -0
  23. package/lib/components/landing/SearchInput.js.map +1 -0
  24. package/lib/components/landing/index.d.ts +4 -0
  25. package/lib/components/landing/index.d.ts.map +1 -0
  26. package/lib/components/welcome.d.ts +3 -0
  27. package/lib/components/welcome.d.ts.map +1 -0
  28. package/lib/compute.d.ts +4 -0
  29. package/lib/compute.d.ts.map +1 -0
  30. package/lib/compute.js +96 -0
  31. package/lib/compute.js.map +1 -0
  32. package/lib/config/env-config.d.ts +4 -0
  33. package/lib/config/env-config.d.ts.map +1 -0
  34. package/lib/config/env-config.js +7 -0
  35. package/lib/config/env-config.js.map +1 -0
  36. package/lib/docs.config.d.ts +48 -0
  37. package/lib/docs.config.d.ts.map +1 -0
  38. package/lib/index.d.ts +4 -0
  39. package/lib/index.d.ts.map +1 -0
  40. package/lib/index.js +2 -0
  41. package/lib/index.js.map +1 -0
  42. package/lib/loaders/search.d.ts +1 -0
  43. package/lib/loaders/search.d.ts.map +1 -0
  44. package/lib/module.d.ts +4 -0
  45. package/lib/module.d.ts.map +1 -0
  46. package/lib/module.js +11 -0
  47. package/lib/module.js.map +1 -0
  48. package/lib/pages/ArticlePage/ArticlePage.d.ts +4 -0
  49. package/lib/pages/ArticlePage/ArticlePage.d.ts.map +1 -0
  50. package/lib/pages/ArticlePage/ArticlePage.js +222 -0
  51. package/lib/pages/ArticlePage/ArticlePage.js.map +1 -0
  52. package/lib/pages/ArticlePage/index.d.ts +3 -0
  53. package/lib/pages/ArticlePage/index.d.ts.map +1 -0
  54. package/lib/pages/ArticlePage/index.js +3 -0
  55. package/lib/pages/ArticlePage/index.js.map +1 -0
  56. package/lib/pages/CategoryCollection/CategoryCollection.d.ts +4 -0
  57. package/lib/pages/CategoryCollection/CategoryCollection.d.ts.map +1 -0
  58. package/lib/pages/CategoryCollection/CategoryCollection.js +103 -0
  59. package/lib/pages/CategoryCollection/CategoryCollection.js.map +1 -0
  60. package/lib/pages/CategoryCollection/index.d.ts +3 -0
  61. package/lib/pages/CategoryCollection/index.d.ts.map +1 -0
  62. package/lib/pages/CategoryCollection/index.js +3 -0
  63. package/lib/pages/CategoryCollection/index.js.map +1 -0
  64. package/lib/pages/Help/HelpIndex.d.ts +4 -0
  65. package/lib/pages/Help/HelpIndex.d.ts.map +1 -0
  66. package/lib/pages/Help/HelpIndex.js +44 -0
  67. package/lib/pages/Help/HelpIndex.js.map +1 -0
  68. package/lib/pages/Help/index.d.ts +4 -0
  69. package/lib/pages/Help/index.d.ts.map +1 -0
  70. package/lib/pages/Help/index.js +226 -0
  71. package/lib/pages/Help/index.js.map +1 -0
  72. package/lib/pages/Landing/index.d.ts +3 -0
  73. package/lib/pages/Landing/index.d.ts.map +1 -0
  74. package/lib/pages/Landing/index.js +281 -0
  75. package/lib/pages/Landing/index.js.map +1 -0
  76. package/lib/routes.json +2533 -0
  77. package/lib/seo.d.ts +22 -0
  78. package/lib/seo.d.ts.map +1 -0
  79. package/lib/slot-fill/FooterFill.d.ts +3 -0
  80. package/lib/slot-fill/FooterFill.d.ts.map +1 -0
  81. package/lib/slot-fill/FooterFill.js +18 -0
  82. package/lib/slot-fill/FooterFill.js.map +1 -0
  83. package/lib/slot-fill/LogoFill.d.ts +5 -0
  84. package/lib/slot-fill/LogoFill.d.ts.map +1 -0
  85. package/lib/slot-fill/LogoFill.js +74 -0
  86. package/lib/slot-fill/LogoFill.js.map +1 -0
  87. package/lib/slot-fill/consts.d.ts +5 -0
  88. package/lib/slot-fill/consts.d.ts.map +1 -0
  89. package/lib/slot-fill/consts.js +1 -0
  90. package/lib/slot-fill/consts.js.map +1 -0
  91. package/lib/slot-fill/index.d.ts +4 -0
  92. package/lib/slot-fill/index.d.ts.map +1 -0
  93. package/lib/templates/assets/images/add-link-frontend.png +0 -0
  94. package/lib/templates/assets/images/add-package-backend.png +0 -0
  95. package/lib/templates/assets/images/add-to-backend-module.png +0 -0
  96. package/lib/templates/assets/images/add-upload-client-frontend.png +0 -0
  97. package/lib/templates/assets/images/additional-parameters.png +0 -0
  98. package/lib/templates/assets/images/aeh-implementation.png +0 -0
  99. package/lib/templates/assets/images/aeh-usage.png +0 -0
  100. package/lib/templates/assets/images/apollo-client/recommendation_cache_mgmt.png +0 -0
  101. package/lib/templates/assets/images/app-deploy-new-version/jenkins1.PNG +0 -0
  102. package/lib/templates/assets/images/app-deploy-new-version/jenkins2.PNG +0 -0
  103. package/lib/templates/assets/images/auth-wrapper-code.png +0 -0
  104. package/lib/templates/assets/images/cdebase.png +0 -0
  105. package/lib/templates/assets/images/cdm-locales-directory.png +0 -0
  106. package/lib/templates/assets/images/client-settings.png +0 -0
  107. package/lib/templates/assets/images/codegen_file_update.png +0 -0
  108. package/lib/templates/assets/images/configuration.png +0 -0
  109. package/lib/templates/assets/images/copy-plugin.png +0 -0
  110. package/lib/templates/assets/images/docusaurus.png +0 -0
  111. package/lib/templates/assets/images/error-link.png +0 -0
  112. package/lib/templates/assets/images/error-sample.png +0 -0
  113. package/lib/templates/assets/images/extension copy.png +0 -0
  114. package/lib/templates/assets/images/extension.png +0 -0
  115. package/lib/templates/assets/images/graphql/graphql-folder-backend.png +0 -0
  116. package/lib/templates/assets/images/graphql/graphql-folder-with-gql.png +0 -0
  117. package/lib/templates/assets/images/i18n-config.png +0 -0
  118. package/lib/templates/assets/images/image.png +0 -0
  119. package/lib/templates/assets/images/logo.svg +10 -0
  120. package/lib/templates/assets/images/logo1.svg +1 -0
  121. package/lib/templates/assets/images/modify-upload-false-server.png +0 -0
  122. package/lib/templates/assets/images/navigation-auth-enabled.png +0 -0
  123. package/lib/templates/assets/images/org-dashboard-navigation.png +0 -0
  124. package/lib/templates/assets/images/org-navigation.png +0 -0
  125. package/lib/templates/assets/images/preferences_graphql_type.png +0 -0
  126. package/lib/templates/assets/images/provider.png +0 -0
  127. package/lib/templates/assets/images/route-config.png +0 -0
  128. package/lib/templates/assets/images/service-accounts.png +0 -0
  129. package/lib/templates/assets/images/source-code/source-code-environments.png +0 -0
  130. package/lib/templates/assets/images/source-code/source-code-organization.png +0 -0
  131. package/lib/templates/assets/images/spin-clone-develop-deployment/jenkins-changes.png +0 -0
  132. package/lib/templates/assets/images/spin-clone-develop-deployment/lerna-changes.png +0 -0
  133. package/lib/templates/assets/images/spin-clone-develop-deployment/root-package-json-changes.png +0 -0
  134. package/lib/templates/assets/images/spin-clone-develop-deployment/values-dev-changes.png +0 -0
  135. package/lib/templates/assets/images/sso-mappers.png +0 -0
  136. package/lib/templates/assets/images/sso-picture-mapper.png +0 -0
  137. package/lib/templates/assets/images/sso-settings.png +0 -0
  138. package/lib/templates/assets/images/timesheet_apollo_cache.png +0 -0
  139. package/lib/templates/assets/images/timesheet_query.png +0 -0
  140. package/lib/templates/assets/images/tutorial/docsVersionDropdown.png +0 -0
  141. package/lib/templates/assets/images/tutorial/localeDropdown.png +0 -0
  142. package/lib/templates/assets/images/unauthenticated.png +0 -0
  143. package/lib/templates/assets/images/undraw_docusaurus_mountain.svg +170 -0
  144. package/lib/templates/assets/images/undraw_docusaurus_react.svg +169 -0
  145. package/lib/templates/assets/images/undraw_docusaurus_tree.svg +1 -0
  146. package/lib/templates/assets/images/vite-plugin-config.png +0 -0
  147. package/lib/templates/content/docs/Generators/Project/generate-fullproject.md +12 -0
  148. package/lib/templates/content/docs/LLM/Logger.llm.md +194 -0
  149. package/lib/templates/content/docs/LLM/backend-proxies-services-llm.md +2687 -0
  150. package/lib/templates/content/docs/LLM/backend-service-llm.md +3384 -0
  151. package/lib/templates/content/docs/LLM/db_migration_llm.md +954 -0
  152. package/lib/templates/content/docs/LLM/frontend/REMIX-15.3-upgrade-llm.md +1245 -0
  153. package/lib/templates/content/docs/LLM/inngest/INNGEST_FUNCTION_DEVELOPMENT_GUIDE_LLM.md +1241 -0
  154. package/lib/templates/content/docs/LLM/inngest/INNGEST_NAMESPACE_LLM.md +384 -0
  155. package/lib/templates/content/docs/LLM/llm_workflow_namespace.md +384 -0
  156. package/lib/templates/content/docs/LLM/organization-components-form-llm.md +1395 -0
  157. package/lib/templates/content/docs/LLM/page-component-llm.md +173 -0
  158. package/lib/templates/content/docs/LLM/preferences-settings-llm.md +2781 -0
  159. package/lib/templates/content/docs/LLM/tailwind-css-llm.md +502 -0
  160. package/lib/templates/content/docs/UI/SchemaBasedUI.md +334 -0
  161. package/lib/templates/content/docs/UI/SlotFillComponent.md +334 -0
  162. package/lib/templates/content/docs/adminide-modules/account/auth0-login.md +31 -0
  163. package/lib/templates/content/docs/adminide-modules/account/index.md +14 -0
  164. package/lib/templates/content/docs/adminide-modules/account/keycloak-remix-setup.md +86 -0
  165. package/lib/templates/content/docs/adminide-modules/account/remix-auth-setup.md +79 -0
  166. package/lib/templates/content/docs/adminide-modules/account/various-auth-qatest.md +157 -0
  167. package/lib/templates/content/docs/adminide-modules/api-builders/graphql.md +906 -0
  168. package/lib/templates/content/docs/adminide-modules/billing/payments/index.md +14 -0
  169. package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/index.md +14 -0
  170. package/lib/templates/content/docs/adminide-modules/billing/payments/stripe/settingup-stripe-locally.md +25 -0
  171. package/lib/templates/content/docs/adminide-modules/billing/tier-config.md +293 -0
  172. package/lib/templates/content/docs/adminide-modules/connectors/Connector.md +207 -0
  173. package/lib/templates/content/docs/adminide-modules/file-upload/index.md +16 -0
  174. package/lib/templates/content/docs/adminide-modules/file-upload/setup.md +435 -0
  175. package/lib/templates/content/docs/adminide-modules/file-upload/upload-file-using-signed-url.md +161 -0
  176. package/lib/templates/content/docs/adminide-modules/preferences/AddAdditionalPermissions.md +151 -0
  177. package/lib/templates/content/docs/adminide-modules/preferences/Configuration.md +241 -0
  178. package/lib/templates/content/docs/adminide-modules/preferences/Policy-Configuration.md +61 -0
  179. package/lib/templates/content/docs/adminide-modules/preferences/UI-components/ResourceSettingsLoader.md +319 -0
  180. package/lib/templates/content/docs/adminide-modules/preferences/contribute_scope_target.md +280 -0
  181. package/lib/templates/content/docs/adminide-modules/preferences/generate-urii.md +94 -0
  182. package/lib/templates/content/docs/adminide-modules/preferences/index.md +28 -0
  183. package/lib/templates/content/docs/adminide-modules/preferences/machine-configuration.md +157 -0
  184. package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/generateCdecodeUri.md +1289 -0
  185. package/lib/templates/content/docs/adminide-modules/preferences/pageSettings/migratingFromUseSettings.md +215 -0
  186. package/lib/templates/content/docs/adminide-modules/preferences/permissions/Roles-Permissions.md +72 -0
  187. package/lib/templates/content/docs/adminide-modules/preferences/permissions/settingUserPermissions.md +139 -0
  188. package/lib/templates/content/docs/adminide-modules/preferences/preference-dependency.md +138 -0
  189. package/lib/templates/content/docs/adminide-modules/preferences/route-based-configuration.md +41 -0
  190. package/lib/templates/content/docs/adminide-modules/preferences/schema-configuration.md +71 -0
  191. package/lib/templates/content/docs/adminide-modules/preferences/supported.md +24 -0
  192. package/lib/templates/content/docs/adminide-modules/preferences/useSettingsLoader.md +248 -0
  193. package/lib/templates/content/docs/adminide-modules/project-tools/auth-providers.md +1317 -0
  194. package/lib/templates/content/docs/adminide-modules/project-tools/keycloak-guide.md +543 -0
  195. package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenant-based-authentication.md +846 -0
  196. package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenant-management.md +708 -0
  197. package/lib/templates/content/docs/adminide-modules/project-tools/tenant-management/tenants.md +1117 -0
  198. package/lib/templates/content/docs/chrome-extension/index.md +14 -0
  199. package/lib/templates/content/docs/chrome-extension/setup.md +30 -0
  200. package/lib/templates/content/docs/contributing/adding-package.md +23 -0
  201. package/lib/templates/content/docs/contributing/adding_new_modules.md +99 -0
  202. package/lib/templates/content/docs/contributing/architecture-updates.md +19 -0
  203. package/lib/templates/content/docs/contributing/avoid-using-promises-ui.md +116 -0
  204. package/lib/templates/content/docs/contributing/coding-guidelines.md +111 -0
  205. package/lib/templates/content/docs/contributing/do-and-dont.md +42 -0
  206. package/lib/templates/content/docs/contributing/faq.md +22 -0
  207. package/lib/templates/content/docs/contributing/folder-setup/browser.md +12 -0
  208. package/lib/templates/content/docs/contributing/folder-setup/config.md +12 -0
  209. package/lib/templates/content/docs/contributing/folder-setup/containers-server.md +12 -0
  210. package/lib/templates/content/docs/contributing/folder-setup/core.md +12 -0
  211. package/lib/templates/content/docs/contributing/folder-setup/graphql.md +12 -0
  212. package/lib/templates/content/docs/contributing/folder-setup/index.md +30 -0
  213. package/lib/templates/content/docs/contributing/folder-setup/module.md +12 -0
  214. package/lib/templates/content/docs/contributing/folder-setup/server.md +12 -0
  215. package/lib/templates/content/docs/contributing/folder-setup/services.md +12 -0
  216. package/lib/templates/content/docs/contributing/folder-setup/store.md +12 -0
  217. package/lib/templates/content/docs/contributing/frontend-coding.md +30 -0
  218. package/lib/templates/content/docs/contributing/git-subtree-sharing.md +73 -0
  219. package/lib/templates/content/docs/contributing/graphql-subscriptions.md +69 -0
  220. package/lib/templates/content/docs/contributing/how-to-contribute.md +30 -0
  221. package/lib/templates/content/docs/contributing/how_to_check_pure_esm.md +29 -0
  222. package/lib/templates/content/docs/contributing/index.md +60 -0
  223. package/lib/templates/content/docs/contributing/installation-issues.md +23 -0
  224. package/lib/templates/content/docs/contributing/keyboard-shortcut.md +131 -0
  225. package/lib/templates/content/docs/contributing/language/locale-support.md +12 -0
  226. package/lib/templates/content/docs/contributing/lerna-build-tools.md +516 -0
  227. package/lib/templates/content/docs/contributing/lerna-yarn-workspaces.md +95 -0
  228. package/lib/templates/content/docs/contributing/lint-and-formatter.md +20 -0
  229. package/lib/templates/content/docs/contributing/mobile-setup.md +16 -0
  230. package/lib/templates/content/docs/contributing/project-setup.md +233 -0
  231. package/lib/templates/content/docs/contributing/react/index.md +14 -0
  232. package/lib/templates/content/docs/contributing/react/lazy-component.md +70 -0
  233. package/lib/templates/content/docs/contributing/run-various-options.md +124 -0
  234. package/lib/templates/content/docs/contributing/schema-first-graphql-types.md +37 -0
  235. package/lib/templates/content/docs/contributing/source-code-organization.md +57 -0
  236. package/lib/templates/content/docs/contributing/staging-docker.md +88 -0
  237. package/lib/templates/content/docs/contributing/third-party/apollo-client-v3-tutorials.md +28 -0
  238. package/lib/templates/content/docs/contributing/third-party/index.md +18 -0
  239. package/lib/templates/content/docs/contributing/typescript-contribution.md +16 -0
  240. package/lib/templates/content/docs/devops/app-deploy-new-version.md +30 -0
  241. package/lib/templates/content/docs/devops/index.md +14 -0
  242. package/lib/templates/content/docs/devops/mobile-jenkins-build.md +40 -0
  243. package/lib/templates/content/docs/devops/versioning-the-project.md +128 -0
  244. package/lib/templates/content/docs/error-handler/application-error-handler.md +40 -0
  245. package/lib/templates/content/docs/error-handler/error-handling.md +26 -0
  246. package/lib/templates/content/docs/error-handler/index.md +16 -0
  247. package/lib/templates/content/docs/error-handler/logging-errors.md +14 -0
  248. package/lib/templates/content/docs/feature-api/copy-operation.md +427 -0
  249. package/lib/templates/content/docs/feature-api/feature-browser/assets.md +46 -0
  250. package/lib/templates/content/docs/feature-api/feature-browser/auth-permissions.md +12 -0
  251. package/lib/templates/content/docs/feature-api/feature-browser/feature.md +131 -0
  252. package/lib/templates/content/docs/feature-api/feature-browser/index.md +22 -0
  253. package/lib/templates/content/docs/feature-api/feature-browser/routes-menu.md +110 -0
  254. package/lib/templates/content/docs/feature-api/feature-browser/routing-convention.md +124 -0
  255. package/lib/templates/content/docs/feature-api/feature-browser/routing.md +338 -0
  256. package/lib/templates/content/docs/feature-api/feature-mobile/auth-permissions.md +20 -0
  257. package/lib/templates/content/docs/feature-api/feature-mobile/feature.md +130 -0
  258. package/lib/templates/content/docs/feature-api/feature-mobile/index.md +18 -0
  259. package/lib/templates/content/docs/feature-api/feature-mobile/navigation.md +187 -0
  260. package/lib/templates/content/docs/feature-api/feature-server/Scheduling.md +44 -0
  261. package/lib/templates/content/docs/feature-api/feature-server/dataloader.md +320 -0
  262. package/lib/templates/content/docs/feature-api/feature-server/dependency-injection.md +81 -0
  263. package/lib/templates/content/docs/feature-api/feature-server/feature.md +65 -0
  264. package/lib/templates/content/docs/feature-api/feature-server/generic-dataloader.md +135 -0
  265. package/lib/templates/content/docs/feature-api/feature-server/index.md +40 -0
  266. package/lib/templates/content/docs/feature-api/feature-server/migration.md +127 -0
  267. package/lib/templates/content/docs/feature-api/feature-server/mongo-model.md +72 -0
  268. package/lib/templates/content/docs/feature-api/feature-server/permissions.md +12 -0
  269. package/lib/templates/content/docs/feature-api/feature-server/policies.md +57 -0
  270. package/lib/templates/content/docs/feature-api/feature-server/preferences.md +57 -0
  271. package/lib/templates/content/docs/feature-api/feature-server/repositories.md +114 -0
  272. package/lib/templates/content/docs/feature-api/feature-server/resolvers.md +126 -0
  273. package/lib/templates/content/docs/feature-api/feature-server/rules.md +132 -0
  274. package/lib/templates/content/docs/feature-api/feature-server/schema.md +12 -0
  275. package/lib/templates/content/docs/feature-api/feature-server/services.md +102 -0
  276. package/lib/templates/content/docs/feature-api/feature-server/setup-resource-crud.md +359 -0
  277. package/lib/templates/content/docs/feature-api/index.md +18 -0
  278. package/lib/templates/content/docs/graphql/apolloClient-mutation.md +94 -0
  279. package/lib/templates/content/docs/graphql/index.md +14 -0
  280. package/lib/templates/content/docs/graphql/scalars.md +15 -0
  281. package/lib/templates/content/docs/help/index.md +14 -0
  282. package/lib/templates/content/docs/help/intro.md +16 -0
  283. package/lib/templates/content/docs/intl/ant-design-menu-translation.md +74 -0
  284. package/lib/templates/content/docs/intl/intl-namespace.md +129 -0
  285. package/lib/templates/content/docs/intl/vite-plugin-intl.md +87 -0
  286. package/lib/templates/content/docs/intl/webpack-plugin-intl.md +12 -0
  287. package/lib/templates/content/docs/intro.md +18 -0
  288. package/lib/templates/content/docs/knowledge/basic-fullstack.md +238 -0
  289. package/lib/templates/content/docs/mailing/index.md +14 -0
  290. package/lib/templates/content/docs/mailing/mailing-template.md +148 -0
  291. package/lib/templates/content/docs/mobile/App-navigation-generator.md +410 -0
  292. package/lib/templates/content/docs/mobile/MobileTestCases.md +264 -0
  293. package/lib/templates/content/docs/mobile/eas-profile-build.md +107 -0
  294. package/lib/templates/content/docs/mobile/expo-push-notification-setup.md +216 -0
  295. package/lib/templates/content/docs/mobile/index.md +14 -0
  296. package/lib/templates/content/docs/mobile/routes.md +83 -0
  297. package/lib/templates/content/docs/organization/adding-account-context.md +116 -0
  298. package/lib/templates/content/docs/organization/adding-org-mobile-navigation.md +22 -0
  299. package/lib/templates/content/docs/organization/adding-org-web-navigation.md +12 -0
  300. package/lib/templates/content/docs/organization/index.md +20 -0
  301. package/lib/templates/content/docs/organization/initialization.md +20 -0
  302. package/lib/templates/content/docs/organization/organization-resource-vs-resource.md +112 -0
  303. package/lib/templates/content/docs/remix/configuration/component-structure-best-practices.md +152 -0
  304. package/lib/templates/content/docs/remix/configuration/configurations.md +218 -0
  305. package/lib/templates/content/docs/remix/configuration/css-import-and-stylesheets.md +142 -0
  306. package/lib/templates/content/docs/remix/configuration/dont-subcomponent-network.md +166 -0
  307. package/lib/templates/content/docs/remix/configuration/generated-data-loaders.md +122 -0
  308. package/lib/templates/content/docs/remix/configuration/generated-resource-loaders.md +257 -0
  309. package/lib/templates/content/docs/remix/configuration/query-params-generator.md +216 -0
  310. package/lib/templates/content/docs/remix/configuration/routes-extra-icons.md +103 -0
  311. package/lib/templates/content/docs/remix/configuration/routes-json-advanced.md +86 -0
  312. package/lib/templates/content/docs/remix/configuration/routes-json-auth.md +113 -0
  313. package/lib/templates/content/docs/remix/configuration/routes-json-best-practices.md +55 -0
  314. package/lib/templates/content/docs/remix/configuration/routes-json-fields.md +79 -0
  315. package/lib/templates/content/docs/remix/configuration/routes-json-graphql.md +79 -0
  316. package/lib/templates/content/docs/remix/configuration/routes-json-index.md +112 -0
  317. package/lib/templates/content/docs/remix/configuration/routes-json-loaders.md +165 -0
  318. package/lib/templates/content/docs/remix/configuration/routes-json-middleware.md +196 -0
  319. package/lib/templates/content/docs/remix/configuration/routes-json-overview.md +53 -0
  320. package/lib/templates/content/docs/remix/data-loaders.md +43 -0
  321. package/lib/templates/content/docs/remix/devtools/remix-devtools.md +58 -0
  322. package/lib/templates/content/docs/remix/examples/changes-using-servercode.md +79 -0
  323. package/lib/templates/content/docs/remix/extra-icons.md +62 -0
  324. package/lib/templates/content/docs/remix/extra-links.md +65 -0
  325. package/lib/templates/content/docs/remix/generated-data-loaders.md +114 -0
  326. package/lib/templates/content/docs/remix/queryParamsGenerator.md +89 -0
  327. package/lib/templates/content/docs/remix/resources.md +16 -0
  328. package/lib/templates/content/docs/remix/styles.md +132 -0
  329. package/lib/templates/content/docs/remix/wiki.md +12 -0
  330. package/lib/templates/content/docs/security/auth-wrapper/auth-wrapper.md +24 -0
  331. package/lib/templates/content/docs/security/index.md +18 -0
  332. package/lib/templates/content/docs/security/secure-button-mobilenative.md +88 -0
  333. package/lib/templates/content/docs/security/secure-button-web.md +89 -0
  334. package/lib/templates/content/docs/server-side/account-customization.md +82 -0
  335. package/lib/templates/content/docs/server-side/apollo/caching.md +164 -0
  336. package/lib/templates/content/docs/server-side/backend-architecture/FINAL-DECISION.md +209 -0
  337. package/lib/templates/content/docs/server-side/backend-architecture/TRUE-FINAL-ARCHITECTURE.md +603 -0
  338. package/lib/templates/content/docs/server-side/backend-architecture/index1.md +0 -0
  339. package/lib/templates/content/docs/server-side/backend-coding.md +839 -0
  340. package/lib/templates/content/docs/server-side/e2b/manageing-template.md +197 -0
  341. package/lib/templates/content/docs/server-side/index.md +14 -0
  342. package/lib/templates/content/docs/server-side/inngest-functions-module.md +309 -0
  343. package/lib/templates/content/docs/server-side/listen-stripe-events.md +43 -0
  344. package/lib/templates/content/docs/server-side/slug-service.md +323 -0
  345. package/lib/templates/content/docs/tests/index.md +18 -0
  346. package/lib/templates/content/docs/tests/jest-test-debug-vscode.md +40 -0
  347. package/lib/templates/content/docs/tests/known-errors.md +116 -0
  348. package/lib/templates/content/docs/tests/service-test-template.md +118 -0
  349. package/lib/templates/content/docs/tests/test-setup.md +93 -0
  350. package/lib/templates/content/docs/xstate.md +23 -0
  351. package/lib/types.d.ts +37 -0
  352. package/lib/types.d.ts.map +1 -0
  353. package/lib/utils/docsNavigation.d.ts +9 -0
  354. package/lib/utils/docsNavigation.d.ts.map +1 -0
  355. package/lib/utils/docsNavigation.js +37 -0
  356. package/lib/utils/docsNavigation.js.map +1 -0
  357. package/lib/utils/helpCenterUtils.d.ts +26 -0
  358. package/lib/utils/helpCenterUtils.d.ts.map +1 -0
  359. package/lib/utils/index.d.ts +3 -0
  360. package/lib/utils/index.d.ts.map +1 -0
  361. package/lib/utils/index.js +3 -0
  362. package/lib/utils/index.js.map +1 -0
  363. package/lib/utils/markdownLoader.d.ts +36 -0
  364. package/lib/utils/markdownLoader.d.ts.map +1 -0
  365. package/lib/utils/markdownLoader.js +2242 -0
  366. package/lib/utils/markdownLoader.js.map +1 -0
  367. package/package.json +71 -0
@@ -0,0 +1,334 @@
1
+ ---
2
+ meta:
3
+ title: Schema Based UI Forms
4
+ description: Schema Based UI Forms
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Schema Based UI Forms...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ ## Schema Based UI Forms
13
+
14
+ `react-jsonschema-form` is meant to automatically generate a React form based on a JSON Schema. If you want to generate a form for any data, sight unseen, simply given a JSON schema, `react-jsonschema-form` may be for you. If you have a priori knowledge of your data and want a toolkit for generating forms for it, you might look elsewhere.
15
+
16
+ `react-jsonschema-form` also comes with tools such as `uiSchema` and other form props to customize the look and feel of the form beyond the default themes.
17
+
18
+ # Usage
19
+
20
+ ```javascript
21
+ import { RJSFSchema } from '@rjsf/utils';
22
+ import validator from '@rjsf/validator-ajv8';
23
+
24
+ const schema: RJSFSchema = {
25
+ title: 'Todo',
26
+ type: 'object',
27
+ required: ['title'],
28
+ properties: {
29
+ title: { type: 'string', title: 'Title', default: 'A new task' },
30
+ done: { type: 'boolean', title: 'Done?', default: false },
31
+ },
32
+ };
33
+
34
+ const log = (type) => console.log.bind(console, type);
35
+
36
+ render(
37
+ <Form
38
+ schema={schema}
39
+ validator={validator}
40
+ onChange={log('changed')}
41
+ onSubmit={log('submitted')}
42
+ onError={log('errors')}
43
+ />,
44
+ document.getElementById('app'),
45
+ );
46
+ ```
47
+
48
+ # JSON Schema
49
+
50
+ JSON Schema is a format for describing the structure and constraints of JSON data, widely used in React JSONSchema Form (rjfs) to define data models and validation rules for forms.
51
+
52
+ ## Basics
53
+
54
+ - **`type` Property:** Specifies the expected data type, such as `"string"`, `"number"`, `"integer"`, `"boolean"`, `"object"`, or `"array"`.
55
+
56
+ - **`properties` Property:** Defines fields within an object. Each field is described as a key-value pair, where the key is the field name, and the value is another JSON Schema describing the field.
57
+
58
+ - **`required` Property:** An array listing fields that must be present in the object.
59
+
60
+ ## Common Constraints
61
+
62
+ - **Additional Properties:** Various properties like `"minimum"`, `"maximum"`, `"enum"`, etc., can be used to set constraints based on the data type.
63
+
64
+ ## Example Usage
65
+
66
+ ```jsx
67
+ import { render } from 'react-dom';
68
+ import { Form } from '@rjsf/core';
69
+
70
+ const jsonSchema = {
71
+ type: 'object',
72
+ properties: {
73
+ firstName: { type: 'string' },
74
+ lastName: { type: 'string' },
75
+ age: { type: 'integer', minimum: 0 },
76
+ },
77
+ required: ['firstName', 'lastName'],
78
+ };
79
+
80
+ render(<Form schema={jsonSchema} />, document.getElementById('app'));
81
+ ```
82
+
83
+ # UI Schema in JSON Form
84
+
85
+ The UI Schema in React JSON Form (rjfs) serves as a configuration object, dictating the visual representation and behavior of form elements. It allows for customization of the appearance and functionality of different fields within a form.
86
+
87
+ ```javascript
88
+ const uiSchema = {
89
+ // ... fields definition
90
+ };
91
+ ```
92
+
93
+ # Structure of the UI Schema
94
+
95
+ The UI Schema provided organizes the layout and styling for distinct groups of fields related to pricing information within a form.
96
+
97
+ ```javascript
98
+ price: {
99
+ // ... price-related fields
100
+ },
101
+ additionalPrice: {
102
+ // ... additional price-related fields
103
+ }
104
+ ```
105
+
106
+ # Fields in UI Schema
107
+
108
+ Each field in the UI Schema corresponds to a specific data field in the form. Properties associated with these fields control their appearance and behavior.
109
+
110
+ ```javascript
111
+ priceType: { 'ui:colSpan': 5 },
112
+ pricePerGuestEnabled: { 'ui:widget': 'SwitchWidget' },
113
+ ```
114
+
115
+ # Widgets in UI Schema
116
+
117
+ Widgets specify the type of UI element used to display a particular field, influencing how the input is rendered.
118
+
119
+ ```javascript
120
+ 'ui:widget': 'SwitchWidget',
121
+ ```
122
+
123
+ # Templates in UI Schema
124
+
125
+ Templates enable the customization of the layout and structure for groups of related fields, aiding in organization and styling.
126
+
127
+ No specific example is provided in the given UI Schema.
128
+
129
+ # `ui:colSpan` for Input Field Size
130
+
131
+ The `ui:colSpan` property is utilized to define the size of the input field, indicating the number of columns it should span within the form layout.
132
+
133
+ ```javascript
134
+ 'ui:colSpan': 7,
135
+ ```
136
+
137
+ # `ui:field` for Custom Input Components
138
+
139
+ The `ui:field` property designates a custom input component (widget) for a particular field, allowing for the integration of specialized UI elements.
140
+
141
+ ```javascript
142
+ 'ui:colSpan': 6, 'ui:field': 'InputWithDropdown',
143
+ ```
144
+
145
+ # Widget and Field Customization
146
+
147
+ - **Widget**: Represents an HTML tag for the user to input data (e.g., input, select, etc.).
148
+
149
+ - **Field**: Typically wraps one or more widgets and often manages internal field state, akin to a form row, including labels.
150
+
151
+ ## Customizing Default Fields and Widgets
152
+
153
+ You have the flexibility to override any default field and widget, including internal widgets like CheckboxWidget used by ObjectField for boolean values. This can be achieved by providing customized fields and widgets in the `fields` and `widgets` props.
154
+
155
+ ```jsx
156
+ import { RJSFSchema, UiSchema, WidgetProps, RegistryWidgetsType } from '@rjsf/utils';
157
+ import validator from '@rjsf/validator-ajv8';
158
+
159
+ const schema: RJSFSchema = {
160
+ type: 'boolean',
161
+ default: true,
162
+ };
163
+
164
+ const uiSchema: UiSchema = {
165
+ 'ui:widget': 'checkbox',
166
+ };
167
+
168
+ const CustomCheckbox = function (props: WidgetProps) {
169
+ return (
170
+ <button
171
+ id="custom"
172
+ className={props.value ? 'checked' : 'unchecked'}
173
+ onClick={() => props.onChange(!props.value)}
174
+ >
175
+ {String(props.value)}
176
+ </button>
177
+ );
178
+ };
179
+
180
+ const widgets: RegistryWidgetsType = {
181
+ CheckboxWidget: CustomCheckbox,
182
+ };
183
+
184
+ render(
185
+ <Form schema={schema} uiSchema={uiSchema} validator={validator} widgets={widgets} />,
186
+ document.getElementById('app'),
187
+ );
188
+ ```
189
+
190
+ ## Custom Component Registration
191
+
192
+ Another approach to registering custom components in React JSON Form (rjfs) involves registering them collectively by passing the `widgets` prop to the Form component. The registered components can then be referenced from the `uiSchema`.
193
+
194
+ ```jsx
195
+ import { RJSFSchema, UiSchema, WidgetProps, RegistryWidgetsType } from '@rjsf/utils';
196
+ import validator from '@rjsf/validator-ajv8';
197
+
198
+ // Define a custom widget, MyCustomWidget
199
+ const MyCustomWidget = (props: WidgetProps) => {
200
+ return (
201
+ <input
202
+ type="text"
203
+ className="custom"
204
+ value={props.value}
205
+ required={props.required}
206
+ onChange={(event) => props.onChange(event.target.value)}
207
+ />
208
+ );
209
+ };
210
+
211
+ // Register the custom widget
212
+ const widgets: RegistryWidgetsType = {
213
+ myCustomWidget: MyCustomWidget,
214
+ };
215
+
216
+ // Define a schema for a string field
217
+ const schema: RJSFSchema = {
218
+ type: 'string',
219
+ };
220
+
221
+ // Reference the custom widget in the uiSchema
222
+ const uiSchema: UiSchema = {
223
+ 'ui:widget': 'myCustomWidget',
224
+ };
225
+
226
+ // Render the form with the registered custom widget
227
+ render(
228
+ <Form schema={schema} uiSchema={uiSchema} validator={validator} widgets={widgets} />,
229
+ document.getElementById('app'),
230
+ );
231
+ ```
232
+
233
+ # Template Customization
234
+
235
+ ## BaseInputTemplate
236
+
237
+ The `BaseInputTemplate` serves as the template for rendering the basic `<input>` component within a theme in React JSON Form (rjfs). It acts as the foundation for rendering various `<input>`-based widgets that may differ by type and callbacks only.
238
+
239
+ For example, the `TextWidget` implementation in the core is essentially a wrapper around `BaseInputTemplate`, obtained from the registry. Each theme can implement its own version of `BaseInputTemplate` without requiring a different implementation for `TextWidget`.
240
+
241
+ If you wish to customize the implementation for `<input>`-based widgets, you can modify this template. For instance, if you have a `CustomTextInput` component that you want to integrate:
242
+
243
+ ```jsx
244
+ import { ChangeEvent, FocusEvent } from 'react';
245
+ import { getInputProps, RJSFSchema, BaseInputTemplateProps } from '@rjsf/utils';
246
+ import validator from '@rjsf/validator-ajv8';
247
+
248
+ import CustomTextInput from '../CustomTextInput';
249
+
250
+ const schema: RJSFSchema = {
251
+ type: 'string',
252
+ title: 'My input',
253
+ description: 'Input description',
254
+ };
255
+
256
+ function BaseInputTemplate(props: BaseInputTemplateProps) {
257
+ const {
258
+ schema,
259
+ id,
260
+ options,
261
+ label,
262
+ value,
263
+ type,
264
+ placeholder,
265
+ required,
266
+ disabled,
267
+ readonly,
268
+ autofocus,
269
+ onChange,
270
+ onChangeOverride,
271
+ onBlur,
272
+ onFocus,
273
+ rawErrors,
274
+ hideError,
275
+ uiSchema,
276
+ registry,
277
+ formContext,
278
+ ...rest
279
+ } = props;
280
+ const onTextChange = ({ target: { value: val } }: ChangeEvent<HTMLInputElement>) => {
281
+ // Use the options.emptyValue if it is specified and newVal is also an empty string
282
+ onChange(val === '' ? options.emptyValue || '' : val);
283
+ };
284
+ const onTextBlur = ({ target: { value: val } }: FocusEvent<HTMLInputElement>) => onBlur(id, val);
285
+ const onTextFocus = ({ target: { value: val } }: FocusEvent<HTMLInputElement>) => onFocus(id, val);
286
+
287
+ const inputProps = { ...rest, ...getInputProps(schema, type, options) };
288
+ const hasError = rawErrors.length > 0 && !hideError;
289
+
290
+ return (
291
+ <CustomTextInput
292
+ id={id}
293
+ label={label}
294
+ value={value}
295
+ placeholder={placeholder}
296
+ disabled={disabled}
297
+ readOnly={readonly}
298
+ autoFocus={autofocus}
299
+ error={hasError}
300
+ errors={hasError ? rawErrors : undefined}
301
+ onChange={onChangeOverride || onTextChange}
302
+ onBlur={onTextBlur}
303
+ onFocus={onTextFocus}
304
+ {...inputProps}
305
+ />
306
+ );
307
+ }
308
+
309
+ render(
310
+ <Form schema={schema} validator={validator} templates={{ BaseInputTemplate }} />,
311
+ document.getElementById('app'),
312
+ );
313
+ ```
314
+
315
+ In some cases, you may need to pass additional properties to the existing `BaseInputTemplate`. The approach varies based on whether you are using the core or some other theme, such as mui:
316
+
317
+ ```jsx
318
+ import { BaseInputTemplateProps } from '@rjsf/utils';
319
+ import { getDefaultRegistry } from '@rjsf/core';
320
+ import { Templates } from '@rjsf/mui';
321
+
322
+ const {
323
+ templates: { BaseInputTemplate },
324
+ } = getDefaultRegistry(); // To get templates from core
325
+ // const { BaseInputTemplate } = Templates; // To get templates from a theme do this
326
+
327
+ function MyBaseInputTemplate(props: BaseInputTemplateProps) {
328
+ const customProps = {};
329
+ // get your custom props from where you need to
330
+ return <BaseInputTemplate {...props} {...customProps} />;
331
+ }
332
+ ```
333
+
334
+ For more detailed documentation, you can refer to [React JSONSchema Form Docs](https://rjsf-team.github.io/react-jsonschema-form/docs).
@@ -0,0 +1,334 @@
1
+ # SlotFill Plugin System Documentation
2
+
3
+ ## Overview
4
+
5
+ The SlotFill Plugin system is a dynamic mechanism used to inject and manage UI components in a highly modularized and pluggable way. This document explains the SlotFill concept, its purpose, how to use it, and provides examples of its implementation.
6
+
7
+ ## What is SlotFill?
8
+
9
+ The SlotFill system allows developers to define "Slots" in the UI where "Fills" can be dynamically injected. This pattern is commonly used to extend the functionality of an application without directly modifying its core components. Slots act as placeholders, while Fills are the components rendered in those placeholders.
10
+
11
+ ## Key Components
12
+
13
+ ### 1. Slot
14
+
15
+ A Slot is a placeholder that defines where UI components (Fills) will be rendered.
16
+
17
+ ### 2. Fill
18
+
19
+ A Fill is the actual UI component that is injected into the Slot.
20
+
21
+ ## Implementation Details
22
+
23
+ The SlotFill system is implemented using the `@common-stack/components-pro` library, which provides Slot and Fill components.
24
+
25
+ ## Example: Creating a Slot and Fill
26
+
27
+ Here's an example of creating a Slot and Fill for a dashboard:
28
+
29
+ ```tsx
30
+ import * as React from 'react';
31
+ import { Fill, Slot } from '@common-stack/components-pro';
32
+ import { SlotFillEnum } from 'common';
33
+
34
+ // Use the generated enum instead of hardcoded strings
35
+ export const DashboardSlot = (props) => {
36
+ return <Slot name={SlotFillEnum.DASHBOARD_SLOT_FILL} fillProps={{ active: true, ...props }} />;
37
+ };
38
+
39
+ export const DashboardFill = ({ children, ...rest }) => {
40
+ return (
41
+ <Fill {...rest} name={SlotFillEnum.DASHBOARD_SLOT_FILL}>
42
+ {children}
43
+ </Fill>
44
+ );
45
+ };
46
+ ```
47
+
48
+ ## Usage Example
49
+
50
+ To use the DashboardSlot and DashboardFill, follow these steps:
51
+
52
+ ### Step 1: Define the Slot
53
+
54
+ Include the DashboardSlot component in your application where you want the UI components to appear.
55
+
56
+ ```tsx
57
+ <DashboardSlot />
58
+ ```
59
+
60
+ ### Step 2: Create a Fill
61
+
62
+ Create a UI component that uses the DashboardFill to render its content.
63
+
64
+ ```tsx
65
+ <DashboardFill>
66
+ <div>Your dynamic content here</div>
67
+ </DashboardFill>
68
+ ```
69
+
70
+ ## Advanced SlotFill Integration
71
+
72
+ For more dynamic use cases, such as integrating with route-based plugins, you can use the WithPluginArea component:
73
+
74
+ ```tsx
75
+ import { RouteBasedPluginArea, registerRouteBasePlugin, unregisterRouteBasePlugin } from '@common-stack/client-react';
76
+
77
+ export const WithPluginArea = (props: IWithPluginArea): React.ReactElement => {
78
+ const { baseRoute, fillsToRegister, shouldRenderRoutes = true } = props;
79
+ const [registerFill, setRegisterFill] = useState<IFill>();
80
+ const location = useLocation();
81
+
82
+ useLayoutEffect(() => {
83
+ const { pathname } = location;
84
+ const fillName = pathname.split('/').pop();
85
+ const fillToRegister = fillsToRegister.find(({ name }) => name === fillName);
86
+
87
+ if (fillToRegister) {
88
+ registerRouteBasePlugin(fillToRegister.name, {
89
+ ...fillToRegister,
90
+ render: () => prepareFill(fillToRegister),
91
+ });
92
+ setRegisterFill(fillToRegister);
93
+ }
94
+
95
+ return () => {
96
+ if (registerFill) {
97
+ unregisterRouteBasePlugin(registerFill.name);
98
+ setRegisterFill(undefined);
99
+ }
100
+ };
101
+ }, [location]);
102
+
103
+ if (!registerFill) {
104
+ return <></>;
105
+ }
106
+
107
+ return (
108
+ <>
109
+ <RouteBasedPluginArea />
110
+ {shouldRenderRoutes &&
111
+ fillsToRegister.map((fill) => (
112
+ <Route
113
+ key={fill.name}
114
+ path={`${baseRoute}${fill.name}`}
115
+ element={<Slot name={fill.name} fillProps={{ active: true }} />}
116
+ />
117
+ ))}
118
+ </>
119
+ );
120
+ };
121
+ ```
122
+
123
+ ## Naming Convention and Enum Types
124
+
125
+ When working with the SlotFill system, it's important to understand the distinction between two different enum types:
126
+
127
+ 1. **SlotFillPluginName**:
128
+ - Used specifically for plugin identification in Feature components
129
+ - Ensures uniqueness when multiple features are merged
130
+ - Used in the `componentFillPlugins` array of a Feature
131
+
132
+ 2. **SlotFillEnum**:
133
+ - Used for slot and fill name identification
134
+ - Ensures consistent naming between matching slots and fills
135
+ - Used in the `name` prop of Slot and Fill components
136
+
137
+ ### Example: Using the Correct Enum Types
138
+
139
+ ```tsx
140
+ // In Feature definition
141
+ import { Feature } from '@common-stack/client-react';
142
+ import { SlotFillPluginName } from 'common';
143
+ import { AsanaIntegrationFill } from './components/Asana/AsanaIntegrationFill';
144
+
145
+ export default new Feature({
146
+ componentFillPlugins: [
147
+ {
148
+ // Use SlotFillPluginName for unique plugin identification
149
+ name: SlotFillPluginName.ASANA_INTEGRATION_PLUGIN,
150
+ render: AsanaIntegrationFill,
151
+ },
152
+ ],
153
+ });
154
+
155
+ // In Slot and Fill components
156
+ import { Slot, Fill } from '@common-stack/components-pro';
157
+ import { SlotFillEnum } from 'common';
158
+
159
+ // Use SlotFillEnum for Slot name
160
+ export const AsanaIntegrationsSlot = (props) => {
161
+ return <Slot name={SlotFillEnum.ASANA_INTEGRATION_SLOT_FILL} fillProps={{ active: true, ...props }} />;
162
+ };
163
+
164
+ // Use matching SlotFillEnum for Fill name to match its slot
165
+ export const AsanaIntegrationFill = ({ children, ...rest }) => {
166
+ return (
167
+ <Fill name={SlotFillEnum.ASANA_INTEGRATION_SLOT_FILL} {...rest}>
168
+ {children}
169
+ </Fill>
170
+ );
171
+ };
172
+ ```
173
+
174
+ ## Benefits of Using SlotFill
175
+
176
+ - **Modularity**: Easily extend and modify UI components without changing core code.
177
+ - **Dynamic Loading**: Inject components dynamically based on routes or conditions.
178
+ - **Reusability**: Use the same SlotFill components across different parts of the application.
179
+
180
+ ## Integrating SlotFill with the Feature Component
181
+
182
+ The `Feature` component allows you to dynamically register components into predefined slots using `componentFillPlugins`. This is used to organize and inject UI components into specific areas defined by the application.
183
+
184
+ ### Purpose
185
+
186
+ By passing `componentFillPlugins` into a `Feature`, you can dynamically inject components into predefined slots. Each plugin is identified by a unique name and renders a specified component.
187
+
188
+ ### Example: Defining a Feature with Component Fill Plugins
189
+
190
+ Here's an example of a `Feature` that uses `componentFillPlugins`:
191
+
192
+ ```typescript
193
+ import { Feature } from '@common-stack/client-react';
194
+ import { SlotFillPluginName } from 'common';
195
+ import { AsanaIntegrationFill } from './components/Asana/AsanaIntegrationFill';
196
+ import { PasswordHandlerFill } from './components/Password/PasswordHandlerFill';
197
+
198
+ export default new Feature({
199
+ componentFillPlugins: [
200
+ {
201
+ name: SlotFillPluginName.ASANA_INTEGRATION_SLOT_FILL,
202
+ render: AsanaIntegrationFill,
203
+ },
204
+ {
205
+ name: SlotFillPluginName.PASSWORD_HANDLER_SLOT_FILL,
206
+ render: PasswordHandlerFill,
207
+ },
208
+ ],
209
+ });
210
+ ```
211
+
212
+ ### Key Points
213
+
214
+ 1. **`componentFillPlugins` Array**:
215
+ - Each plugin is an object with the following properties:
216
+ - `name`: A unique identifier for the slot where the component will be injected.
217
+ - `render`: The React component to render in the slot.
218
+
219
+ Example:
220
+
221
+ ```typescript
222
+ {
223
+ name: SlotFillPluginName.ASANA_INTEGRATION_SLOT_FILL,
224
+ render: AsanaIntegrationFill,
225
+ }
226
+ ```
227
+
228
+ 2. **Predefined Slot Names**:
229
+ - Slot names like `ASANA_INTEGRATION_SLOT_FILL` are defined in the SlotFillPluginName enum and map to specific areas in the application where components can be injected.
230
+
231
+ 3. **Dynamic Component Injection**:
232
+ - The `Feature` dynamically registers and renders these components in the corresponding slots at runtime.
233
+
234
+ ### Example: Integration with Slots and Fills
235
+
236
+ Using SlotFillEnum for slot and fill components:
237
+
238
+ #### Defining the Slot
239
+
240
+ ```tsx
241
+ import { Slot } from '@common-stack/components-pro';
242
+ import { SlotFillEnum } from 'common';
243
+
244
+ export const AsanaIntegrationsSlot = (props) => {
245
+ return <Slot name={SlotFillEnum.ASANA_INTEGRATION_SLOT_FILL} fillProps={{ active: true, ...props }} />;
246
+ };
247
+ ```
248
+
249
+ #### Defining the Fill
250
+
251
+ ```tsx
252
+ import { Fill } from '@common-stack/components-pro';
253
+ import { SlotFillEnum } from 'common';
254
+
255
+ export const AsanaIntegrationFill = ({ children, ...rest }) => {
256
+ return (
257
+ <Fill name={SlotFillEnum.ASANA_INTEGRATION_SLOT_FILL} {...rest}>
258
+ {children}
259
+ </Fill>
260
+ );
261
+ };
262
+ ```
263
+
264
+ ## Managing SlotFill Plugin Names with GraphQL Codegen
265
+
266
+ To ensure that SlotFill plugin names are generated from GraphQL Codegen and added to the `extend enum SlotFillPluginName`, follow these steps:
267
+
268
+ ### Purpose
269
+
270
+ By centralizing SlotFillPluginName definitions in an extended GraphQL enum, you ensure:
271
+
272
+ - **Consistency**: All plugin names are defined in one place.
273
+ - **Maintainability**: Developers can easily locate and update plugin names.
274
+ - **Automation**: Plugin names are automatically generated alongside other GraphQL types.
275
+
276
+ ### Implementation Steps
277
+
278
+ #### 1. Define the SlotFillPluginName Enum in Your GraphQL Schema
279
+
280
+ Add an enum definition to your GraphQL schema to list all plugin names:
281
+
282
+ ```graphql
283
+ extend enum SlotFillPluginName {
284
+ DASHBOARD_SLOT_FILL
285
+ PAYMENT_INTEGRATIONS_SLOT_FILL
286
+ GITHUB_INTEGRATION_CONFIG_SLOT_FILL
287
+ # Add other plugin names here
288
+ }
289
+ ```
290
+
291
+ #### 3. Generate Plugin Names Using GraphQL Code Generator
292
+
293
+ Update your GraphQL Codegen configuration to include the SlotFillPluginName enum in the generated types.
294
+
295
+ run `yarn generateGraphql`
296
+
297
+ This will ensure the SlotFillPluginName is included in the generated TypeScript types.
298
+
299
+ #### 4. Use Generated Enums in Your Codebase
300
+
301
+ ❌ **DO NOT** use hardcoded strings for slot names or plugin identifiers:
302
+
303
+ ```typescript
304
+ // AVOID: Don't use hardcoded strings for slot names
305
+ <Slot name="dashboard-slot-fill" />
306
+
307
+ // AVOID: Don't use hardcoded strings for plugin names
308
+ componentFillPlugins: [{ name: "dashboard-plugin" }]
309
+ ```
310
+
311
+ ✅ **DO** use the generated enum values from GraphQL:
312
+
313
+ ```typescript
314
+ // For Slot and Fill components
315
+ import { SlotFillEnum } from 'common';
316
+ <Slot name={SlotFillEnum.DASHBOARD_SLOT_FILL} />
317
+
318
+ // For Feature componentFillPlugins
319
+ import { SlotFillPluginName } from 'common';
320
+ componentFillPlugins: [{ name: SlotFillPluginName.DASHBOARD_PLUGIN }]
321
+ ```
322
+
323
+ #### 5. Validate the Centralization
324
+
325
+ Ensure all plugin names are defined and used through the SlotFillPluginName enum. You can do this by:
326
+
327
+ - Searching for hardcoded plugin names in your codebase.
328
+ - Replacing them with references to the generated enum.
329
+
330
+ ### Benefits of This Approach
331
+
332
+ - **Single Source of Truth**: All SlotFill plugin names exist in one place, the GraphQL schema.
333
+ - **Code Quality**: By using enums, you reduce the risk of typos or inconsistencies.
334
+ - **Automation**: GraphQL Codegen ensures enums are up-to-date and accurately represented in your codebase.
@@ -0,0 +1,31 @@
1
+ ---
2
+ meta:
3
+ title: Facebook Setup
4
+ description: Facebook Setup
5
+ date: '2023-06-02T00:00:00'
6
+ updated: '2024-06-02T00:00:00'
7
+ excerpt: Facebook Setup ...
8
+ headers:
9
+ Cache-Control: no-cache
10
+ ---
11
+
12
+ # Facebook Setup
13
+
14
+ Inorder to setup facebook login for application. Following steps should be followed.
15
+
16
+ 1. Login to https://developers.facebook.com
17
+ 2. Setup a application by clicking on create new application.
18
+ 3. Once setup, Click on Facebook/settings from sidebar.
19
+ 4. Set `Embedded Browser OAuth Login` option to true.
20
+ 5. Under Valid OAuth Redirect URIs set `https://dev-cdebase.auth0.com/login/callback`
21
+ 6. Save the settings.
22
+ 7. Copy the client_id and client_secret from Settings/Basic option available in sidebar and setup the integration on auth0 social accounts.
23
+
24
+ # Troubleshoot
25
+
26
+ ```
27
+ [11:26 PM] Redirect uri should be same on frontend and backend "AUTH0_NATIVE_REDIRECT_URL":"myapp://redirect",
28
+ Check for AUTH0_NATIVE_CLIENT_ID it should be same on backend and frontend
29
+ Check for AUTH0_TOKEN_GRANTED_TIME and DEFAULT_EXTENDED_RENEWAL_TIME
30
+ Check for AUTH0_CUSTOM_DOMAIN needs to be a valid domain also should be same on frontend and backend`
31
+ ```