@duffel/components 3.1.4 → 3.1.6--canary.1

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.
Files changed (141) hide show
  1. package/README.md +68 -0
  2. package/components/AirlineLogo/AirlineLogo.d.ts +8 -0
  3. package/components/DuffelAncillaries/bags/BaggageSelectionCard.d.ts +6 -5
  4. package/components/DuffelAncillaries/bags/BaggageSelectionController.d.ts +4 -3
  5. package/components/DuffelAncillaries/bags/BaggageSelectionModal.d.ts +6 -5
  6. package/components/DuffelAncillaries/bags/BaggageSelectionModalBody.d.ts +6 -5
  7. package/components/DuffelAncillaries/bags/BaggageSelectionModalBodyPassenger.d.ts +5 -4
  8. package/components/DuffelAncillaries/bags/BaggageSelectionModalFooter.d.ts +3 -2
  9. package/components/DuffelAncillaries/bags/BaggageSelectionModalHeader.d.ts +2 -1
  10. package/components/DuffelAncillaries/bags/IncludedBaggageBanner.d.ts +2 -1
  11. package/components/DuffelAncillaries/cancel_for_any_reason/CfarSelectionCard.d.ts +5 -4
  12. package/components/DuffelAncillaries/cancel_for_any_reason/CfarSelectionModal.d.ts +6 -5
  13. package/components/DuffelAncillaries/cancel_for_any_reason/CfarSelectionModalBody.d.ts +3 -2
  14. package/components/DuffelAncillaries/cancel_for_any_reason/CfarSelectionModalFooter.d.ts +5 -4
  15. package/components/DuffelAncillaries/seats/Amenity.d.ts +2 -1
  16. package/components/DuffelAncillaries/seats/Element.d.ts +5 -4
  17. package/components/DuffelAncillaries/seats/Legend.d.ts +2 -1
  18. package/components/DuffelAncillaries/seats/Row.d.ts +5 -4
  19. package/components/DuffelAncillaries/seats/RowSection.d.ts +5 -4
  20. package/components/DuffelAncillaries/seats/SeatElement.d.ts +5 -4
  21. package/components/DuffelAncillaries/seats/SeatInfo.d.ts +2 -1
  22. package/components/DuffelAncillaries/seats/SeatMap.d.ts +5 -4
  23. package/components/DuffelAncillaries/seats/SeatSelectionCard.d.ts +6 -6
  24. package/components/DuffelAncillaries/seats/SeatSelectionModal.d.ts +8 -6
  25. package/components/DuffelAncillaries/seats/SeatSelectionModalFooter.d.ts +3 -3
  26. package/components/DuffelAncillaries/seats/SeatSelectionModalHeader.d.ts +2 -1
  27. package/components/DuffelAncillaries/seats/SeatUnavailable.d.ts +2 -1
  28. package/components/DuffelCardForm/DuffelCardForm.d.ts +16 -0
  29. package/components/DuffelCardForm/DuffelCardFormCustomElement.d.ts +11 -0
  30. package/components/OfferSlice/OfferSlice.d.ts +10 -0
  31. package/components/OfferSlice/OfferSliceDetailItem.d.ts +7 -0
  32. package/components/OfferSlice/OfferSliceDetailLayoverItem.d.ts +8 -0
  33. package/components/OfferSlice/OfferSliceDetailTravelItem.d.ts +9 -0
  34. package/components/OfferSlice/lib/getHighlightStyles.d.ts +7 -0
  35. package/components/shared/HSpace.d.ts +14 -0
  36. package/components/shared/Icon.d.ts +1 -0
  37. package/components/shared/VSpace.d.ts +14 -0
  38. package/custom-elements.d.ts +1 -0
  39. package/fixtures/passengers/mock_passengers.d.ts +4 -0
  40. package/index.d.ts +1 -0
  41. package/lib/colors.d.ts +23 -0
  42. package/lib/compileCreateOrderPayload.d.ts +7 -8
  43. package/lib/convertDurationToString.d.ts +1 -0
  44. package/lib/fetchFromFixtures.d.ts +1 -2
  45. package/lib/formatAvailableServices.d.ts +1 -1
  46. package/lib/formatSeatMaps.d.ts +1 -1
  47. package/lib/getAirlinesText.d.ts +2 -0
  48. package/lib/getBaggageServiceDescription.d.ts +1 -1
  49. package/lib/getCabinsForSegmentAndDeck.d.ts +3 -2
  50. package/lib/getCarriers.d.ts +6 -0
  51. package/lib/getCurrencyForSeatMaps.d.ts +1 -1
  52. package/lib/getCurrencyForServices.d.ts +1 -1
  53. package/lib/getDateObject.d.ts +10 -0
  54. package/lib/getDateString.d.ts +73 -0
  55. package/lib/getDayDiff.d.ts +5 -0
  56. package/lib/getDurationString.d.ts +1 -0
  57. package/lib/getFareBrandName.d.ts +2 -0
  58. package/lib/getFirstSeatElementMatchingCriteria.d.ts +2 -1
  59. package/lib/getLayoverOriginDestinationKey.d.ts +1 -0
  60. package/lib/getPassengerBySegmentList.d.ts +3 -2
  61. package/lib/getPassengerMapById.d.ts +4 -3
  62. package/lib/getPassengerName.d.ts +2 -3
  63. package/lib/getRowNumber.d.ts +1 -1
  64. package/lib/getSegmentDates.d.ts +5 -0
  65. package/lib/getSegmentFlightNumber.d.ts +2 -0
  66. package/lib/getSegmentList.d.ts +2 -1
  67. package/lib/getServicePriceMapById.d.ts +2 -1
  68. package/lib/getSliceDetails.d.ts +3 -0
  69. package/lib/getSymbols.d.ts +1 -1
  70. package/lib/getTimeString.d.ts +1 -0
  71. package/lib/getTotalAmountForServices.d.ts +3 -5
  72. package/lib/getTotalQuantity.d.ts +2 -2
  73. package/lib/getTravelItem.d.ts +3 -0
  74. package/lib/hasService.d.ts +2 -2
  75. package/lib/hasServiceOfSameMetadataTypeAlreadyBeenSelected.d.ts +3 -3
  76. package/lib/hasWings.d.ts +1 -1
  77. package/lib/isBaggageService.d.ts +3 -2
  78. package/lib/isCancelForAnyReasonService.d.ts +3 -2
  79. package/lib/isFixtureOfferId.d.ts +1 -1
  80. package/lib/isISO8601Duration.d.ts +2 -0
  81. package/lib/isPayloadComplete.d.ts +3 -2
  82. package/lib/isSeatElement.d.ts +2 -1
  83. package/lib/isValidDateString.d.ts +6 -0
  84. package/lib/offerIsExpired.d.ts +1 -1
  85. package/lib/retrieveOffer.d.ts +2 -1
  86. package/lib/retrieveSeatMaps.d.ts +2 -1
  87. package/lib/toUTCDate.d.ts +1 -0
  88. package/package.json +3 -4
  89. package/stories/AirlineLogo.stories.d.ts +4 -0
  90. package/stories/BaggageSelectionModalHeader.stories.d.ts +6 -0
  91. package/stories/Button.stories.d.ts +15 -0
  92. package/stories/DuffelAncillaries.stories.d.ts +18 -0
  93. package/stories/DuffelCardForm.stories.d.ts +8 -0
  94. package/stories/DuffelPayments.stories.d.ts +7 -0
  95. package/stories/Icon.stories.d.ts +4 -0
  96. package/stories/IconButton.stories.d.ts +8 -0
  97. package/stories/OfferSlice.stories.d.ts +5 -0
  98. package/stories/PlacesLookup.stories.d.ts +4 -0
  99. package/tests/components/DuffelAncillaries.test.d.ts +1 -0
  100. package/tests/lib/convertDurationToString.test.d.ts +1 -0
  101. package/tests/lib/createPriceFormatters.test.d.ts +1 -0
  102. package/tests/lib/formatAvailableServices.test.d.ts +1 -0
  103. package/tests/lib/formatSeatMaps.test.d.ts +1 -0
  104. package/tests/lib/getAirlinesText.test.d.ts +1 -0
  105. package/tests/lib/getCarriers.test.d.ts +1 -0
  106. package/tests/lib/getCurrencyForServices.test.d.ts +1 -0
  107. package/tests/lib/getDateObject.test.d.ts +1 -0
  108. package/tests/lib/getDateString.spec.d.ts +1 -0
  109. package/tests/lib/getDayDiff.test.d.ts +1 -0
  110. package/tests/lib/getDurationString.test.d.ts +1 -0
  111. package/tests/lib/getFareBrandName.test.d.ts +1 -0
  112. package/tests/lib/getLayoverOriginDestinationKey.test.d.ts +1 -0
  113. package/tests/lib/getSegmentDates.test.d.ts +1 -0
  114. package/tests/lib/getSegmentFlightNumber.test.d.ts +1 -0
  115. package/tests/lib/getSliceDetails.test.d.ts +1 -0
  116. package/tests/lib/getTimeString.test.d.ts +1 -0
  117. package/tests/lib/getTravelItem.test.d.ts +1 -0
  118. package/tests/lib/hasServiceOfSameMetadataTypeAlreadyBeenSelected.test.d.ts +1 -0
  119. package/tests/lib/isValidDateString.test.d.ts +1 -0
  120. package/tests/lib/logging.test.d.ts +1 -0
  121. package/tests/lib/moneyStringFormatter.test.d.ts +1 -0
  122. package/tests/lib/toUTCDate.test.d.ts +1 -0
  123. package/tests/lib/validateProps.test.d.ts +5 -0
  124. package/tsconfig.tsbuildinfo +1 -1
  125. package/types/DuffelAncillariesProps.d.ts +39 -9
  126. package/types/TravelDetails.d.ts +77 -0
  127. package/types/getSegmentDates.d.ts +1 -0
  128. package/types/index.d.ts +1 -9
  129. package/custom-elements.js +0 -40
  130. package/custom-elements.js.map +0 -7
  131. package/index.js +0 -40
  132. package/index.js.map +0 -7
  133. package/types/Aircraft.d.ts +0 -14
  134. package/types/Airline.d.ts +0 -14
  135. package/types/Airport.d.ts +0 -44
  136. package/types/City.d.ts +0 -18
  137. package/types/CreateOrderPayload.d.ts +0 -72
  138. package/types/Offer.d.ts +0 -711
  139. package/types/Order.d.ts +0 -8
  140. package/types/Place.d.ts +0 -8
  141. package/types/SeatMap.d.ts +0 -190
