@qwickapps/react-framework 1.7.0 → 1.8.0

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 (33) hide show
  1. package/README.md +23 -0
  2. package/dist/components/blocks/ImageGallery.d.ts.map +1 -1
  3. package/dist/components/blocks/OptionSelector.d.ts.map +1 -1
  4. package/dist/components/blocks/ProductCard.d.ts +10 -2
  5. package/dist/components/blocks/ProductCard.d.ts.map +1 -1
  6. package/dist/components/forms/FormCheckbox.d.ts.map +1 -1
  7. package/dist/components/forms/FormField.d.ts.map +1 -1
  8. package/dist/components/forms/FormSelect.d.ts.map +1 -1
  9. package/dist/index.esm.js +257 -31
  10. package/dist/index.js +256 -30
  11. package/dist/palettes/manifest.json +22 -22
  12. package/package.json +1 -1
  13. package/src/components/blocks/ImageGallery.tsx +6 -5
  14. package/src/components/blocks/OptionSelector.tsx +18 -3
  15. package/src/components/blocks/ProductCard.tsx +283 -84
  16. package/src/components/forms/FormCheckbox.tsx +15 -0
  17. package/src/components/forms/FormField.tsx +15 -0
  18. package/src/components/forms/FormSelect.tsx +15 -0
  19. package/src/stories/ProductCard.stories.tsx +151 -1
  20. /package/dist/palettes/{palette-autumn.1.7.0.css → palette-autumn.1.8.0.css} +0 -0
  21. /package/dist/palettes/{palette-autumn.1.7.0.min.css → palette-autumn.1.8.0.min.css} +0 -0
  22. /package/dist/palettes/{palette-boutique.1.7.0.css → palette-boutique.1.8.0.css} +0 -0
  23. /package/dist/palettes/{palette-boutique.1.7.0.min.css → palette-boutique.1.8.0.min.css} +0 -0
  24. /package/dist/palettes/{palette-cosmic.1.7.0.css → palette-cosmic.1.8.0.css} +0 -0
  25. /package/dist/palettes/{palette-cosmic.1.7.0.min.css → palette-cosmic.1.8.0.min.css} +0 -0
  26. /package/dist/palettes/{palette-default.1.7.0.css → palette-default.1.8.0.css} +0 -0
  27. /package/dist/palettes/{palette-default.1.7.0.min.css → palette-default.1.8.0.min.css} +0 -0
  28. /package/dist/palettes/{palette-ocean.1.7.0.css → palette-ocean.1.8.0.css} +0 -0
  29. /package/dist/palettes/{palette-ocean.1.7.0.min.css → palette-ocean.1.8.0.min.css} +0 -0
  30. /package/dist/palettes/{palette-spring.1.7.0.css → palette-spring.1.8.0.css} +0 -0
  31. /package/dist/palettes/{palette-spring.1.7.0.min.css → palette-spring.1.8.0.min.css} +0 -0
  32. /package/dist/palettes/{palette-winter.1.7.0.css → palette-winter.1.8.0.css} +0 -0
  33. /package/dist/palettes/{palette-winter.1.7.0.min.css → palette-winter.1.8.0.min.css} +0 -0
package/README.md CHANGED
@@ -4,6 +4,29 @@ A complete React framework for building modern, responsive applications with int
4
4
 
5
5
  ## What's New
6
6
 
7
+ ### February 7, 2026 - E-Commerce ProductCard (v1.8.0)
8
+
9
+ - **Unified ProductCard Component**: Complete e-commerce product card with integrated cart functionality
10
+ - **Variant Support**: Built-in size, color, and material variant selection with availability indicators
11
+ - **Cart Integration**: Native "Add to Cart" with quantity selectors and wishlist toggle
12
+ - **Enhanced UX**: Sale pricing, stock status, ratings, and responsive design for all devices
13
+
14
+ See [CHANGELOG.md](./CHANGELOG.md) for full details.
15
+
16
+ ### February 4, 2026 - Bug Fixes (v1.7.1)
17
+
18
+ - **MUI v7 TypeScript Compatibility**: Fixed compilation errors in form components by excluding conflicting ViewProps
19
+ - **Component Pattern Compliance**: ImageGallery now uses GridLayout/GridCell instead of direct MUI Grid
20
+ - **Type Safety**: Added explicit TypeScript return types to OptionSelector
21
+
22
+ See [CHANGELOG.md](./CHANGELOG.md) for full details.
23
+
24
+ ### February 4, 2026 - New Palette & SSR (v1.7.0)
25
+
26
+ - **PaletteBoutique**: New premium color palette with sophisticated teal, bronze, and navy for retail/fashion brands
27
+ - **ComponentTransformer SSR**: Enhanced HTML parsing with linkedom integration for server-side rendering
28
+ - **Theme Consistency**: Added missing palette variables and replaced hardcoded colors across all palettes
29
+
7
30
  ### January 25, 2026 - E-Commerce Components (v1.5.13)
