Skip to content

Commit 133114b

Browse files
committed
feat: destination and connected calendars
1 parent 6bc892b commit 133114b

File tree

5 files changed

+76
-30
lines changed

5 files changed

+76
-30
lines changed

packages/platform/atoms/calendar-settings/wrappers/CalendarSettingsPlatformWrapper.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
import type { DestinationHeaderClassnames } from "destination-calendar/DestinationCalendar";
1+
import type { DestinationCalendarClassNames } from "destination-calendar/DestinationCalendar";
22

33
import { DestinationCalendarSettingsPlatformWrapper } from "../../destination-calendar/index";
44
import { SelectedCalendarsSettingsPlatformWrapper } from "../../selected-calendars/index";
55
import type {
66
CalendarRedirectUrls,
7-
SelectedCalendarsHeaderClassnames,
7+
SelectedCalendarsClassNames,
88
} from "../../selected-calendars/wrappers/SelectedCalendarsSettingsPlatformWrapper";
99

1010
type CalendarSettingsPlatformWrapperProps = {
1111
classNames?: {
1212
calendarSettingsCustomClassnames?: string;
1313
destinationCalendarSettingsCustomClassnames?: string;
1414
selectedCalendarSettingsCustomClassnames?: string;
15-
selectedCalendarSettingsHeaderClassNames?: SelectedCalendarsHeaderClassnames;
16-
destinationCalendarSettingsHeaderClassNames?: DestinationHeaderClassnames;
15+
selectedCalendarSettingsClassNames?: SelectedCalendarsClassNames;
16+
destinationCalendarSettingsClassNames?: DestinationCalendarClassNames;
1717
};
1818
calendarRedirectUrls?: CalendarRedirectUrls;
1919
allowDelete?: boolean;
@@ -31,15 +31,15 @@ export const CalendarSettingsPlatformWrapper = ({
3131
<DestinationCalendarSettingsPlatformWrapper
3232
statusLoader={<></>}
3333
classNames={classNames?.destinationCalendarSettingsCustomClassnames}
34-
headerClassNames={classNames?.destinationCalendarSettingsHeaderClassNames}
34+
classNamesObject={classNames?.destinationCalendarSettingsClassNames}
3535
isDryRun={isDryRun}
3636
/>
3737
<SelectedCalendarsSettingsPlatformWrapper
3838
classNames={classNames?.selectedCalendarSettingsCustomClassnames}
3939
calendarRedirectUrls={calendarRedirectUrls}
4040
allowDelete={allowDelete}
4141
isDryRun={isDryRun}
42-
headerClassNames={classNames?.selectedCalendarSettingsHeaderClassNames}
42+
classNamesObject={classNames?.selectedCalendarSettingsClassNames}
4343
/>
4444
</div>
4545
);

packages/platform/atoms/destination-calendar/DestinationCalendar.tsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,29 @@ import { cn } from "../src/lib/utils";
55
import type { DestinationCalendarProps } from "./DestinationCalendarSelector";
66
import { DestinationCalendarSelector } from "./DestinationCalendarSelector";
77

8-
export type DestinationHeaderClassnames = {
8+
type DestinationHeaderClassnames = {
9+
container?: string;
910
title?: string;
1011
description?: string;
1112
};
1213

14+
export type DestinationCalendarClassNames = {
15+
container?: string;
16+
header?: DestinationHeaderClassnames;
17+
};
18+
1319
export const DestinationCalendarSettings = (
14-
props: DestinationCalendarProps & { classNames?: string; headerClassNames?: DestinationHeaderClassnames }
20+
props: DestinationCalendarProps & { classNames?: string; classNamesObject?: DestinationCalendarClassNames }
1521
) => {
1622
const { t } = useLocale();
1723

1824
return (
19-
<div className={cn("border-subtle mb-6 mt-8 rounded-lg border", props?.classNames)}>
20-
<DestinationCalendarSettingsHeading classNames={props.headerClassNames} />
25+
<div
26+
className={cn(
27+
"border-subtle mb-6 mt-8 rounded-lg border",
28+
props?.classNames || props?.classNamesObject?.container
29+
)}>
30+
<DestinationCalendarSettingsHeading classNames={props.classNamesObject?.header} />
2131
<div className="border-t">
2232
<div className="border-subtle flex w-full flex-col space-y-3 border-y-0 p-6">
2333
<div>
@@ -34,7 +44,7 @@ const DestinationCalendarSettingsHeading = ({ classNames }: { classNames?: Desti
3444
const { t } = useLocale();
3545

3646
return (
37-
<div className="p-6">
47+
<div className={cn("p-6", classNames?.container)}>
3848
<h2 className={cn("text-emphasis mb-1 text-base font-bold leading-5 tracking-wide", classNames?.title)}>
3949
{t("add_to_calendar")}
4050
</h2>

packages/platform/atoms/destination-calendar/wrappers/DestinationCalendarSettingsPlatformWrapper.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import { useUpdateDestinationCalendars } from "../../hooks/calendars/useUpdateDestinationCalendars";
22
import { useConnectedCalendars } from "../../hooks/useConnectedCalendars";
33
import { AtomsWrapper } from "../../src/components/atoms-wrapper";
4-
import type { DestinationHeaderClassnames } from "../DestinationCalendar";
4+
import type { DestinationCalendarClassNames } from "../DestinationCalendar";
55
import { DestinationCalendarSettings } from "../DestinationCalendar";
66

77
export const DestinationCalendarSettingsPlatformWrapper = ({
88
statusLoader,
99
classNames = "mx-5",
10-
headerClassNames,
10+
classNamesObject,
1111
isDryRun = false,
1212
}: {
1313
statusLoader?: JSX.Element;
1414
classNames?: string;
15-
headerClassNames?: DestinationHeaderClassnames;
15+
classNamesObject?: DestinationCalendarClassNames;
1616
isDryRun?: boolean;
1717
}) => {
1818
const calendars = useConnectedCalendars({});
@@ -38,7 +38,7 @@ export const DestinationCalendarSettingsPlatformWrapper = ({
3838
<AtomsWrapper>
3939
<DestinationCalendarSettings
4040
classNames={classNames}
41-
headerClassNames={headerClassNames}
41+
classNamesObject={classNamesObject}
4242
connectedCalendars={calendars.data.connectedCalendars}
4343
destinationCalendar={calendars.data.destinationCalendar}
4444
value={calendars.data.destinationCalendar.externalId}

packages/platform/atoms/selected-calendars/wrappers/SelectedCalendarsSettingsPlatformWrapper.tsx

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,19 @@ export type CalendarRedirectUrls = {
3030
outlook?: string;
3131
};
3232

33+
export type SelectedCalendarsClassNames = {
34+
container?: string;
35+
header?: {
36+
container?: string;
37+
title?: string;
38+
description?: string;
39+
};
40+
noSelectedCalendarsMessage?: string;
41+
};
42+
3343
type SelectedCalendarsSettingsPlatformWrapperProps = {
3444
classNames?: string;
35-
headerClassNames?: SelectedCalendarsHeaderClassnames;
45+
classNamesObject?: SelectedCalendarsClassNames;
3646
calendarRedirectUrls?: CalendarRedirectUrls;
3747
allowDelete?: boolean;
3848
isDryRun?: boolean;
@@ -43,7 +53,7 @@ export const SelectedCalendarsSettingsPlatformWrapper = ({
4353
calendarRedirectUrls,
4454
allowDelete,
4555
isDryRun,
46-
headerClassNames,
56+
classNamesObject,
4757
}: SelectedCalendarsSettingsPlatformWrapperProps) => {
4858
const { t } = useLocale();
4959
const query = useConnectedCalendars({});
@@ -58,21 +68,27 @@ export const SelectedCalendarsSettingsPlatformWrapper = ({
5868

5969
if (!data.connectedCalendars.length) {
6070
return (
61-
<SelectedCalendarsSettings classNames={classNames}>
71+
<SelectedCalendarsSettings classNames={classNamesObject?.container || classNames}>
6272
<SelectedCalendarsSettingsHeading
63-
classNames={headerClassNames}
73+
classNames={classNamesObject?.header}
6474
calendarRedirectUrls={calendarRedirectUrls}
6575
isDryRun={isDryRun}
6676
/>
67-
<h1 className="px-6 py-4 text-base leading-5">No connected calendars found.</h1>
77+
<h1
78+
className={cn(
79+
"px-6 py-4 text-base leading-5",
80+
classNamesObject?.noSelectedCalendarsMessage
81+
)}>
82+
No connected calendars found.
83+
</h1>
6884
</SelectedCalendarsSettings>
6985
);
7086
}
7187

7288
return (
73-
<SelectedCalendarsSettings classNames={classNames}>
89+
<SelectedCalendarsSettings classNames={classNamesObject?.container || classNames}>
7490
<SelectedCalendarsSettingsHeading
75-
classNames={headerClassNames}
91+
classNames={classNamesObject?.header}
7692
calendarRedirectUrls={calendarRedirectUrls}
7793
isDryRun={isDryRun}
7894
/>
@@ -161,24 +177,23 @@ export const SelectedCalendarsSettingsPlatformWrapper = ({
161177
);
162178
};
163179

164-
export type SelectedCalendarsHeaderClassnames = {
165-
title?: string;
166-
description?: string;
167-
};
168-
169180
const SelectedCalendarsSettingsHeading = ({
170181
calendarRedirectUrls,
171182
isDryRun,
172183
classNames,
173184
}: {
174185
calendarRedirectUrls?: CalendarRedirectUrls;
175186
isDryRun?: boolean;
176-
classNames?: SelectedCalendarsHeaderClassnames;
187+
classNames?: {
188+
container?: string;
189+
title?: string;
190+
description?: string;
191+
};
177192
}) => {
178193
const { t } = useLocale();
179194

180195
return (
181-
<div className="border-subtle border-b p-6">
196+
<div className={cn("border-subtle border-b p-6", classNames?.container)}>
182197
<div className="flex items-center justify-between">
183198
<div>
184199
<h4 className={cn("text-emphasis text-base font-semibold leading-5", classNames?.title)}>

packages/platform/examples/base/src/pages/calendars.tsx

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,28 @@ export default function Calendars(props: { calUsername: string; calEmail: string
1010
<main className={`flex min-h-screen flex-col ${inter.className}`}>
1111
<Navbar username={props.calUsername} />
1212
<div>
13-
<CalendarSettings allowDelete={true} />
13+
<CalendarSettings
14+
allowDelete={true}
15+
classNames={{
16+
destinationCalendarSettingsClassNames: {
17+
container: "bg-red-200",
18+
header: {
19+
container: "bg-gray-200",
20+
title: "text-green-500",
21+
description: "text-red-500",
22+
},
23+
},
24+
selectedCalendarSettingsClassNames: {
25+
container: "bg-red-200 mx-5 mb-6",
26+
header: {
27+
container: "bg-gray-200",
28+
title: "text-green-500",
29+
description: "text-red-500",
30+
},
31+
noSelectedCalendarsMessage: "text-blue-500",
32+
},
33+
}}
34+
/>
1435
</div>
1536
</main>
1637
);

0 commit comments

Comments
 (0)