package/README.md ADDED
@@ -0,0 +1,68 @@
1
+ # @duffel/components
2
+
3
+ This package is a component library to help you build your travel product using the [Duffel API](https://duffel.com/docs).
4
+
5
+ ## Get started
6
+
7
+ ### Installing
8
+
9
+ ```sh
10
+ yarn add @duffel/components
11
+ # -- or --
12
+ npm i @duffel/components
13
+ ```
14
+
15
+ ### (alternative) Load from CDN:
16
+
17
+ ```html
18
+ <script src="https://assets.duffel.com/components/VERSION/duffel-ancillaries.js"></script>
19
+ <script src="https://assets.duffel.com/components/VERSION/duffel-payments.js"></script>
20
+ ```
21
+
22
+ ## How do I integrate this into my website?
23
+
24
+ 1. Please start by reading our integration guide on https://duffel.com/docs/guides/ancillaries-component
25
+
26
+ ## Integration examples
27
+
28
+ 1. **client-side** | This example loads a local version of the components using a `script` tag. It uses a fixture for the offer and seat maps.
29
+
30
+ - [Find it on src/examples/client-side](src/examples/client-side)
31
+
32
+ 2. **full-stack** | This example loads a local version of the components using a `script` tag. It will search and retrieve an offer from the Duffel API and render the ancillaries component custom element with its `offer_id` and `client_key`. As soon as a service modal is closed it will create a test order with the given payload.
33
+
34
+ - [Find it on src/examples/full-stack](src/examples/full-stack)
35
+
36
+ 3. **just-typescript** | This example imports a local version of `@duffel/components` and renders the custom element with an offer fixture once the page loads.
37
+
38
+ - [Find it on src/examples/just-typescript](src/examples/just-typescript)
39
+
40
+ 4. **react-app** | This example imports a local version of `@duffel/components` and renders the a react element with an offer fixture.
41
+
42
+ - [Find it on src/examples/react-app](src/examples/react-app)
43
+
44
+ 5. **payments-custom-element** | This example demonstrates the use of the payments component loaded through a script tag
45
+
46
+ - [Find it on src/examples/payments-custom-element](src/examples/payments-custom-element)
47
+
48
+ 6. **payments-just-typescript** | This example imports a local version of `@duffel/components` and renders the payments custom element with a fixture of the payment intent.
49
+
50
+ - [Find it on src/examples/payments-just-typescript](src/examples/payments-just-typescript)
51
+
52
+ 7. **next** | This example imports and renders `@duffel/components` into a `next.js` project.
53
+
54
+ - [Find it on src/examples/payments-just-typescript](src/examples/next)
55
+
56
+ ## What components are available?
57
+
58
+ ### Ancillaries component
59
+
60
+ The ancillaries component allows your customers to add ancillaries to their order. It's simple to add to your website and can be customised to fit your brand. This component is avaiable through npm and our cdn.
61
+
62
+ - [Find live demo on codesandbox.io&nbsp;&nbsp;↗](https://codesandbox.io/s/duffel-ancillaries-example-1nxuu7)
63
+
64
+ ### Payments component
65
+
66
+ The payments component provides a [PCI-compliant](https://help.duffel.com/hc/en-gb/articles/4409049543058) way for you to collect card payments for online bookings from your customers. To learn more about how to work with Duffel payments please visit the [Collecting customer card payments guide](https://duffel.com/docs/guides/collecting-customer-card-payments).
67
+
68
+ #### more coming soon...
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ interface AirlineLogoProps {
3
+ name: string;
4
+ iataCode: string | null;
5
+ size?: number;
6
+ }
7
+ export declare const AirlineLogo: React.FC<AirlineLogoProps>;
8
+ export {};
@@ -1,11 +1,12 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import React from "react";
2
- import { CreateOrderPayload, CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
3
- import { Offer } from "../../../types/Offer";
3
+ import { CreateOrder, CreateOrderService, Offer } from "@duffel/api/types";
4
+ import { WithServiceInformation } from "src/types";
4
5
  export interface BaggageSelectionCardProps {
5
6
  isLoading: boolean;
6
7
  offer?: Offer;
7
- passengers: CreateOrderPayload["passengers"];
8
- selectedServices: CreateOrderPayloadServices;
9
- setSelectedServices: (selectedServices: CreateOrderPayloadServices) => void;
8
+ passengers: CreateOrder["passengers"];
9
+ selectedServices: WithServiceInformation<CreateOrderService>[];
10
+ setSelectedServices: (selectedServices: WithServiceInformation<CreateOrderService>[]) => void;
10
11
  }
11
12
  export declare const BaggageSelectionCard: React.FC<BaggageSelectionCardProps>;
@@ -1,11 +1,12 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { CreateOrderService, OfferAvailableServiceBaggage } from "@duffel/api/types";
1
3
  import React from "react";
2
- import { CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
3
- import { OfferAvailableServiceBaggage } from "../../../types/Offer";
4
+ import { WithServiceInformation } from "src/types";
4
5
  interface BaggageSelectionControllerProps {
5
6
  segmentId: string;
6
7
  passengerId: string;
7
8
  availableService: OfferAvailableServiceBaggage;
8
- selectedServices: CreateOrderPayloadServices;
9
+ selectedServices: WithServiceInformation<CreateOrderService>[];
9
10
  quantity: number;
10
11
  onQuantityChanged: (quantity: number) => void;
11
12
  }
@@ -1,11 +1,12 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import React from "react";
2
- import { CreateOrderPayload, CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
3
- import { Offer } from "../../../types/Offer";
3
+ import { CreateOrder, CreateOrderService, Offer } from "@duffel/api/types";
4
+ import { WithServiceInformation } from "src/types";
4
5
  export interface BaggageSelectionModalProps {
5
6
  isOpen: boolean;
6
7
  offer?: Offer;
7
- passengers: CreateOrderPayload["passengers"];
8
- selectedServices: CreateOrderPayloadServices;
9
- onClose: (selectedServices: CreateOrderPayloadServices) => void;
8
+ passengers: CreateOrder["passengers"];
9
+ selectedServices: WithServiceInformation<CreateOrderService>[];
10
+ onClose: (selectedServices: WithServiceInformation<CreateOrderService>[]) => void;
10
11
  }
11
12
  export declare const BaggageSelectionModal: React.FC<BaggageSelectionModalProps>;
@@ -1,11 +1,12 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import React from "react";
2
- import { CreateOrderPayloadPassenger, CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
3
- import { Offer, OfferSliceSegment } from "../../../types/Offer";
3
+ import { CreateOrderPassenger, CreateOrderService, Offer, OfferSliceSegment } from "@duffel/api/types";
4
+ import { WithServiceInformation } from "src/types";
4
5
  export interface BaggageSelectionModalBodyProps {
5
6
  offer: Offer;
6
7
  segment: OfferSliceSegment;
7
- passengersById: Record<CreateOrderPayloadPassenger["id"], CreateOrderPayloadPassenger>;
8
- selectedServices: CreateOrderPayloadServices;
9
- setSelectedServices: (selectedServices: CreateOrderPayloadServices) => void;
8
+ passengersById: Record<CreateOrderPassenger["id"], CreateOrderPassenger>;
9
+ selectedServices: WithServiceInformation<CreateOrderService>[];
10
+ setSelectedServices: (selectedServices: WithServiceInformation<CreateOrderService>[]) => void;
10
11
  }
11
12
  export declare const BaggageSelectionModalBody: React.FC<BaggageSelectionModalBodyProps>;
@@ -1,13 +1,14 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { CreateOrderService, OfferAvailableServiceBaggage, OfferSliceSegmentPassengerBaggage } from "@duffel/api/types";
1
3
  import React from "react";
2
- import { CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
3
- import { OfferAvailableServiceBaggage, OfferSliceSegmentPassengerBaggage } from "../../../types/Offer";
4
+ import { WithServiceInformation } from "src/types";
4
5
  export interface BaggageSelectionModalBodyPassengerProps {
5
6
  segmentId: string;
6
7
  passengerId: string;
7
8
  passengerName: string;
8
9
  includedBaggage: OfferSliceSegmentPassengerBaggage[];
9
10
  passengerServicesForSegment: OfferAvailableServiceBaggage[];
10
- selectedServices: CreateOrderPayloadServices;
11
- setSelectedServices: (selectedServices: CreateOrderPayloadServices) => void;
11
+ selectedServices: WithServiceInformation<CreateOrderService>[];
12
+ setSelectedServices: (selectedServices: WithServiceInformation<CreateOrderService>[]) => void;
12
13
  }
13
14
  export declare const BaggageSelectionModalBodyPassenger: React.FC<BaggageSelectionModalBodyPassengerProps>;
@@ -1,9 +1,10 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { CreateOrder } from "@duffel/api/types";
1
3
  import { ServicePriceMapById } from "@lib/getServicePriceMapById";
2
4
  import React from "react";
3
- import { CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
4
5
  export interface BaggageSelectionModalFooterProps {
5
6
  currency: string;
6
- selectedServices: CreateOrderPayloadServices;
7
+ selectedServices: CreateOrder["services"];
7
8
  servicePrices: ServicePriceMapById;
8
9
  isFirstSegment: boolean;
9
10
  isLastSegment: boolean;
@@ -1,5 +1,6 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { OfferSliceSegment } from "@duffel/api/types";
1
3
  import React from "react";
2
- import { OfferSliceSegment } from "../../../types/Offer";
3
4
  export interface BaggageSelectionModalHeaderProps {
4
5
  segmentCount: number;
5
6
  currentSegmentIndex: number;
@@ -1,5 +1,6 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { OfferSliceSegmentPassengerBaggage } from "@duffel/api/types";
1
3
  import React from "react";
2
- import { OfferSliceSegmentPassengerBaggage } from "../../../types/Offer";
3
4
  interface IncludedBaggageBannerProps {
4
5
  includedBaggage: OfferSliceSegmentPassengerBaggage[];
5
6
  }
@@ -1,10 +1,11 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { CreateOrderService, Offer } from "@duffel/api/types";
1
3
  import React from "react";
2
- import { CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
3
- import { Offer } from "../../../types/Offer";
4
+ import { WithServiceInformation } from "src/types";
4
5
  export interface CfarSelectionCardProps {
5
6
  isLoading: boolean;
6
7
  offer?: Offer;
7
- selectedServices: CreateOrderPayloadServices;
8
- setSelectedServices: (selectedServices: CreateOrderPayloadServices) => void;
8
+ selectedServices: WithServiceInformation<CreateOrderService>[];
9
+ setSelectedServices: (selectedServices: WithServiceInformation<CreateOrderService>[]) => void;
9
10
  }
10
11
  export declare const CfarSelectionCard: React.FC<CfarSelectionCardProps>;
@@ -1,11 +1,12 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { CreateOrderService, Offer, OfferAvailableServiceCFAR } from "@duffel/api/types";
1
3
  import React from "react";
2
- import { CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
3
- import { Offer, OfferAvailableServiceCancelForAnyReason } from "../../../types/Offer";
4
+ import { WithServiceInformation } from "src/types";
4
5
  export interface CfarSelectionModalProps {
5
6
  isOpen: boolean;
6
7
  offerCurrency?: Offer["base_currency"];
7
- service?: OfferAvailableServiceCancelForAnyReason;
8
- selectedServices: CreateOrderPayloadServices;
9
- onClose: (selectedServices: CreateOrderPayloadServices) => void;
8
+ service?: OfferAvailableServiceCFAR;
9
+ selectedServices: WithServiceInformation<CreateOrderService>[];
10
+ onClose: (selectedServices: WithServiceInformation<CreateOrderService>[]) => void;
10
11
  }
11
12
  export declare const CfarSelectionModal: React.FC<CfarSelectionModalProps>;
@@ -1,7 +1,8 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import React from "react";
2
- import { Offer, OfferAvailableServiceCancelForAnyReason } from "../../../types/Offer";
3
+ import { Offer, OfferAvailableServiceCFAR } from "@duffel/api/types";
3
4
  export interface CfarSelectionModalBodyProps {
4
5
  offerCurrency: Offer["base_currency"];
5
- service: OfferAvailableServiceCancelForAnyReason;
6
+ service: OfferAvailableServiceCFAR;
6
7
  }
7
8
  export declare const CfarSelectionModalBody: React.FC<CfarSelectionModalBodyProps>;
@@ -1,9 +1,10 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { CreateOrderService, OfferAvailableServiceCFAR } from "@duffel/api/types";
1
3
  import React from "react";
2
- import { CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
3
- import { OfferAvailableServiceCancelForAnyReason } from "../../../types/Offer";
4
+ import { WithServiceInformation } from "src/types";
4
5
  export interface CfarSelectionModalFooterProps {
5
- service: OfferAvailableServiceCancelForAnyReason;
6
- selectedServices: CreateOrderPayloadServices;
6
+ service: OfferAvailableServiceCFAR;
7
+ selectedServices: WithServiceInformation<CreateOrderService>[];
7
8
  onAddCfarService: () => void;
8
9
  onRemoveCfarService: () => void;
9
10
  onClose: () => void;
@@ -1,5 +1,6 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { SeatMapCabinRowSectionElementAmenity } from "@duffel/api/types";
1
3
  import * as React from "react";
2
- import { SeatMapCabinRowSectionElementAmenity } from "../../../types/SeatMap";
3
4
  export interface AmenityProps {
4
5
  type: SeatMapCabinRowSectionElementAmenity;
5
6
  }
@@ -1,12 +1,13 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import * as React from "react";
2
- import { CreateOrderPayloadSeatService } from "../../../types/CreateOrderPayload";
3
- import { SeatMapCabinRowSectionElement } from "../../../types/SeatMap";
3
+ import { CreateOrderService, SeatMapCabinRowSectionElement } from "@duffel/api/types";
4
+ import { WithServiceInformation } from "src/types";
4
5
  interface ElementProps {
5
6
  sectionIndex: number;
6
7
  elementIndex: number;
7
8
  element: SeatMapCabinRowSectionElement;
8
- selectedServicesMap: Record<string, CreateOrderPayloadSeatService>;
9
- onSeatToggled: (seatService: CreateOrderPayloadSeatService) => void;
9
+ selectedServicesMap: Record<string, WithServiceInformation<CreateOrderService>>;
10
+ onSeatToggled: (seatService: WithServiceInformation<CreateOrderService>) => void;
10
11
  currentPassengerId: string;
11
12
  currentSegmentId: string;
12
13
  currentPassengerName: string;
@@ -1,5 +1,6 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { SeatMapCabinRowSectionElementAmenity } from "@duffel/api/types";
1
3
  import * as React from "react";
2
- import { SeatMapCabinRowSectionElementAmenity } from "../../../types/SeatMap";
3
4
  export interface LegendProps {
4
5
  /**
5
6
  * The set of additional symbols to display
@@ -1,11 +1,12 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import * as React from "react";
2
- import { CreateOrderPayloadSeatService } from "../../../types/CreateOrderPayload";
3
- import { SeatMapCabinRow } from "../../../types/SeatMap";
3
+ import { CreateOrderService, SeatMapCabinRow } from "@duffel/api/types";
4
+ import { WithServiceInformation } from "src/types";
4
5
  export interface RowProps {
5
6
  row: SeatMapCabinRow;
6
7
  hasWings: boolean;
7
- selectedServicesMap: Record<string, CreateOrderPayloadSeatService>;
8
- onSeatToggled: (seatService: CreateOrderPayloadSeatService) => void;
8
+ selectedServicesMap: Record<string, WithServiceInformation<CreateOrderService>>;
9
+ onSeatToggled: (seatService: WithServiceInformation<CreateOrderService>) => void;
9
10
  currentPassengerId: string;
10
11
  currentPassengerName: string;
11
12
  currentSegmentId: string;
@@ -1,14 +1,15 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import * as React from "react";
2
- import { CreateOrderPayloadSeatService } from "../../../types/CreateOrderPayload";
3
- import { SeatMapCabinRow, SeatMapCabinRowSection } from "../../../types/SeatMap";
3
+ import { CreateOrderService, SeatMapCabinRow, SeatMapCabinRowSection } from "@duffel/api/types";
4
+ import { WithServiceInformation } from "src/types";
4
5
  interface RowSectionProps {
5
6
  row: SeatMapCabinRow;
6
7
  rowNumber: string | null;
7
8
  hasWings: boolean;
8
9
  section: SeatMapCabinRowSection;
9
10
  sectionIndex: number;
10
- selectedServicesMap: Record<string, CreateOrderPayloadSeatService>;
11
- onSeatToggled: (seatService: CreateOrderPayloadSeatService) => void;
11
+ selectedServicesMap: Record<string, WithServiceInformation<CreateOrderService>>;
12
+ onSeatToggled: (seatService: WithServiceInformation<CreateOrderService>) => void;
12
13
  currentPassengerId: string;
13
14
  currentPassengerName: string;
14
15
  currentSegmentId: string;
@@ -1,13 +1,14 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { CreateOrderService, SeatMapCabinRowSectionElementSeat } from "@duffel/api/types";
1
3
  import * as React from "react";
2
- import { CreateOrderPayloadSeatService } from "../../../types/CreateOrderPayload";
3
- import { SeatMapCabinRowSectionElementSeat } from "../../../types/SeatMap";
4
+ import { WithServiceInformation } from "src/types";
4
5
  interface SeatElementProps {
5
6
  element: SeatMapCabinRowSectionElementSeat;
6
7
  currentSegmentId: string;
7
8
  currentPassengerId: string;
8
9
  currentPassengerName: string;
9
- onSeatToggled: (seatService: CreateOrderPayloadSeatService) => void;
10
- selectedServicesMap: Record<string, CreateOrderPayloadSeatService>;
10
+ onSeatToggled: (seatService: WithServiceInformation<CreateOrderService>) => void;
11
+ selectedServicesMap: Record<string, WithServiceInformation<CreateOrderService>>;
11
12
  }
12
13
  export declare const SeatElement: React.FC<SeatElementProps>;
13
14
  export {};
@@ -1,5 +1,6 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { SeatMapCabinRowSectionAvailableService, SeatMapCabinRowSectionElementSeat } from "@duffel/api/types";
1
3
  import * as React from "react";
2
- import { SeatMapCabinRowSectionAvailableService, SeatMapCabinRowSectionElementSeat } from "../../../types/SeatMap";
3
4
  export interface SeatInfoProps {
4
5
  seat: SeatMapCabinRowSectionElementSeat | null;
5
6
  service: SeatMapCabinRowSectionAvailableService | undefined;
@@ -1,10 +1,11 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import * as React from "react";
2
- import { CreateOrderPayloadSeatService } from "../../../types/CreateOrderPayload";
3
- import { SeatMap as SeatMapType } from "../../../types/SeatMap";
3
+ import { CreateOrderService, SeatMap as SeatMapType } from "@duffel/api/types";
4
+ import { WithServiceInformation } from "src/types";
4
5
  export interface SeatMapProps {
5
6
  seatMap: SeatMapType;
6
- selectedServicesMap: Record<string, CreateOrderPayloadSeatService>;
7
- onSeatToggled: (seatService: CreateOrderPayloadSeatService) => void;
7
+ selectedServicesMap: Record<string, WithServiceInformation<CreateOrderService>>;
8
+ onSeatToggled: (seatService: WithServiceInformation<CreateOrderService>) => void;
8
9
  currentPassengerId: string;
9
10
  currentPassengerName: string;
10
11
  currentSegmentId: string;
@@ -1,13 +1,13 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import React from "react";
2
- import { CreateOrderPayload, CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
3
- import { Offer } from "../../../types/Offer";
4
- import { SeatMap } from "../../../types/SeatMap";
3
+ import { CreateOrder, CreateOrderService, Offer, SeatMap } from "@duffel/api/types";
4
+ import { WithServiceInformation } from "src/types";
5
5
  export interface SeatSelectionCardProps {
6
6
  isLoading: boolean;
7
7
  offer?: Offer;
8
8
  seatMaps?: SeatMap[];
9
- passengers: CreateOrderPayload["passengers"];
10
- selectedServices: CreateOrderPayloadServices;
11
- setSelectedServices: (selectedServices: CreateOrderPayloadServices) => void;
9
+ passengers: CreateOrder["passengers"];
10
+ selectedServices: WithServiceInformation<CreateOrderService>[];
11
+ setSelectedServices: (selectedServices: WithServiceInformation<CreateOrderService>[]) => void;
12
12
  }
13
13
  export declare const SeatSelectionCard: React.FC<SeatSelectionCardProps>;
@@ -1,13 +1,15 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import React from "react";
2
- import { CreateOrderPayload, CreateOrderPayloadSeatService } from "../../../types/CreateOrderPayload";
3
- import { Offer } from "../../../types/Offer";
4
- import { SeatMap } from "../../../types/SeatMap";
3
+ import { CreateOrder, CreateOrderService, Offer, SeatMap } from "@duffel/api/types";
4
+ import { WithServiceInformation } from "src/types";
5
+ type CreateOrderServiceWithInformation = WithServiceInformation<CreateOrderService>;
5
6
  export interface SeatSelectionModalProps {
6
7
  isOpen: boolean;
7
8
  offer?: Offer;
8
9
  seatMaps?: SeatMap[];
9
- selectedServices: CreateOrderPayloadSeatService[];
10
- passengers: CreateOrderPayload["passengers"];
11
- onClose: (selectedServices: CreateOrderPayloadSeatService[]) => void;
10
+ selectedServices: CreateOrderServiceWithInformation[];
11
+ passengers: CreateOrder["passengers"];
12
+ onClose: (selectedServices: CreateOrderServiceWithInformation[]) => void;
12
13
  }
13
14
  export declare const SeatSelectionModal: React.FC<SeatSelectionModalProps>;
15
+ export {};
@@ -1,10 +1,10 @@
1
+ /// <reference types="@duffel/api" />
1
2
  import { ServicePriceMapById } from "@lib/getServicePriceMapById";
2
3
  import React from "react";
3
- import { CreateOrderPayloadServices } from "../../../types/CreateOrderPayload";
4
- import { SeatMap } from "../../../types/SeatMap";
4
+ import { CreateOrder, SeatMap } from "@duffel/api/types";
5
5
  export interface SeatSelectionModalFooterProps {
6
6
  currency: string;
7
- selectedServices: CreateOrderPayloadServices;
7
+ selectedServices: CreateOrder["services"];
8
8
  servicePrices: ServicePriceMapById;
9
9
  isFirstSegment: boolean;
10
10
  isLastSegment: boolean;
@@ -1,5 +1,6 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { OfferSliceSegment } from "@duffel/api/types";
1
3
  import React from "react";
2
- import { OfferSliceSegment } from "../../../types/Offer";
3
4
  export interface SeatSelectionModalHeaderProps {
4
5
  segmentAndPassengerPermutationsCount: number;
5
6
  currentSegment: OfferSliceSegment;
@@ -1,5 +1,6 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { SeatMapCabinRowSectionElementSeat } from "@duffel/api/types";
1
3
  import * as React from "react";
2
- import { SeatMapCabinRowSectionElementSeat } from "../../../types/SeatMap";
3
4
  export declare const SeatUnavailable: React.FC<{
4
5
  seat: SeatMapCabinRowSectionElementSeat;
5
6
  }>;
@@ -0,0 +1,16 @@
1
+ import { CustomStyles } from "src/types";
2
+ import * as React from "react";
3
+ export interface DuffelCardFormProps {
4
+ clientKey: string;
5
+ styles?: CustomStyles & {
6
+ stylesheetUrl?: string;
7
+ };
8
+ submitButtonLabel?: string;
9
+ onSubmit?: (data: TokenisedCardData) => void;
10
+ }
11
+ export declare const DuffelCardForm: React.FC<DuffelCardFormProps>;
12
+ interface TokenisedCardData {
13
+ id: string;
14
+ live_mode: false;
15
+ }
16
+ export {};
@@ -0,0 +1,11 @@
1
+ import { DuffelCardFormProps } from "./DuffelCardForm";
2
+ declare global {
3
+ namespace JSX {
4
+ interface IntrinsicElements {
5
+ "duffel-card-form": React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
6
+ }
7
+ }
8
+ }
9
+ type DuffelCardFormCustomElementRenderArguments = DuffelCardFormProps;
10
+ export declare function renderDuffelCardFormCustomElement(props: DuffelCardFormCustomElementRenderArguments): void;
11
+ export {};
@@ -0,0 +1,10 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { OfferSlice as OfferSliceType } from "@duffel/api/types";
3
+ export interface OfferSliceProps {
4
+ slice: OfferSliceType;
5
+ showFullDate?: boolean;
6
+ showFlightNumbers?: boolean;
7
+ hideFareBrand?: boolean;
8
+ highlightAll?: boolean;
9
+ }
10
+ export declare const OfferSlice: React.FC<OfferSliceProps>;
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ import { SliceItem } from "src/types/TravelDetails";
3
+ interface OfferSliceDetailItemProps {
4
+ item: SliceItem;
5
+ }
6
+ export declare const OfferSliceDetailItem: React.FC<OfferSliceDetailItemProps>;
7
+ export {};
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import { LayoverDetails, SliceDetailItemChangeStatus } from "src/types/TravelDetails";
3
+ export interface SliceDetailsLayoverItemProps {
4
+ layoverDetails: LayoverDetails;
5
+ changeStatus?: SliceDetailItemChangeStatus;
6
+ className?: string;
7
+ }
8
+ export declare const OfferSliceDetailLayoverItem: React.FC<SliceDetailsLayoverItemProps>;
@@ -0,0 +1,9 @@
1
+ import { SliceDetailItemChangeStatus, TravelDetails } from "src/types/TravelDetails";
2
+ export interface SliceDetailsTravelItemProps {
3
+ changeStatus?: SliceDetailItemChangeStatus;
4
+ travelDetails: TravelDetails<"offer" | "order">;
5
+ highlightAll?: boolean;
6
+ keysToHighlight?: string[];
7
+ }
8
+ export declare const getTerminalString: (terminal?: string | null) => string;
9
+ export declare const OfferSliceDetailTravelItem: React.FC<SliceDetailsTravelItemProps>;
@@ -0,0 +1,7 @@
1
+ import { Color } from "@lib/colors";
2
+ export declare const getHighlightStyles: (highlightAll: boolean, key?: string, keysToHighlight?: string[], highlightColor?: Color) => {
3
+ className?: string | undefined;
4
+ style?: {
5
+ backgroundColor: string;
6
+ } | undefined;
7
+ };
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ type DivProps = JSX.IntrinsicElements["div"];
3
+ export interface HSpaceProps extends DivProps {
4
+ /**
5
+ * A space-delimited list of class names to pass along to a child element.
6
+ */
7
+ className?: string;
8
+ /**
9
+ * The vertical spacing between each child element
10
+ */
11
+ space: 0 | 4 | 8 | 16;
12
+ }
13
+ export declare const HSpace: React.FC<HSpaceProps>;
14
+ export {};
@@ -30,6 +30,7 @@ export declare const ICON_MAP: {
30
30
  seat_paid_indicator: import("react/jsx-runtime").JSX.Element;
31
31
  shield_with_moon: import("react/jsx-runtime").JSX.Element;
32
32
  stairs: import("react/jsx-runtime").JSX.Element;
33
+ warning: import("react/jsx-runtime").JSX.Element;
33
34
  wifi: import("react/jsx-runtime").JSX.Element;
34
35
  };
35
36
  export type IconName = keyof typeof ICON_MAP;
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ type DivProps = JSX.IntrinsicElements["div"];
3
+ export interface VSpaceProps extends DivProps {
4
+ /**
5
+ * A space-delimited list of class names to pass along to a child element.
6
+ */
7
+ className?: string;
8
+ /**
9
+ * The vertical spacing between each child element
10
+ */
11
+ space: 0 | 4 | 8 | 16;
12
+ }
13
+ export declare const VSpace: React.FC<VSpaceProps>;
14
+ export {};
@@ -4,3 +4,4 @@
4
4
  */
5
5
  export { onDuffelAncillariesPayloadReady, renderDuffelAncillariesCustomElement, } from "./components/DuffelAncillaries/DuffelAncillariesCustomElement";
6
6
  export { onDuffelPaymentsFailedPayment, onDuffelPaymentsSuccessfulPayment, renderDuffelPaymentsCustomElement, } from "./components/DuffelPayments/DuffelPaymentsCustomElement";
7
+ export { renderDuffelCardFormCustomElement } from "./components/DuffelCardForm/DuffelCardFormCustomElement";
@@ -0,0 +1,4 @@
1
+ /// <reference types="@duffel/api" />
2
+ import { CreateOrder } from "@duffel/api/types";
3
+ declare const mockPassengers: CreateOrder["passengers"];
4
+ export default mockPassengers;
package/index.d.ts CHANGED
@@ -4,4 +4,5 @@
4
4
  */
5
5
  export * from "./components/DuffelAncillaries/DuffelAncillaries";
6
6
  export * from "./components/DuffelPayments/DuffelPayments";
7
+ export * from "./components/DuffelCardForm/DuffelCardForm";
7
8
  export * from "./types";