@propeller-commerce/propeller-v2-vue-ui 0.3.25 → 0.3.27

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/CHANGELOG.md CHANGED
@@ -8,6 +8,34 @@ once it reaches 1.0. Until then (the `0.x` line) the public API may change
8
8
  between minor versions; breaking changes are called out below and in
9
9
  [MIGRATION.md](./MIGRATION.md).
10
10
 
11
+ ## [0.3.27] - 2026-07-10
12
+
13
+ ### Added
14
+
15
+ - `ProductSpecifications`: new `#beforeSpecs` / `#afterSpecs` scoped slots. Each
16
+ receives `{ layout: 'table' | 'list' }` and renders arbitrary content at the
17
+ start / end of the specifications — inside `<tbody>` for the table layout
18
+ (return a `<tr>`, e.g. a labelled "Unit of measure" row) or in the list stack
19
+ for the list layout (return a block). In grouped mode they render once, above
20
+ the first group / below the last. General replacement for hardcoding extra
21
+ rows; the existing `packageDescription` prop is unchanged. Mirrors the React
22
+ `beforeSpecs` / `afterSpecs` render props.
23
+ - `ProductTabs`: `#specificationsBefore` / `#specificationsAfter` scoped slots
24
+ that forward to the specifications section's new slots.
25
+
26
+ ## [0.3.26] - 2026-07-09
27
+
28
+ ### Added
29
+
30
+ - `ProductCard` / `ProductGrid`: new `belowNameComponent?: Component` prop plus a
31
+ `#belowName` scoped slot on `ProductCard`. Renders arbitrary host-supplied
32
+ content directly below the product name (and above the short description /
33
+ price) in both the grid and row layouts, without forking the card — e.g.
34
+ package descriptions or custom badges. On `ProductGrid` the component cascades
35
+ to every card via `ProductGridConfig`; on `ProductCard` it can also be set
36
+ per-card (explicit prop wins over grid context) or overridden via the
37
+ `#belowName` slot. Mirrors the React `belowName` render prop.
38
+
11
39
  ## [0.3.25] - 2026-07-09
12
40
 
13
41
  ### Added
@@ -168,6 +168,15 @@ export interface ProductCardProps {
168
168
  imageComponent?: Component;
169
169
  badgesComponent?: Component;
170
170
  favoriteComponent?: Component;
171
+ /**
172
+ * Render arbitrary content directly below the product name (and above the
173
+ * short description / price), in both the grid and row layouts. Receives the
174
+ * product as a prop so hosts can surface extra info — e.g. package
175
+ * descriptions, custom badges — without forking the card. Consumers can also
176
+ * use the `#belowName` scoped slot directly; this prop is the cascadable
177
+ * (grid-wide) equivalent.
178
+ */
179
+ belowNameComponent?: Component;
171
180
  }
172
181
  interface ProductCardState {
173
182
  isFavorite: boolean;
@@ -238,6 +247,12 @@ declare function __VLS_template(): {
238
247
  name: string;
239
248
  onNavigate: typeof handleNavigate;
240
249
  }): any;
250
+ belowName?(_: {
251
+ product: Product;
252
+ }): any;
253
+ belowName?(_: {
254
+ product: Product;
255
+ }): any;
241
256
  textLabels?(_: {
242
257
  product: Product;
243
258
  values: {
@@ -264,6 +264,13 @@ export interface ProductGridProps {
264
264
  favoriteComponent?: Component;
265
265
  productCardComponent?: Component;
266
266
  clusterCardComponent?: Component;
267
+ /**
268
+ * Render arbitrary content directly below each card's product name. Receives
269
+ * the product as a prop; cascades to every ProductCard via ProductGridConfig.
270
+ * Lets hosts surface extra per-product info (e.g. package descriptions)
271
+ * across the whole grid without swapping the entire card.
272
+ */
273
+ belowNameComponent?: Component;
267
274
  }
268
275
  declare function __VLS_template(): {
269
276
  attrs: Partial<{}>;
@@ -38,5 +38,43 @@ export interface ProductSpecificationsProps {
38
38
  /** Extra CSS class applied to the root element. */
39
39
  className?: string;
40
40
  }
41
- 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>;
41
+ declare function __VLS_template(): {
42
+ attrs: Partial<{}>;
43
+ slots: {
44
+ beforeSpecs?(_: {
45
+ layout: "table" | "list";
46
+ }): any;
47
+ beforeSpecs?(_: {
48
+ layout: "table" | "list";
49
+ }): any;
50
+ beforeSpecs?(_: {
51
+ layout: "table";
52
+ }): any;
53
+ beforeSpecs?(_: {
54
+ layout: "list";
55
+ }): any;
56
+ afterSpecs?(_: {
57
+ layout: "table" | "list";
58
+ }): any;
59
+ afterSpecs?(_: {
60
+ layout: "table" | "list";
61
+ }): any;
62
+ afterSpecs?(_: {
63
+ layout: "table";
64
+ }): any;
65
+ afterSpecs?(_: {
66
+ layout: "list";
67
+ }): any;
68
+ };
69
+ refs: {};
70
+ rootEl: any;
71
+ };
72
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
73
+ declare const __VLS_component: import('vue').DefineComponent<ProductSpecificationsProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ProductSpecificationsProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
74
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
42
75
  export default _default;
76
+ type __VLS_WithTemplateSlots<T, S> = T & {
77
+ new (): {
78
+ $slots: S;
79
+ };
80
+ };
@@ -80,10 +80,28 @@ export interface ProductTabsProps {
80
80
  productDownloadsComponent?: Component;
81
81
  productVideosComponent?: Component;
82
82
  }
83
- declare const _default: import('vue').DefineComponent<ProductTabsProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ProductTabsProps> & Readonly<{}>, {
83
+ declare function __VLS_template(): {
84
+ attrs: Partial<{}>;
85
+ slots: {
86
+ specificationsBefore?(_: any): any;
87
+ specificationsBefore?(_: any): any;
88
+ specificationsAfter?(_: any): any;
89
+ specificationsAfter?(_: any): any;
90
+ };
91
+ refs: {};
92
+ rootEl: any;
93
+ };
94
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
95
+ declare const __VLS_component: import('vue').DefineComponent<ProductTabsProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<ProductTabsProps> & Readonly<{}>, {
84
96
  showDescription: boolean;
85
97
  showSpecifications: boolean;
86
98
  showDownloads: boolean;
87
99
  showVideos: boolean;
88
100
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
101
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
89
102
  export default _default;
103
+ type __VLS_WithTemplateSlots<T, S> = T & {
104
+ new (): {
105
+ $slots: S;
106
+ };
107
+ };
@@ -43,6 +43,13 @@ export interface ProductGridConfig {
43
43
  surchargesComponent?: Component;
44
44
  productCardComponent?: Component;
45
45
  clusterCardComponent?: Component;
46
+ /**
47
+ * Render arbitrary content directly below each card's product name. Receives
48
+ * the product as a prop; cascades to every ProductCard. Lets hosts surface
49
+ * extra per-product info (e.g. package descriptions) across the whole grid
50
+ * without swapping the entire card.
51
+ */
52
+ belowNameComponent?: Component;
46
53
  }
47
54
  /** Injection key for the Tier 2 grid config. Symbol-keyed, collision-free. */
48
55
  export declare const ProductGridInjectionKey: InjectionKey<ProductGridConfig>;