From ede658771e952ae03a3479d3bb0aed4916cae64c Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Mon, 21 Aug 2023 02:06:09 -0700 Subject: [PATCH] Moved code into src folder. Added build for component library. --- .eslintrc.json | 17 +- jsconfig.json | 4 +- package.components.json | 10 + package.json | 25 +- rollup.components.config.mjs | 99 +++++ ...ker.config.js => rollup.tracker.config.mjs | 2 +- scripts/check-lang.js | 2 +- {assets => src/assets}/add-user.svg | 0 {assets => src/assets}/bar-chart.svg | 0 {assets => src/assets}/bars.svg | 0 {assets => src/assets}/bolt.svg | 0 {assets => src/assets}/calendar.svg | 0 {assets => src/assets}/clock.svg | 0 {assets => src/assets}/dashboard.svg | 0 {assets => src/assets}/expand.svg | 0 {assets => src/assets}/eye.svg | 0 {assets => src/assets}/funnel.svg | 0 {assets => src/assets}/gear.svg | 0 {assets => src/assets}/globe.svg | 0 {assets => src/assets}/lightbulb.svg | 0 {assets => src/assets}/link.svg | 0 {assets => src/assets}/lock.svg | 0 {assets => src/assets}/logo.svg | 0 {assets => src/assets}/magnet.svg | 0 {assets => src/assets}/moon.svg | 0 {assets => src/assets}/nodes.svg | 0 {assets => src/assets}/overview.svg | 0 {assets => src/assets}/profile.svg | 0 {assets => src/assets}/redo.svg | 0 {assets => src/assets}/reports.svg | 0 {assets => src/assets}/sun.svg | 0 {assets => src/assets}/user.svg | 0 {assets => src/assets}/users.svg | 0 {assets => src/assets}/visitor.svg | 0 {assets => src/assets}/website.svg | 0 .../components}/common/ConfirmDeleteForm.js | 2 +- .../components}/common/Empty.js | 2 +- .../components}/common/Empty.module.css | 0 .../components}/common/EmptyPlaceholder.js | 0 .../components}/common/ErrorBoundary.js | 2 +- .../common/ErrorBoundry.module.css | 0 .../components}/common/ErrorMessage.js | 2 +- .../common/ErrorMessage.module.css | 0 .../components}/common/Favicon.js | 0 .../components}/common/Favicon.module.css | 0 .../components}/common/FilterButtons.js | 0 .../components}/common/FilterLink.js | 4 +- .../components}/common/FilterLink.module.css | 0 .../components}/common/HamburgerButton.js | 4 +- .../common/HamburgerButton.module.css | 0 .../components}/common/HoverTooltip.js | 0 .../common/HoverTooltip.module.css | 0 .../components}/common/LinkButton.js | 4 +- .../components}/common/LinkButton.module.css | 0 .../components}/common/MobileMenu.js | 0 .../components}/common/MobileMenu.module.css | 0 .../components}/common/Pager.js | 2 +- .../components}/common/Pager.module.css | 0 .../components}/common/SettingsTable.js | 2 +- .../common/SettingsTable.module.css | 0 .../components}/common/UpdateNotice.js | 2 +- .../common/UpdateNotice.module.css | 0 .../components}/common/WorldMap.js | 6 +- .../components}/common/WorldMap.module.css | 0 .../components}/declarations.d.ts | 0 {hooks => src/components/hooks}/index.js | 0 {hooks => src/components/hooks}/useApi.ts | 0 .../components/hooks}/useApiFilter.ts | 0 {hooks => src/components/hooks}/useConfig.js | 2 +- .../components/hooks}/useCountryNames.js | 0 .../components/hooks}/useDateRange.js | 0 .../components/hooks}/useDocumentClick.js | 0 .../components/hooks}/useEscapeKey.js | 0 {hooks => src/components/hooks}/useFilters.js | 2 +- .../components/hooks}/useForceUpdate.js | 0 {hooks => src/components/hooks}/useFormat.js | 0 .../components/hooks}/useLanguageNames.js | 0 {hooks => src/components/hooks}/useLocale.js | 2 +- .../components/hooks}/useMessages.js | 0 .../components/hooks}/usePageQuery.js | 0 {hooks => src/components/hooks}/useReport.js | 0 {hooks => src/components/hooks}/useReports.js | 2 +- .../components/hooks}/useRequireLogin.js | 4 +- .../components/hooks}/useShareToken.js | 0 {hooks => src/components/hooks}/useSticky.js | 0 {hooks => src/components/hooks}/useTheme.js | 0 .../components/hooks}/useTimezone.js | 0 {hooks => src/components/hooks}/useUser.js | 0 {hooks => src/components/hooks}/useWebsite.js | 0 .../components/hooks}/useWebsiteReports.js | 2 +- {components => src/components}/icons.ts | 2 +- .../components}/input/DateFilter.js | 4 +- .../components}/input/LanguageButton.js | 2 +- .../input/LanguageButton.module.css | 0 .../components}/input/LogoutButton.js | 4 +- .../components}/input/MonthSelect.js | 2 +- .../components}/input/MonthSelect.module.css | 0 .../components}/input/ProfileButton.js | 8 +- .../input/ProfileButton.module.css | 0 .../components}/input/RefreshButton.js | 4 +- .../components}/input/SettingsButton.js | 2 +- .../input/SettingsButton.module.css | 0 .../components}/input/ThemeButton.js | 2 +- .../components}/input/ThemeButton.module.css | 0 .../components}/input/WebsiteDateFilter.js | 6 +- .../input/WebsiteDateFilter.module.css | 0 .../components}/input/WebsiteSelect.js | 4 +- .../components}/layout/AppLayout.js | 2 +- .../components}/layout/AppLayout.module.css | 0 .../components}/layout/Footer.js | 0 .../components}/layout/Footer.module.css | 0 {components => src/components}/layout/Grid.js | 0 .../components}/layout/Grid.module.css | 0 .../components}/layout/Header.js | 0 .../components}/layout/Header.module.css | 0 .../components}/layout/NavBar.js | 4 +- .../components}/layout/NavBar.module.css | 0 .../components}/layout/NavGroup.js | 0 .../components}/layout/NavGroup.module.css | 0 {components => src/components}/layout/Page.js | 2 +- .../components}/layout/Page.module.css | 0 .../components}/layout/PageHeader.js | 0 .../components}/layout/PageHeader.module.css | 0 .../components}/layout/ReportsLayout.js | 4 +- .../layout/ReportsLayout.module.css | 0 .../components}/layout/SettingsLayout.js | 6 +- .../layout/SettingsLayout.module.css | 0 .../components}/layout/ShareLayout.js | 0 .../components}/layout/SideNav.js | 0 .../components}/layout/SideNav.module.css | 0 {components => src/components}/messages.js | 0 .../components}/metrics/ActiveUsers.js | 4 +- .../metrics/ActiveUsers.module.css | 0 .../components}/metrics/BarChart.js | 4 +- .../components}/metrics/BarChart.module.css | 0 .../components}/metrics/BrowsersTable.js | 4 +- .../components}/metrics/CitiesTable.js | 4 +- .../components}/metrics/CountriesTable.js | 4 +- .../components}/metrics/DataTable.js | 2 +- .../components}/metrics/DataTable.module.css | 0 .../components}/metrics/DatePickerForm.js | 4 +- .../metrics/DatePickerForm.module.css | 0 .../components}/metrics/DevicesTable.js | 4 +- .../components}/metrics/EventsChart.js | 2 +- .../metrics/EventsChart.module.css | 0 .../components}/metrics/EventsTable.js | 2 +- .../components}/metrics/FilterTags.js | 4 +- .../components}/metrics/FilterTags.module.css | 0 .../components}/metrics/LanguagesTable.js | 6 +- .../components}/metrics/Legend.js | 6 +- .../components}/metrics/Legend.module.css | 0 .../components}/metrics/MetricCard.js | 0 .../components}/metrics/MetricCard.module.css | 0 .../components}/metrics/MetricsBar.js | 0 .../components}/metrics/MetricsBar.module.css | 0 .../components}/metrics/MetricsTable.js | 14 +- .../metrics/MetricsTable.module.css | 0 .../components}/metrics/OSTable.js | 2 +- .../components}/metrics/PagesTable.js | 4 +- .../components}/metrics/PageviewsChart.js | 4 +- .../metrics/QueryParametersTable.js | 2 +- .../metrics/QueryParametersTable.module.css | 0 .../components}/metrics/RealtimeChart.js | 2 +- .../components}/metrics/ReferrersTable.js | 2 +- .../components}/metrics/RegionsTable.js | 6 +- .../components}/metrics/ScreenTable.js | 2 +- .../components}/pages/console/TestConsole.js | 2 +- .../pages/console/TestConsole.module.css | 0 .../components}/pages/dashboard/Dashboard.js | 6 +- .../pages/dashboard/DashboardEdit.js | 2 +- .../pages/dashboard/DashboardEdit.module.css | 0 .../dashboard/DashboardSettingsButton.js | 4 +- .../DashboardSettingsButton.module.css | 0 .../pages/event-data/EventDataMetricsBar.js | 4 +- .../event-data/EventDataMetricsBar.module.css | 0 .../pages/event-data/EventDataTable.js | 2 +- .../pages/event-data/EventDataValueTable.js | 2 +- .../components}/pages/login/LoginForm.js | 4 +- .../pages/login/LoginForm.module.css | 0 .../components}/pages/login/LoginLayout.js | 2 +- .../pages/login/LoginLayout.module.css | 0 .../pages/realtime/RealtimeCountries.js | 6 +- .../realtime/RealtimeCountries.module.css | 0 .../pages/realtime/RealtimeHeader.js | 2 +- .../pages/realtime/RealtimeHeader.module.css | 0 .../pages/realtime/RealtimeHome.js | 4 +- .../components}/pages/realtime/RealtimeLog.js | 6 +- .../pages/realtime/RealtimeLog.module.css | 0 .../pages/realtime/RealtimePage.js | 4 +- .../pages/realtime/RealtimePage.module.css | 0 .../pages/realtime/RealtimeUrls.js | 2 +- .../pages/reports/BaseParameters.js | 2 +- .../components}/pages/reports/FieldAddForm.js | 0 .../pages/reports/FieldAddForm.module.css | 0 .../pages/reports/FieldAggregateForm.js | 2 +- .../pages/reports/FieldFilterForm.js | 2 +- .../pages/reports/FieldFilterForm.module.css | 0 .../pages/reports/FieldSelectForm.js | 2 +- .../pages/reports/FieldSelectForm.module.css | 0 .../pages/reports/FilterSelectForm.js | 2 +- .../pages/reports/ParameterList.js | 2 +- .../pages/reports/ParameterList.module.css | 0 .../components}/pages/reports/PopupForm.js | 0 .../pages/reports/PopupForm.module.css | 0 .../components}/pages/reports/Report.js | 2 +- .../components}/pages/reports/ReportBody.js | 0 .../pages/reports/ReportDetails.js | 0 .../components}/pages/reports/ReportHeader.js | 2 +- .../pages/reports/ReportHeader.module.css | 0 .../components}/pages/reports/ReportMenu.js | 0 .../pages/reports/ReportTemplates.js | 2 +- .../pages/reports/ReportTemplates.module.css | 0 .../components}/pages/reports/ReportsPage.js | 2 +- .../components}/pages/reports/ReportsTable.js | 4 +- .../reports/event-data/EventDataParameters.js | 2 +- .../event-data/EventDataParameters.module.css | 0 .../reports/event-data/EventDataReport.js | 0 .../reports/event-data/EventDataTable.js | 2 +- .../pages/reports/funnel/FunnelChart.js | 6 +- .../reports/funnel/FunnelChart.module.css | 0 .../pages/reports/funnel/FunnelParameters.js | 2 +- .../pages/reports/funnel/FunnelReport.js | 0 .../reports/funnel/FunnelReport.module.css | 0 .../pages/reports/funnel/FunnelTable.js | 2 +- .../pages/reports/funnel/UrlAddForm.js | 2 +- .../reports/funnel/UrlAddForm.module.css | 0 .../reports/insights/InsightsParameters.js | 2 +- .../insights/InsightsParameters.module.css | 0 .../pages/reports/insights/InsightsReport.js | 0 .../pages/reports/insights/InsightsTable.js | 2 +- .../pages/reports/reports.module.css | 0 .../reports/retention/RetentionParameters.js | 2 +- .../reports/retention/RetentionReport.js | 0 .../retention/RetentionReport.module.css | 0 .../pages/reports/retention/RetentionTable.js | 2 +- .../retention/RetentionTable.module.css | 0 .../settings/profile/DateRangeSetting.js | 4 +- .../pages/settings/profile/LanguageSetting.js | 4 +- .../settings/profile/PasswordChangeButton.js | 2 +- .../settings/profile/PasswordEditForm.js | 4 +- .../pages/settings/profile/ProfileDetails.js | 6 +- .../pages/settings/profile/ProfileSettings.js | 2 +- .../pages/settings/profile/ThemeSetting.js | 2 +- .../settings/profile/ThemeSetting.module.css | 0 .../pages/settings/profile/TimezoneSetting.js | 4 +- .../pages/settings/teams/TeamAddForm.js | 4 +- .../settings/teams/TeamAddWebsiteForm.js | 4 +- .../pages/settings/teams/TeamDeleteForm.js | 4 +- .../pages/settings/teams/TeamEditForm.js | 4 +- .../pages/settings/teams/TeamJoinForm.js | 4 +- .../pages/settings/teams/TeamLeaveForm.js | 4 +- .../settings/teams/TeamMemberRemoveButton.js | 4 +- .../pages/settings/teams/TeamMembers.js | 6 +- .../pages/settings/teams/TeamMembersTable.js | 4 +- .../pages/settings/teams/TeamSettings.js | 6 +- .../settings/teams/TeamWebsiteRemoveButton.js | 4 +- .../pages/settings/teams/TeamWebsites.js | 6 +- .../pages/settings/teams/TeamWebsitesTable.js | 6 +- .../pages/settings/teams/TeamsList.js | 8 +- .../pages/settings/teams/TeamsTable.js | 6 +- .../pages/settings/teams/WebsiteTags.js | 0 .../settings/teams/WebsiteTags.module.css | 0 .../pages/settings/users/UserAddButton.js | 2 +- .../pages/settings/users/UserAddForm.js | 4 +- .../pages/settings/users/UserDeleteForm.js | 4 +- .../pages/settings/users/UserEditForm.js | 4 +- .../pages/settings/users/UserSettings.js | 6 +- .../pages/settings/users/UserWebsites.js | 4 +- .../pages/settings/users/UsersList.js | 8 +- .../pages/settings/users/UsersTable.js | 8 +- .../pages/settings/websites/ShareUrl.js | 6 +- .../pages/settings/websites/TrackingCode.js | 4 +- .../pages/settings/websites/WebsiteAddForm.js | 4 +- .../pages/settings/websites/WebsiteData.js | 2 +- .../settings/websites/WebsiteDeleteForm.js | 4 +- .../settings/websites/WebsiteEditForm.js | 4 +- .../settings/websites/WebsiteResetForm.js | 4 +- .../settings/websites/WebsiteSettings.js | 6 +- .../pages/settings/websites/WebsitesList.js | 8 +- .../pages/settings/websites/WebsitesTable.js | 6 +- .../websites/WebsitesTable.module.css | 0 .../pages/websites/WebsiteChart.js | 2 +- .../pages/websites/WebsiteChart.module.css | 0 .../pages/websites/WebsiteChartList.js | 2 +- .../pages/websites/WebsiteDetailsPage.js | 4 +- .../pages/websites/WebsiteEventData.js | 2 +- .../websites/WebsiteEventData.module.css | 0 .../pages/websites/WebsiteEventDataPage.js | 0 .../pages/websites/WebsiteHeader.js | 4 +- .../pages/websites/WebsiteHeader.module.css | 0 .../pages/websites/WebsiteList.module.css | 0 .../pages/websites/WebsiteMenuView.js | 6 +- .../pages/websites/WebsiteMenuView.module.css | 0 .../pages/websites/WebsiteMetricsBar.js | 2 +- .../websites/WebsiteMetricsBar.module.css | 0 .../pages/websites/WebsiteReportsPage.js | 2 +- .../pages/websites/WebsiteTableView.js | 0 .../websites/WebsiteTableView.module.css | 0 .../pages/websites/WebsitesPage.js | 6 +- src/index.ts | 61 +++ {lang => src/lang}/am-ET.json | 0 {lang => src/lang}/ar-SA.json | 0 {lang => src/lang}/be-BY.json | 0 {lang => src/lang}/bn-BD.json | 0 {lang => src/lang}/ca-ES.json | 0 {lang => src/lang}/cs-CZ.json | 0 {lang => src/lang}/da-DK.json | 0 {lang => src/lang}/de-CH.json | 0 {lang => src/lang}/de-DE.json | 0 {lang => src/lang}/el-GR.json | 0 {lang => src/lang}/en-GB.json | 0 {lang => src/lang}/en-US.json | 0 {lang => src/lang}/es-ES.json | 0 {lang => src/lang}/es-MX.json | 0 {lang => src/lang}/fa-IR.json | 0 {lang => src/lang}/fi-FI.json | 0 {lang => src/lang}/fo-FO.json | 0 {lang => src/lang}/fr-FR.json | 0 {lang => src/lang}/ga-ES.json | 0 {lang => src/lang}/he-IL.json | 0 {lang => src/lang}/hi-IN.json | 0 {lang => src/lang}/hr-HR.json | 0 {lang => src/lang}/hu-HU.json | 0 {lang => src/lang}/id-ID.json | 0 {lang => src/lang}/it-IT.json | 0 {lang => src/lang}/ja-JP.json | 0 {lang => src/lang}/km-KH.json | 0 {lang => src/lang}/ko-KR.json | 0 {lang => src/lang}/lt-LT.json | 0 {lang => src/lang}/mn-MN.json | 0 {lang => src/lang}/ms-MY.json | 0 {lang => src/lang}/my-MM.json | 0 {lang => src/lang}/nb-NO.json | 0 {lang => src/lang}/nl-NL.json | 0 {lang => src/lang}/pl-PL.json | 0 {lang => src/lang}/pt-BR.json | 0 {lang => src/lang}/pt-PT.json | 0 {lang => src/lang}/ro-RO.json | 0 {lang => src/lang}/ru-RU.json | 0 {lang => src/lang}/si-LK.json | 0 {lang => src/lang}/sk-SK.json | 0 {lang => src/lang}/sl-SI.json | 0 {lang => src/lang}/sv-SE.json | 0 {lang => src/lang}/ta-IN.json | 0 {lang => src/lang}/th-TH.json | 0 {lang => src/lang}/tr-TR.json | 0 {lang => src/lang}/uk-UA.json | 0 {lang => src/lang}/ur-PK.json | 0 {lang => src/lang}/vi-VN.json | 0 {lang => src/lang}/zh-CN.json | 0 {lang => src/lang}/zh-TW.json | 0 {lib => src/lib}/auth.ts | 0 {lib => src/lib}/cache.ts | 0 {lib => src/lib}/charts.js | 0 {lib => src/lib}/clickhouse.ts | 0 {lib => src/lib}/client.ts | 0 {lib => src/lib}/constants.ts | 0 {lib => src/lib}/crypto.js | 0 {lib => src/lib}/data.ts | 0 {lib => src/lib}/date.js | 0 {lib => src/lib}/db.js | 0 {lib => src/lib}/detect.ts | 0 {lib => src/lib}/filters.js | 0 {lib => src/lib}/format.js | 0 {lib => src/lib}/kafka.ts | 0 {lib => src/lib}/lang.js | 0 {lib => src/lib}/load.ts | 0 {lib => src/lib}/middleware.ts | 0 {lib => src/lib}/prisma.ts | 0 {lib => src/lib}/query.ts | 0 {lib => src/lib}/session.ts | 0 {lib => src/lib}/sql.ts | 0 {lib => src/lib}/types.ts | 0 {lib => src/lib}/yup.ts | 0 {pages => src/pages}/404.js | 2 +- {pages => src/pages}/_app.js | 4 +- {pages => src/pages}/api/auth/login.ts | 0 {pages => src/pages}/api/auth/logout.ts | 0 {pages => src/pages}/api/auth/sso.ts | 0 {pages => src/pages}/api/auth/verify.ts | 0 {pages => src/pages}/api/config.ts | 0 {pages => src/pages}/api/event-data/events.ts | 0 {pages => src/pages}/api/event-data/fields.ts | 0 {pages => src/pages}/api/event-data/stats.ts | 0 {pages => src/pages}/api/heartbeat.ts | 0 {pages => src/pages}/api/me/index.ts | 0 {pages => src/pages}/api/me/password.ts | 0 {pages => src/pages}/api/me/teams.ts | 0 {pages => src/pages}/api/me/websites.ts | 0 {pages => src/pages}/api/realtime/[id].ts | 0 {pages => src/pages}/api/reports/[id].ts | 0 {pages => src/pages}/api/reports/funnel.ts | 0 {pages => src/pages}/api/reports/index.ts | 0 {pages => src/pages}/api/reports/insights.ts | 0 {pages => src/pages}/api/reports/retention.ts | 0 {pages => src/pages}/api/scripts/telemetry.js | 0 {pages => src/pages}/api/send.ts | 0 {pages => src/pages}/api/share/[id].ts | 0 {pages => src/pages}/api/teams/[id]/index.ts | 0 .../pages}/api/teams/[id]/users/[userId].ts | 0 .../pages}/api/teams/[id]/users/index.ts | 0 .../api/teams/[id]/websites/[websiteId].ts | 0 .../pages}/api/teams/[id]/websites/index.ts | 0 {pages => src/pages}/api/teams/index.ts | 0 {pages => src/pages}/api/teams/join.ts | 0 {pages => src/pages}/api/users/[id]/index.ts | 0 {pages => src/pages}/api/users/[id]/teams.ts | 0 {pages => src/pages}/api/users/[id]/usage.ts | 0 .../pages}/api/users/[id]/websites.ts | 0 {pages => src/pages}/api/users/index.ts | 0 .../pages}/api/websites/[id]/active.ts | 0 .../pages}/api/websites/[id]/daterange.ts | 0 .../pages}/api/websites/[id]/events.ts | 0 .../pages}/api/websites/[id]/index.ts | 0 .../pages}/api/websites/[id]/metrics.ts | 0 .../pages}/api/websites/[id]/pageviews.ts | 0 .../pages}/api/websites/[id]/reports.ts | 0 .../pages}/api/websites/[id]/reset.ts | 0 .../pages}/api/websites/[id]/stats.ts | 0 .../pages}/api/websites/[id]/values.ts | 0 {pages => src/pages}/api/websites/index.ts | 0 {pages => src/pages}/console/[[...id]].js | 0 {pages => src/pages}/dashboard/index.js | 2 +- {pages => src/pages}/index.js | 0 {pages => src/pages}/login.js | 0 {pages => src/pages}/logout.js | 2 +- {pages => src/pages}/reports/[id].js | 2 +- {pages => src/pages}/reports/create.js | 2 +- {pages => src/pages}/reports/funnel.js | 2 +- {pages => src/pages}/reports/index.js | 2 +- {pages => src/pages}/reports/insights.js | 2 +- {pages => src/pages}/reports/retention.js | 2 +- .../pages}/settings/profile/index.js | 2 +- {pages => src/pages}/settings/teams/[id].js | 2 +- {pages => src/pages}/settings/teams/index.js | 2 +- {pages => src/pages}/settings/users/[id].js | 2 +- {pages => src/pages}/settings/users/index.js | 2 +- .../pages}/settings/websites/[id].js | 2 +- .../pages}/settings/websites/index.js | 2 +- {pages => src/pages}/share/[...id].js | 2 +- {pages => src/pages}/sso.js | 0 .../pages}/websites/[id]/event-data.js | 2 +- {pages => src/pages}/websites/[id]/index.js | 2 +- .../pages}/websites/[id]/realtime.js | 0 {pages => src/pages}/websites/[id]/reports.js | 0 {pages => src/pages}/websites/index.js | 2 +- {queries => src/queries}/admin/report.ts | 0 {queries => src/queries}/admin/team.ts | 0 {queries => src/queries}/admin/teamUser.ts | 0 {queries => src/queries}/admin/teamWebsite.ts | 0 {queries => src/queries}/admin/user.ts | 0 {queries => src/queries}/admin/website.ts | 0 .../analytics/eventData/getEventDataEvents.ts | 0 .../analytics/eventData/getEventDataFields.ts | 0 .../analytics/eventData/getEventDataStats.ts | 0 .../analytics/eventData/getEventDataUsage.ts | 0 .../analytics/eventData/saveEventData.ts | 0 .../analytics/events/getEventMetrics.ts | 0 .../analytics/events/getEventUsage.ts | 0 .../queries}/analytics/events/getEvents.ts | 0 .../queries}/analytics/events/saveEvent.ts | 0 .../queries}/analytics/getActiveVisitors.ts | 0 .../queries}/analytics/getRealtimeData.ts | 0 .../queries}/analytics/getValues.ts | 0 .../queries}/analytics/getWebsiteDateRange.ts | 0 .../queries}/analytics/getWebsiteStats.ts | 0 .../analytics/pageviews/getPageviewMetrics.ts | 0 .../analytics/pageviews/getPageviewStats.ts | 0 .../queries}/analytics/reports/getFunnel.ts | 0 .../queries}/analytics/reports/getInsights.ts | 0 .../analytics/reports/getRetention.ts | 0 .../analytics/sessions/createSession.ts | 0 .../queries}/analytics/sessions/getSession.ts | 0 .../analytics/sessions/getSessionMetrics.ts | 0 .../analytics/sessions/getSessionStats.ts | 0 .../analytics/sessions/getSessions.ts | 0 .../analytics/sessions/saveSessionData.ts | 0 {queries => src/queries}/index.js | 0 {store => src/store}/app.js | 0 {store => src/store}/dashboard.js | 0 {store => src/store}/queries.js | 0 {store => src/store}/version.js | 0 {store => src/store}/websites.ts | 0 {styles => src/styles}/index.css | 0 {styles => src/styles}/locale.css | 0 {styles => src/styles}/variables.css | 0 {tracker => src/tracker}/index.d.ts | 0 {tracker => src/tracker}/index.js | 0 tsconfig.json | 6 +- yarn.lock | 409 ++++++++++++------ 490 files changed, 749 insertions(+), 442 deletions(-) create mode 100644 package.components.json create mode 100644 rollup.components.config.mjs rename rollup.tracker.config.js => rollup.tracker.config.mjs (93%) rename {assets => src/assets}/add-user.svg (100%) rename {assets => src/assets}/bar-chart.svg (100%) rename {assets => src/assets}/bars.svg (100%) rename {assets => src/assets}/bolt.svg (100%) rename {assets => src/assets}/calendar.svg (100%) rename {assets => src/assets}/clock.svg (100%) rename {assets => src/assets}/dashboard.svg (100%) rename {assets => src/assets}/expand.svg (100%) rename {assets => src/assets}/eye.svg (100%) rename {assets => src/assets}/funnel.svg (100%) rename {assets => src/assets}/gear.svg (100%) rename {assets => src/assets}/globe.svg (100%) rename {assets => src/assets}/lightbulb.svg (100%) rename {assets => src/assets}/link.svg (100%) rename {assets => src/assets}/lock.svg (100%) rename {assets => src/assets}/logo.svg (100%) rename {assets => src/assets}/magnet.svg (100%) rename {assets => src/assets}/moon.svg (100%) rename {assets => src/assets}/nodes.svg (100%) rename {assets => src/assets}/overview.svg (100%) rename {assets => src/assets}/profile.svg (100%) rename {assets => src/assets}/redo.svg (100%) rename {assets => src/assets}/reports.svg (100%) rename {assets => src/assets}/sun.svg (100%) rename {assets => src/assets}/user.svg (100%) rename {assets => src/assets}/users.svg (100%) rename {assets => src/assets}/visitor.svg (100%) rename {assets => src/assets}/website.svg (100%) rename {components => src/components}/common/ConfirmDeleteForm.js (93%) rename {components => src/components}/common/Empty.js (86%) rename {components => src/components}/common/Empty.module.css (100%) rename {components => src/components}/common/EmptyPlaceholder.js (100%) rename {components => src/components}/common/ErrorBoundary.js (93%) rename {components => src/components}/common/ErrorBoundry.module.css (100%) rename {components => src/components}/common/ErrorMessage.js (88%) rename {components => src/components}/common/ErrorMessage.module.css (100%) rename {components => src/components}/common/Favicon.js (100%) rename {components => src/components}/common/Favicon.module.css (100%) rename {components => src/components}/common/FilterButtons.js (100%) rename {components => src/components}/common/FilterLink.js (91%) rename {components => src/components}/common/FilterLink.module.css (100%) rename {components => src/components}/common/HamburgerButton.js (93%) rename {components => src/components}/common/HamburgerButton.module.css (100%) rename {components => src/components}/common/HoverTooltip.js (100%) rename {components => src/components}/common/HoverTooltip.module.css (100%) rename {components => src/components}/common/LinkButton.js (77%) rename {components => src/components}/common/LinkButton.module.css (100%) rename {components => src/components}/common/MobileMenu.js (100%) rename {components => src/components}/common/MobileMenu.module.css (100%) rename {components => src/components}/common/Pager.js (95%) rename {components => src/components}/common/Pager.module.css (100%) rename {components => src/components}/common/SettingsTable.js (98%) rename {components => src/components}/common/SettingsTable.module.css (100%) rename {components => src/components}/common/UpdateNotice.js (96%) rename {components => src/components}/common/UpdateNotice.module.css (100%) rename {components => src/components}/common/WorldMap.js (94%) rename {components => src/components}/common/WorldMap.module.css (100%) rename {components => src/components}/declarations.d.ts (100%) rename {hooks => src/components/hooks}/index.js (100%) rename {hooks => src/components/hooks}/useApi.ts (100%) rename {hooks => src/components/hooks}/useApiFilter.ts (100%) rename {hooks => src/components/hooks}/useConfig.js (91%) rename {hooks => src/components/hooks}/useCountryNames.js (100%) rename {hooks => src/components/hooks}/useDateRange.js (100%) rename {hooks => src/components/hooks}/useDocumentClick.js (100%) rename {hooks => src/components/hooks}/useEscapeKey.js (100%) rename {hooks => src/components/hooks}/useFilters.js (97%) rename {hooks => src/components/hooks}/useForceUpdate.js (100%) rename {hooks => src/components/hooks}/useFormat.js (100%) rename {hooks => src/components/hooks}/useLanguageNames.js (100%) rename {hooks => src/components/hooks}/useLocale.js (96%) rename {hooks => src/components/hooks}/useMessages.js (100%) rename {hooks => src/components/hooks}/usePageQuery.js (100%) rename {hooks => src/components/hooks}/useReport.js (100%) rename {hooks => src/components/hooks}/useReports.js (94%) rename {hooks => src/components/hooks}/useRequireLogin.js (84%) rename {hooks => src/components/hooks}/useShareToken.js (100%) rename {hooks => src/components/hooks}/useSticky.js (100%) rename {hooks => src/components/hooks}/useTheme.js (100%) rename {hooks => src/components/hooks}/useTimezone.js (100%) rename {hooks => src/components/hooks}/useUser.js (100%) rename {hooks => src/components/hooks}/useWebsite.js (100%) rename {hooks => src/components/hooks}/useWebsiteReports.js (94%) rename {components => src/components}/icons.ts (98%) rename {components => src/components}/input/DateFilter.js (96%) rename {components => src/components}/input/LanguageButton.js (96%) rename {components => src/components}/input/LanguageButton.module.css (100%) rename {components => src/components}/input/LogoutButton.js (84%) rename {components => src/components}/input/MonthSelect.js (97%) rename {components => src/components}/input/MonthSelect.module.css (100%) rename {components => src/components}/input/ProfileButton.js (88%) rename {components => src/components}/input/ProfileButton.module.css (100%) rename {components => src/components}/input/RefreshButton.js (86%) rename {components => src/components}/input/SettingsButton.js (94%) rename {components => src/components}/input/SettingsButton.module.css (100%) rename {components => src/components}/input/ThemeButton.js (95%) rename {components => src/components}/input/ThemeButton.module.css (100%) rename {components => src/components}/input/WebsiteDateFilter.js (76%) rename {components => src/components}/input/WebsiteDateFilter.module.css (100%) rename {components => src/components}/input/WebsiteSelect.js (87%) rename {components => src/components}/layout/AppLayout.js (92%) rename {components => src/components}/layout/AppLayout.module.css (100%) rename {components => src/components}/layout/Footer.js (100%) rename {components => src/components}/layout/Footer.module.css (100%) rename {components => src/components}/layout/Grid.js (100%) rename {components => src/components}/layout/Grid.module.css (100%) rename {components => src/components}/layout/Header.js (100%) rename {components => src/components}/layout/Header.module.css (100%) rename {components => src/components}/layout/NavBar.js (94%) rename {components => src/components}/layout/NavBar.module.css (100%) rename {components => src/components}/layout/NavGroup.js (100%) rename {components => src/components}/layout/NavGroup.module.css (100%) rename {components => src/components}/layout/Page.js (90%) rename {components => src/components}/layout/Page.module.css (100%) rename {components => src/components}/layout/PageHeader.js (100%) rename {components => src/components}/layout/PageHeader.module.css (100%) rename {components => src/components}/layout/ReportsLayout.js (83%) rename {components => src/components}/layout/ReportsLayout.module.css (100%) rename {components => src/components}/layout/SettingsLayout.js (88%) rename {components => src/components}/layout/SettingsLayout.module.css (100%) rename {components => src/components}/layout/ShareLayout.js (100%) rename {components => src/components}/layout/SideNav.js (100%) rename {components => src/components}/layout/SideNav.module.css (100%) rename {components => src/components}/messages.js (100%) rename {components => src/components}/metrics/ActiveUsers.js (89%) rename {components => src/components}/metrics/ActiveUsers.module.css (100%) rename {components => src/components}/metrics/BarChart.js (97%) rename {components => src/components}/metrics/BarChart.module.css (100%) rename {components => src/components}/metrics/BrowsersTable.js (89%) rename {components => src/components}/metrics/CitiesTable.js (86%) rename {components => src/components}/metrics/CountriesTable.js (88%) rename {components => src/components}/metrics/DataTable.js (98%) rename {components => src/components}/metrics/DataTable.module.css (100%) rename {components => src/components}/metrics/DatePickerForm.js (96%) rename {components => src/components}/metrics/DatePickerForm.module.css (100%) rename {components => src/components}/metrics/DevicesTable.js (90%) rename {components => src/components}/metrics/EventsChart.js (98%) rename {components => src/components}/metrics/EventsChart.module.css (100%) rename {components => src/components}/metrics/EventsTable.js (89%) rename {components => src/components}/metrics/FilterTags.js (92%) rename {components => src/components}/metrics/FilterTags.module.css (100%) rename {components => src/components}/metrics/LanguagesTable.js (81%) rename {components => src/components}/metrics/Legend.js (89%) rename {components => src/components}/metrics/Legend.module.css (100%) rename {components => src/components}/metrics/MetricCard.js (100%) rename {components => src/components}/metrics/MetricCard.module.css (100%) rename {components => src/components}/metrics/MetricsBar.js (100%) rename {components => src/components}/metrics/MetricsBar.module.css (100%) rename {components => src/components}/metrics/MetricsTable.js (90%) rename {components => src/components}/metrics/MetricsTable.module.css (100%) rename {components => src/components}/metrics/OSTable.js (93%) rename {components => src/components}/metrics/PagesTable.js (91%) rename {components => src/components}/metrics/PageviewsChart.js (90%) rename {components => src/components}/metrics/QueryParametersTable.js (96%) rename {components => src/components}/metrics/QueryParametersTable.module.css (100%) rename {components => src/components}/metrics/RealtimeChart.js (98%) rename {components => src/components}/metrics/ReferrersTable.js (93%) rename {components => src/components}/metrics/RegionsTable.js (87%) rename {components => src/components}/metrics/ScreenTable.js (87%) rename {components => src/components}/pages/console/TestConsole.js (99%) rename {components => src/components}/pages/console/TestConsole.module.css (100%) rename {components => src/components}/pages/dashboard/Dashboard.js (93%) rename {components => src/components}/pages/dashboard/DashboardEdit.js (98%) rename {components => src/components}/pages/dashboard/DashboardEdit.module.css (100%) rename {components => src/components}/pages/dashboard/DashboardSettingsButton.js (86%) rename {components => src/components}/pages/dashboard/DashboardSettingsButton.module.css (100%) rename {components => src/components}/pages/event-data/EventDataMetricsBar.js (94%) rename {components => src/components}/pages/event-data/EventDataMetricsBar.module.css (100%) rename {components => src/components}/pages/event-data/EventDataTable.js (94%) rename {components => src/components}/pages/event-data/EventDataValueTable.js (96%) rename {components => src/components}/pages/login/LoginForm.js (94%) rename {components => src/components}/pages/login/LoginForm.module.css (100%) rename {components => src/components}/pages/login/LoginLayout.js (86%) rename {components => src/components}/pages/login/LoginLayout.module.css (100%) rename {components => src/components}/pages/realtime/RealtimeCountries.js (84%) rename {components => src/components}/pages/realtime/RealtimeCountries.module.css (100%) rename {components => src/components}/pages/realtime/RealtimeHeader.js (95%) rename {components => src/components}/pages/realtime/RealtimeHeader.module.css (100%) rename {components => src/components}/pages/realtime/RealtimeHome.js (90%) rename {components => src/components}/pages/realtime/RealtimeLog.js (96%) rename {components => src/components}/pages/realtime/RealtimeLog.module.css (100%) rename {components => src/components}/pages/realtime/RealtimePage.js (97%) rename {components => src/components}/pages/realtime/RealtimePage.module.css (100%) rename {components => src/components}/pages/realtime/RealtimeUrls.js (97%) rename {components => src/components}/pages/reports/BaseParameters.js (97%) rename {components => src/components}/pages/reports/FieldAddForm.js (100%) rename {components => src/components}/pages/reports/FieldAddForm.module.css (100%) rename {components => src/components}/pages/reports/FieldAggregateForm.js (96%) rename {components => src/components}/pages/reports/FieldFilterForm.js (96%) rename {components => src/components}/pages/reports/FieldFilterForm.module.css (100%) rename {components => src/components}/pages/reports/FieldSelectForm.js (94%) rename {components => src/components}/pages/reports/FieldSelectForm.module.css (100%) rename {components => src/components}/pages/reports/FilterSelectForm.js (96%) rename {components => src/components}/pages/reports/ParameterList.js (95%) rename {components => src/components}/pages/reports/ParameterList.module.css (100%) rename {components => src/components}/pages/reports/PopupForm.js (100%) rename {components => src/components}/pages/reports/PopupForm.module.css (100%) rename {components => src/components}/pages/reports/Report.js (92%) rename {components => src/components}/pages/reports/ReportBody.js (100%) rename {components => src/components}/pages/reports/ReportDetails.js (100%) rename {components => src/components}/pages/reports/ReportHeader.js (97%) rename {components => src/components}/pages/reports/ReportHeader.module.css (100%) rename {components => src/components}/pages/reports/ReportMenu.js (100%) rename {components => src/components}/pages/reports/ReportTemplates.js (97%) rename {components => src/components}/pages/reports/ReportTemplates.module.css (100%) rename {components => src/components}/pages/reports/ReportsPage.js (96%) rename {components => src/components}/pages/reports/ReportsTable.js (95%) rename {components => src/components}/pages/reports/event-data/EventDataParameters.js (98%) rename {components => src/components}/pages/reports/event-data/EventDataParameters.module.css (100%) rename {components => src/components}/pages/reports/event-data/EventDataReport.js (100%) rename {components => src/components}/pages/reports/event-data/EventDataTable.js (92%) rename {components => src/components}/pages/reports/funnel/FunnelChart.js (92%) rename {components => src/components}/pages/reports/funnel/FunnelChart.module.css (100%) rename {components => src/components}/pages/reports/funnel/FunnelParameters.js (98%) rename {components => src/components}/pages/reports/funnel/FunnelReport.js (100%) rename {components => src/components}/pages/reports/funnel/FunnelReport.module.css (100%) rename {components => src/components}/pages/reports/funnel/FunnelTable.js (90%) rename {components => src/components}/pages/reports/funnel/UrlAddForm.js (95%) rename {components => src/components}/pages/reports/funnel/UrlAddForm.module.css (100%) rename {components => src/components}/pages/reports/insights/InsightsParameters.js (98%) rename {components => src/components}/pages/reports/insights/InsightsParameters.module.css (100%) rename {components => src/components}/pages/reports/insights/InsightsReport.js (100%) rename {components => src/components}/pages/reports/insights/InsightsTable.js (95%) rename {components => src/components}/pages/reports/reports.module.css (100%) rename {components => src/components}/pages/reports/retention/RetentionParameters.js (96%) rename {components => src/components}/pages/reports/retention/RetentionReport.js (100%) rename {components => src/components}/pages/reports/retention/RetentionReport.module.css (100%) rename {components => src/components}/pages/reports/retention/RetentionTable.js (97%) rename {components => src/components}/pages/reports/retention/RetentionTable.module.css (100%) rename {components => src/components}/pages/settings/profile/DateRangeSetting.js (87%) rename {components => src/components}/pages/settings/profile/LanguageSetting.js (89%) rename {components => src/components}/pages/settings/profile/PasswordChangeButton.js (94%) rename {components => src/components}/pages/settings/profile/PasswordEditForm.js (95%) rename {components => src/components}/pages/settings/profile/ProfileDetails.js (91%) rename {components => src/components}/pages/settings/profile/ProfileSettings.js (87%) rename {components => src/components}/pages/settings/profile/ThemeSetting.js (93%) rename {components => src/components}/pages/settings/profile/ThemeSetting.module.css (100%) rename {components => src/components}/pages/settings/profile/TimezoneSetting.js (87%) rename {components => src/components}/pages/settings/teams/TeamAddForm.js (92%) rename {components => src/components}/pages/settings/teams/TeamAddWebsiteForm.js (95%) rename {components => src/components}/pages/settings/teams/TeamDeleteForm.js (90%) rename {components => src/components}/pages/settings/teams/TeamEditForm.js (95%) rename {components => src/components}/pages/settings/teams/TeamJoinForm.js (91%) rename {components => src/components}/pages/settings/teams/TeamLeaveForm.js (90%) rename {components => src/components}/pages/settings/teams/TeamMemberRemoveButton.js (88%) rename {components => src/components}/pages/settings/teams/TeamMembers.js (88%) rename {components => src/components}/pages/settings/teams/TeamMembersTable.js (93%) rename {components => src/components}/pages/settings/teams/TeamSettings.js (93%) rename {components => src/components}/pages/settings/teams/TeamWebsiteRemoveButton.js (87%) rename {components => src/components}/pages/settings/teams/TeamWebsites.js (92%) rename {components => src/components}/pages/settings/teams/TeamWebsitesTable.js (92%) rename {components => src/components}/pages/settings/teams/TeamsList.js (94%) rename {components => src/components}/pages/settings/teams/TeamsTable.js (95%) rename {components => src/components}/pages/settings/teams/WebsiteTags.js (100%) rename {components => src/components}/pages/settings/teams/WebsiteTags.module.css (100%) rename {components => src/components}/pages/settings/users/UserAddButton.js (92%) rename {components => src/components}/pages/settings/users/UserAddForm.js (95%) rename {components => src/components}/pages/settings/users/UserDeleteForm.js (91%) rename {components => src/components}/pages/settings/users/UserEditForm.js (95%) rename {components => src/components}/pages/settings/users/UserSettings.js (91%) rename {components => src/components}/pages/settings/users/UserWebsites.js (90%) rename {components => src/components}/pages/settings/users/UsersList.js (90%) rename {components => src/components}/pages/settings/users/UsersTable.js (93%) rename {components => src/components}/pages/settings/websites/ShareUrl.js (94%) rename {components => src/components}/pages/settings/websites/TrackingCode.js (85%) rename {components => src/components}/pages/settings/websites/WebsiteAddForm.js (93%) rename {components => src/components}/pages/settings/websites/WebsiteData.js (96%) rename {components => src/components}/pages/settings/websites/WebsiteDeleteForm.js (92%) rename {components => src/components}/pages/settings/websites/WebsiteEditForm.js (94%) rename {components => src/components}/pages/settings/websites/WebsiteResetForm.js (92%) rename {components => src/components}/pages/settings/websites/WebsiteSettings.js (95%) rename {components => src/components}/pages/settings/websites/WebsitesList.js (91%) rename {components => src/components}/pages/settings/websites/WebsitesTable.js (94%) rename {components => src/components}/pages/settings/websites/WebsitesTable.module.css (100%) rename {components => src/components}/pages/websites/WebsiteChart.js (98%) rename {components => src/components}/pages/websites/WebsiteChart.module.css (100%) rename {components => src/components}/pages/websites/WebsiteChartList.js (96%) rename {components => src/components}/pages/websites/WebsiteDetailsPage.js (93%) rename {components => src/components}/pages/websites/WebsiteEventData.js (94%) rename {components => src/components}/pages/websites/WebsiteEventData.module.css (100%) rename {components => src/components}/pages/websites/WebsiteEventDataPage.js (100%) rename {components => src/components}/pages/websites/WebsiteHeader.js (94%) rename {components => src/components}/pages/websites/WebsiteHeader.module.css (100%) rename {components => src/components}/pages/websites/WebsiteList.module.css (100%) rename {components => src/components}/pages/websites/WebsiteMenuView.js (96%) rename {components => src/components}/pages/websites/WebsiteMenuView.module.css (100%) rename {components => src/components}/pages/websites/WebsiteMetricsBar.js (99%) rename {components => src/components}/pages/websites/WebsiteMetricsBar.module.css (100%) rename {components => src/components}/pages/websites/WebsiteReportsPage.js (95%) rename {components => src/components}/pages/websites/WebsiteTableView.js (100%) rename {components => src/components}/pages/websites/WebsiteTableView.module.css (100%) rename {components => src/components}/pages/websites/WebsitesPage.js (93%) create mode 100644 src/index.ts rename {lang => src/lang}/am-ET.json (100%) rename {lang => src/lang}/ar-SA.json (100%) rename {lang => src/lang}/be-BY.json (100%) rename {lang => src/lang}/bn-BD.json (100%) rename {lang => src/lang}/ca-ES.json (100%) rename {lang => src/lang}/cs-CZ.json (100%) rename {lang => src/lang}/da-DK.json (100%) rename {lang => src/lang}/de-CH.json (100%) rename {lang => src/lang}/de-DE.json (100%) rename {lang => src/lang}/el-GR.json (100%) rename {lang => src/lang}/en-GB.json (100%) rename {lang => src/lang}/en-US.json (100%) rename {lang => src/lang}/es-ES.json (100%) rename {lang => src/lang}/es-MX.json (100%) rename {lang => src/lang}/fa-IR.json (100%) rename {lang => src/lang}/fi-FI.json (100%) rename {lang => src/lang}/fo-FO.json (100%) rename {lang => src/lang}/fr-FR.json (100%) rename {lang => src/lang}/ga-ES.json (100%) rename {lang => src/lang}/he-IL.json (100%) rename {lang => src/lang}/hi-IN.json (100%) rename {lang => src/lang}/hr-HR.json (100%) rename {lang => src/lang}/hu-HU.json (100%) rename {lang => src/lang}/id-ID.json (100%) rename {lang => src/lang}/it-IT.json (100%) rename {lang => src/lang}/ja-JP.json (100%) rename {lang => src/lang}/km-KH.json (100%) rename {lang => src/lang}/ko-KR.json (100%) rename {lang => src/lang}/lt-LT.json (100%) rename {lang => src/lang}/mn-MN.json (100%) rename {lang => src/lang}/ms-MY.json (100%) rename {lang => src/lang}/my-MM.json (100%) rename {lang => src/lang}/nb-NO.json (100%) rename {lang => src/lang}/nl-NL.json (100%) rename {lang => src/lang}/pl-PL.json (100%) rename {lang => src/lang}/pt-BR.json (100%) rename {lang => src/lang}/pt-PT.json (100%) rename {lang => src/lang}/ro-RO.json (100%) rename {lang => src/lang}/ru-RU.json (100%) rename {lang => src/lang}/si-LK.json (100%) rename {lang => src/lang}/sk-SK.json (100%) rename {lang => src/lang}/sl-SI.json (100%) rename {lang => src/lang}/sv-SE.json (100%) rename {lang => src/lang}/ta-IN.json (100%) rename {lang => src/lang}/th-TH.json (100%) rename {lang => src/lang}/tr-TR.json (100%) rename {lang => src/lang}/uk-UA.json (100%) rename {lang => src/lang}/ur-PK.json (100%) rename {lang => src/lang}/vi-VN.json (100%) rename {lang => src/lang}/zh-CN.json (100%) rename {lang => src/lang}/zh-TW.json (100%) rename {lib => src/lib}/auth.ts (100%) rename {lib => src/lib}/cache.ts (100%) rename {lib => src/lib}/charts.js (100%) rename {lib => src/lib}/clickhouse.ts (100%) rename {lib => src/lib}/client.ts (100%) rename {lib => src/lib}/constants.ts (100%) rename {lib => src/lib}/crypto.js (100%) rename {lib => src/lib}/data.ts (100%) rename {lib => src/lib}/date.js (100%) rename {lib => src/lib}/db.js (100%) rename {lib => src/lib}/detect.ts (100%) rename {lib => src/lib}/filters.js (100%) rename {lib => src/lib}/format.js (100%) rename {lib => src/lib}/kafka.ts (100%) rename {lib => src/lib}/lang.js (100%) rename {lib => src/lib}/load.ts (100%) rename {lib => src/lib}/middleware.ts (100%) rename {lib => src/lib}/prisma.ts (100%) rename {lib => src/lib}/query.ts (100%) rename {lib => src/lib}/session.ts (100%) rename {lib => src/lib}/sql.ts (100%) rename {lib => src/lib}/types.ts (100%) rename {lib => src/lib}/yup.ts (100%) rename {pages => src/pages}/404.js (90%) rename {pages => src/pages}/_app.js (96%) rename {pages => src/pages}/api/auth/login.ts (100%) rename {pages => src/pages}/api/auth/logout.ts (100%) rename {pages => src/pages}/api/auth/sso.ts (100%) rename {pages => src/pages}/api/auth/verify.ts (100%) rename {pages => src/pages}/api/config.ts (100%) rename {pages => src/pages}/api/event-data/events.ts (100%) rename {pages => src/pages}/api/event-data/fields.ts (100%) rename {pages => src/pages}/api/event-data/stats.ts (100%) rename {pages => src/pages}/api/heartbeat.ts (100%) rename {pages => src/pages}/api/me/index.ts (100%) rename {pages => src/pages}/api/me/password.ts (100%) rename {pages => src/pages}/api/me/teams.ts (100%) rename {pages => src/pages}/api/me/websites.ts (100%) rename {pages => src/pages}/api/realtime/[id].ts (100%) rename {pages => src/pages}/api/reports/[id].ts (100%) rename {pages => src/pages}/api/reports/funnel.ts (100%) rename {pages => src/pages}/api/reports/index.ts (100%) rename {pages => src/pages}/api/reports/insights.ts (100%) rename {pages => src/pages}/api/reports/retention.ts (100%) rename {pages => src/pages}/api/scripts/telemetry.js (100%) rename {pages => src/pages}/api/send.ts (100%) rename {pages => src/pages}/api/share/[id].ts (100%) rename {pages => src/pages}/api/teams/[id]/index.ts (100%) rename {pages => src/pages}/api/teams/[id]/users/[userId].ts (100%) rename {pages => src/pages}/api/teams/[id]/users/index.ts (100%) rename {pages => src/pages}/api/teams/[id]/websites/[websiteId].ts (100%) rename {pages => src/pages}/api/teams/[id]/websites/index.ts (100%) rename {pages => src/pages}/api/teams/index.ts (100%) rename {pages => src/pages}/api/teams/join.ts (100%) rename {pages => src/pages}/api/users/[id]/index.ts (100%) rename {pages => src/pages}/api/users/[id]/teams.ts (100%) rename {pages => src/pages}/api/users/[id]/usage.ts (100%) rename {pages => src/pages}/api/users/[id]/websites.ts (100%) rename {pages => src/pages}/api/users/index.ts (100%) rename {pages => src/pages}/api/websites/[id]/active.ts (100%) rename {pages => src/pages}/api/websites/[id]/daterange.ts (100%) rename {pages => src/pages}/api/websites/[id]/events.ts (100%) rename {pages => src/pages}/api/websites/[id]/index.ts (100%) rename {pages => src/pages}/api/websites/[id]/metrics.ts (100%) rename {pages => src/pages}/api/websites/[id]/pageviews.ts (100%) rename {pages => src/pages}/api/websites/[id]/reports.ts (100%) rename {pages => src/pages}/api/websites/[id]/reset.ts (100%) rename {pages => src/pages}/api/websites/[id]/stats.ts (100%) rename {pages => src/pages}/api/websites/[id]/values.ts (100%) rename {pages => src/pages}/api/websites/index.ts (100%) rename {pages => src/pages}/console/[[...id]].js (100%) rename {pages => src/pages}/dashboard/index.js (85%) rename {pages => src/pages}/index.js (100%) rename {pages => src/pages}/login.js (100%) rename {pages => src/pages}/logout.js (93%) rename {pages => src/pages}/reports/[id].js (92%) rename {pages => src/pages}/reports/create.js (87%) rename {pages => src/pages}/reports/funnel.js (86%) rename {pages => src/pages}/reports/index.js (86%) rename {pages => src/pages}/reports/insights.js (88%) rename {pages => src/pages}/reports/retention.js (86%) rename {pages => src/pages}/settings/profile/index.js (89%) rename {pages => src/pages}/settings/teams/[id].js (93%) rename {pages => src/pages}/settings/teams/index.js (91%) rename {pages => src/pages}/settings/users/[id].js (93%) rename {pages => src/pages}/settings/users/index.js (91%) rename {pages => src/pages}/settings/websites/[id].js (93%) rename {pages => src/pages}/settings/websites/index.js (92%) rename {pages => src/pages}/share/[...id].js (89%) rename {pages => src/pages}/sso.js (100%) rename {pages => src/pages}/websites/[id]/event-data.js (89%) rename {pages => src/pages}/websites/[id]/index.js (89%) rename {pages => src/pages}/websites/[id]/realtime.js (100%) rename {pages => src/pages}/websites/[id]/reports.js (100%) rename {pages => src/pages}/websites/index.js (84%) rename {queries => src/queries}/admin/report.ts (100%) rename {queries => src/queries}/admin/team.ts (100%) rename {queries => src/queries}/admin/teamUser.ts (100%) rename {queries => src/queries}/admin/teamWebsite.ts (100%) rename {queries => src/queries}/admin/user.ts (100%) rename {queries => src/queries}/admin/website.ts (100%) rename {queries => src/queries}/analytics/eventData/getEventDataEvents.ts (100%) rename {queries => src/queries}/analytics/eventData/getEventDataFields.ts (100%) rename {queries => src/queries}/analytics/eventData/getEventDataStats.ts (100%) rename {queries => src/queries}/analytics/eventData/getEventDataUsage.ts (100%) rename {queries => src/queries}/analytics/eventData/saveEventData.ts (100%) rename {queries => src/queries}/analytics/events/getEventMetrics.ts (100%) rename {queries => src/queries}/analytics/events/getEventUsage.ts (100%) rename {queries => src/queries}/analytics/events/getEvents.ts (100%) rename {queries => src/queries}/analytics/events/saveEvent.ts (100%) rename {queries => src/queries}/analytics/getActiveVisitors.ts (100%) rename {queries => src/queries}/analytics/getRealtimeData.ts (100%) rename {queries => src/queries}/analytics/getValues.ts (100%) rename {queries => src/queries}/analytics/getWebsiteDateRange.ts (100%) rename {queries => src/queries}/analytics/getWebsiteStats.ts (100%) rename {queries => src/queries}/analytics/pageviews/getPageviewMetrics.ts (100%) rename {queries => src/queries}/analytics/pageviews/getPageviewStats.ts (100%) rename {queries => src/queries}/analytics/reports/getFunnel.ts (100%) rename {queries => src/queries}/analytics/reports/getInsights.ts (100%) rename {queries => src/queries}/analytics/reports/getRetention.ts (100%) rename {queries => src/queries}/analytics/sessions/createSession.ts (100%) rename {queries => src/queries}/analytics/sessions/getSession.ts (100%) rename {queries => src/queries}/analytics/sessions/getSessionMetrics.ts (100%) rename {queries => src/queries}/analytics/sessions/getSessionStats.ts (100%) rename {queries => src/queries}/analytics/sessions/getSessions.ts (100%) rename {queries => src/queries}/analytics/sessions/saveSessionData.ts (100%) rename {queries => src/queries}/index.js (100%) rename {store => src/store}/app.js (100%) rename {store => src/store}/dashboard.js (100%) rename {store => src/store}/queries.js (100%) rename {store => src/store}/version.js (100%) rename {store => src/store}/websites.ts (100%) rename {styles => src/styles}/index.css (100%) rename {styles => src/styles}/locale.css (100%) rename {styles => src/styles}/variables.css (100%) rename {tracker => src/tracker}/index.d.ts (100%) rename {tracker => src/tracker}/index.js (100%) diff --git a/.eslintrc.json b/.eslintrc.json index f6d90cca..a77ed5bd 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -19,22 +19,21 @@ "plugin:@typescript-eslint/recommended", "next" ], - "plugins": ["@typescript-eslint", "prettier"], "settings": { "import/resolver": { "alias": { "map": [ - ["assets", "./assets"], - ["components", "./components"], + ["assets", "./src/assets"], + ["components", "./src/components"], ["db", "./db"], - ["hooks", "./hooks"], - ["lang", "./lang"], - ["lib", "./lib"], + ["hooks", "./src/components/hooks"], + ["lang", "./src/lang"], + ["lib", "./src/lib"], ["public", "./public"], - ["queries", "./queries"], - ["store", "./store"], - ["styles", "./styles"] + ["queries", "./src/queries"], + ["store", "./src/store"], + ["styles", "./src/styles"] ], "extensions": [".ts", ".tsx", ".js", ".jsx", ".json"] } diff --git a/jsconfig.json b/jsconfig.json index b639b0f8..738e8a46 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,5 +1,5 @@ { "compilerOptions": { - "baseUrl": "." + "baseUrl": "./src" } -} \ No newline at end of file +} diff --git a/package.components.json b/package.components.json new file mode 100644 index 00000000..4596caa2 --- /dev/null +++ b/package.components.json @@ -0,0 +1,10 @@ +{ + "name": "@umami/components", + "version": "0.1.0", + "description": "Umami React components.", + "author": "Mike Cao ", + "license": "MIT", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts" +} diff --git a/package.json b/package.json index e1361d20..4f1eaa79 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "start-env": "node scripts/start-env.js", "start-server": "node server.js", "build-app": "next build", - "build-tracker": "rollup -c rollup.tracker.config.js", + "build-components": "rollup -c rollup.components.config.mjs", + "build-tracker": "rollup -c rollup.tracker.config.mjs", "build-db": "npm-run-all copy-db-files build-db-client", "build-lang": "npm-run-all format-lang compile-lang download-country-names download-language-names", "build-geo": "node scripts/build-geo.js", @@ -115,13 +116,16 @@ "@formatjs/cli": "^4.2.29", "@netlify/plugin-nextjs": "^4.27.3", "@rollup/plugin-alias": "^5.0.0", - "@rollup/plugin-buble": "^0.21.3", - "@rollup/plugin-commonjs": "^24.1.0", + "@rollup/plugin-buble": "^1.0.2", + "@rollup/plugin-commonjs": "^25.0.4", "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.0.2", - "@rollup/plugin-replace": "^4.0.0", - "@svgr/rollup": "^7.0.0", + "@rollup/plugin-node-resolve": "^15.2.0", + "@rollup/plugin-replace": "^5.0.2", + "@svgr/rollup": "^8.1.0", "@svgr/webpack": "^6.2.1", + "@types/node": "^18.11.9", + "@types/react": "^18.0.25", + "@types/react-dom": "^18.0.8", "@typescript-eslint/eslint-plugin": "^5.50.0", "@typescript-eslint/parser": "^5.50.0", "cross-env": "^7.0.3", @@ -143,11 +147,12 @@ "prettier": "^2.6.2", "prisma": "5.0.0", "prompts": "2.4.2", - "rollup": "^2.70.1", + "rollup": "^3.28.0", + "rollup-plugin-copy": "^3.4.0", "rollup-plugin-delete": "^2.0.0", - "rollup-plugin-dts": "^5.3.0", + "rollup-plugin-dts": "^6.0.0", "rollup-plugin-esbuild": "^5.0.0", - "rollup-plugin-node-externals": "^5.1.2", + "rollup-plugin-node-externals": "^6.1.1", "rollup-plugin-postcss": "^4.0.2", "rollup-plugin-terser": "^7.0.2", "stylelint": "^15.10.1", @@ -156,6 +161,6 @@ "stylelint-config-recommended": "^9.0.0", "tar": "^6.1.2", "ts-node": "^10.9.1", - "typescript": "^4.9.5" + "typescript": "^5.1.6" } } diff --git a/rollup.components.config.mjs b/rollup.components.config.mjs new file mode 100644 index 00000000..5c8722b4 --- /dev/null +++ b/rollup.components.config.mjs @@ -0,0 +1,99 @@ +import path from 'path'; +import crypto from 'crypto'; +import resolve from '@rollup/plugin-node-resolve'; +import alias from '@rollup/plugin-alias'; +import json from '@rollup/plugin-json'; +import postcss from 'rollup-plugin-postcss'; +import copy from 'rollup-plugin-copy'; +import del from 'rollup-plugin-delete'; +import nodeExternals from 'rollup-plugin-node-externals'; +import esbuild from 'rollup-plugin-esbuild'; +import dts from 'rollup-plugin-dts'; +import svgr from '@svgr/rollup'; + +const md5 = str => crypto.createHash('md5').update(str).digest('hex'); + +const customResolver = resolve({ + extensions: ['.js', '.jsx', '.ts', '.tsx'], +}); + +const aliasConfig = { + entries: [ + { find: /^components/, replacement: path.resolve('./src/components') }, + { find: /^hooks/, replacement: path.resolve('./src/hooks') }, + { find: /^lib/, replacement: path.resolve('./src/lib') }, + { find: /^store/, replacement: path.resolve('./src/store') }, + { find: /^public/, replacement: path.resolve('./public') }, + { find: /^assets/, replacement: path.resolve('./src/assets') }, + ], + customResolver, +}; + +const external = [ + 'react', + 'react-dom', + 'react/jsx-runtime', + 'react-intl', + 'react-basics', + 'classnames', + 'next', +]; + +const jsBundle = { + input: 'src/index.ts', + output: [ + { + file: 'dist/index.js', + format: 'cjs', + sourcemap: true, + }, + { + file: 'dist/index.mjs', + format: 'es', + sourcemap: true, + }, + ], + plugins: [ + del({ targets: 'dist/*', runOnce: true }), + copy({ targets: [{ src: './package.components.json', dest: 'dist', rename: 'package.json' }] }), + postcss({ + config: false, + extract: 'styles.css', + sourceMap: true, + minimize: true, + modules: { + generateScopedName: function (name, filename, css) { + const file = path.basename(filename, '.css').replace('.module', ''); + const hash = Buffer.from(md5(`${name}:${filename}:${css}`)) + .toString('base64') + .substring(0, 5); + + return `${file}-${name}--${hash}`; + }, + }, + }), + svgr({ icon: true }), + nodeExternals(), + json(), + alias(aliasConfig), + esbuild({ + target: 'es6', + jsx: 'transform', + loaders: { + '.js': 'jsx', + }, + }), + ], +}; + +const dtsBundle = { + input: 'src/index.ts', + output: { + file: 'dist/index.d.ts', + format: 'es', + }, + plugins: [alias(aliasConfig), nodeExternals(), json(), dts()], + external: [/\.css/], +}; + +export default [jsBundle, dtsBundle]; diff --git a/rollup.tracker.config.js b/rollup.tracker.config.mjs similarity index 93% rename from rollup.tracker.config.js rename to rollup.tracker.config.mjs index f4e7223c..465e1af3 100644 --- a/rollup.tracker.config.js +++ b/rollup.tracker.config.mjs @@ -4,7 +4,7 @@ import replace from '@rollup/plugin-replace'; import { terser } from 'rollup-plugin-terser'; export default { - input: 'tracker/index.js', + input: 'src/tracker/index.js', output: { file: 'public/script.js', format: 'iife', diff --git a/scripts/check-lang.js b/scripts/check-lang.js index e5a0bf09..a1b60431 100644 --- a/scripts/check-lang.js +++ b/scripts/check-lang.js @@ -2,7 +2,7 @@ const fs = require('fs'); const path = require('path'); const chalk = require('chalk'); -const messages = require('../lang/en-US.json'); +const messages = require('../src/lang/en-US.json'); const ignore = require('../lang-ignore.json'); const dir = path.resolve(__dirname, '../lang'); diff --git a/assets/add-user.svg b/src/assets/add-user.svg similarity index 100% rename from assets/add-user.svg rename to src/assets/add-user.svg diff --git a/assets/bar-chart.svg b/src/assets/bar-chart.svg similarity index 100% rename from assets/bar-chart.svg rename to src/assets/bar-chart.svg diff --git a/assets/bars.svg b/src/assets/bars.svg similarity index 100% rename from assets/bars.svg rename to src/assets/bars.svg diff --git a/assets/bolt.svg b/src/assets/bolt.svg similarity index 100% rename from assets/bolt.svg rename to src/assets/bolt.svg diff --git a/assets/calendar.svg b/src/assets/calendar.svg similarity index 100% rename from assets/calendar.svg rename to src/assets/calendar.svg diff --git a/assets/clock.svg b/src/assets/clock.svg similarity index 100% rename from assets/clock.svg rename to src/assets/clock.svg diff --git a/assets/dashboard.svg b/src/assets/dashboard.svg similarity index 100% rename from assets/dashboard.svg rename to src/assets/dashboard.svg diff --git a/assets/expand.svg b/src/assets/expand.svg similarity index 100% rename from assets/expand.svg rename to src/assets/expand.svg diff --git a/assets/eye.svg b/src/assets/eye.svg similarity index 100% rename from assets/eye.svg rename to src/assets/eye.svg diff --git a/assets/funnel.svg b/src/assets/funnel.svg similarity index 100% rename from assets/funnel.svg rename to src/assets/funnel.svg diff --git a/assets/gear.svg b/src/assets/gear.svg similarity index 100% rename from assets/gear.svg rename to src/assets/gear.svg diff --git a/assets/globe.svg b/src/assets/globe.svg similarity index 100% rename from assets/globe.svg rename to src/assets/globe.svg diff --git a/assets/lightbulb.svg b/src/assets/lightbulb.svg similarity index 100% rename from assets/lightbulb.svg rename to src/assets/lightbulb.svg diff --git a/assets/link.svg b/src/assets/link.svg similarity index 100% rename from assets/link.svg rename to src/assets/link.svg diff --git a/assets/lock.svg b/src/assets/lock.svg similarity index 100% rename from assets/lock.svg rename to src/assets/lock.svg diff --git a/assets/logo.svg b/src/assets/logo.svg similarity index 100% rename from assets/logo.svg rename to src/assets/logo.svg diff --git a/assets/magnet.svg b/src/assets/magnet.svg similarity index 100% rename from assets/magnet.svg rename to src/assets/magnet.svg diff --git a/assets/moon.svg b/src/assets/moon.svg similarity index 100% rename from assets/moon.svg rename to src/assets/moon.svg diff --git a/assets/nodes.svg b/src/assets/nodes.svg similarity index 100% rename from assets/nodes.svg rename to src/assets/nodes.svg diff --git a/assets/overview.svg b/src/assets/overview.svg similarity index 100% rename from assets/overview.svg rename to src/assets/overview.svg diff --git a/assets/profile.svg b/src/assets/profile.svg similarity index 100% rename from assets/profile.svg rename to src/assets/profile.svg diff --git a/assets/redo.svg b/src/assets/redo.svg similarity index 100% rename from assets/redo.svg rename to src/assets/redo.svg diff --git a/assets/reports.svg b/src/assets/reports.svg similarity index 100% rename from assets/reports.svg rename to src/assets/reports.svg diff --git a/assets/sun.svg b/src/assets/sun.svg similarity index 100% rename from assets/sun.svg rename to src/assets/sun.svg diff --git a/assets/user.svg b/src/assets/user.svg similarity index 100% rename from assets/user.svg rename to src/assets/user.svg diff --git a/assets/users.svg b/src/assets/users.svg similarity index 100% rename from assets/users.svg rename to src/assets/users.svg diff --git a/assets/visitor.svg b/src/assets/visitor.svg similarity index 100% rename from assets/visitor.svg rename to src/assets/visitor.svg diff --git a/assets/website.svg b/src/assets/website.svg similarity index 100% rename from assets/website.svg rename to src/assets/website.svg diff --git a/components/common/ConfirmDeleteForm.js b/src/components/common/ConfirmDeleteForm.js similarity index 93% rename from components/common/ConfirmDeleteForm.js rename to src/components/common/ConfirmDeleteForm.js index 3496a305..fed618da 100644 --- a/components/common/ConfirmDeleteForm.js +++ b/src/components/common/ConfirmDeleteForm.js @@ -1,6 +1,6 @@ import { useState } from 'react'; import { Button, LoadingButton, Form, FormButtons } from 'react-basics'; -import useMessages from 'hooks/useMessages'; +import useMessages from 'components/hooks/useMessages'; export function ConfirmDeleteForm({ name, onConfirm, onClose }) { const [loading, setLoading] = useState(false); diff --git a/components/common/Empty.js b/src/components/common/Empty.js similarity index 86% rename from components/common/Empty.js rename to src/components/common/Empty.js index 95681b16..c0be761a 100644 --- a/components/common/Empty.js +++ b/src/components/common/Empty.js @@ -1,6 +1,6 @@ import classNames from 'classnames'; import styles from './Empty.module.css'; -import useMessages from 'hooks/useMessages'; +import useMessages from 'components/hooks/useMessages'; export function Empty({ message, className }) { const { formatMessage, messages } = useMessages(); diff --git a/components/common/Empty.module.css b/src/components/common/Empty.module.css similarity index 100% rename from components/common/Empty.module.css rename to src/components/common/Empty.module.css diff --git a/components/common/EmptyPlaceholder.js b/src/components/common/EmptyPlaceholder.js similarity index 100% rename from components/common/EmptyPlaceholder.js rename to src/components/common/EmptyPlaceholder.js diff --git a/components/common/ErrorBoundary.js b/src/components/common/ErrorBoundary.js similarity index 93% rename from components/common/ErrorBoundary.js rename to src/components/common/ErrorBoundary.js index f97fd92c..32cedb39 100644 --- a/components/common/ErrorBoundary.js +++ b/src/components/common/ErrorBoundary.js @@ -1,7 +1,7 @@ /* eslint-disable no-console */ import { ErrorBoundary as Boundary } from 'react-error-boundary'; import { Button } from 'react-basics'; -import useMessages from 'hooks/useMessages'; +import useMessages from 'components/hooks/useMessages'; import styles from './ErrorBoundry.module.css'; const logError = (error, info) => { diff --git a/components/common/ErrorBoundry.module.css b/src/components/common/ErrorBoundry.module.css similarity index 100% rename from components/common/ErrorBoundry.module.css rename to src/components/common/ErrorBoundry.module.css diff --git a/components/common/ErrorMessage.js b/src/components/common/ErrorMessage.js similarity index 88% rename from components/common/ErrorMessage.js rename to src/components/common/ErrorMessage.js index e2b22747..f8129c6b 100644 --- a/components/common/ErrorMessage.js +++ b/src/components/common/ErrorMessage.js @@ -1,6 +1,6 @@ import { Icon, Icons, Text } from 'react-basics'; import styles from './ErrorMessage.module.css'; -import useMessages from 'hooks/useMessages'; +import useMessages from 'components/hooks/useMessages'; export function ErrorMessage() { const { formatMessage, messages } = useMessages(); diff --git a/components/common/ErrorMessage.module.css b/src/components/common/ErrorMessage.module.css similarity index 100% rename from components/common/ErrorMessage.module.css rename to src/components/common/ErrorMessage.module.css diff --git a/components/common/Favicon.js b/src/components/common/Favicon.js similarity index 100% rename from components/common/Favicon.js rename to src/components/common/Favicon.js diff --git a/components/common/Favicon.module.css b/src/components/common/Favicon.module.css similarity index 100% rename from components/common/Favicon.module.css rename to src/components/common/Favicon.module.css diff --git a/components/common/FilterButtons.js b/src/components/common/FilterButtons.js similarity index 100% rename from components/common/FilterButtons.js rename to src/components/common/FilterButtons.js diff --git a/components/common/FilterLink.js b/src/components/common/FilterLink.js similarity index 91% rename from components/common/FilterLink.js rename to src/components/common/FilterLink.js index 30cdc025..2a95e011 100644 --- a/components/common/FilterLink.js +++ b/src/components/common/FilterLink.js @@ -2,8 +2,8 @@ import { Icon, Icons } from 'react-basics'; import classNames from 'classnames'; import Link from 'next/link'; import { safeDecodeURI } from 'next-basics'; -import usePageQuery from 'hooks/usePageQuery'; -import useMessages from 'hooks/useMessages'; +import usePageQuery from 'components/hooks/usePageQuery'; +import useMessages from 'components/hooks/useMessages'; import styles from './FilterLink.module.css'; export function FilterLink({ id, value, label, externalUrl, children, className }) { diff --git a/components/common/FilterLink.module.css b/src/components/common/FilterLink.module.css similarity index 100% rename from components/common/FilterLink.module.css rename to src/components/common/FilterLink.module.css diff --git a/components/common/HamburgerButton.js b/src/components/common/HamburgerButton.js similarity index 93% rename from components/common/HamburgerButton.js rename to src/components/common/HamburgerButton.js index 48c80770..9feee67b 100644 --- a/components/common/HamburgerButton.js +++ b/src/components/common/HamburgerButton.js @@ -2,8 +2,8 @@ import { Button, Icon } from 'react-basics'; import { useState } from 'react'; import MobileMenu from './MobileMenu'; import Icons from 'components/icons'; -import useMessages from 'hooks/useMessages'; -import useConfig from 'hooks/useConfig'; +import useMessages from 'components/hooks/useMessages'; +import useConfig from 'components/hooks/useConfig'; export function HamburgerButton() { const { formatMessage, labels } = useMessages(); diff --git a/components/common/HamburgerButton.module.css b/src/components/common/HamburgerButton.module.css similarity index 100% rename from components/common/HamburgerButton.module.css rename to src/components/common/HamburgerButton.module.css diff --git a/components/common/HoverTooltip.js b/src/components/common/HoverTooltip.js similarity index 100% rename from components/common/HoverTooltip.js rename to src/components/common/HoverTooltip.js diff --git a/components/common/HoverTooltip.module.css b/src/components/common/HoverTooltip.module.css similarity index 100% rename from components/common/HoverTooltip.module.css rename to src/components/common/HoverTooltip.module.css diff --git a/components/common/LinkButton.js b/src/components/common/LinkButton.js similarity index 77% rename from components/common/LinkButton.js rename to src/components/common/LinkButton.js index 8c050147..54c7fa63 100644 --- a/components/common/LinkButton.js +++ b/src/components/common/LinkButton.js @@ -2,7 +2,7 @@ import Link from 'next/link'; import { Icon, Icons, Text } from 'react-basics'; import styles from './LinkButton.module.css'; -export default function LinkButton({ href, icon, children }) { +export function LinkButton({ href, icon, children }) { return ( {icon || } @@ -10,3 +10,5 @@ export default function LinkButton({ href, icon, children }) { ); } + +export default LinkButton; diff --git a/components/common/LinkButton.module.css b/src/components/common/LinkButton.module.css similarity index 100% rename from components/common/LinkButton.module.css rename to src/components/common/LinkButton.module.css diff --git a/components/common/MobileMenu.js b/src/components/common/MobileMenu.js similarity index 100% rename from components/common/MobileMenu.js rename to src/components/common/MobileMenu.js diff --git a/components/common/MobileMenu.module.css b/src/components/common/MobileMenu.module.css similarity index 100% rename from components/common/MobileMenu.module.css rename to src/components/common/MobileMenu.module.css diff --git a/components/common/Pager.js b/src/components/common/Pager.js similarity index 95% rename from components/common/Pager.js rename to src/components/common/Pager.js index aaeffbae..7a5e7ed5 100644 --- a/components/common/Pager.js +++ b/src/components/common/Pager.js @@ -1,6 +1,6 @@ import styles from './Pager.module.css'; import { Button, Flexbox, Icon, Icons } from 'react-basics'; -import useMessages from 'hooks/useMessages'; +import useMessages from 'components/hooks/useMessages'; export function Pager({ page, pageSize, count, onPageChange }) { const { formatMessage, labels } = useMessages(); diff --git a/components/common/Pager.module.css b/src/components/common/Pager.module.css similarity index 100% rename from components/common/Pager.module.css rename to src/components/common/Pager.module.css diff --git a/components/common/SettingsTable.js b/src/components/common/SettingsTable.js similarity index 98% rename from components/common/SettingsTable.js rename to src/components/common/SettingsTable.js index eb7a6411..2df3b391 100644 --- a/components/common/SettingsTable.js +++ b/src/components/common/SettingsTable.js @@ -1,5 +1,5 @@ import Empty from 'components/common/Empty'; -import useMessages from 'hooks/useMessages'; +import useMessages from 'components/hooks/useMessages'; import { useState } from 'react'; import { SearchField, diff --git a/components/common/SettingsTable.module.css b/src/components/common/SettingsTable.module.css similarity index 100% rename from components/common/SettingsTable.module.css rename to src/components/common/SettingsTable.module.css diff --git a/components/common/UpdateNotice.js b/src/components/common/UpdateNotice.js similarity index 96% rename from components/common/UpdateNotice.js rename to src/components/common/UpdateNotice.js index bef6be98..e3edc70c 100644 --- a/components/common/UpdateNotice.js +++ b/src/components/common/UpdateNotice.js @@ -4,7 +4,7 @@ import { setItem } from 'next-basics'; import useStore, { checkVersion } from 'store/version'; import { REPO_URL, VERSION_CHECK } from 'lib/constants'; import styles from './UpdateNotice.module.css'; -import useMessages from 'hooks/useMessages'; +import useMessages from 'components/hooks/useMessages'; import { useRouter } from 'next/router'; export function UpdateNotice({ user, config }) { diff --git a/components/common/UpdateNotice.module.css b/src/components/common/UpdateNotice.module.css similarity index 100% rename from components/common/UpdateNotice.module.css rename to src/components/common/UpdateNotice.module.css diff --git a/components/common/WorldMap.js b/src/components/common/WorldMap.js similarity index 94% rename from components/common/WorldMap.js rename to src/components/common/WorldMap.js index 9c91e4a4..b593099b 100644 --- a/components/common/WorldMap.js +++ b/src/components/common/WorldMap.js @@ -5,9 +5,9 @@ import classNames from 'classnames'; import { colord } from 'colord'; import HoverTooltip from 'components/common/HoverTooltip'; import { ISO_COUNTRIES, MAP_FILE } from 'lib/constants'; -import useTheme from 'hooks/useTheme'; -import useCountryNames from 'hooks/useCountryNames'; -import useLocale from 'hooks/useLocale'; +import useTheme from 'components/hooks/useTheme'; +import useCountryNames from 'components/hooks/useCountryNames'; +import useLocale from 'components/hooks/useLocale'; import { formatLongNumber } from 'lib/format'; import { percentFilter } from 'lib/filters'; import styles from './WorldMap.module.css'; diff --git a/components/common/WorldMap.module.css b/src/components/common/WorldMap.module.css similarity index 100% rename from components/common/WorldMap.module.css rename to src/components/common/WorldMap.module.css diff --git a/components/declarations.d.ts b/src/components/declarations.d.ts similarity index 100% rename from components/declarations.d.ts rename to src/components/declarations.d.ts diff --git a/hooks/index.js b/src/components/hooks/index.js similarity index 100% rename from hooks/index.js rename to src/components/hooks/index.js diff --git a/hooks/useApi.ts b/src/components/hooks/useApi.ts similarity index 100% rename from hooks/useApi.ts rename to src/components/hooks/useApi.ts diff --git a/hooks/useApiFilter.ts b/src/components/hooks/useApiFilter.ts similarity index 100% rename from hooks/useApiFilter.ts rename to src/components/hooks/useApiFilter.ts diff --git a/hooks/useConfig.js b/src/components/hooks/useConfig.js similarity index 91% rename from hooks/useConfig.js rename to src/components/hooks/useConfig.js index 2dead15a..6b37c87b 100644 --- a/hooks/useConfig.js +++ b/src/components/hooks/useConfig.js @@ -1,6 +1,6 @@ import { useEffect } from 'react'; import useStore, { setConfig } from 'store/app'; -import useApi from 'hooks/useApi'; +import useApi from 'components/hooks/useApi'; let loading = false; diff --git a/hooks/useCountryNames.js b/src/components/hooks/useCountryNames.js similarity index 100% rename from hooks/useCountryNames.js rename to src/components/hooks/useCountryNames.js diff --git a/hooks/useDateRange.js b/src/components/hooks/useDateRange.js similarity index 100% rename from hooks/useDateRange.js rename to src/components/hooks/useDateRange.js diff --git a/hooks/useDocumentClick.js b/src/components/hooks/useDocumentClick.js similarity index 100% rename from hooks/useDocumentClick.js rename to src/components/hooks/useDocumentClick.js diff --git a/hooks/useEscapeKey.js b/src/components/hooks/useEscapeKey.js similarity index 100% rename from hooks/useEscapeKey.js rename to src/components/hooks/useEscapeKey.js diff --git a/hooks/useFilters.js b/src/components/hooks/useFilters.js similarity index 97% rename from hooks/useFilters.js rename to src/components/hooks/useFilters.js index 089f2ee8..e1a9a885 100644 --- a/hooks/useFilters.js +++ b/src/components/hooks/useFilters.js @@ -1,4 +1,4 @@ -import { useMessages } from 'hooks'; +import { useMessages } from './useMessages'; import { OPERATORS } from 'lib/constants'; export function useFilters() { diff --git a/hooks/useForceUpdate.js b/src/components/hooks/useForceUpdate.js similarity index 100% rename from hooks/useForceUpdate.js rename to src/components/hooks/useForceUpdate.js diff --git a/hooks/useFormat.js b/src/components/hooks/useFormat.js similarity index 100% rename from hooks/useFormat.js rename to src/components/hooks/useFormat.js diff --git a/hooks/useLanguageNames.js b/src/components/hooks/useLanguageNames.js similarity index 100% rename from hooks/useLanguageNames.js rename to src/components/hooks/useLanguageNames.js diff --git a/hooks/useLocale.js b/src/components/hooks/useLocale.js similarity index 96% rename from hooks/useLocale.js rename to src/components/hooks/useLocale.js index 86ca9904..6353b033 100644 --- a/hooks/useLocale.js +++ b/src/components/hooks/useLocale.js @@ -4,7 +4,7 @@ import { httpGet, setItem } from 'next-basics'; import { LOCALE_CONFIG } from 'lib/constants'; import { getDateLocale, getTextDirection } from 'lib/lang'; import useStore, { setLocale } from 'store/app'; -import useForceUpdate from 'hooks/useForceUpdate'; +import useForceUpdate from 'components/hooks/useForceUpdate'; import enUS from 'public/intl/messages/en-US.json'; const messages = { diff --git a/hooks/useMessages.js b/src/components/hooks/useMessages.js similarity index 100% rename from hooks/useMessages.js rename to src/components/hooks/useMessages.js diff --git a/hooks/usePageQuery.js b/src/components/hooks/usePageQuery.js similarity index 100% rename from hooks/usePageQuery.js rename to src/components/hooks/usePageQuery.js diff --git a/hooks/useReport.js b/src/components/hooks/useReport.js similarity index 100% rename from hooks/useReport.js rename to src/components/hooks/useReport.js diff --git a/hooks/useReports.js b/src/components/hooks/useReports.js similarity index 94% rename from hooks/useReports.js rename to src/components/hooks/useReports.js index 932fa6dc..d9292aeb 100644 --- a/hooks/useReports.js +++ b/src/components/hooks/useReports.js @@ -1,6 +1,6 @@ import { useState } from 'react'; import useApi from './useApi'; -import useApiFilter from 'hooks/useApiFilter'; +import useApiFilter from 'components/hooks/useApiFilter'; export function useReports() { const [modified, setModified] = useState(Date.now()); diff --git a/hooks/useRequireLogin.js b/src/components/hooks/useRequireLogin.js similarity index 84% rename from hooks/useRequireLogin.js rename to src/components/hooks/useRequireLogin.js index 3a95c988..82a6d220 100644 --- a/hooks/useRequireLogin.js +++ b/src/components/hooks/useRequireLogin.js @@ -1,7 +1,7 @@ import { useEffect } from 'react'; import { useRouter } from 'next/router'; -import useApi from 'hooks/useApi'; -import useUser from 'hooks/useUser'; +import useApi from 'components/hooks/useApi'; +import useUser from 'components/hooks/useUser'; export function useRequireLogin() { const router = useRouter(); diff --git a/hooks/useShareToken.js b/src/components/hooks/useShareToken.js similarity index 100% rename from hooks/useShareToken.js rename to src/components/hooks/useShareToken.js diff --git a/hooks/useSticky.js b/src/components/hooks/useSticky.js similarity index 100% rename from hooks/useSticky.js rename to src/components/hooks/useSticky.js diff --git a/hooks/useTheme.js b/src/components/hooks/useTheme.js similarity index 100% rename from hooks/useTheme.js rename to src/components/hooks/useTheme.js diff --git a/hooks/useTimezone.js b/src/components/hooks/useTimezone.js similarity index 100% rename from hooks/useTimezone.js rename to src/components/hooks/useTimezone.js diff --git a/hooks/useUser.js b/src/components/hooks/useUser.js similarity index 100% rename from hooks/useUser.js rename to src/components/hooks/useUser.js diff --git a/hooks/useWebsite.js b/src/components/hooks/useWebsite.js similarity index 100% rename from hooks/useWebsite.js rename to src/components/hooks/useWebsite.js diff --git a/hooks/useWebsiteReports.js b/src/components/hooks/useWebsiteReports.js similarity index 94% rename from hooks/useWebsiteReports.js rename to src/components/hooks/useWebsiteReports.js index 3b7ec415..c637bc76 100644 --- a/hooks/useWebsiteReports.js +++ b/src/components/hooks/useWebsiteReports.js @@ -1,6 +1,6 @@ import { useState } from 'react'; import useApi from './useApi'; -import useApiFilter from 'hooks/useApiFilter'; +import useApiFilter from 'components/hooks/useApiFilter'; export function useWebsiteReports(websiteId) { const [modified, setModified] = useState(Date.now()); diff --git a/components/icons.ts b/src/components/icons.ts similarity index 98% rename from components/icons.ts rename to src/components/icons.ts index 01d7caf5..8eb1f8b0 100644 --- a/components/icons.ts +++ b/src/components/icons.ts @@ -22,7 +22,7 @@ import User from 'assets/user.svg'; import Users from 'assets/users.svg'; import Visitor from 'assets/visitor.svg'; -const icons = { +const icons: any = { ...Icons, AddUser, Bars, diff --git a/components/input/DateFilter.js b/src/components/input/DateFilter.js similarity index 96% rename from components/input/DateFilter.js rename to src/components/input/DateFilter.js index af4b69dd..ffbcff69 100644 --- a/components/input/DateFilter.js +++ b/src/components/input/DateFilter.js @@ -2,10 +2,10 @@ import { useState } from 'react'; import { Icon, Modal, Dropdown, Item, Text, Flexbox } from 'react-basics'; import { endOfYear, isSameDay } from 'date-fns'; import DatePickerForm from 'components/metrics/DatePickerForm'; -import useLocale from 'hooks/useLocale'; +import useLocale from 'components/hooks/useLocale'; import { formatDate } from 'lib/date'; import Icons from 'components/icons'; -import useMessages from 'hooks/useMessages'; +import useMessages from 'components/hooks/useMessages'; export function DateFilter({ value, diff --git a/components/input/LanguageButton.js b/src/components/input/LanguageButton.js similarity index 96% rename from components/input/LanguageButton.js rename to src/components/input/LanguageButton.js index d4c1cbc3..3c0d0cd6 100644 --- a/components/input/LanguageButton.js +++ b/src/components/input/LanguageButton.js @@ -1,7 +1,7 @@ import { Icon, Button, PopupTrigger, Popup, Text } from 'react-basics'; import classNames from 'classnames'; import { languages } from 'lib/lang'; -import useLocale from 'hooks/useLocale'; +import useLocale from 'components/hooks/useLocale'; import Icons from 'components/icons'; import styles from './LanguageButton.module.css'; diff --git a/components/input/LanguageButton.module.css b/src/components/input/LanguageButton.module.css similarity index 100% rename from components/input/LanguageButton.module.css rename to src/components/input/LanguageButton.module.css diff --git a/components/input/LogoutButton.js b/src/components/input/LogoutButton.js similarity index 84% rename from components/input/LogoutButton.js rename to src/components/input/LogoutButton.js index 4a15cd68..2b04a78a 100644 --- a/components/input/LogoutButton.js +++ b/src/components/input/LogoutButton.js @@ -1,11 +1,11 @@ import { Button, Icon, Icons, TooltipPopup } from 'react-basics'; import Link from 'next/link'; -import useMessages from 'hooks/useMessages'; +import useMessages from 'components/hooks/useMessages'; export function LogoutButton({ tooltipPosition = 'top' }) { const { formatMessage, labels } = useMessages(); return ( - +