@fernir2/saas-kit-cli 0.1.4 → 0.1.5

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 (303) hide show
  1. package/package.json +211 -7
  2. package/cli/.gitlab-ci.yml +0 -14
  3. package/cli/.husky/commit-msg +0 -1
  4. package/cli/.husky/pre-commit +0 -1
  5. package/cli/README.md +0 -101
  6. package/cli/bin/index.ts +0 -358
  7. package/cli/drizzle.config.ts +0 -12
  8. package/cli/global-setup.ts +0 -25
  9. package/cli/npm-commands/gen-meta/index.ts +0 -3
  10. package/cli/npm-commands/gen-schema/index.ts +0 -5
  11. package/cli/npm-commands/migrate-db/index.ts +0 -5
  12. package/cli/npm-commands/migrate-db/migrate-db.ts +0 -15
  13. package/cli/npm-commands/seed-db/index.ts +0 -5
  14. package/cli/npm-commands/seed-db/seed-db.ts +0 -15
  15. package/cli/playwright.config.ts +0 -34
  16. package/cli/postcss.config.mjs +0 -9
  17. package/cli/server.ts +0 -41
  18. package/cli/src/app/api/v1/[resourceName]/[id]/route.ts/route.ts +0 -11
  19. package/cli/src/app/api/v1/[resourceName]/route.ts/route.ts +0 -14
  20. package/cli/src/app/api/v1/[resourceName]/upsert/route.ts/route.ts +0 -3
  21. package/cli/src/app/api/v1/log/route.ts/route.ts +0 -7
  22. package/cli/src/app/api/v1/otheruser/[id]/route.ts/route.ts +0 -14
  23. package/cli/src/app/api/v1/otheruser/route.ts/route.ts +0 -7
  24. package/cli/src/app/api/v1/password/forgotpassword/route.ts/route.ts +0 -3
  25. package/cli/src/app/api/v1/password/resetpassword/route.ts/route.ts +0 -3
  26. package/cli/src/app/api/v1/payment/method/route.ts/route.ts +0 -4
  27. package/cli/src/app/api/v1/payment/route.ts/route.ts +0 -3
  28. package/cli/src/app/api/v1/payment/verify-fail/route.ts/route.ts +0 -3
  29. package/cli/src/app/api/v1/payment/verify-success/route.ts/route.ts +0 -3
  30. package/cli/src/app/api/v1/preload/route.ts/route.ts +0 -3
  31. package/cli/src/app/api/v1/searchable-resources/route.ts/route.ts +0 -11
  32. package/cli/src/app/api/v1/searchresult/route.ts/route.ts +0 -35
  33. package/cli/src/app/api/v1/sign-in/route.ts/route.ts +0 -3
  34. package/cli/src/app/api/v1/sign-out/route.ts/route.ts +0 -3
  35. package/cli/src/app/api/v1/sign-up/route.ts/route.ts +0 -3
  36. package/cli/src/app/api/v1/subscription/cancel/route.ts/route.ts +0 -3
  37. package/cli/src/app/api/v1/subscription/create/route.ts/route.ts +0 -3
  38. package/cli/src/app/api/v1/subscription/update/route.ts/route.ts +0 -3
  39. package/cli/src/app/api/v1/uimeta/route.ts/route.ts +0 -3
  40. package/cli/src/app/api/v1/uimetas/route.ts/route.ts +0 -3
  41. package/cli/src/app/api/v1/userpermission/route.ts/route.ts +0 -3
  42. package/cli/src/app/api/v1/visible-workspace/route.ts/route.ts +0 -5
  43. package/cli/src/app/api/v1/workspace/change/route.ts/route.ts +0 -5
  44. package/cli/src/app/favicon.ico +0 -0
  45. package/cli/src/app/layout.tsx +0 -42
  46. package/cli/src/app/page.tsx +0 -9
  47. package/cli/tailwind.config.ts +0 -13
  48. package/packages/base-repo/tools/git/commit-msg-script.ts +0 -42
  49. package/packages/base-repo/tools/git/pre-commit-script.ts +0 -431
  50. package/packages/level2/client/components/error-fallback/FdErrorFallback.jsx +0 -14
  51. package/packages/level2/client/components/feed/FdFeed.funcs.jsx +0 -65
  52. package/packages/level2/client/components/feed/FdFeed.jsx +0 -34
  53. package/packages/level2/client/components/feed/FdFeedActions.jsx +0 -15
  54. package/packages/level2/client/components/feed/FdFeedComments.jsx +0 -6
  55. package/packages/level2/client/components/feed/FdFeedEntry.jsx +0 -36
  56. package/packages/level2/client/components/feed/FdFeedHeader.jsx +0 -23
  57. package/packages/level2/client/components/feed/FdFeedReactionsSummary.jsx +0 -16
  58. package/packages/level2/client/components/providers/FdProviders.jsx +0 -28
  59. package/packages/level2/client/components/subscription-plan/FdSubscriptionPlan.jsx +0 -163
  60. package/packages/level2/client/components/wizard/FdWizard.jsx +0 -45
  61. package/packages/level2/client/components/wizard/FdWizardStepper.jsx +0 -55
  62. package/packages/level2/client/pages/dashboard-page/DashbordPage.jsx +0 -46
  63. package/packages/level2/client/pages/dynamic-layout-page/DynamicLayoutPage.jsx +0 -22
  64. package/packages/level2/client/pages/edit-password-page/EditPasswordPage.jsx +0 -8
  65. package/packages/level2/client/pages/edit-user-by-id-page/EditUserByIdPage.jsx +0 -14
  66. package/packages/level2/client/pages/edit-user-page/EditUserPage.jsx +0 -6
  67. package/packages/level2/client/pages/feed-page/FeedPage.jsx +0 -8
  68. package/packages/level2/client/pages/file-upload-page/FileUploadPage.jsx +0 -7
  69. package/packages/level2/client/pages/forgot-password-page/ForgotPasswordPage.jsx +0 -8
  70. package/packages/level2/client/pages/leads-viw-page/LeadsViewPage.jsx +0 -6
  71. package/packages/level2/client/pages/microsoft-page/MicrosoftPage.jsx +0 -16
  72. package/packages/level2/client/pages/payment-plan-page/PaymentPlanPage.jsx +0 -18
  73. package/packages/level2/client/pages/preload-page/PreloadPage.jsx +0 -25
  74. package/packages/level2/client/pages/reset-password-page/ResetPasswordPage.jsx +0 -8
  75. package/packages/level2/client/pages/screenshot-page/TestScreenshotPage.jsx +0 -23
  76. package/packages/level2/client/pages/sign-in-page/SignInPage.jsx +0 -24
  77. package/packages/level2/client/pages/sign-up-page/SignUpPage.jsx +0 -9
  78. package/packages/level2/client/pages/status-board-page/StatusBoardPage.jsx +0 -6
  79. package/packages/level2/client/pages/test-layout/TestLayout.jsx +0 -11
  80. package/packages/level2/client/pages/test-page/TestPage.jsx +0 -12
  81. package/packages/level2/client/pages/user-list-page/UserListPage.jsx +0 -4
  82. package/packages/level2/client/pages/view-page/ViewPage.jsx +0 -21
  83. package/packages/level2/client/payments/change-payment-method-field/ChangePaymentMethodField.jsx +0 -48
  84. package/packages/level2/client/payments/checkout-form/CheckoutForm.jsx +0 -95
  85. package/packages/level2/client/payments/checkout-form/CheckoutFormSubmit.jsx +0 -11
  86. package/packages/level2/client/payments/checkout-form/checkout-form-fields.jsx +0 -68
  87. package/packages/level2/client/website-scan/FdWebsiteScanResult.funcs.jsx +0 -12
  88. package/packages/level2/client/website-scan/FdWebsiteScanResult.jsx +0 -33
  89. package/packages/level2/client/website-scan/website-scan-data.jsx +0 -28
  90. package/packages/level2/client/website-scan/website-scan-icons/FacebookIcon.jsx +0 -6
  91. package/packages/level2/client/website-scan/website-scan-icons/FacebookPixelIcon.jsx +0 -49
  92. package/packages/level2/client/website-scan/website-scan-icons/GoogleAnalyticsIcon.jsx +0 -7
  93. package/packages/level2/client/website-scan/website-scan-icons/InstagramIcon.jsx +0 -32
  94. package/packages/level2/client/website-scan/website-scan-icons/LinkedinIcon.jsx +0 -6
  95. package/packages/level2/client/website-scan/website-scan-icons/OtherPlatformIcon.jsx +0 -110
  96. package/packages/level2/client/website-scan/website-scan-icons/ShopifyIcon.jsx +0 -46
  97. package/packages/level2/client/website-scan/website-scan-icons/SquarespaceIcon.jsx +0 -57
  98. package/packages/level2/client/website-scan/website-scan-icons/TiktokIcon.jsx +0 -15
  99. package/packages/level2/client/website-scan/website-scan-icons/WixIcon.jsx +0 -62
  100. package/packages/level2/client/website-scan/website-scan-icons/WordpressIcon.jsx +0 -53
  101. package/packages/level2/client/website-scan/website-scan-icons/XIcon.jsx +0 -6
  102. package/packages/level2/fd-app-toolbox/edit-other-user/EditOtherUser.jsx +0 -7
  103. package/packages/level2/fd-app-toolbox/edit-password-form/EditPasswordForm.jsx +0 -68
  104. package/packages/level2/fd-app-toolbox/edit-user-form/EditUserForm.jsx +0 -122
  105. package/packages/level2/fd-app-toolbox/edit-user-sheet/EditUserSheet.jsx +0 -35
  106. package/packages/level2/fd-app-toolbox/forgot-password-form/ForgotPasswordForm.jsx +0 -87
  107. package/packages/level2/fd-app-toolbox/layout/client-layout/ClientLayout.jsx +0 -19
  108. package/packages/level2/fd-app-toolbox/layout/client-root/ClientRoot.jsx +0 -32
  109. package/packages/level2/fd-app-toolbox/layout/hamburger-menu/FdHamburgerMenu.jsx +0 -47
  110. package/packages/level2/fd-app-toolbox/layout/navbar/FdNarrowNavbar.jsx +0 -40
  111. package/packages/level2/fd-app-toolbox/layout/sidebar/FdSidebar.jsx +0 -48
  112. package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-dropdown-menu/FdDropdownMenuItemTitle.jsx +0 -12
  113. package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-dropdown-menu/FdSidebarDropdownMenu.jsx +0 -81
  114. package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-resources-provider.jsx +0 -30
  115. package/packages/level2/fd-app-toolbox/layout/toolbar/FdToolbar.jsx +0 -89
  116. package/packages/level2/fd-app-toolbox/layout/toolbar/FdTopNav.jsx +0 -42
  117. package/packages/level2/fd-app-toolbox/layout/toolbar/title-provider/ToolbarTitleProvider.jsx +0 -10
  118. package/packages/level2/fd-app-toolbox/login-form/LoginForm.jsx +0 -165
  119. package/packages/level2/fd-app-toolbox/menu/notifications-menu/FdNotificationMenu.jsx +0 -43
  120. package/packages/level2/fd-app-toolbox/menu/notifications-menu/notification-list/FdNotificationList.jsx +0 -53
  121. package/packages/level2/fd-app-toolbox/menu/top-menu/FdTopMenu.jsx +0 -28
  122. package/packages/level2/fd-app-toolbox/menu/top-menu/top-menu-group/FdTopMenuGroup.jsx +0 -35
  123. package/packages/level2/fd-app-toolbox/menu/top-menu/top-menu-item/FdTopMenuItem.jsx +0 -47
  124. package/packages/level2/fd-app-toolbox/menu/user-dropdown-menu/FdUserDropdownMenu.jsx +0 -122
  125. package/packages/level2/fd-app-toolbox/menu/user-dropdown-menu/user-dropdown-menu-item/FdUserDropdownMenuItem.jsx +0 -56
  126. package/packages/level2/fd-app-toolbox/menu/visible-workspace-picker/FdVisibleWorkspacePicker.jsx +0 -36
  127. package/packages/level2/fd-app-toolbox/menu/workspace-picker/FdWorkspacePicker.jsx +0 -47
  128. package/packages/level2/fd-app-toolbox/providers/ThemeProvider/ThemeProvider.jsx +0 -27
  129. package/packages/level2/fd-app-toolbox/providers/auth-provider/AuthProvider.jsx +0 -38
  130. package/packages/level2/fd-app-toolbox/providers/sidebar-provider/FdSidebarContext.jsx +0 -17
  131. package/packages/level2/fd-app-toolbox/register-form/RegisterForm.jsx +0 -119
  132. package/packages/level2/fd-app-toolbox/report/FdChart.jsx +0 -120
  133. package/packages/level2/fd-app-toolbox/report/ReportChart.jsx +0 -29
  134. package/packages/level2/fd-app-toolbox/reset-password-form/ResetPasswordForm.jsx +0 -81
  135. package/packages/level2/fd-app-toolbox/search/FdSearch.jsx +0 -56
  136. package/packages/level2/fd-app-toolbox/search/search-dialog/FdSearchDialog.jsx +0 -72
  137. package/packages/level2/fd-app-toolbox/search/search-dialog-provider.jsx +0 -16
  138. package/packages/level2/fd-app-toolbox/search/search-input/FdSearchInput.jsx +0 -49
  139. package/packages/level2/fd-app-toolbox/search/search-resource-results/FdSearchResourcesResults.jsx +0 -36
  140. package/packages/level2/fd-app-toolbox/search/search-result/FdSearchResult.jsx +0 -46
  141. package/packages/level2/fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResult.jsx +0 -43
  142. package/packages/level2/fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResults.jsx +0 -22
  143. package/packages/level2/fd-app-toolbox/server/layout/private-layout/PrivateLayout.jsx +0 -32
  144. package/packages/level2/fd-app-toolbox/status-board/FdStatusBoard.jsx +0 -49
  145. package/packages/level2/fd-app-toolbox/status-board/status-board-item/FdStatusBoardItem.jsx +0 -17
  146. package/packages/level2/fd-app-toolbox/status-board/status-board-status/FdStatusBoardStatus.jsx +0 -27
  147. package/packages/level2/fd-app-toolbox/user-list/UserList.jsx +0 -58
  148. package/packages/level2/fd-component-toolbox/animation/FdLabelAnimation.jsx +0 -55
  149. package/packages/level2/fd-component-toolbox/avatar/FdAvatar.jsx +0 -50
  150. package/packages/level2/fd-component-toolbox/back-button/FdBackButton.jsx +0 -21
  151. package/packages/level2/fd-component-toolbox/badge/FdBadge.jsx +0 -19
  152. package/packages/level2/fd-component-toolbox/badge-toggle-list/FdBadgeToggleList.jsx +0 -47
  153. package/packages/level2/fd-component-toolbox/button/FdButton.jsx +0 -64
  154. package/packages/level2/fd-component-toolbox/calendar/FdCalendar.jsx +0 -68
  155. package/packages/level2/fd-component-toolbox/card/FdCard.jsx +0 -56
  156. package/packages/level2/fd-component-toolbox/card/FdCardBigDigits.jsx +0 -25
  157. package/packages/level2/fd-component-toolbox/chart/FdChart.jsx +0 -269
  158. package/packages/level2/fd-component-toolbox/checkbox/FdCheckbox.jsx +0 -39
  159. package/packages/level2/fd-component-toolbox/command/FdCommand.jsx +0 -123
  160. package/packages/level2/fd-component-toolbox/datepicker/FdDatePicker.jsx +0 -155
  161. package/packages/level2/fd-component-toolbox/dialog/FdDialog.jsx +0 -106
  162. package/packages/level2/fd-component-toolbox/dialog/YesOrNoDialog.jsx +0 -57
  163. package/packages/level2/fd-component-toolbox/drag-and-drop/FdDragDropContext.jsx +0 -19
  164. package/packages/level2/fd-component-toolbox/drag-and-drop/FdDraggable.jsx +0 -27
  165. package/packages/level2/fd-component-toolbox/drag-and-drop/FdDroppable.jsx +0 -22
  166. package/packages/level2/fd-component-toolbox/dropdown-menu/FdDropdownMenu.jsx +0 -198
  167. package/packages/level2/fd-component-toolbox/dynamic-layout/FdDynamicComponent.jsx +0 -27
  168. package/packages/level2/fd-component-toolbox/dynamic-layout/FdDynamicLayoutDragAndDrop.jsx +0 -78
  169. package/packages/level2/fd-component-toolbox/fade-out-text/FdFadeOutText.jsx +0 -52
  170. package/packages/level2/fd-component-toolbox/form/FdForm.jsx +0 -146
  171. package/packages/level2/fd-component-toolbox/icon/FdIcon.jsx +0 -192
  172. package/packages/level2/fd-component-toolbox/icon/custom-icons/FdFilterIcon.jsx +0 -11
  173. package/packages/level2/fd-component-toolbox/image/FdImage.jsx +0 -15
  174. package/packages/level2/fd-component-toolbox/input/FdInput.jsx +0 -94
  175. package/packages/level2/fd-component-toolbox/label/FdLabel.jsx +0 -19
  176. package/packages/level2/fd-component-toolbox/link/FdLink.jsx +0 -23
  177. package/packages/level2/fd-component-toolbox/list/FdList.jsx +0 -20
  178. package/packages/level2/fd-component-toolbox/list/list-item/FdListItem.jsx +0 -46
  179. package/packages/level2/fd-component-toolbox/loading/FdLoadingIndicator.jsx +0 -7
  180. package/packages/level2/fd-component-toolbox/logos/FacebookLogo.jsx +0 -11
  181. package/packages/level2/fd-component-toolbox/logos/GoogleLogo.jsx +0 -12
  182. package/packages/level2/fd-component-toolbox/logos/MicrosoftLogo.jsx +0 -11
  183. package/packages/level2/fd-component-toolbox/markdown/FdMarkdown.jsx +0 -105
  184. package/packages/level2/fd-component-toolbox/markdown/markdown-parser.jsx +0 -72
  185. package/packages/level2/fd-component-toolbox/multiselect/FdMultiselect.jsx +0 -240
  186. package/packages/level2/fd-component-toolbox/navigation/FdNavigation.jsx +0 -43
  187. package/packages/level2/fd-component-toolbox/navigation/navigation-item/FdNavigationItem.jsx +0 -23
  188. package/packages/level2/fd-component-toolbox/radio-group/FdRadioGroup.jsx +0 -46
  189. package/packages/level2/fd-component-toolbox/rich-text/FdRichText.jsx +0 -58
  190. package/packages/level2/fd-component-toolbox/save-status/FdSaveStatus.jsx +0 -40
  191. package/packages/level2/fd-component-toolbox/select/FdSelect.jsx +0 -173
  192. package/packages/level2/fd-component-toolbox/separator/FdSeparator.jsx +0 -19
  193. package/packages/level2/fd-component-toolbox/sheet/FdSheet.jsx +0 -121
  194. package/packages/level2/fd-component-toolbox/slide-toggle/FdSlideToggle.jsx +0 -57
  195. package/packages/level2/fd-component-toolbox/spinner/Spinner.jsx +0 -36
  196. package/packages/level2/fd-component-toolbox/subheading/FdSubHeading.jsx +0 -12
  197. package/packages/level2/fd-component-toolbox/switch/FdSwitch.jsx +0 -55
  198. package/packages/level2/fd-component-toolbox/tabs/FdTabs.jsx +0 -53
  199. package/packages/level2/fd-component-toolbox/textarea/FdTextArea.jsx +0 -42
  200. package/packages/level2/fd-component-toolbox/toaster/FdToaster.jsx +0 -20
  201. package/packages/level2/fd-component-toolbox/tooltip/FdTooltip.jsx +0 -80
  202. package/packages/level2/meta/browsers/base-multi-browser/FdBaseMultiBrowser.jsx +0 -72
  203. package/packages/level2/meta/browsers/base-multi-browser/base-multi-browser-dialog/FdBaseMultiBrowserDialog.jsx +0 -159
  204. package/packages/level2/meta/browsers/browser/FdBrowser.jsx +0 -58
  205. package/packages/level2/meta/browsers/browser/browser-dialog/FdBrowserDialog.jsx +0 -89
  206. package/packages/level2/meta/browsers/many-to-many-browser/FdManyToManyBrowser.jsx +0 -33
  207. package/packages/level2/meta/browsers/multi-browser/FdMultiBrowser.jsx +0 -32
  208. package/packages/level2/meta/card-list/FdCardList.jsx +0 -40
  209. package/packages/level2/meta/card-list/card/FdCard.jsx +0 -44
  210. package/packages/level2/meta/card-list/card/action-block/FdCardActionBlock.jsx +0 -70
  211. package/packages/level2/meta/card-list/card/content-block/FdCardContentBlock.jsx +0 -64
  212. package/packages/level2/meta/card-list/card/image-block/FdCardImage.jsx +0 -10
  213. package/packages/level2/meta/client/framework/hooks.jsx +0 -39
  214. package/packages/level2/meta/comment/FdComment.jsx +0 -16
  215. package/packages/level2/meta/comment/FdCommentList.jsx +0 -32
  216. package/packages/level2/meta/components/edit-image/FdEditImage.jsx +0 -42
  217. package/packages/level2/meta/components/edit-image/FdEditImageActionMenu.jsx +0 -31
  218. package/packages/level2/meta/components/edit-image/FdEditImageDropdownMenu.jsx +0 -42
  219. package/packages/level2/meta/components/file-upload/FileUpload.jsx +0 -103
  220. package/packages/level2/meta/components/file-upload/PreviewMedia.jsx +0 -36
  221. package/packages/level2/meta/components/multi-list/FdMultiList.jsx +0 -65
  222. package/packages/level2/meta/components/multi-list/FdMultiListEditResource.jsx +0 -31
  223. package/packages/level2/meta/edit-resource/FdEditResource.jsx +0 -135
  224. package/packages/level2/meta/edit-resource/FdEditResourceFormBody.jsx +0 -8
  225. package/packages/level2/meta/edit-resource/FdEditResourceHeader.jsx +0 -43
  226. package/packages/level2/meta/edit-resource/FdEditResourceSheet.jsx +0 -70
  227. package/packages/level2/meta/edit-resource/SaveCompleteProvider.jsx +0 -16
  228. package/packages/level2/meta/edit-resource/edit-link/FdEditLink.jsx +0 -48
  229. package/packages/level2/meta/edit-resource/edit-link/FdEditLinkResource.jsx +0 -18
  230. package/packages/level2/meta/edit-resource/edit-resource-dialog/FdEditResourceDialog.jsx +0 -34
  231. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceBlobField.jsx +0 -15
  232. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceEnumField.jsx +0 -35
  233. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceFlagsEnumField.jsx +0 -23
  234. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceImageField.jsx +0 -7
  235. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourcePropertyBlock.jsx +0 -38
  236. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceRichTextField.jsx +0 -16
  237. package/packages/level2/meta/edit-resource/edit-resource-property-block/edit-resource-fields.jsx +0 -53
  238. package/packages/level2/meta/edit-resource/edit-resource-property-field/FdEditResourcePropertyField.jsx +0 -105
  239. package/packages/level2/meta/filtering/filter/FdEnumFlagFilter.jsx +0 -40
  240. package/packages/level2/meta/filtering/filter/FdFilter.jsx +0 -123
  241. package/packages/level2/meta/filtering/filter/filters/BooleanFilter.jsx +0 -25
  242. package/packages/level2/meta/filtering/filter/filters/DateFilter.jsx +0 -10
  243. package/packages/level2/meta/filtering/filter/filters/EnumFilter.jsx +0 -44
  244. package/packages/level2/meta/filtering/filter/filters/GuidFilter.jsx +0 -28
  245. package/packages/level2/meta/filtering/filter/filters/IntegerFilter.jsx +0 -28
  246. package/packages/level2/meta/filtering/filter/filters/TextFilter.jsx +0 -11
  247. package/packages/level2/meta/filtering/resource-filter-list/FdResourceFilterList.jsx +0 -120
  248. package/packages/level2/meta/filtering/resource-filter-list/resource-list-dropdown-menu/ResourceListDropdownMenu.funcs.jsx +0 -4
  249. package/packages/level2/meta/filtering/resource-filter-list/resource-list-dropdown-menu/ResourceListDropdownMenu.jsx +0 -43
  250. package/packages/level2/meta/providers/global-provider/FdGlobalContext.jsx +0 -17
  251. package/packages/level2/meta/resource-list/ResourceList.jsx +0 -63
  252. package/packages/level2/meta/resource-list/resource-add-button.jsx +0 -11
  253. package/packages/level2/meta/resource-list/resource-list-card/FdResourceListCard.jsx +0 -7
  254. package/packages/level2/meta/resource-list/resource-list-filter/FdResourceListFilter.jsx +0 -11
  255. package/packages/level2/meta/resource-list/resource-table-list/FdResourceTableList.jsx +0 -14
  256. package/packages/level2/meta/table/FdTable.jsx +0 -147
  257. package/packages/level2/meta/table/body/FdTableBody.jsx +0 -9
  258. package/packages/level2/meta/table/body-cell/FdActionBodyCell.jsx +0 -145
  259. package/packages/level2/meta/table/body-cell/FdBlobBodyCell.jsx +0 -27
  260. package/packages/level2/meta/table/body-cell/FdBodyCell.jsx +0 -133
  261. package/packages/level2/meta/table/body-cell/FdBodyCellValue.jsx +0 -59
  262. package/packages/level2/meta/table/body-cell/FdBodyExpandCell.jsx +0 -6
  263. package/packages/level2/meta/table/body-cell/FdBodyExpandPropertyCell.jsx +0 -22
  264. package/packages/level2/meta/table/body-cell/FdCustomActionLink.jsx +0 -16
  265. package/packages/level2/meta/table/body-cell/FdMultiselectCellTemplate.jsx +0 -39
  266. package/packages/level2/meta/table/body-cell/FdViewCell.jsx +0 -12
  267. package/packages/level2/meta/table/body-row/FdTableBodyRow.jsx +0 -49
  268. package/packages/level2/meta/table/header/FdTableHeader.jsx +0 -54
  269. package/packages/level2/meta/table/header-cell/FdResizable.jsx +0 -18
  270. package/packages/level2/meta/table/header-cell/FdResizableEdgeHandle.jsx +0 -4
  271. package/packages/level2/meta/table/header-cell/FdTableHeaderActionCell.jsx +0 -49
  272. package/packages/level2/meta/table/header-cell/FdTableHeaderCell.jsx +0 -89
  273. package/packages/level2/meta/table/header-cell/FdTableHeaderCellActionButton.jsx +0 -23
  274. package/packages/level2/meta/table/pager/FdPager.jsx +0 -72
  275. package/packages/level2/meta/table/table-custom-action/TableCustomAction.jsx +0 -26
  276. package/packages/level2/meta/view/FdView.jsx +0 -31
  277. package/packages/level2/meta/view/FdViewSheet.jsx +0 -103
  278. package/packages/level2/meta/view/view-resource/FdViewResource.jsx +0 -108
  279. package/packages/level2/meta/view/view-resource/templates/ManyToOneTableHeaderCellTemplate.jsx +0 -13
  280. package/src/app/error.jsx +0 -5
  281. package/src/app/global-error.jsx +0 -5
  282. package/src/app/loading.jsx +0 -11
  283. package/src/hd/footer/HdFooter.jsx +0 -27
  284. package/src/hd/footer/hd-footer-item/HdFooterItem.jsx +0 -14
  285. package/src/lm/ai-scan/AiScanAction.jsx +0 -21
  286. package/src/lm/ai-scan/cell-templates/AiScanWebsiteResultCellTemplate.jsx +0 -31
  287. package/src/lm/components/LmCardReport.jsx +0 -12
  288. package/src/lm/configs/lm-list-configs.jsx +0 -72
  289. package/src/lm/google-place/action-dropdown/GooglePlaceActionDropdown.jsx +0 -42
  290. package/src/lm/google-place/actions/GooglePlaceSaveToGroupAction.jsx +0 -22
  291. package/src/lm/google-place/cell-templates/GooglePlaceBusinessInfoCellTemplate.jsx +0 -59
  292. package/src/lm/google-place/cell-templates/GooglePlaceEmailsCellTemplate.jsx +0 -34
  293. package/src/lm/google-place/cell-templates/GooglePlaceScanAction.jsx +0 -15
  294. package/src/lm/lead/action-dropdown/LeadActionDropdown.jsx +0 -39
  295. package/src/lm/lead/actions/move-to-group-action/LeadMoveToGroupAction.jsx +0 -28
  296. package/src/lm/lead/cell-templates/LeadBusinessInfoCellTemplate.jsx +0 -64
  297. package/src/lm/lead/cell-templates/LeadScanAction.jsx +0 -15
  298. package/src/lm/lead/lead-google-place/LeadGooglePlaceIndicator.jsx +0 -8
  299. package/src/lm/lead/lead-google-place/LeadGooglePlaceIndicators.jsx +0 -17
  300. package/src/lm/lead/lead-google-place/LeadGooglePlaceInfo.jsx +0 -15
  301. package/src/lm/lead/view/LeadsView.jsx +0 -8
  302. package/src/lm/pages/HomePage.jsx +0 -53
  303. package/types-output/tsconfig.tsbuildinfo +0 -1
