@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
package/packages/level2/fd-app-toolbox/search/search-resource-results/FdSearchResourcesResults.jsx
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { FdIcon, iconNames, iconSizes } from "@fd-component-toolbox/icon/FdIcon";
|
|
3
|
-
import FdLink from "@fd-component-toolbox/link/FdLink";
|
|
4
|
-
/**
|
|
5
|
-
* Component for displaying search results as a clickable list with screen names
|
|
6
|
-
*
|
|
7
|
-
* @param props - {@link FdSearchResourceResultsProps}
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```tsx
|
|
11
|
-
* <FdSearchScreenResults
|
|
12
|
-
* resourcesResults={[
|
|
13
|
-
* {resourceName: "Dashboard", displayName: "Main Dashboard", resourceListUrl: "/dashboard"},
|
|
14
|
-
* {resourceName: "Settings", displayName: "User Settings", resourceListUrl: "/settings"}
|
|
15
|
-
* ]}
|
|
16
|
-
* onClose={...}
|
|
17
|
-
* />
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export function FdSearchScreenResults({ resourcesResults, onClose }) {
|
|
21
|
-
return (<div className="ml-4">
|
|
22
|
-
<div className="mb-4 flex items-center space-x-2">
|
|
23
|
-
<FdIcon name={iconNames.listBulletIcon} size={iconSizes.medium}/>
|
|
24
|
-
<h2 className="text-base font-medium text-fd-tertiary-900">Screens</h2>
|
|
25
|
-
</div>
|
|
26
|
-
<div className="flex flex-col">
|
|
27
|
-
{resourcesResults.map((resourceResult) => (<FdLink key={`${resourceResult.resourceName}_${resourceResult.resourceListUrl}`} href={resourceResult.resourceListUrl} onClick={onClose}>
|
|
28
|
-
<div className="relative w-full overflow-hidden rounded border-input py-1.5 pl-4 transition duration-200 ease-linear hover:bg-muted/50">
|
|
29
|
-
<h3 className="text-sm font-semibold text-muted-foreground">
|
|
30
|
-
{resourceResult.resourceName}
|
|
31
|
-
</h3>
|
|
32
|
-
</div>
|
|
33
|
-
</FdLink>))}
|
|
34
|
-
</div>
|
|
35
|
-
</div>);
|
|
36
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import React, { useState } from "react";
|
|
2
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
3
|
-
import { getSearchDialogTableConfig, initSearchResult, } from "@fd-app-toolbox/search/search-result/FdSearchResult.funcs";
|
|
4
|
-
import { FdIcon, iconSizes } from "@fd-component-toolbox/icon/FdIcon";
|
|
5
|
-
import { tableDisplayModes } from "@fd-toolbox/enums/enums";
|
|
6
|
-
import FdLink from "@fd-component-toolbox/link/FdLink";
|
|
7
|
-
import { getResourceViewUrl } from "@meta/services/meta-navigations";
|
|
8
|
-
import { FdTable } from "@meta/table/FdTable";
|
|
9
|
-
import { FdSubHeading } from "@fd-component-toolbox/subheading/FdSubHeading";
|
|
10
|
-
/**
|
|
11
|
-
* Component for displaying resource items in table with resource title
|
|
12
|
-
*
|
|
13
|
-
* @param props - {@link FdSearchResultsProps}
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```tsx
|
|
17
|
-
* function MyComponent() {
|
|
18
|
-
* const [items, setItems] = useState([...]);
|
|
19
|
-
*
|
|
20
|
-
* return (
|
|
21
|
-
* <FdSearchResults resourceName="Contact" items={items} onClose={...} refreshSearchResults={...}/>
|
|
22
|
-
* );
|
|
23
|
-
* }
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export function FdSearchResults({ resourceName, items, onClose, refreshSearchResults, }) {
|
|
27
|
-
const [uiResourceMeta, setUiResourceMeta] = useState();
|
|
28
|
-
const [readonly, setReadonly] = useState(false);
|
|
29
|
-
const [iconResource, setIconResource] = useState("");
|
|
30
|
-
useAsyncEffect(async () => {
|
|
31
|
-
await initSearchResult(resourceName, setUiResourceMeta, setReadonly, setIconResource);
|
|
32
|
-
}, []);
|
|
33
|
-
return (<>
|
|
34
|
-
<div className="mb-4 ml-4 flex items-center space-x-2">
|
|
35
|
-
<FdIcon name={iconResource} size={iconSizes.medium}/>
|
|
36
|
-
<FdLink href={getResourceViewUrl(resourceName)} onClick={onClose}>
|
|
37
|
-
<FdSubHeading>
|
|
38
|
-
{uiResourceMeta?.resourceMeta.display.pluralName ?? resourceName}
|
|
39
|
-
</FdSubHeading>
|
|
40
|
-
</FdLink>
|
|
41
|
-
</div>
|
|
42
|
-
<div>
|
|
43
|
-
<FdTable className="px-4" items={items} readonly={readonly} uiResourceMeta={uiResourceMeta} externalSorting={false} displayMode={tableDisplayModes.minimal} tableConfig={getSearchDialogTableConfig()} itemDeleted={refreshSearchResults}/>
|
|
44
|
-
</div>
|
|
45
|
-
</>);
|
|
46
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import React, { useState } from "react";
|
|
3
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
4
|
-
import { tableDisplayModes } from "@fd-toolbox/enums/enums";
|
|
5
|
-
import { FdIcon, iconSizes } from "@fd-component-toolbox/icon/FdIcon";
|
|
6
|
-
import { getSearchableProperties, getSearchResultTableId, getTableConfig, initSearchSearchableResourceResult, } from "@fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResult.funcs";
|
|
7
|
-
import { FdTable } from "@meta/table/FdTable";
|
|
8
|
-
/**
|
|
9
|
-
* Component for displaying resource items in table with resource title
|
|
10
|
-
* Similar to {@link FdSearchResults} but with non-clickable title
|
|
11
|
-
*
|
|
12
|
-
* @param props - {@link FdSearchSearchableResourceResultProps}
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```tsx
|
|
16
|
-
* function MyComponent() {
|
|
17
|
-
* const [items, setItems] = useState([...]);
|
|
18
|
-
*
|
|
19
|
-
* return (
|
|
20
|
-
* <FdSearchSearchableResourceResult resourceName="Contact" items={items}
|
|
21
|
-
* );
|
|
22
|
-
* }
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export function FdSearchSearchableResourceResult({ resourceName, items, parentContextName, }) {
|
|
26
|
-
const [uiResourceMeta, setUiResourceMeta] = useState();
|
|
27
|
-
const [iconResource, setIconResource] = useState("");
|
|
28
|
-
useAsyncEffect(async () => {
|
|
29
|
-
await initSearchSearchableResourceResult(resourceName, setUiResourceMeta, setIconResource);
|
|
30
|
-
}, []);
|
|
31
|
-
const searchableProperties = getSearchableProperties(uiResourceMeta);
|
|
32
|
-
return (<div>
|
|
33
|
-
<div className="mb-4 ml-4 flex items-center space-x-2">
|
|
34
|
-
<FdIcon name={iconResource} size={iconSizes.medium}/>
|
|
35
|
-
<h2 className="text-base font-medium text-fd-tertiary-900">
|
|
36
|
-
{uiResourceMeta?.resourceMeta.display.pluralName ?? resourceName}
|
|
37
|
-
</h2>
|
|
38
|
-
</div>
|
|
39
|
-
<div>
|
|
40
|
-
<FdTable id={getSearchResultTableId(parentContextName, resourceName)} className="px-4" items={items} readonly={false} uiResourceMeta={uiResourceMeta} externalSorting={false} displayMode={tableDisplayModes.minimal} tableConfig={getTableConfig(searchableProperties)}/>
|
|
41
|
-
</div>
|
|
42
|
-
</div>);
|
|
43
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { FdSearchSearchableResourceResult } from "@fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResult";
|
|
2
|
-
/**
|
|
3
|
-
* Component for rendering multiple searchable resource results
|
|
4
|
-
*
|
|
5
|
-
* @param props - {@link FdSearchSearchableResourceResultsProps}
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```tsx
|
|
9
|
-
* function MyComponent() {
|
|
10
|
-
* const [resourcesResults, setResourcesResults] = useState([...]);
|
|
11
|
-
*
|
|
12
|
-
* return (
|
|
13
|
-
* <FdSearchSearchableResourceResults resourcesResults={resourcesResults}/>
|
|
14
|
-
* );
|
|
15
|
-
* }
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
export function FdSearchSearchableResourceResults({ resourcesResults, parentContextName, }) {
|
|
19
|
-
return (<>
|
|
20
|
-
{resourcesResults.map(({ resourceName, resources }) => resources.length && (<FdSearchSearchableResourceResult parentContextName={parentContextName} key={resourceName} resourceName={resourceName} items={resources}/>))}
|
|
21
|
-
</>);
|
|
22
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { getUserId } from "@meta/server/auth/users/current-user-id-provider";
|
|
2
|
-
import { initInternalResourceMetasCacheFromJson } from "@meta/server/resources/init-internal-resource-metas-from-json";
|
|
3
|
-
import { getAllUserWorkspaces } from "@fd-app-toolbox/server/infra/workspaces/workspace-db";
|
|
4
|
-
import { getUserVisibleWorkspaces } from "@fd-app-toolbox/server/workspace/visible-workspaces";
|
|
5
|
-
import { getResources } from "@meta/server/services/resource-provider";
|
|
6
|
-
import { buildPreloadData } from "@fd-app-toolbox/server/controlles/preload/preload-controller";
|
|
7
|
-
import { ClientRoot } from "@fd-app-toolbox/layout/client-root/ClientRoot";
|
|
8
|
-
import { getSidebarResources } from "@fd-app-toolbox/server/layout/sidebar/sidebar-resources";
|
|
9
|
-
import { withUserIdProps } from "@fd-toolbox/types/with-user-id";
|
|
10
|
-
import { getODataFilterUuid } from "@fd-toolbox/odata/odata-builder-funcs";
|
|
11
|
-
import { baseResourceProps } from "@fd-toolbox/base-resource/props/base-resource-props";
|
|
12
|
-
import { oDataOrderByDirectionConsts } from "@fd-toolbox/enums/enums";
|
|
13
|
-
import { resourceNames } from "@fd-toolbox/resources/resource-names";
|
|
14
|
-
import { getSidebarResourceNames } from "@fd-app-toolbox/layout/sidebar/sidebar-resource-names-cache";
|
|
15
|
-
export async function PrivateLayout({ children }) {
|
|
16
|
-
await initInternalResourceMetasCacheFromJson();
|
|
17
|
-
const sidebarResourceNames = getSidebarResourceNames();
|
|
18
|
-
const userId = await getUserId();
|
|
19
|
-
const notificationOdataConfig = getODataFilterUuid(withUserIdProps.userId, userId)
|
|
20
|
-
.orderBy(baseResourceProps.createdDate, oDataOrderByDirectionConsts.desc)
|
|
21
|
-
.build();
|
|
22
|
-
const userSettingsOdataConfig = getODataFilterUuid(withUserIdProps.userId, userId).build();
|
|
23
|
-
const userSettings = getResources(resourceNames.userSetting, userId, userSettingsOdataConfig);
|
|
24
|
-
const preloadData = buildPreloadData();
|
|
25
|
-
const sidebarResources = getSidebarResources(sidebarResourceNames, userId);
|
|
26
|
-
const userWorkspaces = getAllUserWorkspaces(userId);
|
|
27
|
-
const userVisibleWorkspaces = getUserVisibleWorkspaces();
|
|
28
|
-
const notifications = getResources(resourceNames.notification, userId, notificationOdataConfig);
|
|
29
|
-
return (<ClientRoot sidebarResourcesPromise={sidebarResources} preloadDataPromise={preloadData} userSettingsPromise={userSettings} userWorkspacesPromise={userWorkspaces} visibleWorkspacesPromise={userVisibleWorkspaces} notificationsPromise={notifications}>
|
|
30
|
-
{children}
|
|
31
|
-
</ClientRoot>);
|
|
32
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import React, { useState } from "react";
|
|
3
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
4
|
-
import { FdStatusBoardStatus } from "@fd-app-toolbox/status-board/status-board-status/FdStatusBoardStatus";
|
|
5
|
-
import { onDragEnd, onInit } from "@fd-app-toolbox/status-board/FdStatusBoard.funcs";
|
|
6
|
-
import FdDragDropContext from "@fd-component-toolbox/drag-and-drop/FdDragDropContext";
|
|
7
|
-
import FdDroppable from "@fd-component-toolbox/drag-and-drop/FdDroppable";
|
|
8
|
-
import FdDraggable from "@fd-component-toolbox/drag-and-drop/FdDraggable";
|
|
9
|
-
import { droppableIdConsts } from "@fd-app-toolbox/status-board/status-board-constants";
|
|
10
|
-
import { useSetTitle } from "@meta/page/use-set-title";
|
|
11
|
-
const pageTitle = "Status Board";
|
|
12
|
-
/**
|
|
13
|
-
* Renders a fully interactive status board with draggable columns.
|
|
14
|
-
*
|
|
15
|
-
* This component fetches its own data and handles the drag-and-drop logic internally,
|
|
16
|
-
* making it a self-contained feature for visualizing and managing workflows.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```tsx
|
|
20
|
-
* // Simply render the component to display the full status board.
|
|
21
|
-
* <FdStatusBoard />
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export function FdStatusBoard() {
|
|
25
|
-
const [statusBoardData, setStatusBoardData] = useState([]);
|
|
26
|
-
useSetTitle(pageTitle);
|
|
27
|
-
useAsyncEffect(async () => {
|
|
28
|
-
await onInit(setStatusBoardData);
|
|
29
|
-
}, []);
|
|
30
|
-
return (<FdDragDropContext onDragEnd={(result) => onDragEnd(result, { statusBoardData, setStatusBoardData })}>
|
|
31
|
-
<div className="m-7 flex flex-row">
|
|
32
|
-
{statusBoardData.length > 0 ? (<FdDroppable droppableId={droppableIdConsts.statusBoard}>
|
|
33
|
-
<div className="flex flex-row">
|
|
34
|
-
{statusBoardData.map((status) => (<FdDraggable key={status.id} draggableId={status.id}>
|
|
35
|
-
<div className="mr-4">
|
|
36
|
-
<FdStatusBoardStatus droppableId={status.id} name={status.name} statusBoardItemList={status.statusBoardItemList ?? []}/>
|
|
37
|
-
</div>
|
|
38
|
-
</FdDraggable>))}
|
|
39
|
-
</div>
|
|
40
|
-
</FdDroppable>) : (<div className="flex size-full items-center justify-center">
|
|
41
|
-
<div className="text-center">
|
|
42
|
-
<div className="mx-auto size-16 animate-spin rounded-full border-4 border-dashed"></div>
|
|
43
|
-
<h2 className="mt-4 text-zinc-900 dark:text-white">Loading...</h2>
|
|
44
|
-
<p className="text-zinc-600 dark:text-zinc-400">We are pulling in your data</p>
|
|
45
|
-
</div>
|
|
46
|
-
</div>)}
|
|
47
|
-
</div>
|
|
48
|
-
</FdDragDropContext>);
|
|
49
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { FdImage } from "@fd-component-toolbox/image/FdImage";
|
|
3
|
-
import { imgAvatarPath } from "@fd-app-toolbox/status-board/status-board-constants";
|
|
4
|
-
import { FdAvatar, FdAvatarFallback, FdAvatarImage } from "@fd-component-toolbox/avatar/FdAvatar";
|
|
5
|
-
export function FdStatusBoardItem({ item }) {
|
|
6
|
-
return (<div className="group flex w-72 max-w-md cursor-pointer flex-col gap-3 rounded-lg border border-foreground/10 bg-background p-4 shadow-sm transition-shadow duration-300 hover:shadow-md">
|
|
7
|
-
<div className="text-sm font-semibold text-foreground/70">{item.content}</div>
|
|
8
|
-
<div className="flex items-center justify-between text-xs text-muted">
|
|
9
|
-
<FdAvatar className="ml-auto size-7">
|
|
10
|
-
<FdAvatarImage />
|
|
11
|
-
<FdAvatarFallback>
|
|
12
|
-
<FdImage className="rounded-full object-cover" src={imgAvatarPath} alt="logo" width={50} height={50}/>
|
|
13
|
-
</FdAvatarFallback>
|
|
14
|
-
</FdAvatar>
|
|
15
|
-
</div>
|
|
16
|
-
</div>);
|
|
17
|
-
}
|
package/packages/level2/fd-app-toolbox/status-board/status-board-status/FdStatusBoardStatus.jsx
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { FdStatusBoardItem } from "@fd-app-toolbox/status-board/status-board-item/FdStatusBoardItem";
|
|
3
|
-
import FdDraggable from "@fd-component-toolbox/drag-and-drop/FdDraggable";
|
|
4
|
-
import FdDroppable from "@fd-component-toolbox/drag-and-drop/FdDroppable";
|
|
5
|
-
export function FdStatusBoardStatus({ name, droppableId, statusBoardItemList }) {
|
|
6
|
-
const renderDraggableItem = (item) => (<FdDraggable key={item.id} draggableId={item.id}>
|
|
7
|
-
<FdStatusBoardItem item={item}/>
|
|
8
|
-
</FdDraggable>);
|
|
9
|
-
return (<FdDroppable droppableId={droppableId}>
|
|
10
|
-
<div className="group relative h-[calc(100vh-7.5rem)] w-80 rounded-lg bg-muted transition-all duration-300">
|
|
11
|
-
<div className="relative z-10 flex items-center justify-between bg-muted p-4">
|
|
12
|
-
<p className="flex items-center text-sm font-semibold text-foreground">
|
|
13
|
-
<span className="mr-2 size-3 rounded-full bg-fd-accent"></span>
|
|
14
|
-
{name}
|
|
15
|
-
</p>
|
|
16
|
-
<span className="rounded-full bg-foreground/10 px-2 py-1 text-xs font-semibold text-foreground">
|
|
17
|
-
{statusBoardItemList.length}
|
|
18
|
-
</span>
|
|
19
|
-
</div>
|
|
20
|
-
<div className="h-[calc(100vh-12.5rem)] space-y-1 overflow-y-auto bg-muted px-4 py-2">
|
|
21
|
-
{statusBoardItemList.length > 0 ? (statusBoardItemList.map(renderDraggableItem)) : (<div className="flex h-full items-center justify-center">
|
|
22
|
-
<p className="text-center text-foreground/50">No items available</p>
|
|
23
|
-
</div>)}
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
</FdDroppable>);
|
|
27
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useState, useCallback } from "react";
|
|
3
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
4
|
-
import { loadData, getUserListHeaderText, deleteUser } from "@fd-app-toolbox/user-list/UserList.funcs";
|
|
5
|
-
import { FdSwitch } from "@fd-component-toolbox/switch/FdSwitch";
|
|
6
|
-
import { FdList } from "@fd-component-toolbox/list/FdList";
|
|
7
|
-
import { FdButton } from "@fd-component-toolbox/button/FdButton";
|
|
8
|
-
import { FdIcon, iconNames } from "@fd-component-toolbox/icon/FdIcon";
|
|
9
|
-
import { YesOrNoDialog } from "@fd-component-toolbox/dialog/YesOrNoDialog";
|
|
10
|
-
import { EditUserSheet } from "@fd-app-toolbox/edit-user-sheet/EditUserSheet";
|
|
11
|
-
import { silentChangeUrl } from "@fd-toolbox/routing/routers";
|
|
12
|
-
import { routes } from "@fd-toolbox/routing/routes";
|
|
13
|
-
import { useSetTitle } from "@meta/page/use-set-title";
|
|
14
|
-
import { FdSubHeading } from "@fd-component-toolbox/subheading/FdSubHeading";
|
|
15
|
-
import { messages } from "@fd-toolbox-core/constants/messages-constants";
|
|
16
|
-
const pageTitle = "User List";
|
|
17
|
-
function UserList() {
|
|
18
|
-
const [users, setUsers] = useState([]);
|
|
19
|
-
const [showDisabledUsers, setShowDisabledUsers] = useState(false);
|
|
20
|
-
useSetTitle(pageTitle);
|
|
21
|
-
useAsyncEffect(async () => {
|
|
22
|
-
await loadData(setUsers, showDisabledUsers);
|
|
23
|
-
}, [showDisabledUsers]);
|
|
24
|
-
const handleDisabledUsersToggle = useCallback((value) => {
|
|
25
|
-
setShowDisabledUsers(value);
|
|
26
|
-
}, []);
|
|
27
|
-
const handleDeleteConfirmation = useCallback(async (isYes, userId) => {
|
|
28
|
-
if (isYes) {
|
|
29
|
-
await deleteUser(userId);
|
|
30
|
-
setUsers(users.filter((user) => user.id !== userId));
|
|
31
|
-
}
|
|
32
|
-
}, [users]);
|
|
33
|
-
return (<div className="p-6">
|
|
34
|
-
<FdSubHeading className="mb-4">{getUserListHeaderText()}</FdSubHeading>
|
|
35
|
-
<div className="mb-4 flex flex-row items-center gap-5">
|
|
36
|
-
<EditUserSheet onEditClick={() => silentChangeUrl(routes.editUser)}>
|
|
37
|
-
<FdButton className="min-w-20">Add</FdButton>
|
|
38
|
-
</EditUserSheet>
|
|
39
|
-
<FdSwitch text="Show disabled users" onCheckedChange={handleDisabledUsersToggle} checked={showDisabledUsers} name={"showDisabledUsers"}/>
|
|
40
|
-
</div>
|
|
41
|
-
<FdList className="overflow-auto border-y px-0 py-2">
|
|
42
|
-
{users?.map((userData) => (<li key={userData.id} className="flex w-full items-center justify-between gap-2 hover:bg-accent">
|
|
43
|
-
<div className="flex items-center gap-0.5">
|
|
44
|
-
<EditUserSheet userData={userData} onEditClick={() => silentChangeUrl(`${routes.editUser}?${userData.id}`)}>
|
|
45
|
-
<FdButton size="sm" variant="icon" className="px-1" tooltipText="Edit User" tooltipSide="right" tooltipClassName="ml-2">
|
|
46
|
-
<FdIcon className="text-fd-accent" name={iconNames.edit}/>
|
|
47
|
-
</FdButton>
|
|
48
|
-
</EditUserSheet>
|
|
49
|
-
<YesOrNoDialog asTriggerChild title={messages.deleteConfirmation || ""} onResponse={(isYes) => handleDeleteConfirmation(isYes, userData.id)} trigger={<FdButton size="sm" variant="icon" className="px-1">
|
|
50
|
-
<FdIcon name={iconNames.trash}/>
|
|
51
|
-
</FdButton>}/>
|
|
52
|
-
<div className="grow px-6">{`${userData.firstName} ${userData.lastName}`}</div>
|
|
53
|
-
</div>
|
|
54
|
-
</li>))}
|
|
55
|
-
</FdList>
|
|
56
|
-
</div>);
|
|
57
|
-
}
|
|
58
|
-
export default UserList;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useState } from "react";
|
|
2
|
-
import { cn } from "@fd-toolbox/lib/utils";
|
|
3
|
-
import { FdFadeOutText } from "@fd-component-toolbox/fade-out-text/FdFadeOutText";
|
|
4
|
-
import { cva } from "class-variance-authority";
|
|
5
|
-
/**
|
|
6
|
-
* Using {@link https://cva.style/docs/getting-started/variants class-variance-authority}
|
|
7
|
-
*/
|
|
8
|
-
export const labelVariants = cva("pointer-events-none absolute left-1 top-2 z-10 origin-[0] rounded-md bg-background px-1 text-sm peer-disabled:cursor-not-allowed peer-disabled:opacity-70", {
|
|
9
|
-
variants: {
|
|
10
|
-
variant: {
|
|
11
|
-
bordered: "transition-all duration-150 ease-in-out file:text-sm peer-focus:-translate-y-4 peer-focus:scale-75",
|
|
12
|
-
float: "duration-300",
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
defaultVariants: {
|
|
16
|
-
variant: "float",
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
/**
|
|
20
|
-
* @param {FdLabelAnimationProps} props {@link FdLabelAnimationProps}
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```tsx
|
|
24
|
-
function MyComponent() {
|
|
25
|
-
const [shouldLabelAnimate, setShouldLabelAnimate] = useState(false);
|
|
26
|
-
const [isInputHovered, setIsInputHovered] = useState(false);
|
|
27
|
-
const [isError, setIsError] = useState(false);
|
|
28
|
-
const [skipAnimationOnce, setSkipAnimationOnce] = useState(false);
|
|
29
|
-
|
|
30
|
-
return (
|
|
31
|
-
<FdLabelAnimation
|
|
32
|
-
label="name"
|
|
33
|
-
shouldLabelAnimate={shouldLabelAnimate}
|
|
34
|
-
isInputHovered={isInputHovered}
|
|
35
|
-
isError={isError}
|
|
36
|
-
skipAnimationOnce={skipAnimationOnce}
|
|
37
|
-
variant="bordered"
|
|
38
|
-
/>
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
43
|
-
function FdLabelAnimation({ label, shouldAnimate, isErrorStyle, skipAnimationOnce, variant, className, isParentHovered, }) {
|
|
44
|
-
const [animationClass, setAnimationClass] = useState("");
|
|
45
|
-
useEffect(() => {
|
|
46
|
-
setAnimationClass(shouldAnimate ? "animate-label-up" : "animate-label-down");
|
|
47
|
-
}, [shouldAnimate]);
|
|
48
|
-
useEffect(() => {
|
|
49
|
-
setAnimationClass("");
|
|
50
|
-
}, [skipAnimationOnce]);
|
|
51
|
-
return (<label key={Number(skipAnimationOnce)} htmlFor={label} className={cn(labelVariants({ variant }), variant === "float" && animationClass, shouldAnimate ? "-translate-y-5 scale-75 pl-[5px]" : "", isErrorStyle ? "text-destructive" : "text-muted-foreground", className)}>
|
|
52
|
-
<FdFadeOutText isHovered={isParentHovered}>{label}</FdFadeOutText>
|
|
53
|
-
</label>);
|
|
54
|
-
}
|
|
55
|
-
export default FdLabelAnimation;
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import * as React from "react";
|
|
3
|
-
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
4
|
-
import { cn } from "@fd-toolbox/lib/utils";
|
|
5
|
-
/**
|
|
6
|
-
* Root avatar component that serves as a container for the image and fallback
|
|
7
|
-
*
|
|
8
|
-
* Based on {@link https://ui.shadcn.com/docs/components/avatar Avatar}
|
|
9
|
-
*/
|
|
10
|
-
function FdAvatar({ className, ref, ...props }) {
|
|
11
|
-
return (<AvatarPrimitive.Root ref={ref} className={cn("relative flex size-10 shrink-0 overflow-hidden rounded-full", className)} {...props}/>);
|
|
12
|
-
}
|
|
13
|
-
FdAvatar.displayName = AvatarPrimitive.Root.displayName;
|
|
14
|
-
/**
|
|
15
|
-
* Image component for displaying the actual avatar picture
|
|
16
|
-
*
|
|
17
|
-
* Based on {@link https://ui.shadcn.com/docs/components/avatar Avatar.Image}
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```tsx
|
|
21
|
-
* <FdAvatar>
|
|
22
|
-
<FdAvatarImage src="https://github.com/shadcn.png" alt="User avatar" />
|
|
23
|
-
...
|
|
24
|
-
</FdAvatar>
|
|
25
|
-
```
|
|
26
|
-
*/
|
|
27
|
-
function FdAvatarImage({ className, ref, src, alt, ...props }) {
|
|
28
|
-
return (<AvatarPrimitive.Image ref={ref} src={src} alt={alt} className={cn("aspect-square size-full", className)} {...props}/>);
|
|
29
|
-
}
|
|
30
|
-
FdAvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
31
|
-
/**
|
|
32
|
-
* Fallback component shown when the avatar image fails to load
|
|
33
|
-
*
|
|
34
|
-
* Based on {@link https://ui.shadcn.com/docs/components/avatar Avatar.Fallback}
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```jsx
|
|
38
|
-
* <FdAvatar>
|
|
39
|
-
...
|
|
40
|
-
<FdAvatarFallback>
|
|
41
|
-
<Image src="/assets/default-avatar.png" alt="Default avatar" width={40} height={40}/>
|
|
42
|
-
</FdAvatarFallback>
|
|
43
|
-
</FdAvatar>
|
|
44
|
-
```
|
|
45
|
-
*/
|
|
46
|
-
function FdAvatarFallback({ className, ref, ...props }) {
|
|
47
|
-
return (<AvatarPrimitive.Fallback ref={ref} className={cn("flex size-full items-center justify-center rounded-full bg-muted", className)} {...props}/>);
|
|
48
|
-
}
|
|
49
|
-
FdAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
50
|
-
export { FdAvatar, FdAvatarImage, FdAvatarFallback };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import FdLink from "@fd-component-toolbox/link/FdLink";
|
|
3
|
-
import { FdButton } from "@fd-component-toolbox/button/FdButton";
|
|
4
|
-
import { FdIcon, iconNames, iconSizes } from "@fd-component-toolbox/icon/FdIcon";
|
|
5
|
-
/**
|
|
6
|
-
* Button component for navigation back
|
|
7
|
-
*
|
|
8
|
-
* @param FdBackButtonProps {@link FdBackButtonProps}
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
*```tsx
|
|
12
|
-
<FdBackButton onClick={...} href="/students"/>;
|
|
13
|
-
* ```
|
|
14
|
-
*/
|
|
15
|
-
export function FdBackButton({ id, variant, size, className, href, onClick }) {
|
|
16
|
-
return (<FdLink id={id} href={href ?? "view?resource=Contact"}>
|
|
17
|
-
<FdButton variant={variant ?? "ghost"} size={size ?? "icon"} className={className ?? "size-5"} onClick={onClick} tooltipText="Go Back" tooltipSide="top" tooltipClassName="mb-1">
|
|
18
|
-
<FdIcon name={iconNames.arrowLeft} size={iconSizes.small}/>
|
|
19
|
-
</FdButton>
|
|
20
|
-
</FdLink>);
|
|
21
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { cn } from "@fd-toolbox/lib/utils";
|
|
3
|
-
/**
|
|
4
|
-
* Interactive rounded badge for selections, tags and filters
|
|
5
|
-
*
|
|
6
|
-
* @param BadgeProps {@link BadgeProps}
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```tsx
|
|
10
|
-
* <FdBadge onClick={...}>
|
|
11
|
-
* Label
|
|
12
|
-
* </FdBadge>
|
|
13
|
-
* ```
|
|
14
|
-
*/
|
|
15
|
-
export function FdBadge({ children, onClick, className }) {
|
|
16
|
-
return (<span onClick={onClick} className={cn("inline-flex cursor-default select-none items-center rounded-full px-2 py-1 text-xs font-medium", className)}>
|
|
17
|
-
{children}
|
|
18
|
-
</span>);
|
|
19
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { cn } from "@fd-toolbox/lib/utils";
|
|
2
|
-
import { FdBadge } from "@fd-component-toolbox/badge/FdBadge";
|
|
3
|
-
import { FdSeparator } from "@fd-component-toolbox/separator/FdSeparator";
|
|
4
|
-
import { useCallback, useEffect, useState } from "react";
|
|
5
|
-
import { getBadgeClasses, onToggleItem, onUpdateSelection, } from "@fd-component-toolbox/badge-toggle-list/FdBadgeToggleList.funcs";
|
|
6
|
-
/**
|
|
7
|
-
* Toggleable list of badges
|
|
8
|
-
*
|
|
9
|
-
* @param FdBadgeToggleListProps {@link FdBadgeToggleListProps}
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```tsx
|
|
13
|
-
* function MyComponent() {
|
|
14
|
-
const [items, setItems] = useState(['Students', 'Teachers', 'Courses']);
|
|
15
|
-
const [selectedItems, setSelectedItems] = useState(['Students', 'Teachers']);
|
|
16
|
-
|
|
17
|
-
return (
|
|
18
|
-
<FdBadgeToggleList items={items} selectedItems={selectedItems} onSelectedItemsChange={setSelectedItems}/>
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export function FdBadgeToggleList({ items, selectedItems: selectedItemsProp, onSelectedItemsChange: onSelectedItemsChangeProp, }) {
|
|
24
|
-
const [selectedItems, setSelectedItems] = useState(selectedItemsProp ?? []);
|
|
25
|
-
const [isSelectedAllItems, setIsSelectedAllItems] = useState(true);
|
|
26
|
-
const badgeCommonClasses = "cursor-pointer rounded-sm p-1 px-2 text-xs font-light transition-colors duration-200 hover:text-primary-foreground";
|
|
27
|
-
const badgeActiveClasses = "bg-primary/80 text-primary-foreground hover:border-foreground/80 hover:bg-primary/70";
|
|
28
|
-
const badgeInactiveClasses = "bg-muted hover:bg-primary/80";
|
|
29
|
-
const updateSelection = useCallback((value) => onUpdateSelection(value, items.length, setSelectedItems, setIsSelectedAllItems, onSelectedItemsChangeProp), [items.length, onSelectedItemsChangeProp, setSelectedItems]);
|
|
30
|
-
useEffect(() => {
|
|
31
|
-
updateSelection(selectedItemsProp ?? []);
|
|
32
|
-
}, [selectedItemsProp, updateSelection]);
|
|
33
|
-
const selectAllItems = useCallback(() => {
|
|
34
|
-
updateSelection(items);
|
|
35
|
-
}, [updateSelection, items]);
|
|
36
|
-
const toggleItem = useCallback((value) => onToggleItem(value, items, selectedItems, isSelectedAllItems, updateSelection), [items, isSelectedAllItems, selectedItems, updateSelection]);
|
|
37
|
-
const badgeClasses = useCallback((item) => getBadgeClasses(item, isSelectedAllItems, selectedItems, badgeActiveClasses, badgeInactiveClasses), [isSelectedAllItems, selectedItems, badgeActiveClasses, badgeInactiveClasses]);
|
|
38
|
-
return (<div className="flex flex-wrap items-start gap-2">
|
|
39
|
-
<FdBadge className={cn(badgeCommonClasses, isSelectedAllItems ? badgeActiveClasses : badgeInactiveClasses)} onClick={selectAllItems}>
|
|
40
|
-
All
|
|
41
|
-
</FdBadge>
|
|
42
|
-
<FdSeparator orientation="vertical" className="mx-2 h-7"/>
|
|
43
|
-
{items.map((item) => (<FdBadge key={item} onClick={() => toggleItem(item)} className={cn(badgeCommonClasses, badgeClasses(item))}>
|
|
44
|
-
{item}
|
|
45
|
-
</FdBadge>))}
|
|
46
|
-
</div>);
|
|
47
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { Slot } from "@radix-ui/react-slot";
|
|
3
|
-
import { cva } from "class-variance-authority";
|
|
4
|
-
import { cn } from "@fd-toolbox/lib/utils";
|
|
5
|
-
import { FdTooltip, FdTooltipContent, FdTooltipProvider, FdTooltipTrigger, tooltipContentSides, tooltipAligns, tooltipAlignsStrings, tooltipContentSidesStrings, } from "@fd-component-toolbox/tooltip/FdTooltip";
|
|
6
|
-
/**
|
|
7
|
-
* Using {@link https://cva.style/docs/getting-started/variants class-variance-authority}
|
|
8
|
-
*/
|
|
9
|
-
export const buttonVariants = cva("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary disabled:pointer-events-none disabled:opacity-50", {
|
|
10
|
-
variants: {
|
|
11
|
-
variant: {
|
|
12
|
-
default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
|
13
|
-
destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
|
|
14
|
-
outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
|
|
15
|
-
secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
|
|
16
|
-
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
17
|
-
link: "text-primary underline-offset-4 hover:underline",
|
|
18
|
-
icon: "cursor-pointer hover:text-accent-foreground",
|
|
19
|
-
float: "rounded-none border-b border-border hover:border-fd-accent",
|
|
20
|
-
fullRounded: "rounded-full p-1.5 text-muted-foreground hover:bg-accent sm:p-2",
|
|
21
|
-
},
|
|
22
|
-
size: {
|
|
23
|
-
default: "h-9 px-4 py-2",
|
|
24
|
-
sm: "h-8 rounded-md px-3 text-xs",
|
|
25
|
-
lg: "h-10 rounded-md px-8",
|
|
26
|
-
icon: "size-9",
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
defaultVariants: {
|
|
30
|
-
variant: "default",
|
|
31
|
-
size: "default",
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
/**
|
|
35
|
-
* Based on {@link https://ui.shadcn.com/docs/components/button Button}
|
|
36
|
-
*
|
|
37
|
-
* @param FdButtonProps {@link FdButtonProps}
|
|
38
|
-
*
|
|
39
|
-
* Based on {@link https://www.radix-ui.com/primitives/docs/utilities/slot Slot}
|
|
40
|
-
*/
|
|
41
|
-
export const FdButton = ({ className, variant, size, asChild, tooltipText, tooltipSide, tooltipClassName, tooltipAlign, children, ref, ...props }) => {
|
|
42
|
-
const hasButtonAsChild = React.Children.toArray(children).some((child) => React.isValidElement(child) && child.type === "button");
|
|
43
|
-
const Comp = asChild || hasButtonAsChild ? Slot : "button";
|
|
44
|
-
if (!tooltipText) {
|
|
45
|
-
return (<Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props}>
|
|
46
|
-
{children}
|
|
47
|
-
</Comp>);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
return (<FdTooltipProvider>
|
|
51
|
-
<FdTooltip delayDuration={100}>
|
|
52
|
-
<FdTooltipTrigger asChild>
|
|
53
|
-
<Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props}>
|
|
54
|
-
{children}
|
|
55
|
-
</Comp>
|
|
56
|
-
</FdTooltipTrigger>
|
|
57
|
-
<FdTooltipContent align={tooltipAlign ?? tooltipAlignsStrings[tooltipAligns.center]} className={tooltipClassName} side={tooltipSide ?? tooltipContentSidesStrings[tooltipContentSides.bottom]}>
|
|
58
|
-
{tooltipText}
|
|
59
|
-
</FdTooltipContent>
|
|
60
|
-
</FdTooltip>
|
|
61
|
-
</FdTooltipProvider>);
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
FdButton.displayName = "FdButton";
|