8
31
 
9
32
  #### New Components
@@ -1 +1 @@
1
- {"version":3,"file":"ImageGallery.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/ImageGallery.tsx"],"names":[],"mappings":"AAoCA,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,8BAA8B;IAC9B,MAAM,EAAE,YAAY,EAAE,CAAC;IAEvB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IAEpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;IAE7C,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAEhD,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AA+XD,eAAO,MAAM,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,CAM9D,CAAC;AAEL,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ImageGallery.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/ImageGallery.tsx"],"names":[],"mappings":"AAqCA,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,8BAA8B;IAC9B,MAAM,EAAE,YAAY,EAAE,CAAC;IAEvB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IAEpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;IAE7C,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAEhD,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AA+XD,eAAO,MAAM,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,CAM9D,CAAC;AAEL,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"OptionSelector.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/OptionSelector.tsx"],"names":[],"mappings":"AAkDA,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IAEX,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,qDAAqD;IACrD,SAAS,EAAE,OAAO,CAAC;IAEnB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,iCAAiC;IACjC,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,uCAAuC;IACvC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5C,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAEzC,sBAAsB;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IAE1C,6CAA6C;IAC7C,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;IAE5C,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAE1C,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAqVD,eAAO,MAAM,cAAc,EAAE,qBAAqB,CAAC,mBAAmB,CAMlE,CAAC;AAEL,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"OptionSelector.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/OptionSelector.tsx"],"names":[],"mappings":"AAkDA,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IAEX,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,qDAAqD;IACrD,SAAS,EAAE,OAAO,CAAC;IAEnB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,iCAAiC;IACjC,OAAO,EAAE,YAAY,EAAE,CAAC;IAExB,mCAAmC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,uCAAuC;IACvC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5C,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IAEzC,sBAAsB;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IAE1C,6CAA6C;IAC7C,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;IAE5C,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAE1C,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAoWD,eAAO,MAAM,cAAc,EAAE,qBAAqB,CAAC,mBAAmB,CAMlE,CAAC;AAEL,eAAe,cAAc,CAAC"}
@@ -6,11 +6,17 @@ export interface Product {
6
6
  category: string;
7
7
  description: string;
8
8
  shortDescription?: string;
9
- features: string[];
10
- technologies: string[];
9
+ features?: string[];
10
+ technologies?: string[];
11
11
  status: string;
12
12
  image?: string;
13
13
  url?: string;
14
+ price?: number;
15
+ salePrice?: number;
16
+ rating?: number;
17
+ reviewCount?: number;
18
+ isNew?: boolean;
19
+ featured?: boolean;
14
20
  }
