@burdenoff/microfe-timecampus 2026.510.104
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +20716 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +8527 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-operations.js +3913 -0
- package/dist/generated/wspace-operations.js.map +1 -0
- package/dist/generated/wspace-types.d.ts +53363 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js +24 -0
- package/dist/node_modules/@apollo/client/errors/CombinedGraphQLErrors.js.map +1 -0
- package/dist/node_modules/@apollo/client/errors/utils.js +16 -0
- package/dist/node_modules/@apollo/client/errors/utils.js.map +1 -0
- package/dist/node_modules/clsx/dist/clsx.js +18 -0
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +1674 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
- package/dist/timecampus/TimeCampusRoot.d.ts +5 -0
- package/dist/timecampus/TimeCampusRoot.d.ts.map +1 -0
- package/dist/timecampus/TimeCampusRoot.js +344 -0
- package/dist/timecampus/TimeCampusRoot.js.map +1 -0
- package/dist/timecampus/TimeCampusRoutes.d.ts +7 -0
- package/dist/timecampus/TimeCampusRoutes.d.ts.map +1 -0
- package/dist/timecampus/TimeCampusRoutes.js +227 -0
- package/dist/timecampus/TimeCampusRoutes.js.map +1 -0
- package/dist/timecampus/components/ChartCard.d.ts +19 -0
- package/dist/timecampus/components/ChartCard.d.ts.map +1 -0
- package/dist/timecampus/components/DataTable.d.ts +26 -0
- package/dist/timecampus/components/DataTable.d.ts.map +1 -0
- package/dist/timecampus/components/EmptyState.d.ts +12 -0
- package/dist/timecampus/components/EmptyState.d.ts.map +1 -0
- package/dist/timecampus/components/ErrorBoundary.d.ts +19 -0
- package/dist/timecampus/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/timecampus/components/ErrorBoundary.js +52 -0
- package/dist/timecampus/components/ErrorBoundary.js.map +1 -0
- package/dist/timecampus/components/FilterBar.d.ts +26 -0
- package/dist/timecampus/components/FilterBar.d.ts.map +1 -0
- package/dist/timecampus/components/LoadingSkeleton.d.ts +10 -0
- package/dist/timecampus/components/LoadingSkeleton.d.ts.map +1 -0
- package/dist/timecampus/components/LoadingSkeleton.js +76 -0
- package/dist/timecampus/components/LoadingSkeleton.js.map +1 -0
- package/dist/timecampus/components/Modal.d.ts +14 -0
- package/dist/timecampus/components/Modal.d.ts.map +1 -0
- package/dist/timecampus/components/PageLayout.d.ts +12 -0
- package/dist/timecampus/components/PageLayout.d.ts.map +1 -0
- package/dist/timecampus/components/PageLayout.js +23 -0
- package/dist/timecampus/components/PageLayout.js.map +1 -0
- package/dist/timecampus/components/StatCard.d.ts +17 -0
- package/dist/timecampus/components/StatCard.d.ts.map +1 -0
- package/dist/timecampus/components/StatCard.js +48 -0
- package/dist/timecampus/components/StatCard.js.map +1 -0
- package/dist/timecampus/components/StatusBadge.d.ts +16 -0
- package/dist/timecampus/components/StatusBadge.d.ts.map +1 -0
- package/dist/timecampus/components/Toast.d.ts +28 -0
- package/dist/timecampus/components/Toast.d.ts.map +1 -0
- package/dist/timecampus/components/index.d.ts +14 -0
- package/dist/timecampus/components/index.d.ts.map +1 -0
- package/dist/timecampus/hooks/index.d.ts +7 -0
- package/dist/timecampus/hooks/index.d.ts.map +1 -0
- package/dist/timecampus/hooks/useToast.d.ts +17 -0
- package/dist/timecampus/hooks/useToast.d.ts.map +1 -0
- package/dist/timecampus/index.d.ts +10 -0
- package/dist/timecampus/index.d.ts.map +1 -0
- package/dist/timecampus/index.js +4 -0
- package/dist/timecampus/pages/HomePage.d.ts +4 -0
- package/dist/timecampus/pages/HomePage.d.ts.map +1 -0
- package/dist/timecampus/pages/HomePage.js +239 -0
- package/dist/timecampus/pages/HomePage.js.map +1 -0
- package/dist/timecampus/pages/applets/AppletStorePage.d.ts +2 -0
- package/dist/timecampus/pages/applets/AppletStorePage.d.ts.map +1 -0
- package/dist/timecampus/pages/applets/AppletStorePage.js +77 -0
- package/dist/timecampus/pages/applets/AppletStorePage.js.map +1 -0
- package/dist/timecampus/pages/applets/InstalledAppletsPage.d.ts +2 -0
- package/dist/timecampus/pages/applets/InstalledAppletsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/applets/InstalledAppletsPage.js +83 -0
- package/dist/timecampus/pages/applets/InstalledAppletsPage.js.map +1 -0
- package/dist/timecampus/pages/application-usage/ApplicationUsagePage.d.ts +2 -0
- package/dist/timecampus/pages/application-usage/ApplicationUsagePage.d.ts.map +1 -0
- package/dist/timecampus/pages/application-usage/ApplicationUsagePage.js +118 -0
- package/dist/timecampus/pages/application-usage/ApplicationUsagePage.js.map +1 -0
- package/dist/timecampus/pages/application-usage/ApplicationUsageSettingsPage.d.ts +2 -0
- package/dist/timecampus/pages/application-usage/ApplicationUsageSettingsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/application-usage/ApplicationUsageSettingsPage.js +129 -0
- package/dist/timecampus/pages/application-usage/ApplicationUsageSettingsPage.js.map +1 -0
- package/dist/timecampus/pages/channels/ChannelsPage.d.ts +2 -0
- package/dist/timecampus/pages/channels/ChannelsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/channels/ChannelsPage.js +64 -0
- package/dist/timecampus/pages/channels/ChannelsPage.js.map +1 -0
- package/dist/timecampus/pages/client-portal/ClientPortalPage.d.ts +2 -0
- package/dist/timecampus/pages/client-portal/ClientPortalPage.d.ts.map +1 -0
- package/dist/timecampus/pages/client-portal/ClientPortalPage.js +108 -0
- package/dist/timecampus/pages/client-portal/ClientPortalPage.js.map +1 -0
- package/dist/timecampus/pages/dashboard/AnalyticsPage.d.ts +2 -0
- package/dist/timecampus/pages/dashboard/AnalyticsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/dashboard/AnalyticsPage.js +91 -0
- package/dist/timecampus/pages/dashboard/AnalyticsPage.js.map +1 -0
- package/dist/timecampus/pages/dashboard/ReportsPage.d.ts +2 -0
- package/dist/timecampus/pages/dashboard/ReportsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/dashboard/ReportsPage.js +102 -0
- package/dist/timecampus/pages/dashboard/ReportsPage.js.map +1 -0
- package/dist/timecampus/pages/email-tracking/EmailAnalyticsPage.d.ts +2 -0
- package/dist/timecampus/pages/email-tracking/EmailAnalyticsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/email-tracking/EmailAnalyticsPage.js +73 -0
- package/dist/timecampus/pages/email-tracking/EmailAnalyticsPage.js.map +1 -0
- package/dist/timecampus/pages/email-tracking/EmailSettingsPage.d.ts +2 -0
- package/dist/timecampus/pages/email-tracking/EmailSettingsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/email-tracking/EmailSettingsPage.js +138 -0
- package/dist/timecampus/pages/email-tracking/EmailSettingsPage.js.map +1 -0
- package/dist/timecampus/pages/email-tracking/EmailTrackingPage.d.ts +2 -0
- package/dist/timecampus/pages/email-tracking/EmailTrackingPage.d.ts.map +1 -0
- package/dist/timecampus/pages/email-tracking/EmailTrackingPage.js +71 -0
- package/dist/timecampus/pages/email-tracking/EmailTrackingPage.js.map +1 -0
- package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.d.ts +2 -0
- package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.d.ts.map +1 -0
- package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js +102 -0
- package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js.map +1 -0
- package/dist/timecampus/pages/focus-score/FocusScorePage.d.ts +2 -0
- package/dist/timecampus/pages/focus-score/FocusScorePage.d.ts.map +1 -0
- package/dist/timecampus/pages/focus-score/FocusScorePage.js +131 -0
- package/dist/timecampus/pages/focus-score/FocusScorePage.js.map +1 -0
- package/dist/timecampus/pages/focus-score/FocusScoreSettingsPage.d.ts +2 -0
- package/dist/timecampus/pages/focus-score/FocusScoreSettingsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/focus-score/FocusScoreSettingsPage.js +115 -0
- package/dist/timecampus/pages/focus-score/FocusScoreSettingsPage.js.map +1 -0
- package/dist/timecampus/pages/geofencing/GeofencingPage.d.ts +2 -0
- package/dist/timecampus/pages/geofencing/GeofencingPage.d.ts.map +1 -0
- package/dist/timecampus/pages/geofencing/GeofencingPage.js +70 -0
- package/dist/timecampus/pages/geofencing/GeofencingPage.js.map +1 -0
- package/dist/timecampus/pages/geofencing/GeofencingSettingsPage.d.ts +2 -0
- package/dist/timecampus/pages/geofencing/GeofencingSettingsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/geofencing/GeofencingSettingsPage.js +106 -0
- package/dist/timecampus/pages/geofencing/GeofencingSettingsPage.js.map +1 -0
- package/dist/timecampus/pages/industry-solutions/IndustrySolutionsPage.d.ts +2 -0
- package/dist/timecampus/pages/industry-solutions/IndustrySolutionsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/industry-solutions/IndustrySolutionsPage.js +77 -0
- package/dist/timecampus/pages/industry-solutions/IndustrySolutionsPage.js.map +1 -0
- package/dist/timecampus/pages/location-tracking/LocationPrivacySettingsPage.d.ts +2 -0
- package/dist/timecampus/pages/location-tracking/LocationPrivacySettingsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/location-tracking/LocationPrivacySettingsPage.js +115 -0
- package/dist/timecampus/pages/location-tracking/LocationPrivacySettingsPage.js.map +1 -0
- package/dist/timecampus/pages/location-tracking/LocationTrackingPage.d.ts +2 -0
- package/dist/timecampus/pages/location-tracking/LocationTrackingPage.d.ts.map +1 -0
- package/dist/timecampus/pages/location-tracking/LocationTrackingPage.js +97 -0
- package/dist/timecampus/pages/location-tracking/LocationTrackingPage.js.map +1 -0
- package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.d.ts +2 -0
- package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.js +89 -0
- package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.js.map +1 -0
- package/dist/timecampus/pages/meetings/MeetingCreatePage.d.ts +2 -0
- package/dist/timecampus/pages/meetings/MeetingCreatePage.d.ts.map +1 -0
- package/dist/timecampus/pages/meetings/MeetingCreatePage.js +101 -0
- package/dist/timecampus/pages/meetings/MeetingCreatePage.js.map +1 -0
- package/dist/timecampus/pages/meetings/MeetingDetailPage.d.ts +2 -0
- package/dist/timecampus/pages/meetings/MeetingDetailPage.d.ts.map +1 -0
- package/dist/timecampus/pages/meetings/MeetingDetailPage.js +123 -0
- package/dist/timecampus/pages/meetings/MeetingDetailPage.js.map +1 -0
- package/dist/timecampus/pages/meetings/MeetingsPage.d.ts +2 -0
- package/dist/timecampus/pages/meetings/MeetingsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/meetings/MeetingsPage.js +90 -0
- package/dist/timecampus/pages/meetings/MeetingsPage.js.map +1 -0
- package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.d.ts +2 -0
- package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.js +113 -0
- package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.js.map +1 -0
- package/dist/timecampus/pages/pomodoro/PomodoroPage.d.ts +2 -0
- package/dist/timecampus/pages/pomodoro/PomodoroPage.d.ts.map +1 -0
- package/dist/timecampus/pages/pomodoro/PomodoroPage.js +160 -0
- package/dist/timecampus/pages/pomodoro/PomodoroPage.js.map +1 -0
- package/dist/timecampus/pages/pomodoro/PomodoroSettingsPage.d.ts +2 -0
- package/dist/timecampus/pages/pomodoro/PomodoroSettingsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/pomodoro/PomodoroSettingsPage.js +176 -0
- package/dist/timecampus/pages/pomodoro/PomodoroSettingsPage.js.map +1 -0
- package/dist/timecampus/pages/projects/ProjectCreatePage.d.ts +2 -0
- package/dist/timecampus/pages/projects/ProjectCreatePage.d.ts.map +1 -0
- package/dist/timecampus/pages/projects/ProjectCreatePage.js +104 -0
- package/dist/timecampus/pages/projects/ProjectCreatePage.js.map +1 -0
- package/dist/timecampus/pages/projects/ProjectDetailPage.d.ts +2 -0
- package/dist/timecampus/pages/projects/ProjectDetailPage.d.ts.map +1 -0
- package/dist/timecampus/pages/projects/ProjectDetailPage.js +91 -0
- package/dist/timecampus/pages/projects/ProjectDetailPage.js.map +1 -0
- package/dist/timecampus/pages/projects/ProjectsPage.d.ts +2 -0
- package/dist/timecampus/pages/projects/ProjectsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/projects/ProjectsPage.js +95 -0
- package/dist/timecampus/pages/projects/ProjectsPage.js.map +1 -0
- package/dist/timecampus/pages/projects/TasksPage.d.ts +2 -0
- package/dist/timecampus/pages/projects/TasksPage.d.ts.map +1 -0
- package/dist/timecampus/pages/projects/TasksPage.js +73 -0
- package/dist/timecampus/pages/projects/TasksPage.js.map +1 -0
- package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.d.ts +2 -0
- package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.d.ts.map +1 -0
- package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.js +129 -0
- package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.js.map +1 -0
- package/dist/timecampus/pages/team/TeamAnalyticsPage.d.ts +2 -0
- package/dist/timecampus/pages/team/TeamAnalyticsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/team/TeamAnalyticsPage.js +78 -0
- package/dist/timecampus/pages/team/TeamAnalyticsPage.js.map +1 -0
- package/dist/timecampus/pages/team/TeamMembersPage.d.ts +2 -0
- package/dist/timecampus/pages/team/TeamMembersPage.d.ts.map +1 -0
- package/dist/timecampus/pages/team/TeamMembersPage.js +97 -0
- package/dist/timecampus/pages/team/TeamMembersPage.js.map +1 -0
- package/dist/timecampus/pages/team/TeamPage.d.ts +2 -0
- package/dist/timecampus/pages/team/TeamPage.d.ts.map +1 -0
- package/dist/timecampus/pages/team/TeamPage.js +82 -0
- package/dist/timecampus/pages/team/TeamPage.js.map +1 -0
- package/dist/timecampus/pages/team-activity/TeamActivityPage.d.ts +2 -0
- package/dist/timecampus/pages/team-activity/TeamActivityPage.d.ts.map +1 -0
- package/dist/timecampus/pages/team-activity/TeamActivityPage.js +107 -0
- package/dist/timecampus/pages/team-activity/TeamActivityPage.js.map +1 -0
- package/dist/timecampus/pages/team-activity/TeamActivitySettingsPage.d.ts +2 -0
- package/dist/timecampus/pages/team-activity/TeamActivitySettingsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/team-activity/TeamActivitySettingsPage.js +120 -0
- package/dist/timecampus/pages/team-activity/TeamActivitySettingsPage.js.map +1 -0
- package/dist/timecampus/pages/templates/TemplateApplicationPage.d.ts +2 -0
- package/dist/timecampus/pages/templates/TemplateApplicationPage.d.ts.map +1 -0
- package/dist/timecampus/pages/templates/TemplateApplicationPage.js +84 -0
- package/dist/timecampus/pages/templates/TemplateApplicationPage.js.map +1 -0
- package/dist/timecampus/pages/templates/TemplateDetailPage.d.ts +2 -0
- package/dist/timecampus/pages/templates/TemplateDetailPage.d.ts.map +1 -0
- package/dist/timecampus/pages/templates/TemplateDetailPage.js +98 -0
- package/dist/timecampus/pages/templates/TemplateDetailPage.js.map +1 -0
- package/dist/timecampus/pages/templates/TemplatesPage.d.ts +2 -0
- package/dist/timecampus/pages/templates/TemplatesPage.d.ts.map +1 -0
- package/dist/timecampus/pages/templates/TemplatesPage.js +76 -0
- package/dist/timecampus/pages/templates/TemplatesPage.js.map +1 -0
- package/dist/timecampus/pages/time/TimeEntriesPage.d.ts +2 -0
- package/dist/timecampus/pages/time/TimeEntriesPage.d.ts.map +1 -0
- package/dist/timecampus/pages/time/TimeEntriesPage.js +117 -0
- package/dist/timecampus/pages/time/TimeEntriesPage.js.map +1 -0
- package/dist/timecampus/pages/time/TimeTrackingPage.d.ts +2 -0
- package/dist/timecampus/pages/time/TimeTrackingPage.d.ts.map +1 -0
- package/dist/timecampus/pages/time/TimeTrackingPage.js +112 -0
- package/dist/timecampus/pages/time/TimeTrackingPage.js.map +1 -0
- package/dist/timecampus/pages/time/TimerPage.d.ts +2 -0
- package/dist/timecampus/pages/time/TimerPage.d.ts.map +1 -0
- package/dist/timecampus/pages/time/TimerPage.js +80 -0
- package/dist/timecampus/pages/time/TimerPage.js.map +1 -0
- package/dist/timecampus/pages/time-approval/TimeApprovalPage.d.ts +2 -0
- package/dist/timecampus/pages/time-approval/TimeApprovalPage.d.ts.map +1 -0
- package/dist/timecampus/pages/time-approval/TimeApprovalPage.js +130 -0
- package/dist/timecampus/pages/time-approval/TimeApprovalPage.js.map +1 -0
- package/dist/timecampus/pages/widgets/WidgetDetailPage.d.ts +2 -0
- package/dist/timecampus/pages/widgets/WidgetDetailPage.d.ts.map +1 -0
- package/dist/timecampus/pages/widgets/WidgetDetailPage.js +96 -0
- package/dist/timecampus/pages/widgets/WidgetDetailPage.js.map +1 -0
- package/dist/timecampus/pages/widgets/WidgetsPage.d.ts +2 -0
- package/dist/timecampus/pages/widgets/WidgetsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/widgets/WidgetsPage.js +77 -0
- package/dist/timecampus/pages/widgets/WidgetsPage.js.map +1 -0
- package/dist/timecampus/pages/work-patterns/WorkPatternsPage.d.ts +2 -0
- package/dist/timecampus/pages/work-patterns/WorkPatternsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/work-patterns/WorkPatternsPage.js +95 -0
- package/dist/timecampus/pages/work-patterns/WorkPatternsPage.js.map +1 -0
- package/dist/timecampus/pages/work-patterns/WorkPatternsSettingsPage.d.ts +2 -0
- package/dist/timecampus/pages/work-patterns/WorkPatternsSettingsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/work-patterns/WorkPatternsSettingsPage.js +129 -0
- package/dist/timecampus/pages/work-patterns/WorkPatternsSettingsPage.js.map +1 -0
- package/dist/timecampus/pages/workflows/WorkflowsPage.d.ts +2 -0
- package/dist/timecampus/pages/workflows/WorkflowsPage.d.ts.map +1 -0
- package/dist/timecampus/pages/workflows/WorkflowsPage.js +80 -0
- package/dist/timecampus/pages/workflows/WorkflowsPage.js.map +1 -0
- package/dist/timecampus/providers/TimeCampusProvider.d.ts +29 -0
- package/dist/timecampus/providers/TimeCampusProvider.d.ts.map +1 -0
- package/dist/timecampus/providers/TimeCampusProvider.js +92 -0
- package/dist/timecampus/providers/TimeCampusProvider.js.map +1 -0
- package/dist/timecampus/store/timecampusStore.d.ts +71 -0
- package/dist/timecampus/store/timecampusStore.d.ts.map +1 -0
- package/dist/timecampus/store/timecampusStore.js +33 -0
- package/dist/timecampus/store/timecampusStore.js.map +1 -0
- package/dist/timecampus/types/index.d.ts +615 -0
- package/dist/timecampus/types/index.d.ts.map +1 -0
- package/dist/timecampus/utils/helpers.d.ts +19 -0
- package/dist/timecampus/utils/helpers.d.ts.map +1 -0
- package/dist/timecampus/utils/helpers.js +73 -0
- package/dist/timecampus/utils/helpers.js.map +1 -0
- package/dist/timecampus/utils/index.d.ts +2 -0
- package/dist/timecampus/utils/index.d.ts.map +1 -0
- package/package.json +110 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
|
|
2
|
+
import { PageLayout as t } from "../../components/PageLayout.js";
|
|
3
|
+
import { StatCard as n } from "../../components/StatCard.js";
|
|
4
|
+
import { LoadingSkeleton as r } from "../../components/LoadingSkeleton.js";
|
|
5
|
+
import { useGetFocusScoreSummaryQuery as i, useGetTodayFocusScoreQuery as a, useListFocusScoresQuery as o } from "../../../generated/wspace-operations.js";
|
|
6
|
+
import { Brain as s, Shield as c, Target as l, Zap as u } from "lucide-react";
|
|
7
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
8
|
+
//#region src/timecampus/pages/focus-score/FocusScorePage.tsx
|
|
9
|
+
var p = {
|
|
10
|
+
deepWork: "bg-blue-500",
|
|
11
|
+
consistency: "bg-emerald-500",
|
|
12
|
+
taskCompletion: "bg-violet-500",
|
|
13
|
+
distractionResistance: "bg-amber-500",
|
|
14
|
+
energyManagement: "bg-rose-500"
|
|
15
|
+
};
|
|
16
|
+
function m() {
|
|
17
|
+
let { workspaceId: m = "" } = e(), { data: h, loading: g, error: _ } = o({
|
|
18
|
+
variables: { limit: 30 },
|
|
19
|
+
skip: !m
|
|
20
|
+
}), { data: v, loading: y, error: b } = i({ skip: !m }), { data: x, loading: S, error: C } = a({ skip: !m }), w = g || y || S, T = _ || b || C, E = x?.todayFocusScore, D = v?.focusScoreSummary, O = h?.focusScores ?? [], k = E ? [
|
|
21
|
+
{
|
|
22
|
+
label: "Deep Work",
|
|
23
|
+
score: E.deepWorkScore ?? 0,
|
|
24
|
+
color: p.deepWork
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
label: "Consistency",
|
|
28
|
+
score: E.consistencyScore ?? 0,
|
|
29
|
+
color: p.consistency
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: "Task Completion",
|
|
33
|
+
score: E.taskCompletionScore ?? 0,
|
|
34
|
+
color: p.taskCompletion
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
label: "Distraction Resistance",
|
|
38
|
+
score: E.distractionResistanceScore ?? 0,
|
|
39
|
+
color: p.distractionResistance
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
label: "Energy Management",
|
|
43
|
+
score: E.energyManagementScore ?? 0,
|
|
44
|
+
color: p.energyManagement
|
|
45
|
+
}
|
|
46
|
+
] : [], A = E?.overallScore == null ? "--" : `${E.overallScore}/100`, j = O.filter((e) => e.overallScore >= 70).length, M = O.reduce((e, t) => e + (t.overallScore ?? 0), 0), N = Math.floor(M / 60), P = M % 60, F = N > 0 ? `${N}h ${P}m` : `${P}m`, I = D?.trend === "up" ? 7 : D?.trend === "down" ? -5 : 0, L = D?.highestScore == null ? "--" : `${D.highestScore}`;
|
|
47
|
+
return w ? /* @__PURE__ */ d(t, {
|
|
48
|
+
title: "Focus Score",
|
|
49
|
+
description: "Measure and improve your focus",
|
|
50
|
+
children: /* @__PURE__ */ d(r, {
|
|
51
|
+
variant: "card",
|
|
52
|
+
count: 4
|
|
53
|
+
})
|
|
54
|
+
}) : T ? /* @__PURE__ */ d(t, {
|
|
55
|
+
title: "Focus Score",
|
|
56
|
+
description: "Measure and improve your focus",
|
|
57
|
+
children: /* @__PURE__ */ d("div", {
|
|
58
|
+
className: "rounded-xl border border-destructive/50 bg-destructive/10 p-4 text-sm text-destructive",
|
|
59
|
+
children: "Failed to load focus score data. Please try again later."
|
|
60
|
+
})
|
|
61
|
+
}) : /* @__PURE__ */ f(t, {
|
|
62
|
+
title: "Focus Score",
|
|
63
|
+
description: "Measure and improve your focus",
|
|
64
|
+
children: [/* @__PURE__ */ f("div", {
|
|
65
|
+
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
|
|
66
|
+
children: [
|
|
67
|
+
/* @__PURE__ */ d(n, {
|
|
68
|
+
title: "Overall Score",
|
|
69
|
+
value: A,
|
|
70
|
+
icon: /* @__PURE__ */ d(s, { className: "h-5 w-5" }),
|
|
71
|
+
trend: I === 0 ? void 0 : {
|
|
72
|
+
value: I,
|
|
73
|
+
label: "vs last week"
|
|
74
|
+
},
|
|
75
|
+
iconBgColor: "bg-violet-100 text-violet-600 dark:bg-violet-900/30 dark:text-violet-400"
|
|
76
|
+
}),
|
|
77
|
+
/* @__PURE__ */ d(n, {
|
|
78
|
+
title: "Focus Sessions",
|
|
79
|
+
value: String(j),
|
|
80
|
+
icon: /* @__PURE__ */ d(l, { className: "h-5 w-5" }),
|
|
81
|
+
description: "Completed today"
|
|
82
|
+
}),
|
|
83
|
+
/* @__PURE__ */ d(n, {
|
|
84
|
+
title: "Total Focus Time",
|
|
85
|
+
value: F,
|
|
86
|
+
icon: /* @__PURE__ */ d(u, { className: "h-5 w-5" })
|
|
87
|
+
}),
|
|
88
|
+
/* @__PURE__ */ d(n, {
|
|
89
|
+
title: "Highest Score",
|
|
90
|
+
value: L,
|
|
91
|
+
icon: /* @__PURE__ */ d(c, { className: "h-5 w-5" }),
|
|
92
|
+
description: "Personal best"
|
|
93
|
+
})
|
|
94
|
+
]
|
|
95
|
+
}), /* @__PURE__ */ f("div", {
|
|
96
|
+
className: "rounded-xl border border-border bg-card p-6",
|
|
97
|
+
children: [/* @__PURE__ */ d("h3", {
|
|
98
|
+
className: "mb-4 text-sm font-semibold text-foreground",
|
|
99
|
+
children: "Focus Components"
|
|
100
|
+
}), k.length === 0 ? /* @__PURE__ */ d("div", {
|
|
101
|
+
className: "flex h-32 items-center justify-center text-sm text-muted-foreground",
|
|
102
|
+
children: "No focus score recorded today."
|
|
103
|
+
}) : /* @__PURE__ */ d("div", {
|
|
104
|
+
className: "space-y-4",
|
|
105
|
+
children: k.map((e) => /* @__PURE__ */ f("div", {
|
|
106
|
+
className: "space-y-1",
|
|
107
|
+
children: [/* @__PURE__ */ f("div", {
|
|
108
|
+
className: "flex items-center justify-between text-sm",
|
|
109
|
+
children: [/* @__PURE__ */ d("span", {
|
|
110
|
+
className: "font-medium text-foreground",
|
|
111
|
+
children: e.label
|
|
112
|
+
}), /* @__PURE__ */ f("span", {
|
|
113
|
+
className: "text-muted-foreground",
|
|
114
|
+
children: [e.score, "%"]
|
|
115
|
+
})]
|
|
116
|
+
}), /* @__PURE__ */ d("div", {
|
|
117
|
+
className: "h-2.5 w-full rounded-full bg-muted",
|
|
118
|
+
children: /* @__PURE__ */ d("div", {
|
|
119
|
+
className: `h-2.5 rounded-full ${e.color}`,
|
|
120
|
+
style: { width: `${e.score}%` }
|
|
121
|
+
})
|
|
122
|
+
})]
|
|
123
|
+
}, e.label))
|
|
124
|
+
})]
|
|
125
|
+
})]
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
export { m as FocusScorePage };
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=FocusScorePage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FocusScorePage.js","names":[],"sources":["../../../../src/timecampus/pages/focus-score/FocusScorePage.tsx"],"sourcesContent":["import { Brain, Target, Zap, Shield } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { StatCard } from \"../../components/StatCard\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useListFocusScoresQuery,\n useGetFocusScoreSummaryQuery,\n useGetTodayFocusScoreQuery,\n type FocusScoreFieldsFragment,\n} from \"@/generated/wspace-operations\";\n\nconst COMPONENT_COLORS: Record<string, string> = {\n deepWork: \"bg-blue-500\",\n consistency: \"bg-emerald-500\",\n taskCompletion: \"bg-violet-500\",\n distractionResistance: \"bg-amber-500\",\n energyManagement: \"bg-rose-500\",\n};\n\nexport function FocusScorePage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const {\n data: scoresData,\n loading: scoresLoading,\n error: scoresError,\n } = useListFocusScoresQuery({\n variables: { limit: 30 },\n skip: !workspaceId,\n });\n\n const {\n data: summaryData,\n loading: summaryLoading,\n error: summaryError,\n } = useGetFocusScoreSummaryQuery({\n skip: !workspaceId,\n });\n\n const {\n data: todayData,\n loading: todayLoading,\n error: todayError,\n } = useGetTodayFocusScoreQuery({\n skip: !workspaceId,\n });\n\n const loading = scoresLoading || summaryLoading || todayLoading;\n const error = scoresError || summaryError || todayError;\n const today = todayData?.todayFocusScore;\n const summary = summaryData?.focusScoreSummary;\n const scores = scoresData?.focusScores ?? [];\n\n // Build focus components from today's score\n const focusComponents = today\n ? [\n {\n label: \"Deep Work\",\n score: today.deepWorkScore ?? 0,\n color: COMPONENT_COLORS.deepWork,\n },\n {\n label: \"Consistency\",\n score: today.consistencyScore ?? 0,\n color: COMPONENT_COLORS.consistency,\n },\n {\n label: \"Task Completion\",\n score: today.taskCompletionScore ?? 0,\n color: COMPONENT_COLORS.taskCompletion,\n },\n {\n label: \"Distraction Resistance\",\n score: today.distractionResistanceScore ?? 0,\n color: COMPONENT_COLORS.distractionResistance,\n },\n {\n label: \"Energy Management\",\n score: today.energyManagementScore ?? 0,\n color: COMPONENT_COLORS.energyManagement,\n },\n ]\n : [];\n\n // Calculate stats\n const overallScore =\n today?.overallScore != null ? `${today.overallScore}/100` : \"--\";\n const completedSessions = scores.filter(\n (s: FocusScoreFieldsFragment) => s.overallScore >= 70,\n ).length;\n const totalFocusMinutes = scores.reduce(\n (sum: number, s: FocusScoreFieldsFragment) => sum + (s.overallScore ?? 0),\n 0,\n );\n const totalFocusHours = Math.floor(totalFocusMinutes / 60);\n const totalFocusMins = totalFocusMinutes % 60;\n const focusTimeDisplay =\n totalFocusHours > 0\n ? `${totalFocusHours}h ${totalFocusMins}m`\n : `${totalFocusMins}m`;\n const trendValue =\n summary?.trend === \"up\" ? 7 : summary?.trend === \"down\" ? -5 : 0;\n\n // Longest streak from highest score\n const highestScore =\n summary?.highestScore != null ? `${summary.highestScore}` : \"--\";\n\n if (loading) {\n return (\n <PageLayout\n title=\"Focus Score\"\n description=\"Measure and improve your focus\"\n >\n <LoadingSkeleton variant=\"card\" count={4} />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Focus Score\"\n description=\"Measure and improve your focus\"\n >\n <div className=\"rounded-xl border border-destructive/50 bg-destructive/10 p-4 text-sm text-destructive\">\n Failed to load focus score data. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Focus Score\"\n description=\"Measure and improve your focus\"\n >\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <StatCard\n title=\"Overall Score\"\n value={overallScore}\n icon={<Brain className=\"h-5 w-5\" />}\n trend={\n trendValue !== 0\n ? { value: trendValue, label: \"vs last week\" }\n : undefined\n }\n iconBgColor=\"bg-violet-100 text-violet-600 dark:bg-violet-900/30 dark:text-violet-400\"\n />\n <StatCard\n title=\"Focus Sessions\"\n value={String(completedSessions)}\n icon={<Target className=\"h-5 w-5\" />}\n description=\"Completed today\"\n />\n <StatCard\n title=\"Total Focus Time\"\n value={focusTimeDisplay}\n icon={<Zap className=\"h-5 w-5\" />}\n />\n <StatCard\n title=\"Highest Score\"\n value={highestScore}\n icon={<Shield className=\"h-5 w-5\" />}\n description=\"Personal best\"\n />\n </div>\n\n <div className=\"rounded-xl border border-border bg-card p-6\">\n <h3 className=\"mb-4 text-sm font-semibold text-foreground\">\n Focus Components\n </h3>\n {focusComponents.length === 0 ? (\n <div className=\"flex h-32 items-center justify-center text-sm text-muted-foreground\">\n No focus score recorded today.\n </div>\n ) : (\n <div className=\"space-y-4\">\n {focusComponents.map((component) => (\n <div key={component.label} className=\"space-y-1\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-medium text-foreground\">\n {component.label}\n </span>\n <span className=\"text-muted-foreground\">\n {component.score}%\n </span>\n </div>\n <div className=\"h-2.5 w-full rounded-full bg-muted\">\n <div\n className={`h-2.5 rounded-full ${component.color}`}\n style={{ width: `${component.score}%` }}\n />\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAYA,IAAM,IAA2C;CAC/C,UAAU;CACV,aAAa;CACb,gBAAgB;CAChB,uBAAuB;CACvB,kBAAkB;CACnB;AAED,SAAgB,IAAiB;CAC/B,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EACJ,MAAM,GACN,SAAS,GACT,OAAO,MACL,EAAwB;EAC1B,WAAW,EAAE,OAAO,IAAI;EACxB,MAAM,CAAC;EACR,CAAC,EAEI,EACJ,MAAM,GACN,SAAS,GACT,OAAO,MACL,EAA6B,EAC/B,MAAM,CAAC,GACR,CAAC,EAEI,EACJ,MAAM,GACN,SAAS,GACT,OAAO,MACL,EAA2B,EAC7B,MAAM,CAAC,GACR,CAAC,EAEI,IAAU,KAAiB,KAAkB,GAC7C,IAAQ,KAAe,KAAgB,GACvC,IAAQ,GAAW,iBACnB,IAAU,GAAa,mBACvB,IAAS,GAAY,eAAe,EAAE,EAGtC,IAAkB,IACpB;EACE;GACE,OAAO;GACP,OAAO,EAAM,iBAAiB;GAC9B,OAAO,EAAiB;GACzB;EACD;GACE,OAAO;GACP,OAAO,EAAM,oBAAoB;GACjC,OAAO,EAAiB;GACzB;EACD;GACE,OAAO;GACP,OAAO,EAAM,uBAAuB;GACpC,OAAO,EAAiB;GACzB;EACD;GACE,OAAO;GACP,OAAO,EAAM,8BAA8B;GAC3C,OAAO,EAAiB;GACzB;EACD;GACE,OAAO;GACP,OAAO,EAAM,yBAAyB;GACtC,OAAO,EAAiB;GACzB;EACF,GACD,EAAE,EAGA,IACJ,GAAO,gBAAgB,OAAqC,OAA9B,GAAG,EAAM,aAAa,OAChD,IAAoB,EAAO,QAC9B,MAAgC,EAAE,gBAAgB,GACpD,CAAC,QACI,IAAoB,EAAO,QAC9B,GAAa,MAAgC,KAAO,EAAE,gBAAgB,IACvE,EACD,EACK,IAAkB,KAAK,MAAM,IAAoB,GAAG,EACpD,IAAiB,IAAoB,IACrC,IACJ,IAAkB,IACd,GAAG,EAAgB,IAAI,EAAe,KACtC,GAAG,EAAe,IAClB,IACJ,GAAS,UAAU,OAAO,IAAI,GAAS,UAAU,SAAS,KAAK,GAG3D,IACJ,GAAS,gBAAgB,OAAmC,OAA5B,GAAG,EAAQ;AA0B7C,QAxBI,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD;GAAiB,SAAQ;GAAO,OAAO;GAAK,CAAA;EACjC,CAAA,GAIb,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAAyF;GAElG,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAFd,CAIE,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,GAAD;KACE,OAAM;KACN,OAAO;KACP,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,OACE,MAAe,IAEX,KAAA,IADA;MAAE,OAAO;MAAY,OAAO;MAAgB;KAGlD,aAAY;KACZ,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,OAAO,EAAkB;KAChC,MAAM,kBAAC,GAAD,EAAQ,WAAU,WAAY,CAAA;KACpC,aAAY;KACZ,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO;KACP,MAAM,kBAAC,GAAD,EAAK,WAAU,WAAY,CAAA;KACjC,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO;KACP,MAAM,kBAAC,GAAD,EAAQ,WAAU,WAAY,CAAA;KACpC,aAAY;KACZ,CAAA;IACE;MAEN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,MAAD;IAAI,WAAU;cAA6C;IAEtD,CAAA,EACJ,EAAgB,WAAW,IAC1B,kBAAC,OAAD;IAAK,WAAU;cAAsE;IAE/E,CAAA,GAEN,kBAAC,OAAD;IAAK,WAAU;cACZ,EAAgB,KAAK,MACpB,kBAAC,OAAD;KAA2B,WAAU;eAArC,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBACb,EAAU;OACN,CAAA,EACP,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CACG,EAAU,OAAM,IACZ;SACH;SACN,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,OAAD;OACE,WAAW,sBAAsB,EAAU;OAC3C,OAAO,EAAE,OAAO,GAAG,EAAU,MAAM,IAAI;OACvC,CAAA;MACE,CAAA,CACF;OAfI,EAAU,MAed,CACN;IACE,CAAA,CAEJ;KACK"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FocusScoreSettingsPage.d.ts","sourceRoot":"","sources":["../../../../src/timecampus/pages/focus-score/FocusScoreSettingsPage.tsx"],"names":[],"mappings":"AAuBA,wBAAgB,sBAAsB,4CAoIrC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
|
|
2
|
+
import { PageLayout as t } from "../../components/PageLayout.js";
|
|
3
|
+
import { LoadingSkeleton as n } from "../../components/LoadingSkeleton.js";
|
|
4
|
+
import { useListConfigurationsQuery as r, useSetConfigurationMutation as i } from "../../../generated/wspace-operations.js";
|
|
5
|
+
import { useCallback as a, useEffect as o, useState as s } from "react";
|
|
6
|
+
import { Settings as c } from "lucide-react";
|
|
7
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
8
|
+
//#region src/timecampus/pages/focus-score/FocusScoreSettingsPage.tsx
|
|
9
|
+
var d = "timecampus.focus.settings", f = {
|
|
10
|
+
dailyFocusTarget: 4,
|
|
11
|
+
minSessionLength: 25
|
|
12
|
+
};
|
|
13
|
+
function p() {
|
|
14
|
+
let { workspaceId: p = "" } = e(), { data: m, loading: h, error: g } = r({
|
|
15
|
+
variables: {
|
|
16
|
+
scope: "WORKSPACE",
|
|
17
|
+
limit: 100
|
|
18
|
+
},
|
|
19
|
+
skip: !p
|
|
20
|
+
}), [_, { loading: v }] = i(), [y, b] = s(f);
|
|
21
|
+
o(() => {
|
|
22
|
+
if (m?.configurations) {
|
|
23
|
+
let e = m.configurations.find((e) => e.key === d);
|
|
24
|
+
if (e?.value) {
|
|
25
|
+
let t = e.value;
|
|
26
|
+
b({
|
|
27
|
+
dailyFocusTarget: t.dailyFocusTarget ?? f.dailyFocusTarget,
|
|
28
|
+
minSessionLength: t.minSessionLength ?? f.minSessionLength
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}, [m]);
|
|
33
|
+
let x = a(async () => {
|
|
34
|
+
await _({ variables: { input: {
|
|
35
|
+
key: d,
|
|
36
|
+
value: y,
|
|
37
|
+
description: "Focus score settings",
|
|
38
|
+
scope: "WORKSPACE"
|
|
39
|
+
} } });
|
|
40
|
+
}, [_, y]);
|
|
41
|
+
return h ? /* @__PURE__ */ l(t, {
|
|
42
|
+
title: "Focus Score Settings",
|
|
43
|
+
description: "Configure focus tracking preferences",
|
|
44
|
+
children: /* @__PURE__ */ l(n, { variant: "detail" })
|
|
45
|
+
}) : g ? /* @__PURE__ */ l(t, {
|
|
46
|
+
title: "Focus Score Settings",
|
|
47
|
+
description: "Configure focus tracking preferences",
|
|
48
|
+
children: /* @__PURE__ */ l("div", {
|
|
49
|
+
className: "rounded-xl border border-destructive/50 bg-destructive/10 p-4 text-sm text-destructive",
|
|
50
|
+
children: "Failed to load settings. Please try again later."
|
|
51
|
+
})
|
|
52
|
+
}) : /* @__PURE__ */ l(t, {
|
|
53
|
+
title: "Focus Score Settings",
|
|
54
|
+
description: "Configure focus tracking preferences",
|
|
55
|
+
children: /* @__PURE__ */ u("div", {
|
|
56
|
+
className: "mx-auto max-w-2xl space-y-6",
|
|
57
|
+
children: [/* @__PURE__ */ u("div", {
|
|
58
|
+
className: "rounded-xl border border-border bg-card p-6",
|
|
59
|
+
children: [/* @__PURE__ */ u("h3", {
|
|
60
|
+
className: "mb-4 flex items-center gap-2 text-sm font-semibold text-foreground",
|
|
61
|
+
children: [/* @__PURE__ */ l(c, { className: "h-4 w-4" }), "Focus Goals"]
|
|
62
|
+
}), /* @__PURE__ */ u("div", {
|
|
63
|
+
className: "space-y-4",
|
|
64
|
+
children: [/* @__PURE__ */ u("div", {
|
|
65
|
+
className: "flex items-center justify-between",
|
|
66
|
+
children: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
|
|
67
|
+
className: "text-sm font-medium text-foreground",
|
|
68
|
+
children: "Daily focus target"
|
|
69
|
+
}), /* @__PURE__ */ l("p", {
|
|
70
|
+
className: "text-xs text-muted-foreground",
|
|
71
|
+
children: "Hours of deep focus per day"
|
|
72
|
+
})] }), /* @__PURE__ */ l("input", {
|
|
73
|
+
type: "number",
|
|
74
|
+
value: y.dailyFocusTarget,
|
|
75
|
+
onChange: (e) => b((t) => ({
|
|
76
|
+
...t,
|
|
77
|
+
dailyFocusTarget: Number(e.target.value)
|
|
78
|
+
})),
|
|
79
|
+
className: "w-20 rounded-md border border-border bg-background px-3 py-1.5 text-sm text-foreground text-right"
|
|
80
|
+
})]
|
|
81
|
+
}), /* @__PURE__ */ u("div", {
|
|
82
|
+
className: "flex items-center justify-between",
|
|
83
|
+
children: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
|
|
84
|
+
className: "text-sm font-medium text-foreground",
|
|
85
|
+
children: "Min. session length"
|
|
86
|
+
}), /* @__PURE__ */ l("p", {
|
|
87
|
+
className: "text-xs text-muted-foreground",
|
|
88
|
+
children: "Minimum minutes for a focus session"
|
|
89
|
+
})] }), /* @__PURE__ */ l("input", {
|
|
90
|
+
type: "number",
|
|
91
|
+
value: y.minSessionLength,
|
|
92
|
+
onChange: (e) => b((t) => ({
|
|
93
|
+
...t,
|
|
94
|
+
minSessionLength: Number(e.target.value)
|
|
95
|
+
})),
|
|
96
|
+
className: "w-20 rounded-md border border-border bg-background px-3 py-1.5 text-sm text-foreground text-right"
|
|
97
|
+
})]
|
|
98
|
+
})]
|
|
99
|
+
})]
|
|
100
|
+
}), /* @__PURE__ */ l("div", {
|
|
101
|
+
className: "flex justify-end",
|
|
102
|
+
children: /* @__PURE__ */ l("button", {
|
|
103
|
+
onClick: x,
|
|
104
|
+
disabled: v,
|
|
105
|
+
className: "rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50",
|
|
106
|
+
children: v ? "Saving..." : "Save Settings"
|
|
107
|
+
})
|
|
108
|
+
})]
|
|
109
|
+
})
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
113
|
+
export { p as FocusScoreSettingsPage };
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=FocusScoreSettingsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FocusScoreSettingsPage.js","names":[],"sources":["../../../../src/timecampus/pages/focus-score/FocusScoreSettingsPage.tsx"],"sourcesContent":["import { useState, useEffect, useCallback } from \"react\";\nimport { Settings } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useListConfigurationsQuery,\n useSetConfigurationMutation,\n type ConfigurationFieldsFragment,\n} from \"@/generated/wspace-operations\";\n\nconst FOCUS_SETTINGS_KEY = \"timecampus.focus.settings\";\n\ninterface FocusSettings {\n dailyFocusTarget: number;\n minSessionLength: number;\n}\n\nconst DEFAULT_SETTINGS: FocusSettings = {\n dailyFocusTarget: 4,\n minSessionLength: 25,\n};\n\nexport function FocusScoreSettingsPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n const { data, loading, error } = useListConfigurationsQuery({\n variables: { scope: \"WORKSPACE\" as never, limit: 100 },\n skip: !workspaceId,\n });\n\n const [setConfiguration, { loading: saving }] = useSetConfigurationMutation();\n const [settings, setSettings] = useState<FocusSettings>(DEFAULT_SETTINGS);\n\n useEffect(() => {\n if (data?.configurations) {\n const config = data.configurations.find(\n (c: ConfigurationFieldsFragment) => c.key === FOCUS_SETTINGS_KEY,\n );\n if (config?.value) {\n const val = config.value as Partial<FocusSettings>;\n setSettings({\n dailyFocusTarget:\n val.dailyFocusTarget ?? DEFAULT_SETTINGS.dailyFocusTarget,\n minSessionLength:\n val.minSessionLength ?? DEFAULT_SETTINGS.minSessionLength,\n });\n }\n }\n }, [data]);\n\n const handleSave = useCallback(async () => {\n await setConfiguration({\n variables: {\n input: {\n key: FOCUS_SETTINGS_KEY,\n value: settings as unknown as Record<string, unknown>,\n description: \"Focus score settings\",\n scope: \"WORKSPACE\" as never,\n },\n },\n });\n }, [setConfiguration, settings]);\n\n if (loading) {\n return (\n <PageLayout\n title=\"Focus Score Settings\"\n description=\"Configure focus tracking preferences\"\n >\n <LoadingSkeleton variant=\"detail\" />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Focus Score Settings\"\n description=\"Configure focus tracking preferences\"\n >\n <div className=\"rounded-xl border border-destructive/50 bg-destructive/10 p-4 text-sm text-destructive\">\n Failed to load settings. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Focus Score Settings\"\n description=\"Configure focus tracking preferences\"\n >\n <div className=\"mx-auto max-w-2xl space-y-6\">\n <div className=\"rounded-xl border border-border bg-card p-6\">\n <h3 className=\"mb-4 flex items-center gap-2 text-sm font-semibold text-foreground\">\n <Settings className=\"h-4 w-4\" />\n Focus Goals\n </h3>\n <div className=\"space-y-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-foreground\">\n Daily focus target\n </p>\n <p className=\"text-xs text-muted-foreground\">\n Hours of deep focus per day\n </p>\n </div>\n <input\n type=\"number\"\n value={settings.dailyFocusTarget}\n onChange={(e) =>\n setSettings((s) => ({\n ...s,\n dailyFocusTarget: Number(e.target.value),\n }))\n }\n className=\"w-20 rounded-md border border-border bg-background px-3 py-1.5 text-sm text-foreground text-right\"\n />\n </div>\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-foreground\">\n Min. session length\n </p>\n <p className=\"text-xs text-muted-foreground\">\n Minimum minutes for a focus session\n </p>\n </div>\n <input\n type=\"number\"\n value={settings.minSessionLength}\n onChange={(e) =>\n setSettings((s) => ({\n ...s,\n minSessionLength: Number(e.target.value),\n }))\n }\n className=\"w-20 rounded-md border border-border bg-background px-3 py-1.5 text-sm text-foreground text-right\"\n />\n </div>\n </div>\n </div>\n <div className=\"flex justify-end\">\n <button\n onClick={handleSave}\n disabled={saving}\n className=\"rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50\"\n >\n {saving ? \"Saving...\" : \"Save Settings\"}\n </button>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAWA,IAAM,IAAqB,6BAOrB,IAAkC;CACtC,kBAAkB;CAClB,kBAAkB;CACnB;AAED,SAAgB,IAAyB;CACvC,IAAM,EAAE,iBAAc,OAAO,GAAe,EACtC,EAAE,SAAM,YAAS,aAAU,EAA2B;EAC1D,WAAW;GAAE,OAAO;GAAsB,OAAO;GAAK;EACtD,MAAM,CAAC;EACR,CAAC,EAEI,CAAC,GAAkB,EAAE,SAAS,OAAY,GAA6B,EACvE,CAAC,GAAU,KAAe,EAAwB,EAAiB;AAEzE,SAAgB;AACd,MAAI,GAAM,gBAAgB;GACxB,IAAM,IAAS,EAAK,eAAe,MAChC,MAAmC,EAAE,QAAQ,EAC/C;AACD,OAAI,GAAQ,OAAO;IACjB,IAAM,IAAM,EAAO;AACnB,MAAY;KACV,kBACE,EAAI,oBAAoB,EAAiB;KAC3C,kBACE,EAAI,oBAAoB,EAAiB;KAC5C,CAAC;;;IAGL,CAAC,EAAK,CAAC;CAEV,IAAM,IAAa,EAAY,YAAY;AACzC,QAAM,EAAiB,EACrB,WAAW,EACT,OAAO;GACL,KAAK;GACL,OAAO;GACP,aAAa;GACb,OAAO;GACR,EACF,EACF,CAAC;IACD,CAAC,GAAkB,EAAS,CAAC;AA0BhC,QAxBI,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD,EAAiB,SAAQ,UAAW,CAAA;EACzB,CAAA,GAIb,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAAyF;GAElG,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,MAAD;KAAI,WAAU;eAAd,CACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA,EAAA,cAE7B;QACL,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;OAAG,WAAU;iBAAsC;OAE/C,CAAA,EACJ,kBAAC,KAAD;OAAG,WAAU;iBAAgC;OAEzC,CAAA,CACA,EAAA,CAAA,EACN,kBAAC,SAAD;OACE,MAAK;OACL,OAAO,EAAS;OAChB,WAAW,MACT,GAAa,OAAO;QAClB,GAAG;QACH,kBAAkB,OAAO,EAAE,OAAO,MAAM;QACzC,EAAE;OAEL,WAAU;OACV,CAAA,CACE;SACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;OAAG,WAAU;iBAAsC;OAE/C,CAAA,EACJ,kBAAC,KAAD;OAAG,WAAU;iBAAgC;OAEzC,CAAA,CACA,EAAA,CAAA,EACN,kBAAC,SAAD;OACE,MAAK;OACL,OAAO,EAAS;OAChB,WAAW,MACT,GAAa,OAAO;QAClB,GAAG;QACH,kBAAkB,OAAO,EAAE,OAAO,MAAM;QACzC,EAAE;OAEL,WAAU;OACV,CAAA,CACE;QACF;OACF;OACN,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,UAAD;KACE,SAAS;KACT,UAAU;KACV,WAAU;eAET,IAAS,cAAc;KACjB,CAAA;IACL,CAAA,CACF;;EACK,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeofencingPage.d.ts","sourceRoot":"","sources":["../../../../src/timecampus/pages/geofencing/GeofencingPage.tsx"],"names":[],"mappings":"AAcA,wBAAgB,cAAc,4CAgF7B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
|
|
2
|
+
import { getStatusColor as t } from "../../utils/helpers.js";
|
|
3
|
+
import { PageLayout as n } from "../../components/PageLayout.js";
|
|
4
|
+
import { LoadingSkeleton as r } from "../../components/LoadingSkeleton.js";
|
|
5
|
+
import { useListGeofencesQuery as i } from "../../../generated/wspace-operations.js";
|
|
6
|
+
import { MapPin as a, Plus as o } from "lucide-react";
|
|
7
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
8
|
+
//#region src/timecampus/pages/geofencing/GeofencingPage.tsx
|
|
9
|
+
function l() {
|
|
10
|
+
let { workspaceId: l = "" } = e(), { data: u, loading: d, error: f } = i(), p = u?.geofences?.items ?? [];
|
|
11
|
+
return d ? /* @__PURE__ */ s(n, {
|
|
12
|
+
title: "Geofencing",
|
|
13
|
+
description: "Set up location-based triggers and zones",
|
|
14
|
+
children: /* @__PURE__ */ s(r, {
|
|
15
|
+
variant: "card",
|
|
16
|
+
count: 4
|
|
17
|
+
})
|
|
18
|
+
}) : f ? /* @__PURE__ */ s(n, {
|
|
19
|
+
title: "Geofencing",
|
|
20
|
+
description: "Set up location-based triggers and zones",
|
|
21
|
+
children: /* @__PURE__ */ s("div", {
|
|
22
|
+
className: "rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400",
|
|
23
|
+
children: "Failed to load geofences. Please try again later."
|
|
24
|
+
})
|
|
25
|
+
}) : /* @__PURE__ */ s(n, {
|
|
26
|
+
title: "Geofencing",
|
|
27
|
+
description: "Set up location-based triggers and zones",
|
|
28
|
+
actions: /* @__PURE__ */ c("button", {
|
|
29
|
+
className: "inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90",
|
|
30
|
+
children: [/* @__PURE__ */ s(o, { className: "h-4 w-4" }), "Create Geofence"]
|
|
31
|
+
}),
|
|
32
|
+
children: /* @__PURE__ */ c("div", {
|
|
33
|
+
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
34
|
+
children: [p.length === 0 && /* @__PURE__ */ s("div", {
|
|
35
|
+
className: "col-span-full p-4 text-center text-sm text-muted-foreground",
|
|
36
|
+
children: "No geofences configured yet."
|
|
37
|
+
}), p.map((e) => /* @__PURE__ */ c("div", {
|
|
38
|
+
className: "rounded-xl border border-border bg-card p-5 transition-colors hover:bg-muted/50 cursor-pointer",
|
|
39
|
+
children: [/* @__PURE__ */ c("div", {
|
|
40
|
+
className: "flex items-start justify-between",
|
|
41
|
+
children: [/* @__PURE__ */ c("div", {
|
|
42
|
+
className: "flex items-center gap-2",
|
|
43
|
+
children: [/* @__PURE__ */ s(a, { className: "h-5 w-5 text-muted-foreground" }), /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
|
|
44
|
+
className: "text-sm font-semibold text-foreground",
|
|
45
|
+
children: e.name
|
|
46
|
+
}), /* @__PURE__ */ c("p", {
|
|
47
|
+
className: "text-xs text-muted-foreground",
|
|
48
|
+
children: [
|
|
49
|
+
e.trigger,
|
|
50
|
+
" · ",
|
|
51
|
+
e.radius,
|
|
52
|
+
"m radius"
|
|
53
|
+
]
|
|
54
|
+
})] })]
|
|
55
|
+
}), /* @__PURE__ */ s("span", {
|
|
56
|
+
className: `inline-flex rounded-full px-2 py-0.5 text-xs font-medium ${t(e.isActive ? "active" : "inactive")}`,
|
|
57
|
+
children: e.isActive ? "Active" : "Inactive"
|
|
58
|
+
})]
|
|
59
|
+
}), /* @__PURE__ */ c("div", {
|
|
60
|
+
className: "mt-3 flex items-center justify-between text-xs text-muted-foreground",
|
|
61
|
+
children: [/* @__PURE__ */ s("span", { children: e.address ?? "No address" }), /* @__PURE__ */ c("span", { children: [e.events?.length ?? 0, " events"] })]
|
|
62
|
+
})]
|
|
63
|
+
}, e.id))]
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//#endregion
|
|
68
|
+
export { l as GeofencingPage };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=GeofencingPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeofencingPage.js","names":[],"sources":["../../../../src/timecampus/pages/geofencing/GeofencingPage.tsx"],"sourcesContent":["import { MapPin, Plus } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { getStatusColor } from \"../../utils/helpers\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useListGeofencesQuery,\n type ListGeofencesQuery,\n} from \"@/generated/wspace-operations\";\n\ntype GeofenceItem = NonNullable<\n ListGeofencesQuery[\"geofences\"]\n>[\"items\"][number];\n\nexport function GeofencingPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useListGeofencesQuery();\n\n const geofences = data?.geofences?.items ?? [];\n\n if (loading) {\n return (\n <PageLayout\n title=\"Geofencing\"\n description=\"Set up location-based triggers and zones\"\n >\n <LoadingSkeleton variant=\"card\" count={4} />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Geofencing\"\n description=\"Set up location-based triggers and zones\"\n >\n <div className=\"rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400\">\n Failed to load geofences. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Geofencing\"\n description=\"Set up location-based triggers and zones\"\n actions={\n <button className=\"inline-flex items-center gap-1.5 rounded-md bg-primary px-3 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90\">\n <Plus className=\"h-4 w-4\" />\n Create Geofence\n </button>\n }\n >\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {geofences.length === 0 && (\n <div className=\"col-span-full p-4 text-center text-sm text-muted-foreground\">\n No geofences configured yet.\n </div>\n )}\n {geofences.map((fence: GeofenceItem) => (\n <div\n key={fence.id}\n className=\"rounded-xl border border-border bg-card p-5 transition-colors hover:bg-muted/50 cursor-pointer\"\n >\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-2\">\n <MapPin className=\"h-5 w-5 text-muted-foreground\" />\n <div>\n <p className=\"text-sm font-semibold text-foreground\">\n {fence.name}\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {fence.trigger} · {fence.radius}m radius\n </p>\n </div>\n </div>\n <span\n className={`inline-flex rounded-full px-2 py-0.5 text-xs font-medium ${getStatusColor(fence.isActive ? \"active\" : \"inactive\")}`}\n >\n {fence.isActive ? \"Active\" : \"Inactive\"}\n </span>\n </div>\n <div className=\"mt-3 flex items-center justify-between text-xs text-muted-foreground\">\n <span>{fence.address ?? \"No address\"}</span>\n <span>{fence.events?.length ?? 0} events</span>\n </div>\n </div>\n ))}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAcA,SAAgB,IAAiB;CAC/B,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,GAAuB,EAElD,IAAY,GAAM,WAAW,SAAS,EAAE;AA0B9C,QAxBI,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD;GAAiB,SAAQ;GAAO,OAAO;GAAK,CAAA;EACjC,CAAA,GAIb,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAA+H;GAExI,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;EACZ,SACE,kBAAC,UAAD;GAAQ,WAAU;aAAlB,CACE,kBAAC,GAAD,EAAM,WAAU,WAAY,CAAA,EAAA,kBAErB;;YAGX,kBAAC,OAAD;GAAK,WAAU;aAAf,CACG,EAAU,WAAW,KACpB,kBAAC,OAAD;IAAK,WAAU;cAA8D;IAEvE,CAAA,EAEP,EAAU,KAAK,MACd,kBAAC,OAAD;IAEE,WAAU;cAFZ,CAIE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,GAAD,EAAQ,WAAU,iCAAkC,CAAA,EACpD,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;OAAG,WAAU;iBACV,EAAM;OACL,CAAA,EACJ,kBAAC,KAAD;OAAG,WAAU;iBAAb;QACG,EAAM;QAAQ;QAAW,EAAM;QAAO;QACrC;SACA,EAAA,CAAA,CACF;SACN,kBAAC,QAAD;MACE,WAAW,4DAA4D,EAAe,EAAM,WAAW,WAAW,WAAW;gBAE5H,EAAM,WAAW,WAAW;MACxB,CAAA,CACH;QACN,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD,EAAA,UAAO,EAAM,WAAW,cAAoB,CAAA,EAC5C,kBAAC,QAAD,EAAA,UAAA,CAAO,EAAM,QAAQ,UAAU,GAAE,UAAc,EAAA,CAAA,CAC3C;OACF;MAzBC,EAAM,GAyBP,CACN,CACE;;EACK,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeofencingSettingsPage.d.ts","sourceRoot":"","sources":["../../../../src/timecampus/pages/geofencing/GeofencingSettingsPage.tsx"],"names":[],"mappings":"AAYA,wBAAgB,sBAAsB,4CA8HrC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
|
|
2
|
+
import { PageLayout as t } from "../../components/PageLayout.js";
|
|
3
|
+
import { LoadingSkeleton as n } from "../../components/LoadingSkeleton.js";
|
|
4
|
+
import { useGetConfigurationByKeyQuery as r, useSetConfigurationMutation as i } from "../../../generated/wspace-operations.js";
|
|
5
|
+
import { useEffect as a, useState as o } from "react";
|
|
6
|
+
import { Settings as s } from "lucide-react";
|
|
7
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
8
|
+
//#region src/timecampus/pages/geofencing/GeofencingSettingsPage.tsx
|
|
9
|
+
var u = "geofencing.settings";
|
|
10
|
+
function d() {
|
|
11
|
+
let { workspaceId: d = "" } = e(), { data: f, loading: p, error: m } = r({ variables: { key: u } }), [h, { loading: g }] = i(), _ = f?.configurationByKey?.value ?? {}, [v, y] = o(!0), [b, x] = o(!0), [S, C] = o(!0);
|
|
12
|
+
return a(() => {
|
|
13
|
+
_ && (y(_.autoStartOnEntry ?? !0), x(_.autoStopOnExit ?? !0), C(_.notificationsOnEvents ?? !0));
|
|
14
|
+
}, [
|
|
15
|
+
_.autoStartOnEntry,
|
|
16
|
+
_.autoStopOnExit,
|
|
17
|
+
_.notificationsOnEvents
|
|
18
|
+
]), p ? /* @__PURE__ */ c(t, {
|
|
19
|
+
title: "Geofencing Settings",
|
|
20
|
+
description: "Configure geofencing preferences",
|
|
21
|
+
children: /* @__PURE__ */ c(n, { variant: "detail" })
|
|
22
|
+
}) : m ? /* @__PURE__ */ c(t, {
|
|
23
|
+
title: "Geofencing Settings",
|
|
24
|
+
description: "Configure geofencing preferences",
|
|
25
|
+
children: /* @__PURE__ */ c("div", {
|
|
26
|
+
className: "rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400",
|
|
27
|
+
children: "Failed to load geofencing settings. Please try again later."
|
|
28
|
+
})
|
|
29
|
+
}) : /* @__PURE__ */ c(t, {
|
|
30
|
+
title: "Geofencing Settings",
|
|
31
|
+
description: "Configure geofencing preferences",
|
|
32
|
+
children: /* @__PURE__ */ l("div", {
|
|
33
|
+
className: "mx-auto max-w-2xl space-y-6",
|
|
34
|
+
children: [/* @__PURE__ */ l("div", {
|
|
35
|
+
className: "rounded-xl border border-border bg-card p-6",
|
|
36
|
+
children: [/* @__PURE__ */ l("h3", {
|
|
37
|
+
className: "mb-4 flex items-center gap-2 text-sm font-semibold text-foreground",
|
|
38
|
+
children: [/* @__PURE__ */ c(s, { className: "h-4 w-4" }), "Trigger Settings"]
|
|
39
|
+
}), /* @__PURE__ */ l("div", {
|
|
40
|
+
className: "space-y-3",
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ l("label", {
|
|
43
|
+
className: "flex items-center justify-between",
|
|
44
|
+
children: [/* @__PURE__ */ c("span", {
|
|
45
|
+
className: "text-sm text-foreground",
|
|
46
|
+
children: "Auto-start timer on entry"
|
|
47
|
+
}), /* @__PURE__ */ c("input", {
|
|
48
|
+
type: "checkbox",
|
|
49
|
+
checked: v,
|
|
50
|
+
onChange: (e) => y(e.target.checked),
|
|
51
|
+
className: "h-4 w-4 rounded border-border"
|
|
52
|
+
})]
|
|
53
|
+
}),
|
|
54
|
+
/* @__PURE__ */ l("label", {
|
|
55
|
+
className: "flex items-center justify-between",
|
|
56
|
+
children: [/* @__PURE__ */ c("span", {
|
|
57
|
+
className: "text-sm text-foreground",
|
|
58
|
+
children: "Auto-stop timer on exit"
|
|
59
|
+
}), /* @__PURE__ */ c("input", {
|
|
60
|
+
type: "checkbox",
|
|
61
|
+
checked: b,
|
|
62
|
+
onChange: (e) => x(e.target.checked),
|
|
63
|
+
className: "h-4 w-4 rounded border-border"
|
|
64
|
+
})]
|
|
65
|
+
}),
|
|
66
|
+
/* @__PURE__ */ l("label", {
|
|
67
|
+
className: "flex items-center justify-between",
|
|
68
|
+
children: [/* @__PURE__ */ c("span", {
|
|
69
|
+
className: "text-sm text-foreground",
|
|
70
|
+
children: "Notifications on events"
|
|
71
|
+
}), /* @__PURE__ */ c("input", {
|
|
72
|
+
type: "checkbox",
|
|
73
|
+
checked: S,
|
|
74
|
+
onChange: (e) => C(e.target.checked),
|
|
75
|
+
className: "h-4 w-4 rounded border-border"
|
|
76
|
+
})]
|
|
77
|
+
})
|
|
78
|
+
]
|
|
79
|
+
})]
|
|
80
|
+
}), /* @__PURE__ */ c("div", {
|
|
81
|
+
className: "flex justify-end",
|
|
82
|
+
children: /* @__PURE__ */ c("button", {
|
|
83
|
+
onClick: async () => {
|
|
84
|
+
await h({ variables: { input: {
|
|
85
|
+
key: u,
|
|
86
|
+
value: {
|
|
87
|
+
autoStartOnEntry: v,
|
|
88
|
+
autoStopOnExit: b,
|
|
89
|
+
notificationsOnEvents: S
|
|
90
|
+
},
|
|
91
|
+
description: "Geofencing trigger settings",
|
|
92
|
+
scope: "USER"
|
|
93
|
+
} } });
|
|
94
|
+
},
|
|
95
|
+
disabled: g,
|
|
96
|
+
className: "rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50",
|
|
97
|
+
children: g ? "Saving..." : "Save Settings"
|
|
98
|
+
})
|
|
99
|
+
})]
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
//#endregion
|
|
104
|
+
export { d as GeofencingSettingsPage };
|
|
105
|
+
|
|
106
|
+
//# sourceMappingURL=GeofencingSettingsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GeofencingSettingsPage.js","names":[],"sources":["../../../../src/timecampus/pages/geofencing/GeofencingSettingsPage.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\nimport { Settings } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useGetConfigurationByKeyQuery,\n useSetConfigurationMutation,\n} from \"@/generated/wspace-operations\";\n\nconst CONFIG_KEY = \"geofencing.settings\";\n\nexport function GeofencingSettingsPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useGetConfigurationByKeyQuery({\n variables: { key: CONFIG_KEY },\n });\n\n const [setConfiguration, { loading: saving }] = useSetConfigurationMutation();\n\n const configValue = (data?.configurationByKey?.value ?? {}) as Record<\n string,\n boolean\n >;\n\n const [autoStartOnEntry, setAutoStartOnEntry] = useState(true);\n const [autoStopOnExit, setAutoStopOnExit] = useState(true);\n const [notificationsOnEvents, setNotificationsOnEvents] = useState(true);\n\n useEffect(() => {\n if (configValue) {\n setAutoStartOnEntry(configValue.autoStartOnEntry ?? true);\n setAutoStopOnExit(configValue.autoStopOnExit ?? true);\n setNotificationsOnEvents(configValue.notificationsOnEvents ?? true);\n }\n }, [\n configValue.autoStartOnEntry,\n configValue.autoStopOnExit,\n configValue.notificationsOnEvents,\n ]);\n\n const handleSave = async () => {\n await setConfiguration({\n variables: {\n input: {\n key: CONFIG_KEY,\n value: { autoStartOnEntry, autoStopOnExit, notificationsOnEvents },\n description: \"Geofencing trigger settings\",\n scope: \"USER\" as never,\n },\n },\n });\n };\n\n if (loading) {\n return (\n <PageLayout\n title=\"Geofencing Settings\"\n description=\"Configure geofencing preferences\"\n >\n <LoadingSkeleton variant=\"detail\" />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Geofencing Settings\"\n description=\"Configure geofencing preferences\"\n >\n <div className=\"rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400\">\n Failed to load geofencing settings. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Geofencing Settings\"\n description=\"Configure geofencing preferences\"\n >\n <div className=\"mx-auto max-w-2xl space-y-6\">\n <div className=\"rounded-xl border border-border bg-card p-6\">\n <h3 className=\"mb-4 flex items-center gap-2 text-sm font-semibold text-foreground\">\n <Settings className=\"h-4 w-4\" />\n Trigger Settings\n </h3>\n <div className=\"space-y-3\">\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-foreground\">\n Auto-start timer on entry\n </span>\n <input\n type=\"checkbox\"\n checked={autoStartOnEntry}\n onChange={(e) => setAutoStartOnEntry(e.target.checked)}\n className=\"h-4 w-4 rounded border-border\"\n />\n </label>\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-foreground\">\n Auto-stop timer on exit\n </span>\n <input\n type=\"checkbox\"\n checked={autoStopOnExit}\n onChange={(e) => setAutoStopOnExit(e.target.checked)}\n className=\"h-4 w-4 rounded border-border\"\n />\n </label>\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-foreground\">\n Notifications on events\n </span>\n <input\n type=\"checkbox\"\n checked={notificationsOnEvents}\n onChange={(e) => setNotificationsOnEvents(e.target.checked)}\n className=\"h-4 w-4 rounded border-border\"\n />\n </label>\n </div>\n </div>\n <div className=\"flex justify-end\">\n <button\n onClick={handleSave}\n disabled={saving}\n className=\"rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50\"\n >\n {saving ? \"Saving...\" : \"Save Settings\"}\n </button>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAUA,IAAM,IAAa;AAEnB,SAAgB,IAAyB;CACvC,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAA8B,EAC7D,WAAW,EAAE,KAAK,GAAY,EAC/B,CAAC,EAEI,CAAC,GAAkB,EAAE,SAAS,OAAY,GAA6B,EAEvE,IAAe,GAAM,oBAAoB,SAAS,EAAE,EAKpD,CAAC,GAAkB,KAAuB,EAAS,GAAK,EACxD,CAAC,GAAgB,KAAqB,EAAS,GAAK,EACpD,CAAC,GAAuB,KAA4B,EAAS,GAAK;AAmDxE,QAjDA,QAAgB;AACd,EAAI,MACF,EAAoB,EAAY,oBAAoB,GAAK,EACzD,EAAkB,EAAY,kBAAkB,GAAK,EACrD,EAAyB,EAAY,yBAAyB,GAAK;IAEpE;EACD,EAAY;EACZ,EAAY;EACZ,EAAY;EACb,CAAC,EAeE,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD,EAAiB,SAAQ,UAAW,CAAA;EACzB,CAAA,GAIb,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAA+H;GAExI,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,MAAD;KAAI,WAAU;eAAd,CACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA,EAAA,mBAE7B;QACL,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA0B;QAEnC,CAAA,EACP,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAoB,EAAE,OAAO,QAAQ;QACtD,WAAU;QACV,CAAA,CACI;;MACR,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA0B;QAEnC,CAAA,EACP,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAkB,EAAE,OAAO,QAAQ;QACpD,WAAU;QACV,CAAA,CACI;;MACR,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA0B;QAEnC,CAAA,EACP,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAyB,EAAE,OAAO,QAAQ;QAC3D,WAAU;QACV,CAAA,CACI;;MACJ;OACF;OACN,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,UAAD;KACE,SAtFS,YAAY;AAC7B,YAAM,EAAiB,EACrB,WAAW,EACT,OAAO;OACL,KAAK;OACL,OAAO;QAAE;QAAkB;QAAgB;QAAuB;OAClE,aAAa;OACb,OAAO;OACR,EACF,EACF,CAAC;;KA6EM,UAAU;KACV,WAAU;eAET,IAAS,cAAc;KACjB,CAAA;IACL,CAAA,CACF;;EACK,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndustrySolutionsPage.d.ts","sourceRoot":"","sources":["../../../../src/timecampus/pages/industry-solutions/IndustrySolutionsPage.tsx"],"names":[],"mappings":"AASA,wBAAgB,qBAAqB,4CAkGpC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
|
|
2
|
+
import { PageLayout as t } from "../../components/PageLayout.js";
|
|
3
|
+
import { LoadingSkeleton as n } from "../../components/LoadingSkeleton.js";
|
|
4
|
+
import { useListConfigurationsQuery as r } from "../../../generated/wspace-operations.js";
|
|
5
|
+
import { ArrowRight as i, Factory as a } from "lucide-react";
|
|
6
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
7
|
+
//#region src/timecampus/pages/industry-solutions/IndustrySolutionsPage.tsx
|
|
8
|
+
function c() {
|
|
9
|
+
let { workspaceId: c = "" } = e(), { data: l, loading: u, error: d } = r({ variables: { scope: "WORKSPACE" } }), f = (l?.configurations ?? []).filter((e) => e.key.startsWith("industry."));
|
|
10
|
+
return u ? /* @__PURE__ */ o(t, {
|
|
11
|
+
title: "Industry Solutions",
|
|
12
|
+
description: "Time tracking solutions tailored to your industry",
|
|
13
|
+
children: /* @__PURE__ */ o(n, {
|
|
14
|
+
variant: "card",
|
|
15
|
+
count: 6
|
|
16
|
+
})
|
|
17
|
+
}) : d ? /* @__PURE__ */ o(t, {
|
|
18
|
+
title: "Industry Solutions",
|
|
19
|
+
description: "Time tracking solutions tailored to your industry",
|
|
20
|
+
children: /* @__PURE__ */ o("div", {
|
|
21
|
+
className: "rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400",
|
|
22
|
+
children: "Failed to load industry solutions. Please try again later."
|
|
23
|
+
})
|
|
24
|
+
}) : /* @__PURE__ */ o(t, {
|
|
25
|
+
title: "Industry Solutions",
|
|
26
|
+
description: "Time tracking solutions tailored to your industry",
|
|
27
|
+
children: /* @__PURE__ */ o("div", {
|
|
28
|
+
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
29
|
+
children: f.length === 0 ? /* @__PURE__ */ o("div", {
|
|
30
|
+
className: "col-span-full p-8 text-center text-sm text-muted-foreground",
|
|
31
|
+
children: "No industry solutions configured yet. Solutions are stored as workspace configurations with the \"industry.\" key prefix."
|
|
32
|
+
}) : f.map((e) => {
|
|
33
|
+
let t = e.value, n = t.name ?? e.key.replace("industry.", ""), r = t.industry ?? "General", c = e.description ?? t.description ?? "", l = t.features ?? [];
|
|
34
|
+
return /* @__PURE__ */ s("div", {
|
|
35
|
+
className: "rounded-xl border border-border bg-card p-5 transition-colors hover:bg-muted/50 cursor-pointer",
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ s("div", {
|
|
38
|
+
className: "flex items-start gap-3",
|
|
39
|
+
children: [/* @__PURE__ */ o("div", {
|
|
40
|
+
className: "flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10",
|
|
41
|
+
children: /* @__PURE__ */ o(a, { className: "h-6 w-6 text-primary" })
|
|
42
|
+
}), /* @__PURE__ */ s("div", {
|
|
43
|
+
className: "flex-1",
|
|
44
|
+
children: [/* @__PURE__ */ o("p", {
|
|
45
|
+
className: "text-sm font-semibold text-foreground",
|
|
46
|
+
children: n
|
|
47
|
+
}), /* @__PURE__ */ o("p", {
|
|
48
|
+
className: "text-xs text-muted-foreground",
|
|
49
|
+
children: r
|
|
50
|
+
})]
|
|
51
|
+
})]
|
|
52
|
+
}),
|
|
53
|
+
/* @__PURE__ */ o("p", {
|
|
54
|
+
className: "mt-3 text-xs text-muted-foreground",
|
|
55
|
+
children: c
|
|
56
|
+
}),
|
|
57
|
+
/* @__PURE__ */ o("div", {
|
|
58
|
+
className: "mt-3 flex flex-wrap gap-1",
|
|
59
|
+
children: l.map((e) => /* @__PURE__ */ o("span", {
|
|
60
|
+
className: "inline-flex rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground",
|
|
61
|
+
children: e
|
|
62
|
+
}, e))
|
|
63
|
+
}),
|
|
64
|
+
/* @__PURE__ */ s("button", {
|
|
65
|
+
className: "mt-3 flex items-center gap-1 text-xs font-medium text-primary hover:underline",
|
|
66
|
+
children: ["Learn more ", /* @__PURE__ */ o(i, { className: "h-3 w-3" })]
|
|
67
|
+
})
|
|
68
|
+
]
|
|
69
|
+
}, e.id);
|
|
70
|
+
})
|
|
71
|
+
})
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
75
|
+
export { c as IndustrySolutionsPage };
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=IndustrySolutionsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IndustrySolutionsPage.js","names":[],"sources":["../../../../src/timecampus/pages/industry-solutions/IndustrySolutionsPage.tsx"],"sourcesContent":["import { Factory, ArrowRight } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useListConfigurationsQuery,\n type ConfigurationFieldsFragment,\n} from \"@/generated/wspace-operations\";\n\nexport function IndustrySolutionsPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useListConfigurationsQuery({\n variables: { scope: \"WORKSPACE\" as any },\n });\n\n const configurations = data?.configurations ?? [];\n\n // Filter configurations that represent industry solutions (key starts with 'industry.')\n const solutions = configurations.filter((c: ConfigurationFieldsFragment) =>\n c.key.startsWith(\"industry.\"),\n );\n\n if (loading) {\n return (\n <PageLayout\n title=\"Industry Solutions\"\n description=\"Time tracking solutions tailored to your industry\"\n >\n <LoadingSkeleton variant=\"card\" count={6} />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Industry Solutions\"\n description=\"Time tracking solutions tailored to your industry\"\n >\n <div className=\"rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400\">\n Failed to load industry solutions. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Industry Solutions\"\n description=\"Time tracking solutions tailored to your industry\"\n >\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {solutions.length === 0 ? (\n <div className=\"col-span-full p-8 text-center text-sm text-muted-foreground\">\n No industry solutions configured yet. Solutions are stored as\n workspace configurations with the \"industry.\" key prefix.\n </div>\n ) : (\n solutions.map((solution: ConfigurationFieldsFragment) => {\n const val = solution.value as Record<string, unknown>;\n const name =\n (val.name as string) ?? solution.key.replace(\"industry.\", \"\");\n const industry = (val.industry as string) ?? \"General\";\n const description =\n solution.description ?? (val.description as string) ?? \"\";\n const features = (val.features as string[]) ?? [];\n\n return (\n <div\n key={solution.id}\n className=\"rounded-xl border border-border bg-card p-5 transition-colors hover:bg-muted/50 cursor-pointer\"\n >\n <div className=\"flex items-start gap-3\">\n <div className=\"flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10\">\n <Factory className=\"h-6 w-6 text-primary\" />\n </div>\n <div className=\"flex-1\">\n <p className=\"text-sm font-semibold text-foreground\">\n {name}\n </p>\n <p className=\"text-xs text-muted-foreground\">{industry}</p>\n </div>\n </div>\n <p className=\"mt-3 text-xs text-muted-foreground\">\n {description}\n </p>\n <div className=\"mt-3 flex flex-wrap gap-1\">\n {features.map((feature) => (\n <span\n key={feature}\n className=\"inline-flex rounded-full bg-muted px-2 py-0.5 text-xs text-muted-foreground\"\n >\n {feature}\n </span>\n ))}\n </div>\n <button className=\"mt-3 flex items-center gap-1 text-xs font-medium text-primary hover:underline\">\n Learn more <ArrowRight className=\"h-3 w-3\" />\n </button>\n </div>\n );\n })\n )}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;AASA,SAAgB,IAAwB;CACtC,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAA2B,EAC1D,WAAW,EAAE,OAAO,aAAoB,EACzC,CAAC,EAKI,KAHiB,GAAM,kBAAkB,EAAE,EAGhB,QAAQ,MACvC,EAAE,IAAI,WAAW,YAAY,CAC9B;AA0BD,QAxBI,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD;GAAiB,SAAQ;GAAO,OAAO;GAAK,CAAA;EACjC,CAAA,GAIb,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAA+H;GAExI,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAU,WAAW,IACpB,kBAAC,OAAD;IAAK,WAAU;cAA8D;IAGvE,CAAA,GAEN,EAAU,KAAK,MAA0C;IACvD,IAAM,IAAM,EAAS,OACf,IACH,EAAI,QAAmB,EAAS,IAAI,QAAQ,aAAa,GAAG,EACzD,IAAY,EAAI,YAAuB,WACvC,IACJ,EAAS,eAAgB,EAAI,eAA0B,IACnD,IAAY,EAAI,YAAyB,EAAE;AAEjD,WACE,kBAAC,OAAD;KAEE,WAAU;eAFZ;MAIE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD;QAAK,WAAU;kBACb,kBAAC,GAAD,EAAS,WAAU,wBAAyB,CAAA;QACxC,CAAA,EACN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,KAAD;SAAG,WAAU;mBACV;SACC,CAAA,EACJ,kBAAC,KAAD;SAAG,WAAU;mBAAiC;SAAa,CAAA,CACvD;UACF;;MACN,kBAAC,KAAD;OAAG,WAAU;iBACV;OACC,CAAA;MACJ,kBAAC,OAAD;OAAK,WAAU;iBACZ,EAAS,KAAK,MACb,kBAAC,QAAD;QAEE,WAAU;kBAET;QACI,EAJA,EAIA,CACP;OACE,CAAA;MACN,kBAAC,UAAD;OAAQ,WAAU;iBAAlB,CAAkG,eACrF,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA,CACtC;;MACL;OA9BC,EAAS,GA8BV;KAER;GAEA,CAAA;EACK,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocationPrivacySettingsPage.d.ts","sourceRoot":"","sources":["../../../../src/timecampus/pages/location-tracking/LocationPrivacySettingsPage.tsx"],"names":[],"mappings":"AAYA,wBAAgB,2BAA2B,4CA6I1C"}
|