@fernir2/saas-kit-cli 0.1.4 → 0.1.6
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.
- package/package.json +211 -7
- package/cli/.gitlab-ci.yml +0 -14
- package/cli/.husky/commit-msg +0 -1
- package/cli/.husky/pre-commit +0 -1
- package/cli/README.md +0 -101
- package/cli/bin/index.ts +0 -358
- package/cli/drizzle.config.ts +0 -12
- package/cli/global-setup.ts +0 -25
- package/cli/npm-commands/gen-meta/index.ts +0 -3
- package/cli/npm-commands/gen-schema/index.ts +0 -5
- package/cli/npm-commands/migrate-db/index.ts +0 -5
- package/cli/npm-commands/migrate-db/migrate-db.ts +0 -15
- package/cli/npm-commands/seed-db/index.ts +0 -5
- package/cli/npm-commands/seed-db/seed-db.ts +0 -15
- package/cli/playwright.config.ts +0 -34
- package/cli/postcss.config.mjs +0 -9
- package/cli/server.ts +0 -41
- package/cli/src/app/api/v1/[resourceName]/[id]/route.ts/route.ts +0 -11
- package/cli/src/app/api/v1/[resourceName]/route.ts/route.ts +0 -14
- package/cli/src/app/api/v1/[resourceName]/upsert/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/log/route.ts/route.ts +0 -7
- package/cli/src/app/api/v1/otheruser/[id]/route.ts/route.ts +0 -14
- package/cli/src/app/api/v1/otheruser/route.ts/route.ts +0 -7
- package/cli/src/app/api/v1/password/forgotpassword/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/password/resetpassword/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/payment/method/route.ts/route.ts +0 -4
- package/cli/src/app/api/v1/payment/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/payment/verify-fail/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/payment/verify-success/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/preload/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/searchable-resources/route.ts/route.ts +0 -11
- package/cli/src/app/api/v1/searchresult/route.ts/route.ts +0 -35
- package/cli/src/app/api/v1/sign-in/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/sign-out/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/sign-up/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/subscription/cancel/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/subscription/create/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/subscription/update/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/uimeta/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/uimetas/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/userpermission/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/visible-workspace/route.ts/route.ts +0 -5
- package/cli/src/app/api/v1/workspace/change/route.ts/route.ts +0 -5
- package/cli/src/app/favicon.ico +0 -0
- package/cli/src/app/layout.tsx +0 -42
- package/cli/src/app/page.tsx +0 -9
- package/cli/tailwind.config.ts +0 -13
- package/packages/base-repo/tools/git/commit-msg-script.ts +0 -42
- package/packages/base-repo/tools/git/pre-commit-script.ts +0 -431
- package/packages/level2/client/components/error-fallback/FdErrorFallback.jsx +0 -14
- package/packages/level2/client/components/feed/FdFeed.funcs.jsx +0 -65
- package/packages/level2/client/components/feed/FdFeed.jsx +0 -34
- package/packages/level2/client/components/feed/FdFeedActions.jsx +0 -15
- package/packages/level2/client/components/feed/FdFeedComments.jsx +0 -6
- package/packages/level2/client/components/feed/FdFeedEntry.jsx +0 -36
- package/packages/level2/client/components/feed/FdFeedHeader.jsx +0 -23
- package/packages/level2/client/components/feed/FdFeedReactionsSummary.jsx +0 -16
- package/packages/level2/client/components/providers/FdProviders.jsx +0 -28
- package/packages/level2/client/components/subscription-plan/FdSubscriptionPlan.jsx +0 -163
- package/packages/level2/client/components/wizard/FdWizard.jsx +0 -45
- package/packages/level2/client/components/wizard/FdWizardStepper.jsx +0 -55
- package/packages/level2/client/pages/dashboard-page/DashbordPage.jsx +0 -46
- package/packages/level2/client/pages/dynamic-layout-page/DynamicLayoutPage.jsx +0 -22
- package/packages/level2/client/pages/edit-password-page/EditPasswordPage.jsx +0 -8
- package/packages/level2/client/pages/edit-user-by-id-page/EditUserByIdPage.jsx +0 -14
- package/packages/level2/client/pages/edit-user-page/EditUserPage.jsx +0 -6
- package/packages/level2/client/pages/feed-page/FeedPage.jsx +0 -8
- package/packages/level2/client/pages/file-upload-page/FileUploadPage.jsx +0 -7
- package/packages/level2/client/pages/forgot-password-page/ForgotPasswordPage.jsx +0 -8
- package/packages/level2/client/pages/leads-viw-page/LeadsViewPage.jsx +0 -6
- package/packages/level2/client/pages/microsoft-page/MicrosoftPage.jsx +0 -16
- package/packages/level2/client/pages/payment-plan-page/PaymentPlanPage.jsx +0 -18
- package/packages/level2/client/pages/preload-page/PreloadPage.jsx +0 -25
- package/packages/level2/client/pages/reset-password-page/ResetPasswordPage.jsx +0 -8
- package/packages/level2/client/pages/screenshot-page/TestScreenshotPage.jsx +0 -23
- package/packages/level2/client/pages/sign-in-page/SignInPage.jsx +0 -24
- package/packages/level2/client/pages/sign-up-page/SignUpPage.jsx +0 -9
- package/packages/level2/client/pages/status-board-page/StatusBoardPage.jsx +0 -6
- package/packages/level2/client/pages/test-layout/TestLayout.jsx +0 -11
- package/packages/level2/client/pages/test-page/TestPage.jsx +0 -12
- package/packages/level2/client/pages/user-list-page/UserListPage.jsx +0 -4
- package/packages/level2/client/pages/view-page/ViewPage.jsx +0 -21
- package/packages/level2/client/payments/change-payment-method-field/ChangePaymentMethodField.jsx +0 -48
- package/packages/level2/client/payments/checkout-form/CheckoutForm.jsx +0 -95
- package/packages/level2/client/payments/checkout-form/CheckoutFormSubmit.jsx +0 -11
- package/packages/level2/client/payments/checkout-form/checkout-form-fields.jsx +0 -68
- package/packages/level2/client/website-scan/FdWebsiteScanResult.funcs.jsx +0 -12
- package/packages/level2/client/website-scan/FdWebsiteScanResult.jsx +0 -33
- package/packages/level2/client/website-scan/website-scan-data.jsx +0 -28
- package/packages/level2/client/website-scan/website-scan-icons/FacebookIcon.jsx +0 -6
- package/packages/level2/client/website-scan/website-scan-icons/FacebookPixelIcon.jsx +0 -49
- package/packages/level2/client/website-scan/website-scan-icons/GoogleAnalyticsIcon.jsx +0 -7
- package/packages/level2/client/website-scan/website-scan-icons/InstagramIcon.jsx +0 -32
- package/packages/level2/client/website-scan/website-scan-icons/LinkedinIcon.jsx +0 -6
- package/packages/level2/client/website-scan/website-scan-icons/OtherPlatformIcon.jsx +0 -110
- package/packages/level2/client/website-scan/website-scan-icons/ShopifyIcon.jsx +0 -46
- package/packages/level2/client/website-scan/website-scan-icons/SquarespaceIcon.jsx +0 -57
- package/packages/level2/client/website-scan/website-scan-icons/TiktokIcon.jsx +0 -15
- package/packages/level2/client/website-scan/website-scan-icons/WixIcon.jsx +0 -62
- package/packages/level2/client/website-scan/website-scan-icons/WordpressIcon.jsx +0 -53
- package/packages/level2/client/website-scan/website-scan-icons/XIcon.jsx +0 -6
- package/packages/level2/fd-app-toolbox/edit-other-user/EditOtherUser.jsx +0 -7
- package/packages/level2/fd-app-toolbox/edit-password-form/EditPasswordForm.jsx +0 -68
- package/packages/level2/fd-app-toolbox/edit-user-form/EditUserForm.jsx +0 -122
- package/packages/level2/fd-app-toolbox/edit-user-sheet/EditUserSheet.jsx +0 -35
- package/packages/level2/fd-app-toolbox/forgot-password-form/ForgotPasswordForm.jsx +0 -87
- package/packages/level2/fd-app-toolbox/layout/client-layout/ClientLayout.jsx +0 -19
- package/packages/level2/fd-app-toolbox/layout/client-root/ClientRoot.jsx +0 -32
- package/packages/level2/fd-app-toolbox/layout/hamburger-menu/FdHamburgerMenu.jsx +0 -47
- package/packages/level2/fd-app-toolbox/layout/navbar/FdNarrowNavbar.jsx +0 -40
- package/packages/level2/fd-app-toolbox/layout/sidebar/FdSidebar.jsx +0 -48
- package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-dropdown-menu/FdDropdownMenuItemTitle.jsx +0 -12
- package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-dropdown-menu/FdSidebarDropdownMenu.jsx +0 -81
- package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-resources-provider.jsx +0 -30
- package/packages/level2/fd-app-toolbox/layout/toolbar/FdToolbar.jsx +0 -89
- package/packages/level2/fd-app-toolbox/layout/toolbar/FdTopNav.jsx +0 -42
- package/packages/level2/fd-app-toolbox/layout/toolbar/title-provider/ToolbarTitleProvider.jsx +0 -10
- package/packages/level2/fd-app-toolbox/login-form/LoginForm.jsx +0 -165
- package/packages/level2/fd-app-toolbox/menu/notifications-menu/FdNotificationMenu.jsx +0 -43
- package/packages/level2/fd-app-toolbox/menu/notifications-menu/notification-list/FdNotificationList.jsx +0 -53
- package/packages/level2/fd-app-toolbox/menu/top-menu/FdTopMenu.jsx +0 -28
- package/packages/level2/fd-app-toolbox/menu/top-menu/top-menu-group/FdTopMenuGroup.jsx +0 -35
- package/packages/level2/fd-app-toolbox/menu/top-menu/top-menu-item/FdTopMenuItem.jsx +0 -47
- package/packages/level2/fd-app-toolbox/menu/user-dropdown-menu/FdUserDropdownMenu.jsx +0 -122
- package/packages/level2/fd-app-toolbox/menu/user-dropdown-menu/user-dropdown-menu-item/FdUserDropdownMenuItem.jsx +0 -56
- package/packages/level2/fd-app-toolbox/menu/visible-workspace-picker/FdVisibleWorkspacePicker.jsx +0 -36
- package/packages/level2/fd-app-toolbox/menu/workspace-picker/FdWorkspacePicker.jsx +0 -47
- package/packages/level2/fd-app-toolbox/providers/ThemeProvider/ThemeProvider.jsx +0 -27
- package/packages/level2/fd-app-toolbox/providers/auth-provider/AuthProvider.jsx +0 -38
- package/packages/level2/fd-app-toolbox/providers/sidebar-provider/FdSidebarContext.jsx +0 -17
- package/packages/level2/fd-app-toolbox/register-form/RegisterForm.jsx +0 -119
- package/packages/level2/fd-app-toolbox/report/FdChart.jsx +0 -120
- package/packages/level2/fd-app-toolbox/report/ReportChart.jsx +0 -29
- package/packages/level2/fd-app-toolbox/reset-password-form/ResetPasswordForm.jsx +0 -81
- package/packages/level2/fd-app-toolbox/search/FdSearch.jsx +0 -56
- package/packages/level2/fd-app-toolbox/search/search-dialog/FdSearchDialog.jsx +0 -72
- package/packages/level2/fd-app-toolbox/search/search-dialog-provider.jsx +0 -16
- package/packages/level2/fd-app-toolbox/search/search-input/FdSearchInput.jsx +0 -49
- package/packages/level2/fd-app-toolbox/search/search-resource-results/FdSearchResourcesResults.jsx +0 -36
- package/packages/level2/fd-app-toolbox/search/search-result/FdSearchResult.jsx +0 -46
- package/packages/level2/fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResult.jsx +0 -43
- package/packages/level2/fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResults.jsx +0 -22
- package/packages/level2/fd-app-toolbox/server/layout/private-layout/PrivateLayout.jsx +0 -32
- package/packages/level2/fd-app-toolbox/status-board/FdStatusBoard.jsx +0 -49
- package/packages/level2/fd-app-toolbox/status-board/status-board-item/FdStatusBoardItem.jsx +0 -17
- package/packages/level2/fd-app-toolbox/status-board/status-board-status/FdStatusBoardStatus.jsx +0 -27
- package/packages/level2/fd-app-toolbox/user-list/UserList.jsx +0 -58
- package/packages/level2/fd-component-toolbox/animation/FdLabelAnimation.jsx +0 -55
- package/packages/level2/fd-component-toolbox/avatar/FdAvatar.jsx +0 -50
- package/packages/level2/fd-component-toolbox/back-button/FdBackButton.jsx +0 -21
- package/packages/level2/fd-component-toolbox/badge/FdBadge.jsx +0 -19
- package/packages/level2/fd-component-toolbox/badge-toggle-list/FdBadgeToggleList.jsx +0 -47
- package/packages/level2/fd-component-toolbox/button/FdButton.jsx +0 -64
- package/packages/level2/fd-component-toolbox/calendar/FdCalendar.jsx +0 -68
- package/packages/level2/fd-component-toolbox/card/FdCard.jsx +0 -56
- package/packages/level2/fd-component-toolbox/card/FdCardBigDigits.jsx +0 -25
- package/packages/level2/fd-component-toolbox/chart/FdChart.jsx +0 -269
- package/packages/level2/fd-component-toolbox/checkbox/FdCheckbox.jsx +0 -39
- package/packages/level2/fd-component-toolbox/command/FdCommand.jsx +0 -123
- package/packages/level2/fd-component-toolbox/datepicker/FdDatePicker.jsx +0 -155
- package/packages/level2/fd-component-toolbox/dialog/FdDialog.jsx +0 -106
- package/packages/level2/fd-component-toolbox/dialog/YesOrNoDialog.jsx +0 -57
- package/packages/level2/fd-component-toolbox/drag-and-drop/FdDragDropContext.jsx +0 -19
- package/packages/level2/fd-component-toolbox/drag-and-drop/FdDraggable.jsx +0 -27
- package/packages/level2/fd-component-toolbox/drag-and-drop/FdDroppable.jsx +0 -22
- package/packages/level2/fd-component-toolbox/dropdown-menu/FdDropdownMenu.jsx +0 -198
- package/packages/level2/fd-component-toolbox/dynamic-layout/FdDynamicComponent.jsx +0 -27
- package/packages/level2/fd-component-toolbox/dynamic-layout/FdDynamicLayoutDragAndDrop.jsx +0 -78
- package/packages/level2/fd-component-toolbox/fade-out-text/FdFadeOutText.jsx +0 -52
- package/packages/level2/fd-component-toolbox/form/FdForm.jsx +0 -146
- package/packages/level2/fd-component-toolbox/icon/FdIcon.jsx +0 -192
- package/packages/level2/fd-component-toolbox/icon/custom-icons/FdFilterIcon.jsx +0 -11
- package/packages/level2/fd-component-toolbox/image/FdImage.jsx +0 -15
- package/packages/level2/fd-component-toolbox/input/FdInput.jsx +0 -94
- package/packages/level2/fd-component-toolbox/label/FdLabel.jsx +0 -19
- package/packages/level2/fd-component-toolbox/link/FdLink.jsx +0 -23
- package/packages/level2/fd-component-toolbox/list/FdList.jsx +0 -20
- package/packages/level2/fd-component-toolbox/list/list-item/FdListItem.jsx +0 -46
- package/packages/level2/fd-component-toolbox/loading/FdLoadingIndicator.jsx +0 -7
- package/packages/level2/fd-component-toolbox/logos/FacebookLogo.jsx +0 -11
- package/packages/level2/fd-component-toolbox/logos/GoogleLogo.jsx +0 -12
- package/packages/level2/fd-component-toolbox/logos/MicrosoftLogo.jsx +0 -11
- package/packages/level2/fd-component-toolbox/markdown/FdMarkdown.jsx +0 -105
- package/packages/level2/fd-component-toolbox/markdown/markdown-parser.jsx +0 -72
- package/packages/level2/fd-component-toolbox/multiselect/FdMultiselect.jsx +0 -240
- package/packages/level2/fd-component-toolbox/navigation/FdNavigation.jsx +0 -43
- package/packages/level2/fd-component-toolbox/navigation/navigation-item/FdNavigationItem.jsx +0 -23
- package/packages/level2/fd-component-toolbox/radio-group/FdRadioGroup.jsx +0 -46
- package/packages/level2/fd-component-toolbox/rich-text/FdRichText.jsx +0 -58
- package/packages/level2/fd-component-toolbox/save-status/FdSaveStatus.jsx +0 -40
- package/packages/level2/fd-component-toolbox/select/FdSelect.jsx +0 -173
- package/packages/level2/fd-component-toolbox/separator/FdSeparator.jsx +0 -19
- package/packages/level2/fd-component-toolbox/sheet/FdSheet.jsx +0 -121
- package/packages/level2/fd-component-toolbox/slide-toggle/FdSlideToggle.jsx +0 -57
- package/packages/level2/fd-component-toolbox/spinner/Spinner.jsx +0 -36
- package/packages/level2/fd-component-toolbox/subheading/FdSubHeading.jsx +0 -12
- package/packages/level2/fd-component-toolbox/switch/FdSwitch.jsx +0 -55
- package/packages/level2/fd-component-toolbox/tabs/FdTabs.jsx +0 -53
- package/packages/level2/fd-component-toolbox/textarea/FdTextArea.jsx +0 -42
- package/packages/level2/fd-component-toolbox/toaster/FdToaster.jsx +0 -20
- package/packages/level2/fd-component-toolbox/tooltip/FdTooltip.jsx +0 -80
- package/packages/level2/meta/browsers/base-multi-browser/FdBaseMultiBrowser.jsx +0 -72
- package/packages/level2/meta/browsers/base-multi-browser/base-multi-browser-dialog/FdBaseMultiBrowserDialog.jsx +0 -159
- package/packages/level2/meta/browsers/browser/FdBrowser.jsx +0 -58
- package/packages/level2/meta/browsers/browser/browser-dialog/FdBrowserDialog.jsx +0 -89
- package/packages/level2/meta/browsers/many-to-many-browser/FdManyToManyBrowser.jsx +0 -33
- package/packages/level2/meta/browsers/multi-browser/FdMultiBrowser.jsx +0 -32
- package/packages/level2/meta/card-list/FdCardList.jsx +0 -40
- package/packages/level2/meta/card-list/card/FdCard.jsx +0 -44
- package/packages/level2/meta/card-list/card/action-block/FdCardActionBlock.jsx +0 -70
- package/packages/level2/meta/card-list/card/content-block/FdCardContentBlock.jsx +0 -64
- package/packages/level2/meta/card-list/card/image-block/FdCardImage.jsx +0 -10
- package/packages/level2/meta/client/framework/hooks.jsx +0 -39
- package/packages/level2/meta/comment/FdComment.jsx +0 -16
- package/packages/level2/meta/comment/FdCommentList.jsx +0 -32
- package/packages/level2/meta/components/edit-image/FdEditImage.jsx +0 -42
- package/packages/level2/meta/components/edit-image/FdEditImageActionMenu.jsx +0 -31
- package/packages/level2/meta/components/edit-image/FdEditImageDropdownMenu.jsx +0 -42
- package/packages/level2/meta/components/file-upload/FileUpload.jsx +0 -103
- package/packages/level2/meta/components/file-upload/PreviewMedia.jsx +0 -36
- package/packages/level2/meta/components/multi-list/FdMultiList.jsx +0 -65
- package/packages/level2/meta/components/multi-list/FdMultiListEditResource.jsx +0 -31
- package/packages/level2/meta/edit-resource/FdEditResource.jsx +0 -135
- package/packages/level2/meta/edit-resource/FdEditResourceFormBody.jsx +0 -8
- package/packages/level2/meta/edit-resource/FdEditResourceHeader.jsx +0 -43
- package/packages/level2/meta/edit-resource/FdEditResourceSheet.jsx +0 -70
- package/packages/level2/meta/edit-resource/SaveCompleteProvider.jsx +0 -16
- package/packages/level2/meta/edit-resource/edit-link/FdEditLink.jsx +0 -48
- package/packages/level2/meta/edit-resource/edit-link/FdEditLinkResource.jsx +0 -18
- package/packages/level2/meta/edit-resource/edit-resource-dialog/FdEditResourceDialog.jsx +0 -34
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceBlobField.jsx +0 -15
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceEnumField.jsx +0 -35
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceFlagsEnumField.jsx +0 -23
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceImageField.jsx +0 -7
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourcePropertyBlock.jsx +0 -38
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceRichTextField.jsx +0 -16
- package/packages/level2/meta/edit-resource/edit-resource-property-block/edit-resource-fields.jsx +0 -53
- package/packages/level2/meta/edit-resource/edit-resource-property-field/FdEditResourcePropertyField.jsx +0 -105
- package/packages/level2/meta/filtering/filter/FdEnumFlagFilter.jsx +0 -40
- package/packages/level2/meta/filtering/filter/FdFilter.jsx +0 -123
- package/packages/level2/meta/filtering/filter/filters/BooleanFilter.jsx +0 -25
- package/packages/level2/meta/filtering/filter/filters/DateFilter.jsx +0 -10
- package/packages/level2/meta/filtering/filter/filters/EnumFilter.jsx +0 -44
- package/packages/level2/meta/filtering/filter/filters/GuidFilter.jsx +0 -28
- package/packages/level2/meta/filtering/filter/filters/IntegerFilter.jsx +0 -28
- package/packages/level2/meta/filtering/filter/filters/TextFilter.jsx +0 -11
- package/packages/level2/meta/filtering/resource-filter-list/FdResourceFilterList.jsx +0 -120
- package/packages/level2/meta/filtering/resource-filter-list/resource-list-dropdown-menu/ResourceListDropdownMenu.funcs.jsx +0 -4
- package/packages/level2/meta/filtering/resource-filter-list/resource-list-dropdown-menu/ResourceListDropdownMenu.jsx +0 -43
- package/packages/level2/meta/providers/global-provider/FdGlobalContext.jsx +0 -17
- package/packages/level2/meta/resource-list/ResourceList.jsx +0 -63
- package/packages/level2/meta/resource-list/resource-add-button.jsx +0 -11
- package/packages/level2/meta/resource-list/resource-list-card/FdResourceListCard.jsx +0 -7
- package/packages/level2/meta/resource-list/resource-list-filter/FdResourceListFilter.jsx +0 -11
- package/packages/level2/meta/resource-list/resource-table-list/FdResourceTableList.jsx +0 -14
- package/packages/level2/meta/table/FdTable.jsx +0 -147
- package/packages/level2/meta/table/body/FdTableBody.jsx +0 -9
- package/packages/level2/meta/table/body-cell/FdActionBodyCell.jsx +0 -145
- package/packages/level2/meta/table/body-cell/FdBlobBodyCell.jsx +0 -27
- package/packages/level2/meta/table/body-cell/FdBodyCell.jsx +0 -133
- package/packages/level2/meta/table/body-cell/FdBodyCellValue.jsx +0 -59
- package/packages/level2/meta/table/body-cell/FdBodyExpandCell.jsx +0 -6
- package/packages/level2/meta/table/body-cell/FdBodyExpandPropertyCell.jsx +0 -22
- package/packages/level2/meta/table/body-cell/FdCustomActionLink.jsx +0 -16
- package/packages/level2/meta/table/body-cell/FdMultiselectCellTemplate.jsx +0 -39
- package/packages/level2/meta/table/body-cell/FdViewCell.jsx +0 -12
- package/packages/level2/meta/table/body-row/FdTableBodyRow.jsx +0 -49
- package/packages/level2/meta/table/header/FdTableHeader.jsx +0 -54
- package/packages/level2/meta/table/header-cell/FdResizable.jsx +0 -18
- package/packages/level2/meta/table/header-cell/FdResizableEdgeHandle.jsx +0 -4
- package/packages/level2/meta/table/header-cell/FdTableHeaderActionCell.jsx +0 -49
- package/packages/level2/meta/table/header-cell/FdTableHeaderCell.jsx +0 -89
- package/packages/level2/meta/table/header-cell/FdTableHeaderCellActionButton.jsx +0 -23
- package/packages/level2/meta/table/pager/FdPager.jsx +0 -72
- package/packages/level2/meta/table/table-custom-action/TableCustomAction.jsx +0 -26
- package/packages/level2/meta/view/FdView.jsx +0 -31
- package/packages/level2/meta/view/FdViewSheet.jsx +0 -103
- package/packages/level2/meta/view/view-resource/FdViewResource.jsx +0 -108
- package/packages/level2/meta/view/view-resource/templates/ManyToOneTableHeaderCellTemplate.jsx +0 -13
- package/src/app/error.jsx +0 -5
- package/src/app/global-error.jsx +0 -5
- package/src/app/loading.jsx +0 -11
- package/src/hd/footer/HdFooter.jsx +0 -27
- package/src/hd/footer/hd-footer-item/HdFooterItem.jsx +0 -14
- package/src/lm/ai-scan/AiScanAction.jsx +0 -21
- package/src/lm/ai-scan/cell-templates/AiScanWebsiteResultCellTemplate.jsx +0 -31
- package/src/lm/components/LmCardReport.jsx +0 -12
- package/src/lm/configs/lm-list-configs.jsx +0 -72
- package/src/lm/google-place/action-dropdown/GooglePlaceActionDropdown.jsx +0 -42
- package/src/lm/google-place/actions/GooglePlaceSaveToGroupAction.jsx +0 -22
- package/src/lm/google-place/cell-templates/GooglePlaceBusinessInfoCellTemplate.jsx +0 -59
- package/src/lm/google-place/cell-templates/GooglePlaceEmailsCellTemplate.jsx +0 -34
- package/src/lm/google-place/cell-templates/GooglePlaceScanAction.jsx +0 -15
- package/src/lm/lead/action-dropdown/LeadActionDropdown.jsx +0 -39
- package/src/lm/lead/actions/move-to-group-action/LeadMoveToGroupAction.jsx +0 -28
- package/src/lm/lead/cell-templates/LeadBusinessInfoCellTemplate.jsx +0 -64
- package/src/lm/lead/cell-templates/LeadScanAction.jsx +0 -15
- package/src/lm/lead/lead-google-place/LeadGooglePlaceIndicator.jsx +0 -8
- package/src/lm/lead/lead-google-place/LeadGooglePlaceIndicators.jsx +0 -17
- package/src/lm/lead/lead-google-place/LeadGooglePlaceInfo.jsx +0 -15
- package/src/lm/lead/view/LeadsView.jsx +0 -8
- package/src/lm/pages/HomePage.jsx +0 -53
- 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
|
-
}
|