15
21
  export interface ProductCardAction {
16
22
  id: string;
@@ -35,6 +41,8 @@ interface ProductCardViewProps extends WithBaseProps {
35
41
  showTechnologies?: boolean;
36
42
  /** Maximum features to show in compact mode */
37
43
  maxFeaturesCompact?: number;
44
+ /** Handler for adding product to cart (e-commerce products only) */
45
+ onAddToCart?: (product: Product) => void;
38
46
  }
39
47
  export interface ProductCardProps extends ProductCardViewProps, WithDataBinding {
40
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProductCard.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/ProductCard.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAoD,aAAa,EAAE,MAAM,aAAa,CAAC;AAI9F,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;IAC5C,KAAK,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,UAAU,oBAAqB,SAAQ,aAAa;IAClD,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB,EAAE,eAAe;CAAG;AAiVlF;;;GAGG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,gBAAgB,kDAoE3C;AAED,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"ProductCard.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/ProductCard.tsx"],"names":[],"mappings":"AA0BA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAoD,aAAa,EAAE,MAAM,aAAa,CAAC;AAI9F,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;IAC5C,KAAK,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,UAAU,oBAAqB,SAAQ,aAAa;IAClD,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB;IACnB,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB,EAAE,eAAe;CAAG;AA6gBlF;;;GAGG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,gBAAgB,kDAoE3C;AAED,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormCheckbox.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormCheckbox.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEjG;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS,EAAE,WAAW,CAAC,OAAO,iBAAiB,CAAC;IACzF,2CAA2C;IAC3C,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAiED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,CAKhE,CAAC;AAEH,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"FormCheckbox.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormCheckbox.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,iBAAiB,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEjG;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,SAAS,EAAE,WAAW,CAAC,OAAO,iBAAiB,CAAC;IACzF,2CAA2C;IAC3C,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAgFD;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,qBAAqB,CAAC,iBAAiB,CAKhE,CAAC;AAEH,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormField.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEjG;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,SAAS,EAAE,WAAW,CAAC,OAAO,cAAc,CAAC;IACnF,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC5C,oCAAoC;IACpC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,IAAI,CAAC;IACrF,yCAAyC;IACzC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,uCAAuC;IACvC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA+GD;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,qBAAqB,CAAC,cAAc,CAK1D,CAAC;AAEH,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"FormField.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEjG;;;GAGG;AACH,MAAM,WAAW,cAAe,SAAQ,SAAS,EAAE,WAAW,CAAC,OAAO,cAAc,CAAC;IACnF,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC5C,oCAAoC;IACpC,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,IAAI,CAAC;IACrF,yCAAyC;IACzC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,uCAAuC;IACvC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,6BAA6B;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA8HD;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,qBAAqB,CAAC,cAAc,CAK1D,CAAC;AAEH,eAAe,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormSelect.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormSelect.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEjG,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS,EAAE,WAAW,CAAC,OAAO,eAAe,CAAC;IACrF,kCAAkC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC3C,qDAAqD;IACrD,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAiFD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,qBAAqB,CAAC,eAAe,CAK5D,CAAC;AAEH,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"FormSelect.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormSelect.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,eAAe,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEjG,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS,EAAE,WAAW,CAAC,OAAO,eAAe,CAAC;IACrF,kCAAkC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC3C,qDAAqD;IACrD,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAgGD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,qBAAqB,CAAC,eAAe,CAK5D,CAAC;AAEH,eAAe,UAAU,CAAC"}
package/dist/index.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
3
- import { useMediaQuery, Box, useTheme as useTheme$1, Paper, Typography, Tooltip, IconButton, Snackbar, Alert, CircularProgress, Button as Button$1, Container as Container$9, Stack, Skeleton, Avatar, Chip, Menu as Menu$1, MenuItem, Card, CardContent, ButtonGroup, Collapse, TextField as TextField$1, FormControl, InputLabel, Select, FormHelperText, FormControlLabel, Switch, Grid, Divider, Link, Modal, ListItemIcon, ListItemText, Dialog as Dialog$1, DialogTitle as DialogTitle$1, DialogContent as DialogContent$1, DialogActions as DialogActions$1, DialogContentText as DialogContentText$1, Input as Input$5, InputAdornment, Checkbox } from '@mui/material';
3
+ import { useMediaQuery, Box, useTheme as useTheme$1, Paper, Typography, Tooltip, IconButton, Snackbar, Alert, CircularProgress, Button as Button$1, Container as Container$9, Stack, Skeleton, Avatar, Chip, Menu as Menu$1, MenuItem, Card, CardContent, ButtonGroup, Collapse, TextField as TextField$1, FormControl, InputLabel, Select, FormHelperText, FormControlLabel, Switch, Grid, Divider, Link, Rating, Modal, ListItemIcon, ListItemText, Dialog as Dialog$1, DialogTitle as DialogTitle$1, DialogContent as DialogContent$1, DialogActions as DialogActions$1, DialogContentText as DialogContentText$1, Input as Input$5, InputAdornment, Checkbox } from '@mui/material';
4
4
  import React, { useMemo, useContext, useState, useCallback, useEffect, createContext, useReducer, useRef, isValidElement, createElement, useId, useLayoutEffect, Component, cloneElement } from 'react';
5
5
  import { MustacheTemplateProvider, MemoryCacheProvider, CachedDataProvider, Field, Editor, FieldType, Schema, Model, DataType } from '@qwickapps/schema';
6
6
  import { createTheme, ThemeProvider as ThemeProvider$1 } from '@mui/material/styles';
@@ -21101,6 +21101,7 @@ function ProductCardView({
21101
21101
  showImage = true,
21102
21102
  showTechnologies = true,
21103
21103
  maxFeaturesCompact = 3,
21104
+ onAddToCart,
21104
21105
  ...restProps
21105
21106
  }) {
21106
21107
  const {
@@ -21110,6 +21111,16 @@ function ProductCardView({
21110
21111
  const theme = useTheme$1();
21111
21112
  // Return null if no product data
21112
21113
  if (!product) return null;
21114
+ // Detect product type: e-commerce products have price field
21115
+ const isEcommerce = product.price !== undefined;
21116
+ // E-commerce helpers
21117
+ const formatPrice = price => {
21118
+ return `$${price.toFixed(2)}`;
21119
+ };
21120
+ const calculateDiscount = () => {
21121
+ if (!product.price || !product.salePrice) return 0;
21122
+ return Math.round((product.price - product.salePrice) / product.price * 100);
21123
+ };
21113
21124
  const getStatusIcon = status => {
21114
21125
  switch (status) {
21115
21126
  case 'launched':
@@ -21140,11 +21151,26 @@ function ProductCardView({
21140
21151
  const handleProductClick = () => {
21141
21152
  if (onClick) {
21142
21153
  onClick();
21143
- } else if (product.status === 'launched' && product.url?.startsWith('http')) {
21144
- window.open(product.url, '_blank', 'noopener,noreferrer');
21145
21154
  }
21155
+ // Note: Navigation is handled by parent wrapper (e.g., Next.js Link in BlockRenderer)
21156
+ // For standalone usage, provide onClick prop with navigation logic
21146
21157
  };
21147
21158
  const getDefaultActions = () => {
21159
+ // E-commerce products get "Add to Cart" action
21160
+ if (isEcommerce) {
21161
+ return [{
21162
+ id: 'add-to-cart',
21163
+ label: 'Add to Cart',
21164
+ variant: 'contained',
21165
+ color: 'primary',
21166
+ onClick: () => {
21167
+ if (onAddToCart && product) {
21168
+ onAddToCart(product);
21169
+ }
21170
+ }
21171
+ }];
21172
+ }
21173
+ // Software products get status-based actions
21148
21174
  const actions = [{
21149
21175
  id: 'primary',
21150
21176
  label: product.status === 'launched' ? 'Learn More' : product.status === 'beta' ? 'Try Beta' : product.status === 'coming-soon' ? 'Coming Soon' : product.status,
@@ -21228,7 +21254,7 @@ function ProductCardView({
21228
21254
  })]
21229
21255
  });
21230
21256
  })();
21231
- const technologiesSectionElement = !showTechnologies || variant === 'compact' ? null : jsxs(Box, {
21257
+ const technologiesSectionElement = !showTechnologies || variant === 'compact' || !product.technologies ? null : jsxs(Box, {
21232
21258
  sx: {
21233
21259
  mb: 3
21234
21260
  },
@@ -21262,26 +21288,25 @@ function ProductCardView({
21262
21288
  className: styleProps.className || "product-card",
21263
21289
  onClick: htmlProps.onClick || (variant === 'compact' ? handleProductClick : undefined),
21264
21290
  sx: {
21265
- p: 3,
21266
- // padding="large" equivalent
21267
- borderRadius: 3,
21268
- border: '1px solid',
21269
- borderColor: 'divider',
21270
- cursor: variant === 'compact' ? 'pointer' : 'default',
21271
- position: 'relative',
21272
21291
  height: '100%',
21273
21292
  display: 'flex',
21274
21293
  flexDirection: 'column',
21275
21294
  backgroundColor: 'background.paper',
21276
- transition: 'transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out',
21295
+ borderRadius: isEcommerce ? 2 : 3,
21296
+ border: '1px solid',
21297
+ borderColor: 'divider',
21298
+ overflow: 'hidden',
21299
+ position: 'relative',
21300
+ cursor: variant === 'compact' ? 'pointer' : 'default',
21301
+ transition: 'transform 0.2s ease, box-shadow 0.2s ease',
21277
21302
  '&:hover': variant === 'compact' ? {
21278
21303
  transform: 'translateY(-4px)',
21279
- boxShadow: 8
21304
+ boxShadow: 3
21280
21305
  } : {},
21281
21306
  ...(styleProps.sx || {})
21282
21307
  },
21283
21308
  style: styleProps.style,
21284
- children: [jsx(Chip, {
21309
+ children: [!isEcommerce && jsx(Chip, {
21285
21310
  icon: getStatusIcon(product.status),
21286
21311
  label: product.status.replace('-', ' '),
21287
21312
  sx: {
@@ -21300,16 +21325,14 @@ function ProductCardView({
21300
21325
  color: 'white'
21301
21326
  }
21302
21327
  }
21303
- }), showImage && product.image && jsx(Box, {
21328
+ }), showImage && product.image && jsxs(Box, {
21304
21329
  sx: {
21305
21330
  width: '100%',
21306
- height: variant === 'detailed' ? 240 : 200,
21307
- mb: 2.5,
21308
- borderRadius: 1,
21309
- overflow: 'hidden',
21310
- backgroundColor: 'divider'
21331
+ height: isEcommerce ? 280 : variant === 'detailed' ? 240 : 200,
21332
+ backgroundColor: 'divider',
21333
+ position: 'relative'
21311
21334
  },
21312
- children: jsx(Box, {
21335
+ children: [jsx(Box, {
21313
21336
  component: "img",
21314
21337
  src: product.image,
21315
21338
  alt: product.name,
@@ -21326,14 +21349,153 @@ function ProductCardView({
21326
21349
  target.parentElement.innerHTML = `<div style="display: flex; align-items: center; justify-content: center; height: 100%; color: white; font-size: 1.5rem; font-weight: bold;">${product.name}</div>`;
21327
21350
  }
21328
21351
  }
21329
- })
21352
+ }), isEcommerce && jsxs(Fragment, {
21353
+ children: [jsxs(Box, {
21354
+ sx: {
21355
+ position: 'absolute',
21356
+ top: 12,
21357
+ left: 12,
21358
+ display: 'flex',
21359
+ flexDirection: 'column',
21360
+ gap: 0.5
21361
+ },
21362
+ children: [product.isNew && jsx(Chip, {
21363
+ label: "NEW",
21364
+ sx: {
21365
+ backgroundColor: 'primary.main',
21366
+ color: 'white',
21367
+ fontSize: '0.75rem',
21368
+ fontWeight: 600,
21369
+ height: '24px',
21370
+ px: 1
21371
+ }
21372
+ }), product.featured && jsx(Chip, {
21373
+ label: "POPULAR",
21374
+ sx: {
21375
+ backgroundColor: 'warning.main',
21376
+ color: 'white',
21377
+ fontSize: '0.75rem',
21378
+ fontWeight: 600,
21379
+ height: '24px',
21380
+ px: 1
21381
+ }
21382
+ })]
21383
+ }), jsx(Box, {
21384
+ sx: {
21385
+ position: 'absolute',
21386
+ top: 12,
21387
+ right: 12,
21388
+ display: 'flex',
21389
+ flexDirection: 'column',
21390
+ gap: 0.5
21391
+ },
21392
+ children: product.salePrice && product.price && jsxs(Fragment, {
21393
+ children: [jsx(Chip, {
21394
+ label: "ON SALE",
21395
+ sx: {
21396
+ backgroundColor: 'error.main',
21397
+ color: 'white',
21398
+ fontSize: '0.75rem',
21399
+ fontWeight: 600,
21400
+ height: '24px',
21401
+ px: 1
21402
+ }
21403
+ }), jsx(Chip, {
21404
+ label: `-${calculateDiscount()}%`,
21405
+ sx: {
21406
+ backgroundColor: 'error.dark',
21407
+ color: 'white',
21408
+ fontSize: '0.75rem',
21409
+ fontWeight: 600,
21410
+ height: '24px',
21411
+ px: 1
21412
+ }
21413
+ })]
21414
+ })
21415
+ })]
21416
+ })]
21330
21417
  }), jsxs(Box, {
21331
21418
  sx: {
21332
21419
  flex: 1,
21333
21420
  display: 'flex',
21334
- flexDirection: 'column'
21421
+ flexDirection: 'column',
21422
+ p: isEcommerce ? 2 : 3
21335
21423
  },
21336
- children: [jsxs(Box, {
21424
+ children: [isEcommerce ? (/* E-commerce product info */
21425
+ jsxs(Box, {
21426
+ children: [product.category && jsx(Typography, {
21427
+ variant: "caption",
21428
+ sx: {
21429
+ mb: 0.5,
21430
+ color: 'text.secondary',
21431
+ display: 'block'
21432
+ },
21433
+ children: product.category
21434
+ }), jsx(Typography, {
21435
+ variant: "h6",
21436
+ component: "h3",
21437
+ sx: {
21438
+ mb: 1,
21439
+ fontSize: '1rem',
21440
+ fontWeight: 500,
21441
+ lineHeight: 1.3,
21442
+ overflow: 'hidden',
21443
+ textOverflow: 'ellipsis',
21444
+ display: '-webkit-box',
21445
+ WebkitLineClamp: 2,
21446
+ WebkitBoxOrient: 'vertical'
21447
+ },
21448
+ children: product.name
21449
+ }), product.rating !== undefined && product.rating > 0 && jsxs(Box, {
21450
+ sx: {
21451
+ display: 'flex',
21452
+ alignItems: 'center',
21453
+ gap: 0.5,
21454
+ mb: 1
21455
+ },
21456
+ children: [jsx(Rating, {
21457
+ value: product.rating,
21458
+ readOnly: true,
21459
+ size: "small",
21460
+ precision: 0.5,
21461
+ emptyIcon: jsx(Star, {
21462
+ style: {
21463
+ opacity: 0.3
21464
+ },
21465
+ fontSize: "inherit"
21466
+ })
21467
+ }), product.reviewCount !== undefined && product.reviewCount > 0 && jsxs(Typography, {
21468
+ variant: "caption",
21469
+ sx: {
21470
+ color: 'text.secondary'
21471
+ },
21472
+ children: ["(", product.reviewCount, ")"]
21473
+ })]
21474
+ }), jsxs(Box, {
21475
+ sx: {
21476
+ mt: 'auto',
21477
+ display: 'flex',
21478
+ alignItems: 'center',
21479
+ gap: 1
21480
+ },
21481
+ children: [jsx(Typography, {
21482
+ variant: "h6",
21483
+ sx: {
21484
+ fontWeight: 600,
21485
+ color: product.salePrice ? 'primary.main' : 'inherit'
21486
+ },
21487
+ children: formatPrice(product.salePrice || product.price)
21488
+ }), product.salePrice && jsx(Typography, {
21489
+ variant: "body2",
21490
+ sx: {
21491
+ color: 'text.secondary',
21492
+ textDecoration: 'line-through'
21493
+ },
21494
+ children: formatPrice(product.price)
21495
+ })]
21496
+ })]
21497
+ })) : (/* Software product info */
21498
+ jsxs(Box, {
21337
21499
  sx: {
21338
21500
  mb: 3
21339
21501
  },
@@ -21365,7 +21527,7 @@ function ProductCardView({
21365
21527
  },
21366
21528
  children: variant === 'detailed' ? product.description : product.shortDescription || product.description
21367
21529
  })]
21368
- }), product.features && product.features.length > 0 && featuresListElement, product.technologies && product.technologies.length > 0 && technologiesSectionElement, jsx(Box, {
21530
+ })), !isEcommerce && product.features && product.features.length > 0 && featuresListElement, !isEcommerce && product.technologies && product.technologies.length > 0 && technologiesSectionElement, jsx(Box, {
21369
21531
  sx: {
21370
21532
  display: 'flex',
21371
21533
  gap: 1.5,
@@ -21378,7 +21540,12 @@ function ProductCardView({
21378
21540
  variant: action.variant || 'contained',
21379
21541
  // color={action.color || 'primary'}
21380
21542
  disabled: action.disabled,
21381
- onClick: action.onClick,
21543
+ onClick: e => {
21544
+ // Prevent Link navigation when clicking button (e.g., Add to Cart)
21545
+ e.stopPropagation();
21546
+ e.preventDefault();
21547
+ action.onClick();
21548
+ },
21382
21549
  ...(variant === 'compact' && {
21383
21550
  fullWidth: true
21384
21551
  }),
@@ -21743,11 +21910,10 @@ function ImageGalleryView({
21743
21910
  if (variant === 'grid') {
21744
21911
  return jsxs(Box, {
21745
21912
  ...restProps,
21746
- children: [jsx(Grid, {
21747
- container: true,
21748
- spacing: 2,
21749
- children: displayImages.map((image, index) => jsx(Grid, {
21750
- item: true,
21913
+ children: [jsx(GridLayout, {
21914
+ columns: 4,
21915
+ spacing: "medium",
21916
+ children: displayImages.map((image, index) => jsx(GridCell, {
21751
21917
  xs: 6,
21752
21918
  sm: 4,
21753
21919
  md: 3,
@@ -21807,6 +21973,21 @@ function OptionSelectorView({
21807
21973
  label = 'Select Option',
21808
21974
  dataSource,
21809
21975
  bindingOptions,
21976
+ // Exclude ViewProps that conflict with MUI FormControl types
21977
+ margin: _margin,
21978
+ marginTop: _marginTop,
21979
+ marginRight: _marginRight,
21980
+ marginBottom: _marginBottom,
21981
+ marginLeft: _marginLeft,
21982
+ marginX: _marginX,
21983
+ marginY: _marginY,
21984
+ padding: _padding,
21985
+ paddingTop: _paddingTop,
21986
+ paddingRight: _paddingRight,
21987
+ paddingBottom: _paddingBottom,
21988
+ paddingLeft: _paddingLeft,
21989
+ paddingX: _paddingX,
21990
+ paddingY: _paddingY,
21810
21991
  ...restProps
21811
21992
  }) {
21812
21993
  const handleOptionClick = useCallback((optionId, available) => {
@@ -23035,6 +23216,21 @@ function FormFieldView({
23035
23216
  startAdornment,
23036
23217
  endAdornment,
23037
23218
  inputProps,
23219
+ // Exclude ViewProps that conflict with MUI FormControl types
23220
+ margin: _margin,
23221
+ marginTop: _marginTop,
23222
+ marginRight: _marginRight,
23223
+ marginBottom: _marginBottom,
23224
+ marginLeft: _marginLeft,
23225
+ marginX: _marginX,
23226
+ marginY: _marginY,
23227
+ padding: _padding,
23228
+ paddingTop: _paddingTop,
23229
+ paddingRight: _paddingRight,
23230
+ paddingBottom: _paddingBottom,
23231
+ paddingLeft: _paddingLeft,
23232
+ paddingX: _paddingX,
23233
+ paddingY: _paddingY,
23038
23234
  ...restProps
23039
23235
  }) {
23040
23236
  const fieldId = React.useId();
@@ -23131,6 +23327,21 @@ function FormSelectView({
23131
23327
  fullWidth = true,
23132
23328
  size = 'small',
23133
23329
  placeholder,
23330
+ // Exclude ViewProps that conflict with MUI FormControl types
23331
+ margin: _margin,
23332
+ marginTop: _marginTop,
23333
+ marginRight: _marginRight,
23334
+ marginBottom: _marginBottom,
23335
+ marginLeft: _marginLeft,
23336
+ marginX: _marginX,
23337
+ marginY: _marginY,
23338
+ padding: _padding,
23339
+ paddingTop: _paddingTop,
23340
+ paddingRight: _paddingRight,
23341
+ paddingBottom: _paddingBottom,
23342
+ paddingLeft: _paddingLeft,
23343
+ paddingX: _paddingX,
23344
+ paddingY: _paddingY,
23134
23345
  ...restProps
23135
23346
  }) {
23136
23347
  const handleChange = e => {
@@ -23205,6 +23416,21 @@ function FormCheckboxView({
23205
23416
  helperText,
23206
23417
  required = false,
23207
23418
  disabled = false,
23419
+ // Exclude ViewProps that conflict with MUI FormControl types
23420
+ margin: _margin,
23421
+ marginTop: _marginTop,
23422
+ marginRight: _marginRight,
23423
+ marginBottom: _marginBottom,
23424
+ marginLeft: _marginLeft,
23425
+ marginX: _marginX,
23426
+ marginY: _marginY,
23427
+ padding: _padding,
23428
+ paddingTop: _paddingTop,
23429
+ paddingRight: _paddingRight,
23430
+ paddingBottom: _paddingBottom,
23431
+ paddingLeft: _paddingLeft,
23432
+ paddingX: _paddingX,
23433
+ paddingY: _paddingY,
23208
23434
  ...restProps
23209
23435
  }) {
23210
23436
  const handleChange = e => {