mautourco-components 0.2.16 → 0.2.18
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/dist/components/atoms/CardServiceAccom/CardServiceAccom.css +2104 -0
- package/dist/components/atoms/CardServiceAccom/CardServiceAccom.d.ts +7 -0
- package/dist/components/atoms/CardServiceAccom/CardServiceAccom.js +29 -0
- package/dist/components/atoms/Chip/Chip.css +9 -2
- package/dist/components/atoms/Chip/Chip.d.ts +4 -0
- package/dist/components/atoms/Chip/Chip.js +4 -2
- package/dist/components/atoms/Icon/icons/AirIcon.d.ts +4 -0
- package/dist/components/atoms/Icon/icons/AirIcon.js +36 -0
- package/dist/components/atoms/Icon/icons/BikeIcon.d.ts +4 -0
- package/dist/components/atoms/Icon/icons/BikeIcon.js +36 -0
- package/dist/components/atoms/Icon/icons/LuggageIcon.d.ts +4 -0
- package/dist/components/atoms/Icon/icons/LuggageIcon.js +36 -0
- package/dist/components/atoms/Icon/icons/Utensils.js +1 -1
- package/dist/components/atoms/Icon/icons/registry.d.ts +3 -0
- package/dist/components/atoms/Icon/icons/registry.js +6 -0
- package/dist/components/atoms/Tab/Tab.css +6 -8
- package/dist/components/atoms/Typography/Typography.d.ts +1 -1
- package/dist/components/atoms/Typography/Typography.js +18 -4
- package/dist/components/molecules/ActionDropdown/ActionDropdown.css +1 -1
- package/dist/components/molecules/ActionDropdown/ActionDropdown.d.ts +8 -0
- package/dist/components/molecules/ActionDropdown/ActionDropdown.js +18 -8
- package/dist/components/molecules/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/dist/components/molecules/DateDisplay/DateDisplay.d.ts +9 -2
- package/dist/components/molecules/DateDisplay/DateDisplay.js +5 -5
- package/dist/components/molecules/DetailsInfo/DetailsAction.d.ts +14 -0
- package/dist/components/molecules/DetailsInfo/DetailsAction.js +47 -0
- package/dist/components/molecules/DetailsInfo/DetailsAgency/DetailsAgency.css +2101 -0
- package/dist/components/molecules/DetailsInfo/DetailsAgency/DetailsAgency.d.ts +13 -0
- package/dist/components/molecules/DetailsInfo/DetailsAgency/DetailsAgency.js +19 -0
- package/dist/components/molecules/DetailsInfo/DetailsClient/DetailsClient.css +2104 -0
- package/dist/components/molecules/DetailsInfo/DetailsClient/DetailsClient.d.ts +13 -0
- package/dist/components/molecules/DetailsInfo/DetailsClient/DetailsClient.js +20 -0
- package/dist/components/molecules/DetailsInfo/DetailsFile.d.ts +14 -0
- package/dist/components/molecules/DetailsInfo/DetailsFile.js +17 -0
- package/dist/components/molecules/DetailsInfo/DetailsInfo.d.ts +13 -0
- package/dist/components/molecules/DetailsInfo/DetailsInfo.js +24 -0
- package/dist/components/molecules/DetailsInfo/index.d.ts +5 -0
- package/dist/components/molecules/DetailsInfo/index.js +1 -0
- package/dist/components/molecules/GlobalAmenities/GlobalAmenities.d.ts +9 -0
- package/dist/components/molecules/GlobalAmenities/GlobalAmenities.js +19 -0
- package/dist/components/molecules/ServiceInfo/ServiceInfo.css +2109 -0
- package/dist/components/molecules/ServiceInfo/ServiceInfo.d.ts +21 -0
- package/dist/components/molecules/ServiceInfo/ServiceInfo.js +37 -0
- package/dist/components/molecules/ServiceLanguages/ServiceLanguages.d.ts +10 -0
- package/dist/components/molecules/ServiceLanguages/ServiceLanguages.js +19 -0
- package/dist/components/molecules/ServiceLanguages/constant.d.ts +1 -0
- package/dist/components/molecules/ServiceLanguages/constant.js +6 -0
- package/dist/components/molecules/ServiceTitle/ServiceTitle.css +2094 -0
- package/dist/components/molecules/ServiceTitle/ServiceTitle.d.ts +8 -0
- package/dist/components/molecules/ServiceTitle/ServiceTitle.js +18 -0
- package/dist/components/molecules/TableServiceItem/RowOtherServices.js +1 -1
- package/dist/components/molecules/TextWithBorderBottom/TextWithBorderBottom.css +2103 -0
- package/dist/components/molecules/TextWithBorderBottom/TextWithBorderBottom.d.ts +4 -0
- package/dist/components/molecules/TextWithBorderBottom/TextWithBorderBottom.js +29 -0
- package/dist/components/molecules/TextWithIcon/TextWithIcon.d.ts +3 -1
- package/dist/components/molecules/TextWithIcon/TextWithIcon.js +2 -2
- package/dist/components/molecules/TimelineItem/ServiceAccommodation.js +1 -1
- package/dist/components/molecules/TimelineItem/ServiceExcursion.js +1 -1
- package/dist/components/molecules/TooltipDisplay/TooltipDisplay.js +1 -1
- package/dist/components/organisms/TabCancellationPolicy/CancellationAccom.d.ts +11 -0
- package/dist/components/organisms/TabCancellationPolicy/CancellationAccom.js +19 -0
- package/dist/components/organisms/TabCancellationPolicy/CancellationBody.d.ts +11 -0
- package/dist/components/organisms/TabCancellationPolicy/CancellationBody.js +21 -0
- package/dist/components/organisms/TabCancellationPolicy/CancellationExcursion.d.ts +8 -0
- package/dist/components/organisms/TabCancellationPolicy/CancellationExcursion.js +19 -0
- package/dist/components/organisms/TabCancellationPolicy/CancellationHeader.d.ts +11 -0
- package/dist/components/organisms/TabCancellationPolicy/CancellationHeader.js +21 -0
- package/dist/components/organisms/TabCancellationPolicy/CancellationTransfer.d.ts +7 -0
- package/dist/components/organisms/TabCancellationPolicy/CancellationTransfer.js +19 -0
- package/dist/components/organisms/TabCancellationPolicy/HeaderAccom.d.ts +6 -0
- package/dist/components/organisms/TabCancellationPolicy/HeaderAccom.js +27 -0
- package/dist/components/organisms/TabCancellationPolicy/HeaderExcursion/HeaderTransfer.css +2082 -0
- package/dist/components/organisms/TabCancellationPolicy/HeaderExcursion/HeaderTransfer.d.ts +12 -0
- package/dist/components/organisms/TabCancellationPolicy/HeaderExcursion/HeaderTransfer.js +26 -0
- package/dist/components/organisms/TabCancellationPolicy/HeaderExcursion.d.ts +5 -0
- package/dist/components/organisms/TabCancellationPolicy/HeaderExcursion.js +7 -0
- package/dist/components/organisms/TabCancellationPolicy/PolicyAccom/PolicyAccom.css +2094 -0
- package/dist/components/organisms/TabCancellationPolicy/PolicyAccom/PolicyAccom.d.ts +13 -0
- package/dist/components/organisms/TabCancellationPolicy/PolicyAccom/PolicyAccom.js +21 -0
- package/dist/components/organisms/TabCancellationPolicy/PolicyExcursion.d.ts +5 -0
- package/dist/components/organisms/TabCancellationPolicy/PolicyExcursion.js +17 -0
- package/dist/components/organisms/TabCancellationPolicy/PolicyTransfer.d.ts +4 -0
- package/dist/components/organisms/TabCancellationPolicy/PolicyTransfer.js +44 -0
- package/dist/components/organisms/TabCancellationPolicy/TabCancellationPolicy.d.ts +13 -0
- package/dist/components/organisms/TabCancellationPolicy/TabCancellationPolicy.js +23 -0
- package/dist/components/organisms/TabCancellationPolicy/TabCancellationPolicyLayout/TabCancellationPolicyLayout.css +2141 -0
- package/dist/components/organisms/TabCancellationPolicy/TabCancellationPolicyLayout/TabCancellationPolicyLayout.d.ts +13 -0
- package/dist/components/organisms/TabCancellationPolicy/TabCancellationPolicyLayout/TabCancellationPolicyLayout.js +19 -0
- package/dist/components/organisms/TabCancellationPolicy/index.d.ts +6 -0
- package/dist/components/organisms/TabCancellationPolicy/index.js +3 -0
- package/dist/components/organisms/TabServiceDetails/Accommodation.d.ts +26 -0
- package/dist/components/organisms/TabServiceDetails/Accommodation.js +46 -0
- package/dist/components/organisms/TabServiceDetails/DetailContentTransfer.d.ts +9 -0
- package/dist/components/organisms/TabServiceDetails/DetailContentTransfer.js +17 -0
- package/dist/components/organisms/TabServiceDetails/DetailsContentAccom.d.ts +41 -0
- package/dist/components/organisms/TabServiceDetails/DetailsContentAccom.js +65 -0
- package/dist/components/organisms/TabServiceDetails/DetailsContentExcursion.d.ts +18 -0
- package/dist/components/organisms/TabServiceDetails/DetailsContentExcursion.js +20 -0
- package/dist/components/organisms/TabServiceDetails/Excursion.d.ts +7 -0
- package/dist/components/organisms/TabServiceDetails/Excursion.js +29 -0
- package/dist/components/organisms/TabServiceDetails/TabServiceDetails.d.ts +10 -0
- package/dist/components/organisms/TabServiceDetails/TabServiceDetails.js +23 -0
- package/dist/components/organisms/TabServiceDetails/TabServiceDetailsLayout/TabServiceDetailsLayout.css +2143 -0
- package/dist/components/organisms/TabServiceDetails/TabServiceDetailsLayout/TabServiceDetailsLayout.d.ts +35 -0
- package/dist/components/organisms/TabServiceDetails/TabServiceDetailsLayout/TabServiceDetailsLayout.js +39 -0
- package/dist/components/organisms/TabServiceDetails/Transfer.d.ts +12 -0
- package/dist/components/organisms/TabServiceDetails/Transfer.js +19 -0
- package/dist/components/organisms/TabServiceDetails/index.d.ts +4 -0
- package/dist/components/organisms/TabServiceDetails/index.js +1 -0
- package/dist/components/organisms/Table/Table.css +56 -0
- package/dist/components/organisms/Table/Table.js +6 -4
- package/dist/components/organisms/Table/columns/booking-columns.js +1 -1
- package/dist/components/organisms/Table/columns/detail-resume-columns.js +1 -1
- package/dist/components/organisms/Table/columns/quotation-columns.js +3 -3
- package/dist/components/organisms/Timeline/Timeline.d.ts +1 -0
- package/dist/components/organisms/Timeline/Timeline.js +3 -2
- package/dist/index.d.ts +10 -1
- package/dist/index.js +9 -1
- package/dist/types/table/action-dropdown-type.types.d.ts +1 -0
- package/dist/types/table/action-dropdown-type.types.js +1 -0
- package/package.json +2 -1
- package/src/components/atoms/CardServiceAccom/CardServiceAccom.css +22 -0
- package/src/components/atoms/CardServiceAccom/CardServiceAccom.tsx +22 -0
- package/src/components/atoms/Chip/Chip.css +7 -2
- package/src/components/atoms/Chip/Chip.tsx +16 -2
- package/src/components/atoms/Icon/icons/AirIcon.tsx +40 -0
- package/src/components/atoms/Icon/icons/BikeIcon.tsx +40 -0
- package/src/components/atoms/Icon/icons/LuggageIcon.tsx +40 -0
- package/src/components/atoms/Icon/icons/Utensils.tsx +11 -3
- package/src/components/atoms/Icon/icons/registry.tsx +6 -0
- package/src/components/atoms/Tab/Tab.css +6 -8
- package/src/components/atoms/Typography/Typography.tsx +27 -7
- package/src/components/molecules/ActionDropdown/ActionDropdown.css +1 -1
- package/src/components/molecules/ActionDropdown/ActionDropdown.tsx +62 -18
- package/src/components/molecules/Breadcrumbs/Breadcrumbs.tsx +1 -1
- package/src/components/molecules/DateDisplay/DateDisplay.tsx +25 -9
- package/src/components/molecules/DetailsInfo/DetailsAction.tsx +68 -0
- package/src/components/molecules/DetailsInfo/DetailsAgency/DetailsAgency.css +21 -0
- package/src/components/molecules/DetailsInfo/DetailsAgency/DetailsAgency.tsx +57 -0
- package/src/components/molecules/DetailsInfo/DetailsClient/DetailsClient.css +10 -0
- package/src/components/molecules/DetailsInfo/DetailsClient/DetailsClient.tsx +56 -0
- package/src/components/molecules/DetailsInfo/DetailsFile.tsx +42 -0
- package/src/components/molecules/DetailsInfo/DetailsInfo.tsx +19 -0
- package/src/components/molecules/DetailsInfo/index.ts +8 -0
- package/src/components/molecules/GlobalAmenities/GlobalAmenities.tsx +35 -0
- package/src/components/molecules/ServiceInfo/ServiceInfo.css +27 -0
- package/src/components/molecules/ServiceInfo/ServiceInfo.tsx +74 -0
- package/src/components/molecules/ServiceLanguages/ServiceLanguages.tsx +33 -0
- package/src/components/molecules/ServiceLanguages/constant.ts +6 -0
- package/src/components/molecules/ServiceTitle/ServiceTitle.css +13 -0
- package/src/components/molecules/ServiceTitle/ServiceTitle.tsx +19 -0
- package/src/components/molecules/TableServiceItem/RowOtherServices.tsx +3 -1
- package/src/components/molecules/TextWithBorderBottom/TextWithBorderBottom.css +9 -0
- package/src/components/molecules/TextWithBorderBottom/TextWithBorderBottom.tsx +12 -0
- package/src/components/molecules/TextWithIcon/TextWithIcon.tsx +6 -1
- package/src/components/molecules/TimelineItem/ServiceAccommodation.tsx +1 -1
- package/src/components/molecules/TimelineItem/ServiceExcursion.tsx +1 -1
- package/src/components/molecules/TooltipDisplay/TooltipDisplay.tsx +4 -2
- package/src/components/organisms/TabCancellationPolicy/CancellationAccom.tsx +40 -0
- package/src/components/organisms/TabCancellationPolicy/CancellationBody.tsx +12 -0
- package/src/components/organisms/TabCancellationPolicy/CancellationExcursion.tsx +31 -0
- package/src/components/organisms/TabCancellationPolicy/CancellationHeader.tsx +11 -0
- package/src/components/organisms/TabCancellationPolicy/CancellationTransfer.tsx +29 -0
- package/src/components/organisms/TabCancellationPolicy/HeaderAccom.tsx +31 -0
- package/src/components/organisms/TabCancellationPolicy/HeaderExcursion/HeaderTransfer.css +3 -0
- package/src/components/organisms/TabCancellationPolicy/HeaderExcursion/HeaderTransfer.tsx +48 -0
- package/src/components/organisms/TabCancellationPolicy/HeaderExcursion.tsx +18 -0
- package/src/components/organisms/TabCancellationPolicy/PolicyAccom/PolicyAccom.css +8 -0
- package/src/components/organisms/TabCancellationPolicy/PolicyAccom/PolicyAccom.tsx +47 -0
- package/src/components/organisms/TabCancellationPolicy/PolicyExcursion.tsx +26 -0
- package/src/components/organisms/TabCancellationPolicy/PolicyTransfer.tsx +62 -0
- package/src/components/organisms/TabCancellationPolicy/TabCancellationPolicy.tsx +13 -0
- package/src/components/organisms/TabCancellationPolicy/TabCancellationPolicyLayout/TabCancellationPolicyLayout.css +46 -0
- package/src/components/organisms/TabCancellationPolicy/TabCancellationPolicyLayout/TabCancellationPolicyLayout.tsx +44 -0
- package/src/components/organisms/TabCancellationPolicy/index.ts +7 -0
- package/src/components/organisms/TabServiceDetails/Accommodation.tsx +45 -0
- package/src/components/organisms/TabServiceDetails/DetailContentTransfer.tsx +45 -0
- package/src/components/organisms/TabServiceDetails/DetailsContentAccom.tsx +124 -0
- package/src/components/organisms/TabServiceDetails/DetailsContentExcursion.tsx +65 -0
- package/src/components/organisms/TabServiceDetails/Excursion.tsx +20 -0
- package/src/components/organisms/TabServiceDetails/TabServiceDetails.tsx +13 -0
- package/src/components/organisms/TabServiceDetails/TabServiceDetailsLayout/TabServiceDetailsLayout.css +55 -0
- package/src/components/organisms/TabServiceDetails/TabServiceDetailsLayout/TabServiceDetailsLayout.tsx +82 -0
- package/src/components/organisms/TabServiceDetails/Transfer.tsx +34 -0
- package/src/components/organisms/TabServiceDetails/index.ts +5 -0
- package/src/components/organisms/Table/Table.css +54 -0
- package/src/components/organisms/Table/Table.tsx +37 -22
- package/src/components/organisms/Table/columns/booking-columns.tsx +1 -1
- package/src/components/organisms/Table/columns/detail-resume-columns.tsx +1 -1
- package/src/components/organisms/Table/columns/quotation-columns.tsx +10 -5
- package/src/components/organisms/Timeline/Timeline.tsx +6 -4
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Fragment } from 'react';
|
|
2
|
+
import { Text } from '../../../atoms/Typography/Typography';
|
|
3
|
+
import { DateDisplay } from '../../../molecules/DateDisplay/DateDisplay';
|
|
4
|
+
import TextWithIcon from '../../../molecules/TextWithIcon/TextWithIcon';
|
|
5
|
+
import './PolicyAccom.css';
|
|
6
|
+
|
|
7
|
+
export interface Policy {
|
|
8
|
+
Description: string;
|
|
9
|
+
Value: number;
|
|
10
|
+
ValidFrom: string;
|
|
11
|
+
ValidTo: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface PolicyAccomProps {
|
|
15
|
+
roomName: string;
|
|
16
|
+
policies: Policy[];
|
|
17
|
+
index?: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default function PolicyAccom(props: PolicyAccomProps) {
|
|
21
|
+
const { roomName, policies, index } = props;
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<div className="policy-accom">
|
|
25
|
+
<div className="grid gap-y-1">
|
|
26
|
+
<TextWithIcon icon="accom">Room {index !== undefined && index + 1}</TextWithIcon>
|
|
27
|
+
<Text size="sm">{roomName}</Text>
|
|
28
|
+
</div>
|
|
29
|
+
{policies.map((policy, index) => (
|
|
30
|
+
<Fragment key={`policy-${index}`}>
|
|
31
|
+
<Text size="xs" variant="medium" leading="4" className="policy-accom__period">
|
|
32
|
+
Policy period applies{' '}
|
|
33
|
+
<DateDisplay dates={[policy.ValidFrom, policy.ValidTo]} textSize="xs" />
|
|
34
|
+
</Text>
|
|
35
|
+
<div className="space-y-2">
|
|
36
|
+
<Text variant="bold" size="xs" leading="4">
|
|
37
|
+
{policy.Value} % of total price
|
|
38
|
+
</Text>
|
|
39
|
+
<Text size="xs" leading="4">
|
|
40
|
+
{policy.Description}
|
|
41
|
+
</Text>
|
|
42
|
+
</div>
|
|
43
|
+
</Fragment>
|
|
44
|
+
))}
|
|
45
|
+
</div>
|
|
46
|
+
);
|
|
47
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Text } from '../../atoms/Typography/Typography';
|
|
2
|
+
|
|
3
|
+
export interface PolicyExcursionProps {
|
|
4
|
+
pickUpPoint: string;
|
|
5
|
+
policies: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export default function PolicyExcursion(props: PolicyExcursionProps) {
|
|
9
|
+
const { pickUpPoint, policies } = props;
|
|
10
|
+
|
|
11
|
+
return (
|
|
12
|
+
<div className="policy-excursion space-y-6">
|
|
13
|
+
<div className="space-y-2">
|
|
14
|
+
<Text variant="bold" size="xs" leading="4">
|
|
15
|
+
Pick-up point:
|
|
16
|
+
</Text>
|
|
17
|
+
<Text size="xs" leading="4">
|
|
18
|
+
{pickUpPoint}
|
|
19
|
+
</Text>
|
|
20
|
+
</div>
|
|
21
|
+
<Text size="xs" leading="4">
|
|
22
|
+
{policies}
|
|
23
|
+
</Text>
|
|
24
|
+
</div>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Text } from '../../atoms/Typography/Typography';
|
|
2
|
+
import TextWithIcon from '../../molecules/TextWithIcon/TextWithIcon';
|
|
3
|
+
|
|
4
|
+
export interface PolicyTransferProps {
|
|
5
|
+
carName: string;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const policies = [
|
|
9
|
+
{
|
|
10
|
+
title: 'No Show',
|
|
11
|
+
policy: '100% of applicable fees will be claimed to the Operator',
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
title: 'No Show on expected flight and arrives later on another flight',
|
|
15
|
+
policy:
|
|
16
|
+
'An additional no show fee of 50% will be charged on normal fee payable by the Operator',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
title: 'Delayed client due to flight amendment without prior notice (4 hours before)',
|
|
20
|
+
policy: '100% payable by the Operator',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
title: 'Walk-in client (without booking/voucher)',
|
|
24
|
+
policy: 'Taxi Transfer will be provided to the client at his own expense',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
title: 'Unexpected client (with voucher but without booking)',
|
|
28
|
+
policy: 'Private transfer will be charged to the Operator',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
title: 'Cancellation less than 24 hours prior arrival',
|
|
32
|
+
policy: '100% applicable fee claimed to the Operator',
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
export default function PolicyTransfer(props: PolicyTransferProps) {
|
|
37
|
+
const { carName } = props;
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<div className="policy-excursion">
|
|
41
|
+
<TextWithIcon icon="car" textVariant="bold" iconSize="md" textSize="md">
|
|
42
|
+
{carName}
|
|
43
|
+
</TextWithIcon>
|
|
44
|
+
<div className="grid grid-cols-2 xl:grid-cols-3 gap-x-4">
|
|
45
|
+
{policies.map((policy, index) => (
|
|
46
|
+
<div key={`policy-${index}`} className="mt-4">
|
|
47
|
+
<Text variant="medium" size="sm" leading="4">
|
|
48
|
+
{policy.title}
|
|
49
|
+
</Text>
|
|
50
|
+
<ul className="pl-8">
|
|
51
|
+
<li className="list-disc">
|
|
52
|
+
<Text size="sm" leading="4">
|
|
53
|
+
{policy.policy}
|
|
54
|
+
</Text>
|
|
55
|
+
</li>
|
|
56
|
+
</ul>
|
|
57
|
+
</div>
|
|
58
|
+
))}
|
|
59
|
+
</div>
|
|
60
|
+
</div>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import CancellationAccom from './CancellationAccom';
|
|
2
|
+
import CancellationExcursion from './CancellationExcursion';
|
|
3
|
+
import CancellationTransfer from './CancellationTransfer';
|
|
4
|
+
import TabCancellationPolicyLayout from './TabCancellationPolicyLayout/TabCancellationPolicyLayout';
|
|
5
|
+
|
|
6
|
+
export default function TabCancellationPolicy(props: React.PropsWithChildren) {
|
|
7
|
+
return <div className="tab-cancellation-policy" {...props} />;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
TabCancellationPolicy.Layout = TabCancellationPolicyLayout;
|
|
11
|
+
TabCancellationPolicy.Accom = CancellationAccom;
|
|
12
|
+
TabCancellationPolicy.Excursion = CancellationExcursion;
|
|
13
|
+
TabCancellationPolicy.Transfer = CancellationTransfer;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
.details-cancellation-policy__layout {
|
|
2
|
+
@apply grid gap-y-8;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.details-cancellation-policy__layout-flex {
|
|
6
|
+
@apply flex gap-x-8;
|
|
7
|
+
figure {
|
|
8
|
+
@apply overflow-hidden;
|
|
9
|
+
flex: 0 0 300px;
|
|
10
|
+
height: 300px;
|
|
11
|
+
border-radius: var(--border-radius-rounded-2xl);
|
|
12
|
+
box-shadow: 0 1px 7px rgba(0, 0, 0, 0.19);
|
|
13
|
+
@media (min-width: 1280px) {
|
|
14
|
+
flex: 0 0 400px;
|
|
15
|
+
height: 400px;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
img {
|
|
19
|
+
object-fit: cover;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.details-cancellation-policy__layout-content {
|
|
24
|
+
@apply flex-1;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.details-cancellation-policy__layout-content-header {
|
|
28
|
+
@apply pb-6 relative;
|
|
29
|
+
&::after {
|
|
30
|
+
content: '';
|
|
31
|
+
@apply absolute bottom-0 left-0 right-0;
|
|
32
|
+
height: 1px;
|
|
33
|
+
background-color: transparent;
|
|
34
|
+
background-image: repeating-linear-gradient(
|
|
35
|
+
to right,
|
|
36
|
+
var(--divider-color-default) 0,
|
|
37
|
+
var(--divider-color-default) 8px,
|
|
38
|
+
transparent 8px,
|
|
39
|
+
transparent 16px
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.details-cancellation-policy__layout-content-body {
|
|
45
|
+
@apply pt-6;
|
|
46
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Chip from '../../../atoms/Chip/Chip';
|
|
3
|
+
import { IconName } from '../../../atoms/Icon/Icon';
|
|
4
|
+
import TextWithIcon from '../../../molecules/TextWithIcon/TextWithIcon';
|
|
5
|
+
import './TabCancellationPolicyLayout.css';
|
|
6
|
+
|
|
7
|
+
interface TabCancellationPolicyLayoutProps {
|
|
8
|
+
title: string;
|
|
9
|
+
icon: IconName;
|
|
10
|
+
isOnRequest?: boolean;
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
image: string;
|
|
13
|
+
header: React.ReactNode;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default function TabCancellationPolicyLayout(
|
|
17
|
+
props: TabCancellationPolicyLayoutProps
|
|
18
|
+
) {
|
|
19
|
+
const { title, icon, isOnRequest, children, image, header } = props;
|
|
20
|
+
return (
|
|
21
|
+
<div className="details-cancellation-policy__layout">
|
|
22
|
+
<TextWithIcon
|
|
23
|
+
icon={icon}
|
|
24
|
+
color={isOnRequest ? 'yellow' : 'accent'}
|
|
25
|
+
textVariant="bold">
|
|
26
|
+
{title}
|
|
27
|
+
{isOnRequest && <Chip color="yellow">On request</Chip>}
|
|
28
|
+
</TextWithIcon>
|
|
29
|
+
<div className="details-cancellation-policy__layout-flex">
|
|
30
|
+
<figure>
|
|
31
|
+
<img src={image} alt={title} width={400} height={400} />
|
|
32
|
+
</figure>
|
|
33
|
+
<div className="details-cancellation-policy__layout-content">
|
|
34
|
+
<div className="details-cancellation-policy__layout-content-header">
|
|
35
|
+
{header}
|
|
36
|
+
</div>
|
|
37
|
+
<div className="details-cancellation-policy__layout-content-body">
|
|
38
|
+
{children}
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './CancellationBody';
|
|
2
|
+
export * from './CancellationHeader';
|
|
3
|
+
export * from './TabCancellationPolicy';
|
|
4
|
+
|
|
5
|
+
export type { CancellationAccomProps } from './CancellationAccom';
|
|
6
|
+
export type { CancellationExcursionProps } from './CancellationExcursion';
|
|
7
|
+
export type { CancellationTransferProps } from './CancellationTransfer';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { DetailsContentAccom, DetailsContentAccomProps } from './DetailsContentAccom';
|
|
3
|
+
import TabServiceDetails from './TabServiceDetails';
|
|
4
|
+
|
|
5
|
+
export interface AccommodationProps extends DetailsContentAccomProps {
|
|
6
|
+
/** Images of the accommodation */
|
|
7
|
+
images: string[];
|
|
8
|
+
/** Whether the accommodation is on request */
|
|
9
|
+
isOnRequest?: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Accommodation details tab .
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* <Accommodation
|
|
17
|
+
* title="Accommodation"
|
|
18
|
+
* icon="accom"
|
|
19
|
+
* images={['image1.jpg', 'image2.jpg', 'image3.jpg']}
|
|
20
|
+
* mobileContent={<div>Mobile content</div>}
|
|
21
|
+
* isOnRequest={true}
|
|
22
|
+
* >
|
|
23
|
+
* <div>Content</div>
|
|
24
|
+
* </Accommodation.Layout>
|
|
25
|
+
*
|
|
26
|
+
* @param props - Props of the Accommodation component
|
|
27
|
+
* @returns The Accommodation component
|
|
28
|
+
*/
|
|
29
|
+
export const Accommodation: React.FC<AccommodationProps> = (props) => {
|
|
30
|
+
const { images, isOnRequest, ...rest } = props;
|
|
31
|
+
return (
|
|
32
|
+
<TabServiceDetails.Layout
|
|
33
|
+
title="Accommodation"
|
|
34
|
+
icon="accom"
|
|
35
|
+
isOnRequest={isOnRequest}
|
|
36
|
+
images={images}
|
|
37
|
+
mobileContent={
|
|
38
|
+
<div className="mt-8">
|
|
39
|
+
<DetailsContentAccom.Body {...rest} />
|
|
40
|
+
</div>
|
|
41
|
+
}>
|
|
42
|
+
<DetailsContentAccom {...rest} />
|
|
43
|
+
</TabServiceDetails.Layout>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Chip from '../../atoms/Chip/Chip';
|
|
3
|
+
|
|
4
|
+
export interface DetailContentTransferProps {
|
|
5
|
+
pax: string;
|
|
6
|
+
clientType: string;
|
|
7
|
+
carName: string;
|
|
8
|
+
airConditioning?: boolean;
|
|
9
|
+
luggageTruck?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const DetailContentTransfer: React.FC<DetailContentTransferProps> = (props) => {
|
|
13
|
+
const { pax, clientType, carName, airConditioning, luggageTruck } = props;
|
|
14
|
+
return (
|
|
15
|
+
<div className="flex gap-4">
|
|
16
|
+
<Chip type="outline" color="brand" label={pax} leadingIcon="user" isBlackText />
|
|
17
|
+
<Chip
|
|
18
|
+
type="outline"
|
|
19
|
+
color="brand"
|
|
20
|
+
label={`Client type: ${clientType}`}
|
|
21
|
+
leadingIcon="user"
|
|
22
|
+
isBlackText
|
|
23
|
+
/>
|
|
24
|
+
<Chip type="outline" color="brand" label={carName} leadingIcon="car" isBlackText />
|
|
25
|
+
{airConditioning && (
|
|
26
|
+
<Chip
|
|
27
|
+
type="outline"
|
|
28
|
+
color="brand"
|
|
29
|
+
label="Air conditioning"
|
|
30
|
+
leadingIcon="air"
|
|
31
|
+
isBlackText
|
|
32
|
+
/>
|
|
33
|
+
)}
|
|
34
|
+
{luggageTruck && (
|
|
35
|
+
<Chip
|
|
36
|
+
type="outline"
|
|
37
|
+
color="brand"
|
|
38
|
+
label={`Luggage truck: ${luggageTruck > 1 ? `x${luggageTruck}` : luggageTruck}`}
|
|
39
|
+
leadingIcon="luggage"
|
|
40
|
+
isBlackText
|
|
41
|
+
/>
|
|
42
|
+
)}
|
|
43
|
+
</div>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { useMobile } from '@/src/hooks/useMobile';
|
|
2
|
+
import CardServiceAccom from '../../atoms/CardServiceAccom/CardServiceAccom';
|
|
3
|
+
import Chip from '../../atoms/Chip/Chip';
|
|
4
|
+
import { Text } from '../../atoms/Typography/Typography';
|
|
5
|
+
import {
|
|
6
|
+
GlobalAmenities,
|
|
7
|
+
GlobalAmenity,
|
|
8
|
+
} from '../../molecules/GlobalAmenities/GlobalAmenities';
|
|
9
|
+
import { TextWithBorderBottom } from '../../molecules/TextWithBorderBottom/TextWithBorderBottom';
|
|
10
|
+
import TextWithIcon from '../../molecules/TextWithIcon/TextWithIcon';
|
|
11
|
+
|
|
12
|
+
export interface RoomsInfo {
|
|
13
|
+
/** Name of the room */
|
|
14
|
+
roomName: string;
|
|
15
|
+
/** Number of pax */
|
|
16
|
+
roomPax: string;
|
|
17
|
+
/** Client type */
|
|
18
|
+
clientType: string;
|
|
19
|
+
/** Meal plan */
|
|
20
|
+
mealPlan: string;
|
|
21
|
+
/** Amenities of the room */
|
|
22
|
+
roomAmenities: string[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface DetailsContentAccomProps {
|
|
26
|
+
/** Title of the room */
|
|
27
|
+
roomTitle: string;
|
|
28
|
+
/** Description of the room */
|
|
29
|
+
roomDescription: string;
|
|
30
|
+
/** Global amenities */
|
|
31
|
+
globalAmenities: GlobalAmenity[];
|
|
32
|
+
/** Rooms info */
|
|
33
|
+
roomsInfo: RoomsInfo[];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Body for the DetailsContentAccom component.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* <DetailsContentAccomBody
|
|
41
|
+
* roomsInfo={roomsInfo}
|
|
42
|
+
* globalAmenities={globalAmenities}
|
|
43
|
+
* />
|
|
44
|
+
* @param props - Props of the DetailsContentAccomBody component
|
|
45
|
+
* @returns The DetailsContentAccomBody component
|
|
46
|
+
*/
|
|
47
|
+
const DetailsContentAccomBody = (
|
|
48
|
+
props: Omit<DetailsContentAccomProps, 'roomTitle' | 'roomDescription'>
|
|
49
|
+
) => {
|
|
50
|
+
const { roomsInfo, globalAmenities } = props;
|
|
51
|
+
return (
|
|
52
|
+
<div className="space-y-4">
|
|
53
|
+
<div className="grid grid-cols-2 gap-x-4">
|
|
54
|
+
{roomsInfo.map((room, index) => (
|
|
55
|
+
<div className="space-y-4" key={`ri-${index}`}>
|
|
56
|
+
<TextWithIcon icon="accom" textVariant="bold" textSize="sm">
|
|
57
|
+
{room.roomName}
|
|
58
|
+
</TextWithIcon>
|
|
59
|
+
<div className="flex flex-wrap gap-2">
|
|
60
|
+
<Chip color="brand" type="outline" leadingIcon="user" isBlackText>
|
|
61
|
+
{room.roomPax} pax
|
|
62
|
+
</Chip>
|
|
63
|
+
<Chip color="brand" type="outline" leadingIcon="user" isBlackText>
|
|
64
|
+
{room.clientType}
|
|
65
|
+
</Chip>
|
|
66
|
+
<Chip color="brand" type="outline" leadingIcon="utensils" isBlackText>
|
|
67
|
+
{room.mealPlan}
|
|
68
|
+
</Chip>
|
|
69
|
+
</div>
|
|
70
|
+
<div className="flex flex-wrap gap-2">
|
|
71
|
+
{room.roomAmenities.map((amenity, index) => (
|
|
72
|
+
<Chip key={`ra-${index}`} color="accent" type="outline" isBlackText>
|
|
73
|
+
{amenity}
|
|
74
|
+
</Chip>
|
|
75
|
+
))}
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
))}
|
|
79
|
+
</div>
|
|
80
|
+
<div className="grid grid-cols-2 gap-x-8">
|
|
81
|
+
<GlobalAmenities amenities={globalAmenities} />
|
|
82
|
+
<CardServiceAccom className="flex items-center justify-center">
|
|
83
|
+
<Text variant="bold">Coming soon</Text>
|
|
84
|
+
</CardServiceAccom>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Details content for the Accommodation component.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* <DetailsContentAccom
|
|
95
|
+
* roomTitle="Accommodation"
|
|
96
|
+
* roomDescription="Accommodation description"
|
|
97
|
+
* globalAmenities={globalAmenities}
|
|
98
|
+
* roomsInfo={roomsInfo}
|
|
99
|
+
* />
|
|
100
|
+
*
|
|
101
|
+
* @param props - Props of the DetailsContentAccom component
|
|
102
|
+
* @returns The DetailsContentAccom component
|
|
103
|
+
*/
|
|
104
|
+
export function DetailsContentAccom(props: DetailsContentAccomProps) {
|
|
105
|
+
const { roomTitle, roomDescription, ...rest } = props;
|
|
106
|
+
|
|
107
|
+
const { isMobile } = useMobile(1280);
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
<div className="space-y-6">
|
|
111
|
+
<div className="space-y-4">
|
|
112
|
+
<TextWithBorderBottom variant="bold" size="xl">
|
|
113
|
+
{roomTitle}
|
|
114
|
+
</TextWithBorderBottom>
|
|
115
|
+
<Text variant="medium" leading="5">
|
|
116
|
+
{roomDescription}
|
|
117
|
+
</Text>
|
|
118
|
+
</div>
|
|
119
|
+
{!isMobile && <DetailsContentAccomBody {...rest} />}
|
|
120
|
+
</div>
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
DetailsContentAccom.Body = DetailsContentAccomBody;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Text } from '../../atoms/Typography/Typography';
|
|
2
|
+
import { ServiceInfo } from '../../molecules/ServiceInfo/ServiceInfo';
|
|
3
|
+
import { ServiceLanguages } from '../../molecules/ServiceLanguages/ServiceLanguages';
|
|
4
|
+
import { TextWithBorderBottom } from '../../molecules/TextWithBorderBottom/TextWithBorderBottom';
|
|
5
|
+
|
|
6
|
+
export interface ServiceInfoItem {
|
|
7
|
+
languages: string[];
|
|
8
|
+
duration: string;
|
|
9
|
+
meal: string;
|
|
10
|
+
difficulty: string;
|
|
11
|
+
withTransfer?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface DetailsContentExcursionProps {
|
|
15
|
+
/** Title of the excursion */
|
|
16
|
+
excursionTitle: string;
|
|
17
|
+
/** Description of the excursion */
|
|
18
|
+
excursionDescription: string;
|
|
19
|
+
/** Pick-up point */
|
|
20
|
+
pickUpPoint: string;
|
|
21
|
+
/** Service information */
|
|
22
|
+
serviceInfos: ServiceInfoItem;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function DetailsContentExcursion(props: DetailsContentExcursionProps) {
|
|
26
|
+
const { excursionTitle, excursionDescription, pickUpPoint, serviceInfos } = props;
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<div className="space-y-6">
|
|
30
|
+
<div className="space-y-4">
|
|
31
|
+
<TextWithBorderBottom variant="bold" size="xl">
|
|
32
|
+
{excursionTitle}
|
|
33
|
+
</TextWithBorderBottom>
|
|
34
|
+
<Text variant="medium" leading="5">
|
|
35
|
+
{excursionDescription}
|
|
36
|
+
</Text>
|
|
37
|
+
</div>
|
|
38
|
+
<div className="space-y-2">
|
|
39
|
+
<Text variant="bold" size="sm" leading="4">
|
|
40
|
+
Pick-up point:
|
|
41
|
+
</Text>
|
|
42
|
+
<Text size="sm" leading="4">
|
|
43
|
+
{pickUpPoint}
|
|
44
|
+
</Text>
|
|
45
|
+
</div>
|
|
46
|
+
<ServiceInfo>
|
|
47
|
+
<ServiceInfo.Item icon="micro" label="Languages">
|
|
48
|
+
<ServiceLanguages languages={serviceInfos.languages} />
|
|
49
|
+
</ServiceInfo.Item>
|
|
50
|
+
<ServiceInfo.Item icon="stopwatch" label="Duration">
|
|
51
|
+
{serviceInfos.duration}
|
|
52
|
+
</ServiceInfo.Item>
|
|
53
|
+
<ServiceInfo.Item icon="utensils" label="Meal">
|
|
54
|
+
{serviceInfos.meal}
|
|
55
|
+
</ServiceInfo.Item>
|
|
56
|
+
<ServiceInfo.Item icon="bike" label="Difficulty">
|
|
57
|
+
{serviceInfos.difficulty}
|
|
58
|
+
</ServiceInfo.Item>
|
|
59
|
+
{serviceInfos.withTransfer && (
|
|
60
|
+
<ServiceInfo.Item icon="bus" label="Prise en charge inclus" />
|
|
61
|
+
)}
|
|
62
|
+
</ServiceInfo>
|
|
63
|
+
</div>
|
|
64
|
+
);
|
|
65
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
DetailsContentExcursion,
|
|
4
|
+
DetailsContentExcursionProps,
|
|
5
|
+
} from './DetailsContentExcursion';
|
|
6
|
+
import TabServiceDetails from './TabServiceDetails';
|
|
7
|
+
|
|
8
|
+
export interface ExcursionProps extends DetailsContentExcursionProps {
|
|
9
|
+
/** Images of the excursion */
|
|
10
|
+
images: string[];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const Excursion: React.FC<ExcursionProps> = (props) => {
|
|
14
|
+
const { images, ...rest } = props;
|
|
15
|
+
return (
|
|
16
|
+
<TabServiceDetails.Layout title="Excursion" icon="map" images={images}>
|
|
17
|
+
<DetailsContentExcursion {...rest} />
|
|
18
|
+
</TabServiceDetails.Layout>
|
|
19
|
+
);
|
|
20
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Accommodation } from './Accommodation';
|
|
2
|
+
import { Excursion } from './Excursion';
|
|
3
|
+
import TabServiceDetailsLayout from './TabServiceDetailsLayout/TabServiceDetailsLayout';
|
|
4
|
+
import { Transfer } from './Transfer';
|
|
5
|
+
|
|
6
|
+
export default function TabServiceDetails(props: React.PropsWithChildren) {
|
|
7
|
+
return <div className="tab-service-details" {...props} />;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
TabServiceDetails.Layout = TabServiceDetailsLayout;
|
|
11
|
+
TabServiceDetails.Accommodation = Accommodation;
|
|
12
|
+
TabServiceDetails.Excursion = Excursion;
|
|
13
|
+
TabServiceDetails.Transfer = Transfer;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
.details-service__layout {
|
|
2
|
+
@apply grid gap-y-8;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.details-service__layout-flex {
|
|
6
|
+
@apply flex gap-x-8;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.details-service__layout-flex-images {
|
|
10
|
+
@apply space-y-4;
|
|
11
|
+
max-width: 300px;
|
|
12
|
+
@media (min-width: 1280px) {
|
|
13
|
+
max-width: 400px;
|
|
14
|
+
}
|
|
15
|
+
figure {
|
|
16
|
+
@apply overflow-hidden;
|
|
17
|
+
flex: 0 0 300px;
|
|
18
|
+
height: 181px;
|
|
19
|
+
border-radius: var(--border-radius-rounded-2xl);
|
|
20
|
+
box-shadow: 0 1px 7px rgba(0, 0, 0, 0.19);
|
|
21
|
+
@media (min-width: 1280px) {
|
|
22
|
+
flex: 0 0 400px;
|
|
23
|
+
height: 241px;
|
|
24
|
+
}
|
|
25
|
+
&.single-image {
|
|
26
|
+
height: 300px;
|
|
27
|
+
@media (min-width: 1280px) {
|
|
28
|
+
height: 400px;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
img {
|
|
33
|
+
object-fit: cover;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.details-service__layout-flex-images-grid {
|
|
38
|
+
@apply grid grid-cols-2 gap-x-4;
|
|
39
|
+
figure {
|
|
40
|
+
height: 107px;
|
|
41
|
+
max-width: 100%;
|
|
42
|
+
@media (min-width: 1280px) {
|
|
43
|
+
max-width: 192px;
|
|
44
|
+
height: 143px;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.details-service__layout-content {
|
|
50
|
+
@apply flex-1;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.details-service__layout-content-body {
|
|
54
|
+
@apply pt-6;
|
|
55
|
+
}
|