@@ -1,27 +0,0 @@
1
- import React, { createContext, useEffect, useState, useCallback, useMemo } from "react";
2
- import { themes } from "@fd-app-toolbox/menu/themes";
3
- import { onThemeSwitch, saveTheme } from "@fd-app-toolbox/providers/ThemeProvider/theme";
4
- import { createError } from "@fd-toolbox/errors/errors";
5
- import { getLocalStorage } from "@fd-toolbox/local-storage/local-storage";
6
- import { metaErrorMessages } from "@meta/constants/meta-error-messages-constants";
7
- const ThemeContext = createContext(undefined);
8
- export function ThemeProvider({ children }) {
9
- const storedTheme = getLocalStorage(themes.theme);
10
- const [theme, setTheme] = useState(storedTheme ?? themes.light);
11
- const [appliedTheme, setAppliedTheme] = useState("");
12
- const switchTheme = useCallback((newTheme) => {
13
- saveTheme(newTheme, setTheme);
14
- }, []);
15
- const contextValue = useMemo(() => ({ theme, switchTheme, appliedTheme }), [theme, switchTheme, appliedTheme]);
16
- useEffect(() => {
17
- onThemeSwitch(theme, setAppliedTheme);
18
- }, [theme]);
19
- return <ThemeContext.Provider value={contextValue}>{children}</ThemeContext.Provider>;
20
- }
21
- export const useTheme = () => {
22
- const context = React.useContext(ThemeContext);
23
- if (context === undefined) {
24
- throw createError(metaErrorMessages.themeProviderError);
25
- }
26
- return context;
27
- };
@@ -1,38 +0,0 @@
1
- import { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
2
- import { publicImages } from "@fd-toolbox/constants/public-files";
3
- import { emptyGuid } from "@fd-toolbox/constants/constants";
4
- import { extensions } from "@fd-toolbox/constants/extensions";
5
- import { createError } from "@fd-toolbox/errors/errors";
6
- import { getLoginState } from "@fd-toolbox/auth/login-states";
7
- import { metaErrorMessages } from "@meta/constants/meta-error-messages-constants";
8
- const emptyLoginState = {
9
- loggedIn: false,
10
- displayName: "",
11
- userId: "",
12
- email: "",
13
- imageUrl: `/${publicImages.user}/${emptyGuid}.${extensions.webp}`,
14
- };
15
- export const AuthContext = createContext({
16
- loginState: emptyLoginState,
17
- });
18
- export function AuthProvider({ children }) {
19
- const [loginState, setLoginState] = useState(emptyLoginState);
20
- const onChangeLoginState = useCallback((newLoginState) => {
21
- setLoginState(newLoginState);
22
- }, []);
23
- useEffect(() => {
24
- setLoginState(getLoginState());
25
- }, []);
26
- const contextValue = useMemo(() => ({
27
- loginState: loginState,
28
- setLoginState: onChangeLoginState,
29
- }), [loginState, onChangeLoginState]);
30
- return <AuthContext.Provider value={contextValue}>{children}</AuthContext.Provider>;
31
- }
32
- export function useAuth() {
33
- const context = useContext(AuthContext);
34
- if (!context) {
35
- throw createError(metaErrorMessages.authProviderUsedOutside);
36
- }
37
- return context;
38
- }
@@ -1,17 +0,0 @@
1
- import { createContext, useContext, useMemo, useState } from "react";
2
- import { sidebarStatuses } from "@fd-app-toolbox/layout/sidebar/FdSidebar.funcs";
3
- const FdSidebarContext = createContext(undefined);
4
- export function FdSidebarProvider({ children }) {
5
- const [sidebarState, setSidebarState] = useState(sidebarStatuses.minified);
6
- const sidebarContextValue = useMemo(() => {
7
- return {
8
- sidebarState,
9
- setSidebarState,
10
- isSidebarOpen: sidebarState === sidebarStatuses.fixedOpen,
11
- };
12
- }, [sidebarState]);
13
- return <FdSidebarContext.Provider value={sidebarContextValue}>{children}</FdSidebarContext.Provider>;
14
- }
15
- export function useSidebarContext() {
16
- return useContext(FdSidebarContext);
17
- }
@@ -1,119 +0,0 @@
1
- "use client";
2
- import { use, useCallback, useEffect, useState } from "react";
3
- import { FdInput } from "@fd-component-toolbox/input/FdInput";
4
- import { FdButton } from "@fd-component-toolbox/button/FdButton";
5
- import { useForm } from "react-hook-form";
6
- import { onRegisterSubmit } from "@fd-app-toolbox/register-form/RegisterForm.funcs";
7
- import { FdLabel } from "@fd-component-toolbox/label/FdLabel";
8
- import { useFdRouter } from "@meta/client/framework/hooks";
9
- import { FdForm, FdFormControl, FdFormField, FdFormItem, FdFormMessage, } from "@fd-component-toolbox/form/FdForm";
10
- import { registerDisplayProps } from "@fd-toolbox/auth/register";
11
- import { FdFrameworkImage } from "@fd-component-toolbox/client/framework";
12
- import { FdCard, FdCardContent, FdCardHeader, FdCardTitle } from "@fd-component-toolbox/card/FdCard";
13
- import { getThemeLoginImage } from "@fd-app-toolbox/providers/ThemeProvider/theme";
14
- import { userRoutes } from "@fd-toolbox/constants/user-routes";
15
- import { FdIcon, iconNames } from "@fd-component-toolbox/icon/FdIcon";
16
- import { useSetTitle } from "@meta/page/use-set-title";
17
- import { routes } from "@fd-toolbox/routing/routes";
18
- import FdLink from "@fd-component-toolbox/link/FdLink";
19
- import { notifyError } from "@fd-toolbox/notifications";
20
- import { userFriendlyWorkspaceInviteMessages } from "@fd-app-toolbox/constants/user-friendly-workspace-invite-messages";
21
- const pageTitle = "Sign Up";
22
- /**
23
- * Sign-up form for new users with validation and redirect on success.
24
- *
25
- * @example
26
- * <RegisterForm userInviteValidationResultPromise={userInviteValidationResultPromise} />
27
- */
28
- export default function RegisterForm({ userInviteValidationResultPromise, userWorkspaceInviteId, }) {
29
- const userInviteValidationResult = use(userInviteValidationResultPromise);
30
- const [hidePassword, setHidePassword] = useState(true);
31
- const [errorMessage, setErrorMessage] = useState(undefined);
32
- useSetTitle(pageTitle);
33
- useEffect(() => {
34
- if (userInviteValidationResult && !userInviteValidationResult.isValid) {
35
- if (userInviteValidationResult.userFriendlyErrorMessage) {
36
- notifyError(userInviteValidationResult.userFriendlyErrorMessage);
37
- }
38
- else {
39
- notifyError(userFriendlyWorkspaceInviteMessages.notValidInviteCode);
40
- }
41
- }
42
- }, [userInviteValidationResult]);
43
- const imgSrc = getThemeLoginImage();
44
- const form = useForm({
45
- defaultValues: {
46
- email: "tim.w@example.com",
47
- password: "Admin1!",
48
- },
49
- mode: "onChange",
50
- });
51
- const { handleSubmit, formState: { isValid }, control, } = form;
52
- const router = useFdRouter();
53
- const onSubmit = useCallback(async (data) => {
54
- onRegisterSubmit(data, router, setErrorMessage, userWorkspaceInviteId);
55
- }, [router, userWorkspaceInviteId]);
56
- const togglePasswordVisibility = useCallback(() => {
57
- setHidePassword((prev) => !prev);
58
- }, []);
59
- const customIconFunc = useCallback(() => hidePassword ? (<FdIcon name={iconNames.visibility} onClick={togglePasswordVisibility}/>) : (<FdIcon name={iconNames.visibilityOff} onClick={togglePasswordVisibility}/>), [hidePassword, togglePasswordVisibility]);
60
- return (<div className="relative h-screen w-full overflow-hidden">
61
- <FdFrameworkImage src={imgSrc} alt="Forest" fill className="object-cover" priority/>
62
- <div className="absolute inset-0 flex items-center justify-center">
63
- <FdCard className="mx-auto grid w-80 gap-6 rounded-lg p-6 shadow-lg">
64
- <FdCardHeader className="grid gap-2 p-0 text-center">
65
- <FdCardTitle className="text-3xl font-bold">Sign Up</FdCardTitle>
66
- </FdCardHeader>
67
- <FdCardContent className="p-0">
68
- <FdForm {...form}>
69
- <form onSubmit={handleSubmit(onSubmit)}>
70
- <FdFormField control={control} name={userRoutes.email} render={({ field }) => (<FdFormItem>
71
- <div className="w-full py-1">
72
- <FdLabel>{registerDisplayProps.email}</FdLabel>
73
- <FdFormControl>
74
- <FdInput {...field} inputId="registerInput" placeholder={registerDisplayProps.email} showClearIcon={true}>
75
- <FdButton variant="icon" size="icon" type="button" tabIndex={-1} className="w-6">
76
- {customIconFunc()}
77
- </FdButton>
78
- </FdInput>
79
- </FdFormControl>
80
- <FdFormMessage />
81
- </div>
82
- </FdFormItem>)}/>
83
-
84
- <FdFormField control={control} name={userRoutes.password} render={({ field }) => (<FdFormItem>
85
- <div className="w-full py-1">
86
- <FdLabel> {registerDisplayProps.password}</FdLabel>
87
- <div className="">
88
- <FdFormControl>
89
- <FdInput {...field} inputId="passwordInput" placeholder={registerDisplayProps.password} type={hidePassword ? "password" : "text"} showClearIcon={true}>
90
- <FdButton variant="icon" size="icon" type="button" tabIndex={-1} className="w-6">
91
- {customIconFunc()}
92
- </FdButton>
93
- </FdInput>
94
- </FdFormControl>
95
- <FdFormMessage />
96
- </div>
97
- </div>
98
- </FdFormItem>)}/>
99
-
100
- <div className="flex w-full justify-center gap-1 px-1 pt-2">
101
- <p className="text-sm">Already have an account?</p>
102
- <FdLink className="inline-block text-sm text-muted-foreground" href={routes.login}>
103
- Sign In
104
- </FdLink>
105
- </div>
106
-
107
- <FdButton className="mr-4 mt-4 block w-full" id="registerButton" disabled={!isValid} type="submit">
108
- Sign Up
109
- </FdButton>
110
- {errorMessage && (<div className="mt-4">
111
- <p className="text-destructive">{errorMessage}</p>
112
- </div>)}
113
- </form>
114
- </FdForm>
115
- </FdCardContent>
116
- </FdCard>
117
- </div>
118
- </div>);
119
- }
@@ -1,120 +0,0 @@
1
- import React, { Fragment, useMemo } from "react";
2
- import { FdChartContainer, FdChartTooltip, FdChartTooltipContent } from "@fd-component-toolbox/chart/FdChart";
3
- import { buildContainerConfig, chartAxis, chartKinds, getChartTypeConfig, getRadiusValue, } from "@fd-app-toolbox/report/FdChart.funcs";
4
- import { Area, AreaChart, Bar, BarChart, CartesianGrid, Line, LineChart, Pie, PieChart, PolarAngleAxis, PolarGrid, Radar, RadarChart, RadialBar, RadialBarChart, XAxis, YAxis, } from "recharts";
5
- import { charts } from "@fd-app-toolbox/report/charts";
6
- function FdChart({ series: chartSeries, data, chartType }) {
7
- const config = useMemo(() => getChartTypeConfig(chartType), [chartType]);
8
- const containerConfig = useMemo(() => buildContainerConfig(chartSeries), [chartSeries]);
9
- return (<FdChartContainer config={containerConfig} className="size-full">
10
- {getTypedChart({
11
- data,
12
- config,
13
- children: (<>
14
- <FdChartTooltip cursor={false} content={<FdChartTooltipContent />}/>
15
-
16
- {getChartGrid({ axis: config.axis })}
17
-
18
- {chartSeries.map((series, i) => {
19
- return (<Fragment key={series.name}>
20
- {getChartAxis({
21
- config,
22
- series,
23
- })}
24
- {getChartElement({
25
- data,
26
- config,
27
- series,
28
- isFirst: i === 0,
29
- isLast: i === chartSeries.length - 1,
30
- })}
31
- </Fragment>);
32
- })}
33
- </>),
34
- })}
35
- </FdChartContainer>);
36
- }
37
- export default FdChart;
38
- function getTypedChart({ data, config, children }) {
39
- switch (config.kind) {
40
- case chartKinds.area:
41
- return (<AreaChart accessibilityLayer={true} data={data} stackOffset={config.expanded && "expand"}>
42
- {children}
43
- </AreaChart>);
44
- case chartKinds.bar:
45
- return (<BarChart accessibilityLayer data={!config.mixed
46
- ? data
47
- : data.map((d, i) => ({
48
- ...d,
49
- fill: `hsl(var(--chart-${(i % 5) + 1}))`,
50
- }))}>
51
- {children}
52
- </BarChart>);
53
- case chartKinds.line:
54
- return (<LineChart accessibilityLayer data={data}>
55
- {children}
56
- </LineChart>);
57
- case chartKinds.pie:
58
- return <PieChart>{children}</PieChart>;
59
- case chartKinds.radar:
60
- return <RadarChart data={data}>{children}</RadarChart>;
61
- case chartKinds.radial:
62
- return (<RadialBarChart data={data} endAngle={config.stacked && 180} innerRadius={config.innerRadius} outerRadius={110}>
63
- {children}
64
- </RadialBarChart>);
65
- default:
66
- throw new Error(charts.unsupportedKindError.replace("{0}", config.kind.toString()));
67
- }
68
- }
69
- function getChartGrid({ axis }) {
70
- if (axis === chartAxis.mainChartAxis)
71
- return <CartesianGrid vertical={false}/>;
72
- if (axis === chartAxis.polarAngleAxis)
73
- return <PolarGrid />;
74
- return null;
75
- }
76
- function getChartAxis({ config, series }) {
77
- if (config.axis === chartAxis.mainChartAxis)
78
- return (<>
79
- <XAxis dataKey={series.axisXPropertyName} type={config.mixed && charts.category} tickLine={false} tickMargin={10} axisLine={false} label={{ value: series.axisXLabel, position: "bottom", offset: 5 }}/>
80
- <YAxis tickLine={false} tickMargin={10} axisLine={false} label={{ value: series.axisYLabel, angle: -90, position: "left", offset: 15 }}/>
81
- </>);
82
- if (config.axis === chartAxis.polarAngleAxis)
83
- return <PolarAngleAxis dataKey={series.axisXPropertyName}/>;
84
- return null;
85
- }
86
- function getChartElement({ data, config, series, isFirst, isLast }) {
87
- if (!series.axisYPropertyName)
88
- return null;
89
- const shared = {
90
- dataKey: series.axisYPropertyName,
91
- name: series.name,
92
- fill: series.axisYColor,
93
- stackId: config.stacked && charts.stackId,
94
- innerRadius: config.innerRadius,
95
- };
96
- switch (config.kind) {
97
- case chartKinds.area:
98
- return <Area {...shared} type={charts.natural} fillOpacity={0.4} stroke={series.axisYColor}/>;
99
- case chartKinds.bar:
100
- return <Bar {...shared} radius={getRadiusValue(!config.stacked, isFirst, isLast)}/>;
101
- case chartKinds.line:
102
- return (<Line {...shared} type={charts.monotone} stroke={series.axisYColor} strokeWidth={2} dot={false}/>);
103
- case chartKinds.pie:
104
- return (<Pie data={data.map((d, i) => ({
105
- ...d,
106
- fill: `hsl(var(--chart-${i !== data.length - 1 || i % 5 !== 0 ? (i % 5) + 1 : 3}))`,
107
- }))} {...shared} innerRadius={config.innerRadius} nameKey={series.axisXPropertyName}/>);
108
- case chartKinds.radar:
109
- return (<Radar {...shared} fillOpacity={config.lines ? 0 : 0.6} stroke={config.lines && series.axisYColor} strokeWidth={config.lines && 2}/>);
110
- case chartKinds.radial:
111
- return (<RadialBar {...shared} data={config.stacked
112
- ? []
113
- : data.map((d, i) => ({
114
- ...d,
115
- fill: `hsl(var(--chart-${(i % 5) + 1}))`,
116
- }))} cornerRadius={config.stacked && 5} background={!config.stacked}/>);
117
- default:
118
- return null;
119
- }
120
- }
@@ -1,29 +0,0 @@
1
- "use client";
2
- import React, { useState } from "react";
3
- import { initChart } from "@fd-app-toolbox/report/ReportChart.funcs";
4
- import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
5
- import { FdCard, FdCardContent, FdCardDescription, FdCardHeader, FdCardTitle, } from "@fd-component-toolbox/card/FdCard";
6
- import FdChart from "@fd-app-toolbox/report/FdChart";
7
- function ReportChart({ reportId }) {
8
- const [report, setReport] = useState();
9
- const [data, setData] = useState();
10
- useAsyncEffect(async () => {
11
- await initChart(reportId, setReport, setData);
12
- }, [reportId]);
13
- if (!report?.chartSeries || report.chartType === undefined || !data)
14
- return <div className="w-full"/>;
15
- return (<FdCard className="flex size-full flex-col overflow-hidden">
16
- <FdCardHeader className="p-1">
17
- <FdCardTitle className="truncate text-lg sm:text-xl">{report?.name}</FdCardTitle>
18
- <FdCardDescription className="line-clamp-2 text-xs sm:text-sm">
19
- {report.description}
20
- </FdCardDescription>
21
- </FdCardHeader>
22
- <FdCardContent className="flex-1 overflow-hidden p-1">
23
- <div className="size-full">
24
- <FdChart series={report.chartSeries} data={data} chartType={report.chartType}/>
25
- </div>
26
- </FdCardContent>
27
- </FdCard>);
28
- }
29
- export default ReportChart;
@@ -1,81 +0,0 @@
1
- "use client";
2
- import React, { useCallback, useState } from "react";
3
- import { useForm } from "react-hook-form";
4
- import { FdCard, FdCardContent, FdCardHeader, FdCardTitle } from "@fd-component-toolbox/card/FdCard";
5
- import { useFdRouter, useFdSearchParams } from "@meta/client/framework/hooks";
6
- import { FdForm, FdFormControl, FdFormField, FdFormItem, FdFormMessage, } from "@fd-component-toolbox/form/FdForm";
7
- import { FdLabel } from "@fd-component-toolbox/label/FdLabel";
8
- import { FdInput } from "@fd-component-toolbox/input/FdInput";
9
- import { FdButton } from "@fd-component-toolbox/button/FdButton";
10
- import { getResetPasswordPasswordInputId, getResetPasswordRepeatPasswordInputId, getResetPasswordResetButtonId, onResetPassword, } from "@fd-app-toolbox/reset-password-form/ResetPasswordForm.funcs";
11
- import { resetPasswordLabels } from "@fd-app-toolbox/passwords/reset-password-dto";
12
- import { userRoutes } from "@fd-toolbox/constants/user-routes";
13
- import { FdIcon, iconNames } from "@fd-component-toolbox/icon/FdIcon";
14
- import { getRelativeLoginUrl } from "@fd-toolbox/routing/login-routers";
15
- import { codeParam, emailParam } from "@fd-toolbox/constants/auth-constants";
16
- import { resetButtonText } from "@fd-app-toolbox/reset-password-form/reset-password-form-constants";
17
- /**
18
- * Reset password form that allows setting a new password via verification token.
19
- */
20
- function ResetPasswordForm() {
21
- const params = useFdSearchParams();
22
- const email = params.get(emailParam) ?? undefined;
23
- const token = params.get(codeParam) ?? undefined;
24
- const [hidePassword, setHidePassword] = useState(true);
25
- const form = useForm({
26
- mode: "onChange",
27
- });
28
- const { handleSubmit, formState: { isValid }, control, } = form;
29
- const router = useFdRouter();
30
- const navigateToLoginPage = useCallback(() => {
31
- router.push(getRelativeLoginUrl());
32
- }, [router]);
33
- const onSubmit = useCallback(async (data) => {
34
- onResetPassword(data, navigateToLoginPage, email ?? undefined, token ?? undefined);
35
- }, [email, token, navigateToLoginPage]);
36
- const togglePasswordVisibility = useCallback(() => {
37
- setHidePassword((prev) => !prev);
38
- }, []);
39
- const customIconFunc = useCallback(() => hidePassword ? (<FdIcon name={iconNames.visibility} onClick={togglePasswordVisibility}/>) : (<FdIcon name={iconNames.visibilityOff} onClick={togglePasswordVisibility}/>), [hidePassword, togglePasswordVisibility]);
40
- return (<div className="relative h-screen w-full overflow-hidden">
41
- <div className="absolute inset-0 flex items-center justify-center">
42
- <FdCard className="mx-auto grid w-80 gap-6 rounded-lg p-6 shadow-lg">
43
- <FdCardHeader className="grid gap-2 p-0 text-center">
44
- <FdCardTitle className="text-3xl font-bold">Reset Password</FdCardTitle>
45
- </FdCardHeader>
46
- <FdCardContent className="p-0">
47
- <FdForm {...form}>
48
- <form onSubmit={handleSubmit(onSubmit)}>
49
- <FdFormField control={control} name={userRoutes.password} render={({ field }) => (<FdFormItem>
50
- <div className="w-full p-1">
51
- <FdLabel>{resetPasswordLabels.password}</FdLabel>
52
- <FdFormControl>
53
- <FdInput {...field} inputId={getResetPasswordPasswordInputId()} placeholder={resetPasswordLabels.password} type={hidePassword ? "password" : "text"} showClearIcon={true}>
54
- <FdButton variant="icon" size="icon" type="button" tabIndex={-1} className="w-6">
55
- {customIconFunc()}
56
- </FdButton>
57
- </FdInput>
58
- </FdFormControl>
59
- <FdFormMessage />
60
- </div>
61
- </FdFormItem>)}/>
62
- <FdFormField control={control} name={userRoutes.confirmPassword} render={({ field }) => (<FdFormItem>
63
- <div className="w-full p-1">
64
- <FdLabel>{resetPasswordLabels.repeatPassword}</FdLabel>
65
- <FdFormControl>
66
- <FdInput {...field} inputId={getResetPasswordRepeatPasswordInputId()} placeholder={resetPasswordLabels.repeatPassword} type={"password"} showClearIcon={true}></FdInput>
67
- </FdFormControl>
68
- <FdFormMessage />
69
- </div>
70
- </FdFormItem>)}/>
71
- <FdButton className="mr-4 mt-4 block w-full" id={getResetPasswordResetButtonId()} disabled={!isValid} type="submit">
72
- {resetButtonText}
73
- </FdButton>
74
- </form>
75
- </FdForm>
76
- </FdCardContent>
77
- </FdCard>
78
- </div>
79
- </div>);
80
- }
81
- export default ResetPasswordForm;
@@ -1,56 +0,0 @@
1
- import React, { useCallback, useState, useEffect, useRef } from "react";
2
- import { isMacOs } from "@meta/services/client-environment";
3
- import { useFdSearchParams } from "@meta/client/framework/hooks";
4
- import { getSearchId, getSearchInputId, resetAndCloseDialog } from "@fd-app-toolbox/search/FdSearch.funcs";
5
- import { metaQueryParams } from "@fd-toolbox/constants/meta-query-params";
6
- import { FdSearchDialog } from "@fd-app-toolbox/search/search-dialog/FdSearchDialog";
7
- import { useSearchDialog } from "@fd-app-toolbox/search/search-dialog-provider";
8
- import { FdSearchInput } from "@fd-app-toolbox/search/search-input/FdSearchInput";
9
- import { eventListenerEvents } from "@fd-toolbox/constants/events";
10
- import { keyboardKeys } from "@fd-toolbox/constants/keyboard-keys";
11
- /**
12
- * Search input component with modal dialog for global search
13
- */
14
- export function FdSearch({ parentContextName, isCompactMode }) {
15
- const searchDialog = useSearchDialog();
16
- const [searchQuery, setSearchQuery] = useState("");
17
- const [initialPathname, setInitialPathname] = useState("");
18
- const pathName = window.location.href;
19
- const searchParams = useFdSearchParams();
20
- const searchInputRef = useRef(null);
21
- //Approved temp
22
- // eslint-disable-next-line react-compiler/react-compiler
23
- const onSearchQueryChanged = useCallback(setSearchQuery, [setSearchQuery]);
24
- const onCloseDialog = useCallback(() => {
25
- resetAndCloseDialog(setSearchQuery, searchDialog.setIsSearchDialogOpen);
26
- }, [searchDialog.setIsSearchDialogOpen]);
27
- useEffect(() => {
28
- const handler = (e) => {
29
- const isK = e.key?.toLowerCase() === keyboardKeys.k || e.code === keyboardKeys.kCode;
30
- if (isK &&
31
- ((isMacOs() && e.metaKey) || (!isMacOs() && e.ctrlKey)) &&
32
- searchDialog.setIsSearchDialogOpen) {
33
- e.preventDefault();
34
- const willOpen = !searchDialog.isSearchDialogOpen;
35
- searchDialog.setIsSearchDialogOpen(willOpen);
36
- if (willOpen) {
37
- searchInputRef.current?.focus();
38
- }
39
- }
40
- };
41
- window.addEventListener(eventListenerEvents.keydown, handler);
42
- return () => window.removeEventListener(eventListenerEvents.keydown, handler);
43
- }, [searchDialog]);
44
- useEffect(() => {
45
- if (!searchParams.has(metaQueryParams.viewName) &&
46
- !searchParams.has(metaQueryParams.id) &&
47
- pathName !== initialPathname) {
48
- setInitialPathname(pathName);
49
- onCloseDialog();
50
- }
51
- }, [pathName, searchParams, onCloseDialog, initialPathname]);
52
- return (<>
53
- <FdSearchInput parentContextName={getSearchInputId(parentContextName)} searchQuery={searchQuery} onSearchQueryChanged={onSearchQueryChanged} onOpenDialog={searchDialog.openDialog} className="hidden md:flex" ref={searchInputRef}/>
54
- {searchDialog.isSearchDialogOpen && (<FdSearchDialog parentContextName={getSearchId(parentContextName)} searchQuery={searchQuery} isCompactMode={isCompactMode} onClose={onCloseDialog} onOpenDialog={searchDialog.openDialog} onSearchQueryChanged={onSearchQueryChanged}/>)}
55
- </>);
56
- }
@@ -1,72 +0,0 @@
1
- "use client";
2
- import { useState } from "react";
3
- import { FdFrameworkImage } from "@fd-component-toolbox/client/framework";
4
- import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
5
- import { notFoundImg, search, getSearchResultContainerId, initSearchFilters, } from "@fd-app-toolbox/search/search-dialog/FdSearchDialog.funcs";
6
- import { useEnterKey } from "@fd-toolbox/hooks/use-enter-key";
7
- import { FdIcon } from "@fd-component-toolbox/icon/FdIcon";
8
- import { FdBadgeToggleList } from "@fd-component-toolbox/badge-toggle-list/FdBadgeToggleList";
9
- import { FdSearchScreenResults } from "@fd-app-toolbox/search/search-resource-results/FdSearchResourcesResults";
10
- import { cn } from "@fd-toolbox/lib/utils";
11
- import { FdSearchInput } from "@fd-app-toolbox/search/search-input/FdSearchInput";
12
- import { FdSearchSearchableResourceResults } from "@fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResults";
13
- import { useSidebarContext } from "@fd-app-toolbox/providers/sidebar-provider/FdSidebarContext";
14
- /**
15
- * Modal dialog component for global search with search filters
16
- *
17
- * @param props - {@link FdSearchDialogProps}
18
- *
19
- * @example
20
- * ```tsx
21
- * function MyComponent() {
22
- * const [searchQuery, setSearchQuery] = useState("");
23
- *
24
- * return (
25
- * <FdSearchDialog searchQuery={searchQuery} onClose={...} onFocus={...} onBlur={...}/>
26
- * );
27
- * }
28
- * ```
29
- */
30
- export function FdSearchDialog({ parentContextName, onClose, searchQuery, onFocus, onBlur, onOpenDialog, onSearchQueryChanged, isCompactMode, }) {
31
- const [filters, setFilters] = useState([]);
32
- const [selectedFilters, setSelectedFilters] = useState([]);
33
- const [searchableResourcesResult, setSearchableResourcesResult] = useState([]);
34
- const [screensResult, setScreensResult] = useState([]);
35
- const sidebarContext = useSidebarContext();
36
- useAsyncEffect(async () => {
37
- await initSearchFilters(setFilters, setSelectedFilters);
38
- }, []);
39
- useAsyncEffect(async () => {
40
- await search(searchQuery, selectedFilters, setSearchableResourcesResult, setScreensResult);
41
- }, [searchQuery, selectedFilters, filters]);
42
- useEnterKey(async () => {
43
- await search(searchQuery, selectedFilters, setSearchableResourcesResult, setScreensResult);
44
- });
45
- return (<div className="fixed inset-0 z-20 mt-10" onFocus={onFocus} onBlur={onBlur}>
46
- <div className="absolute inset-0" onClick={onClose}/>
47
- <div className={cn("relative z-10 ml-0 mt-2 h-[calc(100vh-2.5rem)] w-full bg-background p-6 shadow-lg transition-all duration-75 ease-in", !isCompactMode &&
48
- (sidebarContext?.isSidebarOpen
49
- ? "ml-60 w-[calc(100%-15rem)]"
50
- : "md:ml-14 md:w-[calc(100%-3.5rem)]"))}>
51
- <FdSearchInput parentContextName={parentContextName} searchQuery={searchQuery} onSearchQueryChanged={onSearchQueryChanged} onOpenDialog={onOpenDialog} className="mb-4 flex md:hidden" useCustomInputStyle={true}/>
52
- <div className="mb-4 flex items-start justify-between gap-2">
53
- <FdBadgeToggleList items={filters} selectedItems={selectedFilters} onSelectedItemsChange={setSelectedFilters}/>
54
- <div className="text-subtle-700 hover:text-subtle-500 focus:outline-none" onClick={onClose}>
55
- <FdIcon name="cross2" size="medium" className="size-6 cursor-pointer"/>
56
- </div>
57
- </div>
58
- <hr className="mb-5"/>
59
- <div className="mt-4 h-[calc(100%-2.5rem)] overflow-y-auto">
60
- {searchableResourcesResult.length === 0 && screensResult.length === 0 ? (<div className="flex h-full flex-col items-center justify-center text-center">
61
- {!!searchQuery && (<>
62
- <FdFrameworkImage src={notFoundImg} alt="No Results" width={300} height={200} className="mb-4 object-cover" priority/>
63
- <h5>No results found.</h5>
64
- </>)}
65
- </div>) : (<div id={getSearchResultContainerId(parentContextName)} className="flex flex-col gap-4">
66
- {searchableResourcesResult.length !== 0 && (<FdSearchSearchableResourceResults parentContextName={parentContextName} resourcesResults={searchableResourcesResult}/>)}
67
- {screensResult.length !== 0 && (<FdSearchScreenResults resourcesResults={screensResult} onClose={onClose}/>)}
68
- </div>)}
69
- </div>
70
- </div>
71
- </div>);
72
- }
@@ -1,16 +0,0 @@
1
- import { createContext, useState, useContext, useCallback, useMemo } from "react";
2
- const initialSearchDialogState = {
3
- isSearchDialogOpen: false,
4
- };
5
- export const SearchDialogContext = createContext(initialSearchDialogState);
6
- export function SearchDialogProvider({ children }) {
7
- const [isSearchDialogOpen, setIsSearchDialogOpen] = useState(false);
8
- const openDialog = useCallback(() => {
9
- setIsSearchDialogOpen(true);
10
- }, [setIsSearchDialogOpen]);
11
- const contextValue = useMemo(() => ({ isSearchDialogOpen, setIsSearchDialogOpen, openDialog }), [isSearchDialogOpen, setIsSearchDialogOpen, openDialog]);
12
- return <SearchDialogContext.Provider value={contextValue}>{children}</SearchDialogContext.Provider>;
13
- }
14
- export const useSearchDialog = () => {
15
- return useContext(SearchDialogContext);
16
- };
@@ -1,49 +0,0 @@
1
- import { FdIcon, iconNames } from "@fd-component-toolbox/icon/FdIcon";
2
- import { isMacOs } from "@meta/services/client-environment";
3
- import { FdInput } from "@fd-component-toolbox/input/FdInput";
4
- import { cn } from "@fd-toolbox/lib/utils";
5
- /**
6
- * A search input component with an integrated icon and keyboard shortcut hints.
7
- *
8
- * This component provides a styled input field for search queries, displaying a "Ctrl+K" or "⌘+K"
9
- * hint when empty. It is designed to be used as a controlled component.
10
- *
11
- * @param props - {@link FdSearchInputProps}
12
- *
13
- * @example
14
- * ```tsx
15
- * const [query, setQuery] = useState("");
16
- *
17
- * <FdSearchInput
18
- * parentContextName="global-search"
19
- * searchQuery={query}
20
- * onSearchQueryChanged={setQuery}
21
- * onOpenDialog={() => console.log("Search dialog opened")}
22
- * />
23
- * ```
24
- */
25
- export function FdSearchInput({ searchQuery, onSearchQueryChanged, onOpenDialog, parentContextName, className, useCustomInputStyle, ref, }) {
26
- const isQueryNotEmpty = !!searchQuery;
27
- const baseInputStyle = "peer rounded-md px-10 py-1.5 focus:bg-popover focus:text-popover-foreground";
28
- const queryNotEmptyStyle = "bg-popover text-popover-foreground";
29
- const emptyQueryStyle = "bg-fd-tertiary-700 placeholder:text-fd-tertiary-50 focus:placeholder:text-fd-tertiary-700";
30
- const queryStyle = isQueryNotEmpty ? queryNotEmptyStyle : emptyQueryStyle;
31
- return (<div className={cn("group relative flex w-full items-center md:max-w-screen-sm", className)}>
32
- <div className="relative grow">
33
- <div className="group relative flex w-full items-center">
34
- <FdInput inputId={parentContextName} type="text" placeholder="Search" className={useCustomInputStyle ? "mt-0 px-10" : cn(baseInputStyle, queryStyle, "mt-0")} value={searchQuery} onChange={onSearchQueryChanged} onFocus={onOpenDialog} onClick={onOpenDialog} variant={useCustomInputStyle ? "float" : null} ref={ref}/>
35
- </div>
36
- </div>
37
- <label htmlFor={parentContextName} className={cn("absolute right-5 top-1/2 flex -translate-y-1/2 items-center gap-1 text-xs text-fd-tertiary-200 peer-focus:hidden", isQueryNotEmpty && "hidden")}>
38
- <span className="rounded-md border border-fd-tertiary-200 px-1">
39
- {isMacOs() ? "⌘" : "Ctrl"}
40
- </span>
41
- <span className="rounded-md border border-fd-tertiary-200 px-1">K</span>
42
- </label>
43
- <label htmlFor={parentContextName} className="absolute left-4 top-1/2 -translate-y-1/2">
44
- <FdIcon name={iconNames.magnifyingGlass} className={cn(isQueryNotEmpty
45
- ? "text-muted-foreground"
46
- : "text-fd-tertiary-50 group-focus-within:text-muted-foreground", useCustomInputStyle && "text-muted-foreground")}/>
47
- </label>
48
- </div>);
49
- }