@propeller-commerce/propeller-v2-vue-ui 0.3.14

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 (129) hide show
  1. package/CHANGELOG.md +549 -0
  2. package/LICENSE +21 -0
  3. package/MIGRATION.md +178 -0
  4. package/README.md +282 -0
  5. package/STYLING.md +119 -0
  6. package/dist/ProductVideos.vue_vue_type_script_setup_true_lang-BSXOpWBD.js +1706 -0
  7. package/dist/ProductVideos.vue_vue_type_script_setup_true_lang-BSXOpWBD.js.map +1 -0
  8. package/dist/ProductVideos.vue_vue_type_script_setup_true_lang-cfRT3L_k.cjs +1705 -0
  9. package/dist/ProductVideos.vue_vue_type_script_setup_true_lang-cfRT3L_k.cjs.map +1 -0
  10. package/dist/__mocks__/decorators.d.ts +17 -0
  11. package/dist/__mocks__/fixtures.d.ts +43 -0
  12. package/dist/__mocks__/mockServices.d.ts +7 -0
  13. package/dist/components/AccountIconAndMenu.vue.d.ts +152 -0
  14. package/dist/components/ActionCode.vue.d.ts +29 -0
  15. package/dist/components/AddToCart.vue.d.ts +122 -0
  16. package/dist/components/AddToFavorite.vue.d.ts +19 -0
  17. package/dist/components/AddressCard.vue.d.ts +169 -0
  18. package/dist/components/AddressSelector.vue.d.ts +30 -0
  19. package/dist/components/Breadcrumbs.vue.d.ts +69 -0
  20. package/dist/components/CartBonusItems.vue.d.ts +21 -0
  21. package/dist/components/CartCarriers.vue.d.ts +24 -0
  22. package/dist/components/CartIconAndSidebar.vue.d.ts +104 -0
  23. package/dist/components/CartItem.vue.d.ts +178 -0
  24. package/dist/components/CartOverview.vue.d.ts +41 -0
  25. package/dist/components/CartPaymethods.vue.d.ts +23 -0
  26. package/dist/components/CartSummary.vue.d.ts +58 -0
  27. package/dist/components/CategoryDescription.vue.d.ts +29 -0
  28. package/dist/components/CategoryShortDescription.vue.d.ts +18 -0
  29. package/dist/components/ClusterCard.vue.d.ts +251 -0
  30. package/dist/components/ClusterConfigurator.vue.d.ts +41 -0
  31. package/dist/components/ClusterInfo.vue.d.ts +73 -0
  32. package/dist/components/ClusterJsonLd.vue.d.ts +10 -0
  33. package/dist/components/ClusterOptions.vue.d.ts +44 -0
  34. package/dist/components/CompanySwitcher.vue.d.ts +18 -0
  35. package/dist/components/DeliveryDate.vue.d.ts +27 -0
  36. package/dist/components/FavoriteListDetails.vue.d.ts +94 -0
  37. package/dist/components/FavoriteListItem.vue.d.ts +141 -0
  38. package/dist/components/FavoriteLists.vue.d.ts +73 -0
  39. package/dist/components/ForgotPassword.vue.d.ts +35 -0
  40. package/dist/components/GridFilters.vue.d.ts +64 -0
  41. package/dist/components/GridPagination.vue.d.ts +34 -0
  42. package/dist/components/GridTitle.vue.d.ts +22 -0
  43. package/dist/components/GridToolbar.vue.d.ts +117 -0
  44. package/dist/components/ItemListJsonLd.vue.d.ts +10 -0
  45. package/dist/components/ItemStock.vue.d.ts +31 -0
  46. package/dist/components/ItemsOverview.vue.d.ts +40 -0
  47. package/dist/components/LoginForm.vue.d.ts +139 -0
  48. package/dist/components/Menu.vue.d.ts +73 -0
  49. package/dist/components/OrderActions.vue.d.ts +25 -0
  50. package/dist/components/OrderBonusItems.vue.d.ts +19 -0
  51. package/dist/components/OrderItemCard.vue.d.ts +47 -0
  52. package/dist/components/OrderList.vue.d.ts +66 -0
  53. package/dist/components/OrderShipments.vue.d.ts +11 -0
  54. package/dist/components/OrderSummary.vue.d.ts +49 -0
  55. package/dist/components/OrderTotals.vue.d.ts +34 -0
  56. package/dist/components/PriceToggle.vue.d.ts +24 -0
  57. package/dist/components/ProductBulkPrices.vue.d.ts +35 -0
  58. package/dist/components/ProductBundles.vue.d.ts +88 -0
  59. package/dist/components/ProductCard.vue.d.ts +332 -0
  60. package/dist/components/ProductDescription.vue.d.ts +30 -0
  61. package/dist/components/ProductDownloads.vue.d.ts +22 -0
  62. package/dist/components/ProductGallery.vue.d.ts +25 -0
  63. package/dist/components/ProductGrid.vue.d.ts +290 -0
  64. package/dist/components/ProductInfo.vue.d.ts +179 -0
  65. package/dist/components/ProductJsonLd.vue.d.ts +10 -0
  66. package/dist/components/ProductPrice.vue.d.ts +42 -0
  67. package/dist/components/ProductShortDescription.vue.d.ts +18 -0
  68. package/dist/components/ProductSlider.vue.d.ts +176 -0
  69. package/dist/components/ProductSpecifications.vue.d.ts +37 -0
  70. package/dist/components/ProductTabs.vue.d.ts +83 -0
  71. package/dist/components/ProductVideos.vue.d.ts +22 -0
  72. package/dist/components/PropellerProvider.vue.d.ts +40 -0
  73. package/dist/components/PurchaseAuthorizationConfigurator.vue.d.ts +44 -0
  74. package/dist/components/PurchaseAuthorizationRequests.vue.d.ts +50 -0
  75. package/dist/components/QuoteActions.vue.d.ts +22 -0
  76. package/dist/components/RegisterForm.vue.d.ts +87 -0
  77. package/dist/components/SearchBar.vue.d.ts +71 -0
  78. package/dist/components/UserDetails.vue.d.ts +44 -0
  79. package/dist/components/defaults/DefaultProductBadges.vue.d.ts +3 -0
  80. package/dist/components/defaults/DefaultProductImage.vue.d.ts +3 -0
  81. package/dist/components/defaults/DefaultProductSurcharges.vue.d.ts +3 -0
  82. package/dist/composables/shared/usePagination.d.ts +19 -0
  83. package/dist/composables/shared/useServiceFetch.d.ts +9 -0
  84. package/dist/composables/shared/useUserIdentity.d.ts +13 -0
  85. package/dist/composables/shared/utils/cartInit.d.ts +18 -0
  86. package/dist/composables/shared/utils/fetchActiveCart.d.ts +10 -0
  87. package/dist/composables/shared/utils/mergeAnonymousCart.d.ts +12 -0
  88. package/dist/composables/vue/useAddress.d.ts +50 -0
  89. package/dist/composables/vue/useAuth.d.ts +80 -0
  90. package/dist/composables/vue/useCart.d.ts +64 -0
  91. package/dist/composables/vue/useCheckout.d.ts +41 -0
  92. package/dist/composables/vue/useClusterConfigurator.d.ts +26 -0
  93. package/dist/composables/vue/useCompany.d.ts +31 -0
  94. package/dist/composables/vue/useFavorites.d.ts +39 -0
  95. package/dist/composables/vue/useInfraProps.d.ts +27 -0
  96. package/dist/composables/vue/useMenu.d.ts +24 -0
  97. package/dist/composables/vue/useOrders.d.ts +64 -0
  98. package/dist/composables/vue/useProductBundles.d.ts +37 -0
  99. package/dist/composables/vue/useProductInfo.d.ts +33 -0
  100. package/dist/composables/vue/useProductSearch.d.ts +49 -0
  101. package/dist/composables/vue/useProductSlider.d.ts +31 -0
  102. package/dist/composables/vue/useProductSpecs.d.ts +24 -0
  103. package/dist/composables/vue/usePurchaseAuthorization.d.ts +102 -0
  104. package/dist/composables/vue/useResolvedProps.d.ts +42 -0
  105. package/dist/composables/vue/useServices.d.ts +13 -0
  106. package/dist/context/ProductGridContext.d.ts +59 -0
  107. package/dist/context/PropellerContext.d.ts +51 -0
  108. package/dist/index-BN8nyGRL.js +518 -0
  109. package/dist/index-BN8nyGRL.js.map +1 -0
  110. package/dist/index-CrrZsxTR.cjs +517 -0
  111. package/dist/index-CrrZsxTR.cjs.map +1 -0
  112. package/dist/index.cjs +20086 -0
  113. package/dist/index.cjs.map +1 -0
  114. package/dist/index.d.ts +109 -0
  115. package/dist/index.js +20088 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/plugin.d.ts +67 -0
  118. package/dist/pure.cjs +16 -0
  119. package/dist/pure.cjs.map +1 -0
  120. package/dist/pure.d.ts +37 -0
  121. package/dist/pure.js +16 -0
  122. package/dist/pure.js.map +1 -0
  123. package/dist/shared.cjs +50 -0
  124. package/dist/shared.cjs.map +1 -0
  125. package/dist/shared.d.ts +14 -0
  126. package/dist/shared.js +50 -0
  127. package/dist/shared.js.map +1 -0
  128. package/dist/styles.css +2 -0
  129. package/package.json +91 -0
