{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "atomic-crm", "homepage": "https://marmelab.com/atomic-crm/", "items": [ { "name": "atomic-crm", "type": "registry:block", "title": "Atomic CRM", "description": "A fully fledged CRM application built with Shadcn Admin Kit", "registryDependencies": [ "item", "progress", "tabs", "toggle", "toggle-group", "https://marmelab.com/shadcn-admin-kit/r/admin.json" ], "dependencies": [ "@hello-pangea/dnd@^18.0.1", "@nivo/bar@^0.99.0", "faker@^5.5.3", "jsonexport@^3.2.0", "papaparse@^5.5.3", "ra-supabase-core@^3.5.1", "ra-supabase-language-english@^3.5.0", "zod@^4.0.5", "@tanstack/query-async-storage-persister@^5.90.22", "@tanstack/react-query-persist-client@^5.90.22", "dompurify@^3.3.1", "marked@^17.0.1", "@streamparser/json-whatwg@^0.0.22", "mime@^4.1.0" ], "files": [ { "path": "src/components/atomic-crm/types.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/consts.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/tasksPredicate.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/TasksListFilter.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/TasksListContent.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/TasksListByDueDate.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/TasksIterator.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/TaskFormContent.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/TaskEditSheet.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/TaskEdit.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/TaskCreateSheet.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/Task.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/MobileTasksList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tasks/AddTask.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tags/useTags.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/tags/useCreateTag.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/tags/colors.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/tags/TagForm.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tags/TagEditModal.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tags/TagDialog.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tags/TagCreateModal.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tags/TagChip.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/tags/RoundButton.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/simple-list/SimpleListLoading.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/simple-list/SimpleListItem.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/simple-list/SimpleList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/simple-list/ListPlaceholder.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/simple-list/ListNoResults.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/settings/SettingsPageMobile.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/settings/SettingsPage.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/settings/ProfilePage.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/sales/useGetSalesName.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/sales/index.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/sales/SalesList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/sales/SalesInputs.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/sales/SalesEdit.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/sales/SalesCreate.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/root/useConfigurationLoader.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/root/defaultConfiguration.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/root/ConfigurationContext.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/root/CRM.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/types.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/supabase/supabase.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/supabase/index.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/supabase/dataProvider.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/supabase/authProvider.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/index.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataProvider.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/authProvider.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/internal/transformOrFilter.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/internal/transformInFilter.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/internal/transformFilter.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/internal/transformContainsFilter.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/internal/supabaseAdapter.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/internal/listParser.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/utils.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/types.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/tasks.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/tags.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/sales.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/index.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/finalize.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/deals.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/dealNotes.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/contacts.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/contactNotes.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/fakerest/dataGenerator/companies.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/commons/mergeContacts.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/commons/i18nProvider.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/commons/getContactAvatar.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/commons/getCompanyAvatar.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/commons/frenchCrmMessages.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/commons/englishCrmMessages.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/commons/canAccess.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/commons/attachments.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/providers/commons/activity.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/utils.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/noteModel.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/index.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/foreignKeyMapping.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/StatusSelector.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/NotesIteratorMobile.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/NotesIterator.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/NoteShowPage.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/NoteInputsMobile.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/NoteInputs.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/NoteEditSheet.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/NoteCreateSheet.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/NoteCreate.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/NoteAttachments.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/Note.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/notes/AttachmentField.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/usePapaParse.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/useImportFromJson.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/useAppBarHeight.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/unsupportedDomains.const.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/isLinkedInUrl.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/fetchWithTimeout.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/Status.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/ResponsiveFilters.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/RelativeDate.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/MobileBackButton.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/Markdown.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/InfinitePagination.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/ImportPage.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/ImageEditorField.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/EditSheet.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/CreateSheet.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/ContactOption.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/ChangelogPage.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/AsideSection.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/misc/ActiveFilterButton.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/login/StartPage.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/login/SignupPage.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/login/SSOAuthButton.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/login/LoginSkeleton.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/login/LoginPage.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/login/ConfirmationRequired.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/layout/TopToolbar.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/layout/MobileNavigation.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/layout/MobileLayout.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/layout/MobileHeader.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/layout/MobileContent.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/layout/Layout.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/layout/Header.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/layout/FormToolbar.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/filters/FilterCategory.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/stages.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/index.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/dealUtils.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/OnlyMineInput.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/DealShow.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/DealListContent.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/DealList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/DealInputs.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/DealEmpty.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/DealEdit.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/DealCreate.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/DealColumn.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/DealCard.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/DealArchivedList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/deals/ContactList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/dashboard/Welcome.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/dashboard/TasksList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/dashboard/MobileDashboard.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/dashboard/LatestNotes.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/dashboard/HotContacts.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/dashboard/DealsPipeline.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/dashboard/DealsChart.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/dashboard/DashboardStepper.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/dashboard/DashboardActivityLog.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/dashboard/Dashboard.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/useContactImport.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/index.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/contactModel.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/TagsListEdit.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/TagsList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ExportVCardButton.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactTasksList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactShow.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactPersonalInfo.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactMergeButton.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactListFilter.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactListContent.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactInputs.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactImportButton.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactEmpty.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactEditSheet.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactEdit.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactCreateSheet.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactCreate.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactBackgroundInfo.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/ContactAside.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/BulkTagButton.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/contacts/Avatar.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/sizes.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/index.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/getTranslatedCompanySizeLabel.ts", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/GridList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/CompanyShow.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/CompanyListFilter.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/CompanyList.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/CompanyInputs.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/CompanyEmpty.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/CompanyEdit.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/CompanyCreate.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/CompanyCard.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/CompanyAvatar.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/CompanyAside.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/companies/AutocompleteCompanyInput.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/activity/ActivityLogNote.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/activity/ActivityLogIterator.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/activity/ActivityLogDealNoteCreated.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/activity/ActivityLogDealCreated.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/activity/ActivityLogContext.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/activity/ActivityLogContactNoteCreated.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/activity/ActivityLogContactCreated.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/activity/ActivityLogCompanyCreated.tsx", "type": "registry:component" }, { "path": "src/components/atomic-crm/activity/ActivityLog.tsx", "type": "registry:component" }, { "path": "src/components/supabase/set-password-page.tsx", "type": "registry:component" }, { "path": "src/components/supabase/oauth-consent-page.tsx", "type": "registry:component" }, { "path": "src/components/supabase/layout.tsx", "type": "registry:component" }, { "path": "src/components/supabase/forgot-password-page.tsx", "type": "registry:component" }, { "path": "src/hooks/user-menu-context.tsx", "type": "registry:hook" }, { "path": "src/hooks/useBulkExport.tsx", "type": "registry:hook" }, { "path": "src/hooks/simple-form-iterator-context.tsx", "type": "registry:hook" }, { "path": "src/lib/toSlug.ts", "type": "registry:lib" }, { "path": "CHANGELOG.md", "type": "registry:file", "target": "~/CHANGELOG.md" } ] } ] }