@@ -0,0 +1,176 @@
1
+ import { Component } from 'vue';
2
+ import { Cart, CartMainItem, Cluster, Contact, CrossupsellType, Customer, GraphQLClient, Product } from '@propeller-commerce/propeller-sdk-v2';
3
+ export interface ProductSliderProps {
4
+ /**
5
+ * Propeller SDK GraphQL client.
6
+ * Optional — resolved from the `propellerVue` plugin scope via `useInfraProps`
7
+ * when omitted. An explicit prop still wins.
8
+ */
9
+ graphqlClient?: GraphQLClient;
10
+ /** Pre-loaded products or clusters to display. When provided, skips internal fetching. */
11
+ products?: (Product | Cluster)[];
12
+ /** Product IDs to fetch internally when `products` is not provided */
13
+ productIds?: number[];
14
+ /** Cluster IDs to fetch internally when `products` is not provided */
15
+ clusterIds?: number[];
16
+ /**
17
+ * Cross-upsell types to fetch. When provided, fetches cross-upsells for the given
18
+ * productId/clusterId instead of fetching products by IDs.
19
+ * Values: 'ACCESSORIES' | 'ALTERNATIVES' | 'RELATED' | 'OPTIONS' | 'PARTS'
20
+ */
21
+ crossUpsellTypes?: CrossupsellType[];
22
+ /** Source product ID for cross-upsell lookup. Required when crossUpsellTypes is set. */
23
+ productId?: number;
24
+ /** Source cluster ID for cross-upsell lookup. Required when crossUpsellTypes is set. */
25
+ clusterId?: number;
26
+ /**
27
+ * Language code for API requests and localized content.
28
+ * Optional — resolved from `<PropellerProvider>` scope via `useInfraProps`
29
+ * when omitted. An explicit prop still wins.
30
+ */
31
+ language?: string;
32
+ /** Tax zone for price calculations */
33
+ taxZone?: string;
34
+ /**
35
+ * When true, net price (incl. tax) is the leading price.
36
+ * Forwarded to each ProductCard / ClusterCard.
37
+ */
38
+ includeTax?: boolean;
39
+ /**
40
+ * Controls portal visibility mode.
41
+ * 'open' — AddToCart is shown on product cards.
42
+ * 'semi-closed' — AddToCart is hidden (catalog-only view).
43
+ * Defaults to 'open'.
44
+ */
45
+ portalMode?: string;
46
+ /** Authenticated user for cart operations */
47
+ user?: Contact | Customer | null;
48
+ /**
49
+ * Active company ID from the company switcher.
50
+ * Overrides the user's default company for price calculation in cross-upsell fetches
51
+ * and is forwarded to each embedded ProductCard / AddToCart.
52
+ * Triggers a re-fetch when changed.
53
+ */
54
+ companyId?: number;
55
+ /** Items visible per breakpoint */
56
+ itemsPerView?: {
57
+ mobile?: number;
58
+ tablet?: number;
59
+ desktop?: number;
60
+ };
61
+ /** Slider title displayed above the track */
62
+ title?: string;
63
+ /** Additional CSS class for the outer container */
64
+ containerClassName?: string;
65
+ /**
66
+ * Show the stock / availability widget on each product card.
67
+ * Forwarded to `ProductCard.showStock`.
68
+ * Defaults to false.
69
+ */
70
+ showStock?: boolean;
71
+ /**
72
+ * Show only the availability indicator (Available / Not available) inside the stock widget.
73
+ * Forwarded to `ProductCard.showAvailability`.
74
+ * Defaults to true.
75
+ */
76
+ showAvailability?: boolean;
77
+ /**
78
+ * Label overrides forwarded to the embedded ItemStock component inside each card.
79
+ * Keys: inStock, outOfStock, lowStock, available, notAvailable, pieces
80
+ */
81
+ stockLabels?: Record<string, string>;
82
+ /** Translated labels forwarded to the embedded `<ProductPrice>` display
83
+ * inside each `<ProductCard>`. See `ProductPriceProps.labels` for slugs. */
84
+ priceLabels?: Record<string, string>;
85
+ /** Show a heart-icon favourite toggle on each card. Defaults to false. */
86
+ enableAddFavorite?: boolean;
87
+ /**
88
+ * Called when a favourite is toggled on any card.
89
+ * Receives the full Product or Cluster object and the new favourite state.
90
+ */
91
+ onToggleFavorite?: (item: Product | Cluster, isFavorite: boolean) => void;
92
+ /** Called when a product card is clicked — use for SPA-style routing. */
93
+ onProductClick?: (product: Product) => void;
94
+ /** Called when a cluster card is clicked — use for SPA-style routing. */
95
+ onClusterClick?: (cluster: Cluster) => void;
96
+ /** Validate stock before adding to cart. Defaults to false. */
97
+ stockValidation?: boolean;
98
+ /** Show increment/decrement stepper buttons in AddToCart. Defaults to true. */
99
+ showIncrDecr?: boolean;
100
+ /** ID of an existing cart to add items to. */
101
+ cartId?: string;
102
+ /** Auto-create a cart when none is available. Pair with onCartCreated. */
103
+ createCart?: boolean;
104
+ /** Called after AddToCart creates a new cart internally. */
105
+ onCartCreated?: (cart: Cart) => void;
106
+ /** Called after every successful add-to-cart. Receives the updated cart and the added item. */
107
+ afterAddToCart?: (cart: Cart, item?: CartMainItem) => void;
108
+ /**
109
+ * When true, AddToCart shows a success modal instead of a toast.
110
+ * Defaults to false.
111
+ */
112
+ showModal?: boolean;
113
+ /** Called when "Proceed to checkout" is clicked in the AddToCart modal. */
114
+ onProceedToCheckout?: () => void;
115
+ /** Called when "Request a Quote" is clicked in the AddToCart modal. */
116
+ onRequestQuoteClick?: (cart: Cart) => void;
117
+ /**
118
+ * Label overrides forwarded to the embedded AddToCart component.
119
+ * Keys: add, adding, addedToCart, outOfStock, noCartId, errorAdding,
120
+ * modalTitle, quantity, continueShopping, proceedToCheckout
121
+ */
122
+ addToCartLabels?: Record<string, string>;
123
+ /** Configuration object providing imageSearchFiltersGrid, imageVariantFiltersMedium, urls */
124
+ configuration?: any;
125
+ /**
126
+ * Label overrides for the slider UI.
127
+ * Available keys: scrollLeft, scrollRight, noProducts, viewCluster,
128
+ * ACCESSORIES, ALTERNATIVES, RELATED, OPTIONS, PARTS
129
+ */
130
+ labels?: Record<string, string>;
131
+ /** Translated labels forwarded to embedded `<ProductCard>` instances. */
132
+ productCardLabels?: Record<string, string>;
133
+ /** Translated labels forwarded to embedded `<ClusterCard>` instances. */
134
+ clusterCardLabels?: Record<string, string>;
135
+ priceComponent?: Component;
136
+ stockComponent?: Component;
137
+ addToCartComponent?: Component;
138
+ imageComponent?: Component;
139
+ badgesComponent?: Component;
140
+ favoriteComponent?: Component;
141
+ productCardComponent?: Component;
142
+ clusterCardComponent?: Component;
143
+ }
144
+ declare function __VLS_template(): {
145
+ attrs: Partial<{}>;
146
+ slots: {
147
+ beforeItem?(_: {
148
+ item: Product | Cluster;
149
+ index: number;
150
+ }): any;
151
+ afterItem?(_: {
152
+ item: Product | Cluster;
153
+ index: number;
154
+ }): any;
155
+ };
156
+ refs: {
157
+ sliderRef: HTMLDivElement;
158
+ };
159
+ rootEl: any;
160
+ };
161
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
162
+ declare const __VLS_component: import('vue').DefineComponent<ProductSliderProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ProductSliderProps> & Readonly<{}>, {
163
+ showStock: boolean;
164
+ showAvailability: boolean;
165
+ enableAddFavorite: boolean;
166
+ showIncrDecr: boolean;
167
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
168
+ sliderRef: HTMLDivElement;
169
+ }, any>;
170
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
171
+ export default _default;
172
+ type __VLS_WithTemplateSlots<T, S> = T & {
173
+ new (): {
174
+ $slots: S;
175
+ };
176
+ };
@@ -0,0 +1,37 @@
1
+ import { AttributeResult, GraphQLClient } from '@propeller-commerce/propeller-sdk-v2';
2
+ export interface ProductSpecificationsProps {
3
+ /**
4
+ * Initialised Propeller SDK GraphQL client.
5
+ * Required when `productId` is set — used to fetch public attributes.
6
+ */
7
+ graphqlClient?: GraphQLClient;
8
+ /**
9
+ * Product ID to fetch attributes for.
10
+ */
11
+ productId?: number;
12
+ /**
13
+ * Pre-fetched attribute result items used as fallback when `productId` is not provided.
14
+ * When `productId` is provided the component fetches its own data and this prop is ignored.
15
+ */
16
+ attributes?: AttributeResult[];
17
+ /**
18
+ * Language code used to resolve localised attribute labels.
19
+ * Defaults to 'NL'.
20
+ */
21
+ language?: string;
22
+ /**
23
+ * Display layout for the specifications.
24
+ * 'table' — two-column table (name | value). Default.
25
+ * 'list' — vertical label + value stacked rows.
26
+ */
27
+ layout?: string;
28
+ /**
29
+ * When true, groups attributes by their group field with a heading per section.
30
+ * When false or omitted, displays a flat ungrouped table/list. Default: false.
31
+ */
32
+ grouping?: boolean;
33
+ /** Extra CSS class applied to the root element. */
34
+ className?: string;
35
+ }
36
+ declare const _default: import('vue').DefineComponent<ProductSpecificationsProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ProductSpecificationsProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
37
+ export default _default;
@@ -0,0 +1,83 @@
1
+ import { Component } from 'vue';
2
+ import { Product, GraphQLClient } from '@propeller-commerce/propeller-sdk-v2';
3
+ export interface ProductTabsProps {
4
+ /** Product for which to display the information. */
5
+ product: Product;
6
+ /** If true, displays the Description tab. Defaults to true. */
7
+ showDescription?: boolean;
8
+ /** If true, displays the Specifications tab. Defaults to true. */
9
+ showSpecifications?: boolean;
10
+ /** If true, displays the Downloads tab. Defaults to true. */
11
+ showDownloads?: boolean;
12
+ /** If true, displays the Videos tab. Defaults to true. */
13
+ showVideos?: boolean;
14
+ /**
15
+ * Language code passed to all sub-components.
16
+ * Defaults to 'NL'.
17
+ */
18
+ language?: string;
19
+ /**
20
+ * Override the tab button labels.
21
+ * Available keys: description, specifications, downloads, videos
22
+ */
23
+ labels?: Record<string, string>;
24
+ /**
25
+ * When true, the description is initially collapsed to `descriptionMaxLength` characters.
26
+ * A "Read more" / "Read less" toggle is shown.
27
+ * Passed as `collapsed` to ProductDescription. Defaults to false.
28
+ */
29
+ descriptionCollapsed?: boolean;
30
+ /**
31
+ * Maximum number of characters shown when the description is collapsed.
32
+ * Passed as `maxLength` to ProductDescription. Defaults to 0 (no truncation).
33
+ */
34
+ descriptionMaxLength?: number;
35
+ /**
36
+ * Initialised Propeller SDK GraphQL client.
37
+ * Passed to ProductSpecifications for internal attribute fetching.
38
+ */
39
+ graphqlClient?: GraphQLClient;
40
+ /**
41
+ * Product ID to fetch attributes for.
42
+ * Passed to ProductSpecifications for internal attribute fetching.
43
+ */
44
+ productId?: number;
45
+ /**
46
+ * Display layout for the specifications.
47
+ * 'table' — two-column table (name | value). Default.
48
+ * 'list' — vertical label + value stacked rows.
49
+ * Passed as `layout` to ProductSpecifications.
50
+ */
51
+ specificationsLayout?: string;
52
+ /**
53
+ * When true, groups specifications by their group field with a heading per section.
54
+ * When false or omitted, displays a flat ungrouped table. Default: false.
55
+ * Passed as `grouping` to ProductSpecifications.
56
+ */
57
+ specificationsGrouping?: boolean;
58
+ /**
59
+ * Override UI strings for the Downloads section.
60
+ * Available keys: title, download
61
+ * Passed as `labels` to ProductDownloads.
62
+ */
63
+ downloadsLabels?: Record<string, string>;
64
+ /**
65
+ * Override UI strings for the Videos section.
66
+ * Available key: title
67
+ * Passed as `labels` to ProductVideos.
68
+ */
69
+ videosLabels?: Record<string, string>;
70
+ /** Extra CSS class applied to the root element. */
71
+ className?: string;
72
+ productDescriptionComponent?: Component;
73
+ productSpecificationsComponent?: Component;
74
+ productDownloadsComponent?: Component;
75
+ productVideosComponent?: Component;
76
+ }
77
+ declare const _default: import('vue').DefineComponent<ProductTabsProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ProductTabsProps> & Readonly<{}>, {
78
+ showDescription: boolean;
79
+ showSpecifications: boolean;
80
+ showDownloads: boolean;
81
+ showVideos: boolean;
82
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
83
+ export default _default;
@@ -0,0 +1,22 @@
1
+ import { PaginatedMediaVideoResponse } from '@propeller-commerce/propeller-sdk-v2';
2
+ export interface ProductVideosProps {
3
+ /**
4
+ * Media videos for the product.
5
+ * Obtain from `product.media?.videos` — may be undefined when the
6
+ * product has no videos; the component renders an empty state.
7
+ */
8
+ videos?: PaginatedMediaVideoResponse;
9
+ /**
10
+ * Language code used to resolve the correct localised video URI.
11
+ */
12
+ language: string;
13
+ /**
14
+ * Override any UI string.
15
+ * Available keys: title, empty
16
+ */
17
+ labels?: Record<string, string>;
18
+ /** Extra CSS class applied to the root element. */
19
+ className?: string;
20
+ }
21
+ declare const _default: import('vue').DefineComponent<ProductVideosProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ProductVideosProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
22
+ export default _default;
@@ -0,0 +1,40 @@
1
+ import { Contact, Customer } from '@propeller-commerce/propeller-sdk-v2';
2
+ /**
3
+ * Provides Tier 2 per-scope state (user / companyId / language / includeTax /
4
+ * portalMode) to package components and composables. Tier 1 deps come from
5
+ * the `propellerVue` plugin installed at app startup.
6
+ *
7
+ * Nestable: deeper providers replace the outer scope for their subtree, which
8
+ * is how multi-cart / impersonation / language-widget patterns work without
9
+ * polluting the rest of the page.
10
+ */
11
+ type __VLS_Props = {
12
+ user?: Contact | Customer | null;
13
+ companyId?: number;
14
+ language?: string;
15
+ includeTax?: boolean;
16
+ portalMode?: string;
17
+ };
18
+ declare function __VLS_template(): {
19
+ attrs: Partial<{}>;
20
+ slots: {
21
+ default?(_: {}): any;
22
+ };
23
+ refs: {};
24
+ rootEl: any;
25
+ };
26
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
27
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
28
+ user: Contact | Customer | null;
29
+ language: string;
30
+ companyId: number;
31
+ includeTax: boolean;
32
+ portalMode: string;
33
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
34
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
35
+ export default _default;
36
+ type __VLS_WithTemplateSlots<T, S> = T & {
37
+ new (): {
38
+ $slots: S;
39
+ };
40
+ };
@@ -0,0 +1,44 @@
1
+ import { Contact, Customer, GraphQLClient, PurchaseAuthorizationConfig, PurchaseAuthorizationConfigCreateInput, RegisterContactInput } from '@propeller-commerce/propeller-sdk-v2';
2
+ export interface PurchaseAuthorizationConfiguratorProps {
3
+ /** GraphQL client for the Propeller SDK */
4
+ graphqlClient: GraphQLClient;
5
+ /** The logged-in user */
6
+ user: Contact | Customer;
7
+ /** The companyId of the current selected company */
8
+ companyId: number;
9
+ /**
10
+ * Adds a button "Add contact" above the contacts list and enables registering contacts
11
+ * @default true
12
+ */
13
+ allowContactCreate?: boolean;
14
+ /** Fires before a contact is added to the company */
15
+ beforeContactCreate?: (input: RegisterContactInput) => void;
16
+ /** Override: fires instead of the default UserService.registerContact() call */
17
+ onContactCreate?: (input: RegisterContactInput) => void;
18
+ /** Fires after a contact is registered. If not provided, refreshes contacts list. */
19
+ afterContactCreate?: (contact: Contact) => void;
20
+ /** Override: fires instead of the default PurchaseAuthorizationConfigCreateInput() call */
21
+ onPurchaseAuthorizationCreate?: (pac: PurchaseAuthorizationConfigCreateInput) => void;
22
+ /** Fires after a PAC is created. If not provided, refreshes contacts list. */
23
+ afterPurchaseAuthorizationCreate?: (pac: PurchaseAuthorizationConfig) => void;
24
+ /** Override: fires instead of the default updatePurchaseAuthorizationConfig() call */
25
+ onPurchaseAuthorizationUpdate?: (pac: PurchaseAuthorizationConfig) => void;
26
+ /** Fires after a PAC is updated. If not provided, refreshes contacts list. */
27
+ afterPurchaseAuthorizationUpdate?: (pac: PurchaseAuthorizationConfig) => void;
28
+ /** Override: fires instead of the default deletePurchaseAuthorizationConfig() call */
29
+ onPurchaseAuthorizationDelete?: (pac: PurchaseAuthorizationConfig) => void;
30
+ /** Fires after a PAC is deleted. If not provided, refreshes contacts list. */
31
+ afterPurchaseAuthorizationDelete?: (deleted: boolean) => void;
32
+ /** Labels for the component */
33
+ labels?: Record<string, string>;
34
+ /** Custom CSS class for the component */
35
+ className?: string;
36
+ /** Configuration object from the application */
37
+ configuration?: Record<string, any>;
38
+ /** Rows per page for contacts pagination */
39
+ pageOffset?: number;
40
+ }
41
+ declare const _default: import('vue').DefineComponent<PurchaseAuthorizationConfiguratorProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<PurchaseAuthorizationConfiguratorProps> & Readonly<{}>, {
42
+ allowContactCreate: boolean;
43
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
44
+ export default _default;
@@ -0,0 +1,50 @@
1
+ import { Contact, Customer, GraphQLClient, Cart } from '@propeller-commerce/propeller-sdk-v2';
2
+ export interface PurchaseAuthorizationRequestsProps {
3
+ /** GraphQL client for the Propeller SDK */
4
+ graphqlClient: GraphQLClient;
5
+ /** Currency symbol to display. Defaults to '€'. */
6
+ currency?: string;
7
+ /** The logged-in user */
8
+ user: Contact | Customer;
9
+ /** The companyId of the current selected company */
10
+ companyId: number;
11
+ /**
12
+ * Override: fires instead of the default CartService.acceptPurchaseAuthorizationRequest() call.
13
+ * Receives the cartId string.
14
+ */
15
+ onAcceptRequest?: (cartId: string) => void;
16
+ /**
17
+ * Fires after a purchase authorization request has been accepted.
18
+ * Receives the full accepted Cart object (or the selectedCart if onAcceptRequest override was used).
19
+ */
20
+ afterAcceptRequest?: (cart: Cart) => void;
21
+ /**
22
+ * Override: fires instead of the default CartService.deleteCart() call.
23
+ * Receives the cartId string.
24
+ */
25
+ onDeleteRequest?: (cartId: string) => void;
26
+ /**
27
+ * Fires after a purchase authorization request has been deleted (cart removed).
28
+ * Receives the deleted cart's id.
29
+ */
30
+ afterDeleteRequest?: (cartId: string) => void;
31
+ /** Format date */
32
+ formatDate?: (dateString: string) => string;
33
+ /** Format price */
34
+ formatPrice?: (price: number) => string;
35
+ /** Labels for the component */
36
+ labels?: Record<string, string>;
37
+ /** Language used to resolve localized product names in the items table. Defaults to 'NL'. */
38
+ language?: string;
39
+ /** Additional CSS class for the root element */
40
+ className?: string;
41
+ /**
42
+ * App configuration passthrough.
43
+ * Used for imageSearchFiltersGrid, imageVariantFiltersSmall when fetching cart detail.
44
+ */
45
+ configuration?: Record<string, any>;
46
+ /** Called when an SDK operation fails; receives the normalized error */
47
+ onError?: (err: Error) => void;
48
+ }
49
+ declare const _default: import('vue').DefineComponent<PurchaseAuthorizationRequestsProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<PurchaseAuthorizationRequestsProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
50
+ export default _default;
@@ -0,0 +1,22 @@
1
+ import { Order, GraphQLClient } from '@propeller-commerce/propeller-sdk-v2';
2
+ export interface QuoteActionsProps {
3
+ /** GraphQL client for the Propeller SDK */
4
+ graphqlClient?: GraphQLClient;
5
+ /** The quotation for which the actions will take place */
6
+ quote: Order;
7
+ /** Labels used in the quote actions component */
8
+ labels?: Record<string, string>;
9
+ /** Action function triggered when the "Accept quotation" button is clicked.
10
+ * If not provided, the base implementation calls setOrderStatus on the SDK. */
11
+ onAccept?: (quote: Order) => void;
12
+ /** Action function triggered after the quote is accepted. Usually for navigating towards the thank you page. */
13
+ afterAccept?: (quote: Order) => void;
14
+ /** Show the terms and conditions acceptance */
15
+ showTermsAndConditions?: boolean;
16
+ /** Action when the "Terms and conditions" link is clicked */
17
+ onTermsAndConditionsClick?: () => void;
18
+ }
19
+ declare const _default: import('vue').DefineComponent<QuoteActionsProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<QuoteActionsProps> & Readonly<{}>, {
20
+ showTermsAndConditions: boolean;
21
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
22
+ export default _default;
@@ -0,0 +1,87 @@
1
+ import { Cart, Contact, Customer, GraphQLClient } from '@propeller-commerce/propeller-sdk-v2';
2
+ export interface RegisterFormProps {
3
+ /** GraphQL client for the Propeller SDK */
4
+ graphqlClient: GraphQLClient;
5
+ /** Title of the register form
6
+ * @default "Create account"
7
+ */
8
+ title?: string;
9
+ /** Subtitle of the register form
10
+ * @default ""
11
+ */
12
+ subtitle?: string;
13
+ /** Label for the submit button
14
+ * @default "Register"
15
+ */
16
+ buttonText?: string;
17
+ /**
18
+ * Enable choosing between Contact or Customer if null,
19
+ * otherwise proceed with one user type registration only.
20
+ * 'Contact' = Company account (has company name, VAT, CoC fields)
21
+ * 'Customer' = Consumer/personal account
22
+ * @default null
23
+ */
24
+ showUserType?: 'Contact' | 'Customer' | null;
25
+ /**
26
+ * Required fields for the registration form.
27
+ * Available field names: firstName, middleName, lastName, email, password,
28
+ * phone, mobile, gender, companyName, vatNumber, cocNumber,
29
+ * street, number, numberExtension, postalCode, city, country
30
+ * @default []
31
+ */
32
+ requiredFields?: string[];
33
+ /**
34
+ * When true (default) the new contact/customer is automatically logged in
35
+ * after registration: the SDK access token is set on the GraphQL client and
36
+ * forwarded to `afterRegistration` so the parent can populate auth state.
37
+ * When false, registration completes server-side but no session is kept;
38
+ * `afterRegistration` is called without tokens so the parent can redirect
39
+ * the user to the login page.
40
+ * @default true
41
+ */
42
+ automaticLogin?: boolean;
43
+ /**
44
+ * Labels for the registration form fields.
45
+ *
46
+ * Available keys:
47
+ * - firstName, middleName, lastName, email, password, confirmPassword
48
+ * - phone, gender, companyName, vatNumber, cocNumber
49
+ * - street, number, numberExtension, postalCode, city, country
50
+ * - userTypeLabel, contactLabel, customerLabel
51
+ * - emailPlaceholder, passwordPlaceholder, passwordMismatch
52
+ * - billingAddressTitle, deliveryAddressTitle, sameAsDelivery
53
+ * - loginText, loginLink
54
+ * - personalDetailsTitle, passwordTitle
55
+ */
56
+ labels?: Record<string, string>;
57
+ /** Callback before the registration process starts */
58
+ beforeRegistration?: () => void;
59
+ /** Callback after the user is registered.
60
+ * `anonymousCart` is the cart held in the parent's store/state at the moment of submission,
61
+ * forwarded so the parent can merge it into the new user's cart.
62
+ */
63
+ afterRegistration?: (user: Contact | Customer, accessToken?: string, refreshToken?: string, expiresAt?: string, anonymousCart?: Cart | null) => void;
64
+ /** Anonymous cart snapshot from the parent's store/state — forwarded to `afterRegistration`. */
65
+ cart?: Cart | null;
66
+ /** Action for the login link click */
67
+ onLoginClick?: () => void;
68
+ /** Show/hide the login link
69
+ * @default true
70
+ */
71
+ displayLoginLink?: boolean;
72
+ /**
73
+ * Prefered language
74
+ * @default 'NL'
75
+ */
76
+ preferredLanguage?: string;
77
+ /**
78
+ * List of countries to display in the country dropdown
79
+ * @default {}
80
+ */
81
+ countries?: Record<string, string>;
82
+ }
83
+ declare const _default: import('vue').DefineComponent<RegisterFormProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<RegisterFormProps> & Readonly<{}>, {
84
+ automaticLogin: boolean;
85
+ displayLoginLink: boolean;
86
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
87
+ export default _default;
@@ -0,0 +1,71 @@
1
+ import { GraphQLClient, Contact, Customer } from '@propeller-commerce/propeller-sdk-v2';
2
+ export interface SearchBarResult {
3
+ /** Unique identifier */
4
+ id: number | string;
5
+ /** Display name */
6
+ name: string;
7
+ /** SKU code */
8
+ sku?: string;
9
+ /** Price value */
10
+ price?: number;
11
+ /** Image URL */
12
+ imageUrl?: string;
13
+ /** URL path to navigate to */
14
+ url?: string;
15
+ /** Whether this is a cluster (vs product) */
16
+ isCluster?: boolean;
17
+ }
18
+ export interface SearchBarProps {
19
+ /** Propeller SDK GraphQL client */
20
+ graphqlClient: GraphQLClient;
21
+ /** Currency symbol to display. Defaults to '€'. */
22
+ currency?: string;
23
+ /** The currently logged in user (Contact or Customer) */
24
+ user?: Contact | Customer | null;
25
+ /** Language code for search requests */
26
+ language?: string;
27
+ /** Placeholder text for the search input */
28
+ placeholder?: string;
29
+ /** Minimum characters before search triggers */
30
+ minSearchLength?: number;
31
+ /** Debounce delay in milliseconds */
32
+ debounceMs?: number;
33
+ /** Maximum number of results to show in dropdown */
34
+ maxResults?: number;
35
+ /** Fallback image URL when product has no image */
36
+ noImageUrl?: string;
37
+ /** Fires when the search form is submitted (Enter key). Receives the search term. */
38
+ onSubmit?: (term: string) => void;
39
+ /** Fires when a result item is clicked. Receives the result object. */
40
+ onResultClick?: (result: SearchBarResult) => void;
41
+ /** Fires when "View all results" is clicked. Receives the search term. */
42
+ onViewAllClick?: (term: string) => void;
43
+ /** Custom price formatting function */
44
+ formatPrice?: (price: number) => string;
45
+ /** Labels for the component */
46
+ labels?: Record<string, string>;
47
+ /** Additional class name for the container */
48
+ containerClassName?: string;
49
+ /** Tax zone used for price calculation. Defaults to 'NL'. */
50
+ taxZone?: string;
51
+ /**
52
+ * Active company ID from the company switcher.
53
+ * When provided, can be forwarded to price calculation in search results
54
+ * if the underlying SDK call supports priceCalculateProductInput.
55
+ */
56
+ companyId?: number;
57
+ /**
58
+ * Configuration object providing:
59
+ * imageSearchFiltersGrid, imageVariantFiltersMedium — passed to CategoryService
60
+ * baseCategoryId — used when querying by term or brand
61
+ * urls.getProductUrl / urls.getClusterUrl — for card URL generation
62
+ */
63
+ configuration?: any;
64
+ /**
65
+ * Bump this counter to clear the search input from outside (e.g. on route
66
+ * change). Each unique value triggers a one-time reset of the local term.
67
+ */
68
+ clearSignal?: number;
69
+ }
70
+ declare const _default: import('vue').DefineComponent<SearchBarProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<SearchBarProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
71
+ export default _default;