@qwickapps/react-framework 1.5.12 → 1.6.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.
- package/README.md +23 -0
- package/dist/components/blocks/ImageGallery.d.ts +30 -0
- package/dist/components/blocks/ImageGallery.d.ts.map +1 -0
- package/dist/components/blocks/OptionSelector.d.ts +45 -0
- package/dist/components/blocks/OptionSelector.d.ts.map +1 -0
- package/dist/components/blocks/index.d.ts +4 -0
- package/dist/components/blocks/index.d.ts.map +1 -1
- package/dist/components/forms/Captcha.d.ts +33 -28
- package/dist/components/forms/Captcha.d.ts.map +1 -1
- package/dist/components/forms/FormCheckbox.d.ts +15 -12
- package/dist/components/forms/FormCheckbox.d.ts.map +1 -1
- package/dist/components/forms/FormField.d.ts +20 -23
- package/dist/components/forms/FormField.d.ts.map +1 -1
- package/dist/components/forms/FormSelect.d.ts +16 -15
- package/dist/components/forms/FormSelect.d.ts.map +1 -1
- package/dist/hooks/useBaseProps.d.ts +27 -1172
- package/dist/hooks/useBaseProps.d.ts.map +1 -1
- package/dist/index.esm.js +1674 -554
- package/dist/index.js +1676 -552
- package/dist/palettes/manifest.json +19 -19
- package/dist/schemas/CaptchaSchema.d.ts +16 -0
- package/dist/schemas/CaptchaSchema.d.ts.map +1 -0
- package/dist/schemas/FormCheckboxSchema.d.ts +16 -0
- package/dist/schemas/FormCheckboxSchema.d.ts.map +1 -0
- package/dist/schemas/FormFieldSchema.d.ts +23 -0
- package/dist/schemas/FormFieldSchema.d.ts.map +1 -0
- package/dist/schemas/FormSelectSchema.d.ts +20 -0
- package/dist/schemas/FormSelectSchema.d.ts.map +1 -0
- package/dist/schemas/ImageGallerySchema.d.ts +27 -0
- package/dist/schemas/ImageGallerySchema.d.ts.map +1 -0
- package/dist/schemas/OptionSelectorSchema.d.ts +34 -0
- package/dist/schemas/OptionSelectorSchema.d.ts.map +1 -0
- package/dist/schemas/index.d.ts +6 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/blocks/Article.tsx +1 -1
- package/src/components/blocks/ImageGallery.tsx +464 -0
- package/src/components/blocks/OptionSelector.tsx +459 -0
- package/src/components/blocks/index.ts +4 -0
- package/src/components/forms/Captcha.tsx +57 -63
- package/src/components/forms/FormCheckbox.tsx +35 -43
- package/src/components/forms/FormField.tsx +50 -66
- package/src/components/forms/FormSelect.tsx +41 -49
- package/src/hooks/useBaseProps.ts +34 -1
- package/src/schemas/CaptchaSchema.ts +65 -0
- package/src/schemas/FormCheckboxSchema.ts +65 -0
- package/src/schemas/FormFieldSchema.ts +140 -0
- package/src/schemas/FormSelectSchema.ts +108 -0
- package/src/schemas/ImageGallerySchema.ts +148 -0
- package/src/schemas/OptionSelectorSchema.ts +216 -0
- package/src/schemas/index.ts +6 -0
- package/src/stories/ImageGallery.stories.tsx +497 -0
- package/src/stories/OptionSelector.stories.tsx +506 -0
- /package/dist/palettes/{palette-autumn.1.5.12.css → palette-autumn.1.6.0.css} +0 -0
- /package/dist/palettes/{palette-autumn.1.5.12.min.css → palette-autumn.1.6.0.min.css} +0 -0
- /package/dist/palettes/{palette-cosmic.1.5.12.css → palette-cosmic.1.6.0.css} +0 -0
- /package/dist/palettes/{palette-cosmic.1.5.12.min.css → palette-cosmic.1.6.0.min.css} +0 -0
- /package/dist/palettes/{palette-default.1.5.12.css → palette-default.1.6.0.css} +0 -0
- /package/dist/palettes/{palette-default.1.5.12.min.css → palette-default.1.6.0.min.css} +0 -0
- /package/dist/palettes/{palette-ocean.1.5.12.css → palette-ocean.1.6.0.css} +0 -0
- /package/dist/palettes/{palette-ocean.1.5.12.min.css → palette-ocean.1.6.0.min.css} +0 -0
- /package/dist/palettes/{palette-spring.1.5.12.css → palette-spring.1.6.0.css} +0 -0
- /package/dist/palettes/{palette-spring.1.5.12.min.css → palette-spring.1.6.0.min.css} +0 -0
- /package/dist/palettes/{palette-winter.1.5.12.css → palette-winter.1.6.0.css} +0 -0
- /package/dist/palettes/{palette-winter.1.5.12.min.css → palette-winter.1.6.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
|
+
### January 25, 2026 - E-Commerce Components (v1.5.13)
|
|
8
|
+
|
|
9
|
+
#### New Components
|
|
10
|
+
|
|
11
|
+
- **ImageGallery Component**: Professional image gallery with multiple display variants
|
|
12
|
+
- Three display modes: thumbnails (left/bottom/right), carousel, and grid
|
|
13
|
+
- Built-in zoom modal for full-screen viewing
|
|
14
|
+
- Customizable aspect ratios (1:1, 4:3, 16:9, custom)
|
|
15
|
+
- Responsive design with mobile-first approach
|
|
16
|
+
- Full theme compliance using CSS custom properties
|
|
17
|
+
|
|
18
|
+
- **OptionSelector Component**: Universal option selector for e-commerce and forms
|
|
19
|
+
- Text mode: Button grid for sizes, quantities (S, M, L, XL, etc.)
|
|
20
|
+
- Color mode: Circular swatches with hex color backgrounds
|
|
21
|
+
- Image mode: Rounded rectangle pattern/texture swatches
|
|
22
|
+
- Features: availability states, disabled options, tooltips, price adjustments
|
|
23
|
+
- Dropdown fallback for accessibility
|
|
24
|
+
- Consolidates previous SizeSelector and ColorSelector into unified component
|
|
25
|
+
|
|
26
|
+
#### Bug Fixes
|
|
27
|
+
|
|
28
|
+
- **Article Component**: Fixed TypeScript type error in Article component
|
|
29
|
+
|
|
7
30
|
### December 6, 2025 - Repository URLs Update (v1.5.5)
|
|
8
31
|
|
|
9
32
|
- Updated repository and homepage URLs to point to public GitHub org
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { SerializableComponent } from '../shared/createSerializableView';
|
|
2
|
+
import { ViewProps } from '../shared/viewProps';
|
|
3
|
+
export interface GalleryImage {
|
|
4
|
+
url: string;
|
|
5
|
+
alt: string;
|
|
6
|
+
thumbnail?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ImageGalleryProps extends ViewProps {
|
|
9
|
+
/** Array of product images */
|
|
10
|
+
images: GalleryImage[];
|
|
11
|
+
/** Product name for accessibility */
|
|
12
|
+
productName: string;
|
|
13
|
+
/** Gallery display variant */
|
|
14
|
+
variant?: 'thumbnails' | 'carousel' | 'grid';
|
|
15
|
+
/** Position of thumbnails (only for thumbnails variant) */
|
|
16
|
+
thumbnailPosition?: 'left' | 'bottom' | 'right';
|
|
17
|
+
/** Aspect ratio for main image */
|
|
18
|
+
aspectRatio?: string;
|
|
19
|
+
/** Enable zoom functionality */
|
|
20
|
+
showZoom?: boolean;
|
|
21
|
+
/** Maximum number of images to display */
|
|
22
|
+
maxImages?: number;
|
|
23
|
+
/** Data source for dynamic loading */
|
|
24
|
+
dataSource?: string;
|
|
25
|
+
/** Data binding configuration */
|
|
26
|
+
bindingOptions?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
export declare const ImageGallery: SerializableComponent<ImageGalleryProps>;
|
|
29
|
+
export default ImageGallery;
|
|
30
|
+
//# sourceMappingURL=ImageGallery.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { SerializableComponent } from '../shared/createSerializableView';
|
|
2
|
+
import { ViewProps } from '../shared/viewProps';
|
|
3
|
+
export interface SelectOption {
|
|
4
|
+
/** Unique identifier */
|
|
5
|
+
id: string;
|
|
6
|
+
/** Display label */
|
|
7
|
+
label: string;
|
|
8
|
+
/** Whether this option is available for selection */
|
|
9
|
+
available: boolean;
|
|
10
|
+
/** Optional price adjustment */
|
|
11
|
+
price?: number;
|
|
12
|
+
/** Hex color value (for color display mode) */
|
|
13
|
+
hexValue?: string;
|
|
14
|
+
/** Image URL (for image or color display mode) */
|
|
15
|
+
imageUrl?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface OptionSelectorProps extends ViewProps {
|
|
18
|
+
/** Array of available options */
|
|
19
|
+
options: SelectOption[];
|
|
20
|
+
/** Currently selected option ID */
|
|
21
|
+
selectedOption?: string;
|
|
22
|
+
/** Callback when option is selected */
|
|
23
|
+
onOptionSelect?: (optionId: string) => void;
|
|
24
|
+
/** Display mode */
|
|
25
|
+
displayMode?: 'text' | 'color' | 'image';
|
|
26
|
+
/** Display variant */
|
|
27
|
+
variant?: 'buttons' | 'dropdown' | 'grid';
|
|
28
|
+
/** Layout direction (for buttons variant) */
|
|
29
|
+
layout?: 'horizontal' | 'vertical' | 'wrap';
|
|
30
|
+
/** Visual size (for color/image modes) */
|
|
31
|
+
visualSize?: 'small' | 'medium' | 'large';
|
|
32
|
+
/** Show label below visual (for color/image modes) */
|
|
33
|
+
showLabel?: boolean;
|
|
34
|
+
/** Disable all selections */
|
|
35
|
+
disabled?: boolean;
|
|
36
|
+
/** Label for the selector */
|
|
37
|
+
label?: string;
|
|
38
|
+
/** Data source for dynamic loading */
|
|
39
|
+
dataSource?: string;
|
|
40
|
+
/** Data binding configuration */
|
|
41
|
+
bindingOptions?: Record<string, unknown>;
|
|
42
|
+
}
|
|
43
|
+
export declare const OptionSelector: SerializableComponent<OptionSelectorProps>;
|
|
44
|
+
export default OptionSelector;
|
|
45
|
+
//# sourceMappingURL=OptionSelector.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -22,6 +22,8 @@ export { default as Section } from './Section';
|
|
|
22
22
|
export { default as Image } from './Image';
|
|
23
23
|
export { default as Text } from './Text';
|
|
24
24
|
export { default as ProductCard } from './ProductCard';
|
|
25
|
+
export { default as ImageGallery } from './ImageGallery';
|
|
26
|
+
export { default as OptionSelector } from './OptionSelector';
|
|
25
27
|
export { default as FeatureCard } from './FeatureCard';
|
|
26
28
|
export { default as CardListGrid } from './CardListGrid';
|
|
27
29
|
export type { HeroBlockProps } from './HeroBlock';
|
|
@@ -36,6 +38,8 @@ export type { SectionProps } from './Section';
|
|
|
36
38
|
export type { ImageProps } from './Image';
|
|
37
39
|
export type { TextProps } from './Text';
|
|
38
40
|
export type { ProductCardProps, Product, ProductCardAction } from './ProductCard';
|
|
41
|
+
export type { ImageGalleryProps, GalleryImage } from './ImageGallery';
|
|
42
|
+
export type { OptionSelectorProps, SelectOption } from './OptionSelector';
|
|
39
43
|
export type { FeatureCardProps, FeatureItem, FeatureCardAction } from './FeatureCard';
|
|
40
44
|
export type { CardListGridProps } from './CardListGrid';
|
|
41
45
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEzD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9E,YAAY,EAAE,gBAAgB,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AACtF,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClF,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACtF,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/blocks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEzD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9E,YAAY,EAAE,gBAAgB,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AACtF,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClF,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACtF,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -11,45 +11,50 @@
|
|
|
11
11
|
* - Provider-agnostic API
|
|
12
12
|
* - Automatic script loading
|
|
13
13
|
* - TypeScript support
|
|
14
|
-
* - Themed styling with
|
|
14
|
+
* - Themed styling with schema-driven architecture
|
|
15
15
|
* - Grid behavior support
|
|
16
16
|
* - Error handling
|
|
17
17
|
*
|
|
18
18
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
19
19
|
*/
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
import type { SchemaProps } from '@qwickapps/schema';
|
|
21
|
+
import CaptchaModel from '../../schemas/CaptchaSchema';
|
|
22
|
+
import { ViewProps } from '../shared/viewProps';
|
|
23
|
+
import { SerializableComponent } from '../shared/createSerializableView';
|
|
24
|
+
declare global {
|
|
25
|
+
interface Window {
|
|
26
|
+
grecaptcha?: {
|
|
27
|
+
render?: (container: HTMLElement | null, params: Record<string, unknown>) => string | number;
|
|
28
|
+
execute?: (siteKey: string, options: {
|
|
29
|
+
action: string;
|
|
30
|
+
}) => Promise<string>;
|
|
31
|
+
reset?: (widgetId: string | number) => void;
|
|
32
|
+
};
|
|
33
|
+
hcaptcha?: {
|
|
34
|
+
render?: (container: HTMLElement | null, params: Record<string, unknown>) => string | number;
|
|
35
|
+
remove?: (widgetId: string | number) => void;
|
|
36
|
+
};
|
|
37
|
+
turnstile?: {
|
|
38
|
+
render?: (container: HTMLElement | null, params: Record<string, unknown>) => string | number;
|
|
39
|
+
remove?: (widgetId: string | number) => void;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Props interface for Captcha component
|
|
45
|
+
* Combines schema props with callback handlers
|
|
46
|
+
*/
|
|
47
|
+
export interface CaptchaProps extends ViewProps, SchemaProps<typeof CaptchaModel> {
|
|
28
48
|
/** Callback when CAPTCHA is successfully completed */
|
|
29
49
|
onVerify: (token: string) => void;
|
|
30
50
|
/** Callback when CAPTCHA expires or fails */
|
|
31
51
|
onExpire?: () => void;
|
|
32
52
|
/** Callback when CAPTCHA encounters an error */
|
|
33
53
|
onError?: (error: Error) => void;
|
|
34
|
-
/** Theme for the widget (light or dark) */
|
|
35
|
-
theme?: 'light' | 'dark';
|
|
36
|
-
/** Size of the widget */
|
|
37
|
-
size?: 'normal' | 'compact' | 'invisible';
|
|
38
|
-
/** reCAPTCHA v3 action name */
|
|
39
|
-
action?: string;
|
|
40
|
-
}
|
|
41
|
-
export interface CaptchaProps extends WithBaseProps<CaptchaBaseProps> {
|
|
42
54
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
turnstile?: unknown;
|
|
48
|
-
onRecaptchaLoad?: () => void;
|
|
49
|
-
onHcaptchaLoad?: () => void;
|
|
50
|
-
onTurnstileLoad?: () => void;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
export declare const Captcha: React.ForwardRefExoticComponent<CaptchaProps & React.RefAttributes<HTMLDivElement>>;
|
|
55
|
+
/**
|
|
56
|
+
* Create Captcha component using the factory pattern
|
|
57
|
+
*/
|
|
58
|
+
export declare const Captcha: SerializableComponent<CaptchaProps>;
|
|
54
59
|
export default Captcha;
|
|
55
60
|
//# sourceMappingURL=Captcha.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Captcha.d.ts","sourceRoot":"","sources":["../../../src/components/forms/Captcha.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"Captcha.d.ts","sourceRoot":"","sources":["../../../src/components/forms/Captcha.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,YAAY,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAA0B,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGjG,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,UAAU,CAAC,EAAE;YACX,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;YAC7F,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;gBAAE,MAAM,EAAE,MAAM,CAAA;aAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5E,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;SAC7C,CAAC;QACF,QAAQ,CAAC,EAAE;YACT,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;YAC7F,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;SAC9C,CAAC;QACF,SAAS,CAAC,EAAE;YACV,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;YAC7F,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;SAC9C,CAAC;KACH;CACF;AAED;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,SAAS,EAAE,WAAW,CAAC,OAAO,YAAY,CAAC;IAC/E,sDAAsD;IACtD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAyND;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,qBAAqB,CAAC,YAAY,CAKtD,CAAC;AAEH,eAAe,OAAO,CAAC"}
|
|
@@ -6,22 +6,25 @@
|
|
|
6
6
|
* - Supports FormControlLabel for proper label positioning
|
|
7
7
|
* - Handles required and disabled states
|
|
8
8
|
* - Helper text support
|
|
9
|
-
* -
|
|
9
|
+
* - Schema-driven architecture with serialization support
|
|
10
10
|
*
|
|
11
11
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
12
12
|
*/
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
import type { SchemaProps } from '@qwickapps/schema';
|
|
14
|
+
import FormCheckboxModel from '../../schemas/FormCheckboxSchema';
|
|
15
|
+
import { ViewProps } from '../shared/viewProps';
|
|
16
|
+
import { SerializableComponent } from '../shared/createSerializableView';
|
|
17
|
+
/**
|
|
18
|
+
* Props interface for FormCheckbox component
|
|
19
|
+
* Combines schema props with callback handler
|
|
20
|
+
*/
|
|
21
|
+
export interface FormCheckboxProps extends ViewProps, SchemaProps<typeof FormCheckboxModel> {
|
|
22
|
+
/** Callback when checkbox state changes */
|
|
18
23
|
onChange: (checked: boolean) => void;
|
|
19
|
-
helperText?: string;
|
|
20
|
-
required?: boolean;
|
|
21
|
-
disabled?: boolean;
|
|
22
|
-
}
|
|
23
|
-
export interface FormCheckboxProps extends WithBaseProps<FormCheckboxBaseProps> {
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Create FormCheckbox component using the factory pattern
|
|
27
|
+
*/
|
|
28
|
+
export declare const FormCheckbox: SerializableComponent<FormCheckboxProps>;
|
|
26
29
|
export default FormCheckbox;
|
|
27
30
|
//# sourceMappingURL=FormCheckbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormCheckbox.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormCheckbox.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
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"}
|
|
@@ -4,40 +4,37 @@
|
|
|
4
4
|
* Features:
|
|
5
5
|
* - Uses QwickApps CSS theme variables for consistent styling
|
|
6
6
|
* - Supports text, number, password, and email input types
|
|
7
|
-
* - Integrated with MUI FormControl, Input
|
|
7
|
+
* - Integrated with MUI FormControl, Input
|
|
8
8
|
* - Handles readonly, disabled, and required states
|
|
9
9
|
* - Support for adornments and helper text
|
|
10
|
-
* -
|
|
10
|
+
* - Schema-driven architecture with serialization support
|
|
11
11
|
*
|
|
12
12
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
13
13
|
*/
|
|
14
14
|
import React from 'react';
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
interface
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
import type { SchemaProps } from '@qwickapps/schema';
|
|
16
|
+
import FormFieldModel from '../../schemas/FormFieldSchema';
|
|
17
|
+
import { ViewProps } from '../shared/viewProps';
|
|
18
|
+
import { SerializableComponent } from '../shared/createSerializableView';
|
|
19
|
+
/**
|
|
20
|
+
* Props interface for FormField component
|
|
21
|
+
* Combines schema props with callback handlers and adornments
|
|
22
|
+
*/
|
|
23
|
+
export interface FormFieldProps extends ViewProps, SchemaProps<typeof FormFieldModel> {
|
|
24
|
+
/** Callback when value changes */
|
|
23
25
|
onChange?: (value: string | number) => void;
|
|
26
|
+
/** Raw change handler with event */
|
|
24
27
|
onChangeRaw?: (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;
|
|
25
|
-
|
|
26
|
-
helperText?: string;
|
|
27
|
-
required?: boolean;
|
|
28
|
-
readOnly?: boolean;
|
|
29
|
-
disabled?: boolean;
|
|
30
|
-
disabledColor?: string;
|
|
31
|
-
fullWidth?: boolean;
|
|
32
|
-
multiline?: boolean;
|
|
33
|
-
rows?: number;
|
|
34
|
-
placeholder?: string;
|
|
28
|
+
/** Start adornment (icon, text, etc.) */
|
|
35
29
|
startAdornment?: React.ReactNode;
|
|
30
|
+
/** End adornment (icon, text, etc.) */
|
|
36
31
|
endAdornment?: React.ReactNode;
|
|
32
|
+
/** Additional input props */
|
|
37
33
|
inputProps?: unknown;
|
|
38
34
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Create FormField component using the factory pattern
|
|
37
|
+
*/
|
|
38
|
+
export declare const FormField: SerializableComponent<FormFieldProps>;
|
|
42
39
|
export default FormField;
|
|
43
40
|
//# sourceMappingURL=FormField.d.ts.map
|
|
@@ -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,
|
|
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"}
|
|
@@ -6,30 +6,31 @@
|
|
|
6
6
|
* - Simplified select-only interface (use FormField for mixed inputs)
|
|
7
7
|
* - Support for placeholder, size variants, and helper text
|
|
8
8
|
* - Integrated with MUI FormControl and Select
|
|
9
|
-
* -
|
|
9
|
+
* - Schema-driven architecture with serialization support
|
|
10
10
|
*
|
|
11
11
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
12
12
|
*/
|
|
13
|
-
import
|
|
14
|
-
import
|
|
13
|
+
import type { SchemaProps } from '@qwickapps/schema';
|
|
14
|
+
import FormSelectModel from '../../schemas/FormSelectSchema';
|
|
15
|
+
import { ViewProps } from '../shared/viewProps';
|
|
16
|
+
import { SerializableComponent } from '../shared/createSerializableView';
|
|
15
17
|
export interface FormSelectOption {
|
|
16
18
|
value: string | number;
|
|
17
19
|
label: string;
|
|
18
20
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Props interface for FormSelect component
|
|
23
|
+
* Combines schema props with callback handlers
|
|
24
|
+
*/
|
|
25
|
+
export interface FormSelectProps extends ViewProps, SchemaProps<typeof FormSelectModel> {
|
|
26
|
+
/** Callback when value changes */
|
|
22
27
|
onChange: (value: string | number) => void;
|
|
28
|
+
/** Options array (runtime prop, overrides schema) */
|
|
23
29
|
options: FormSelectOption[];
|
|
24
|
-
helperText?: string;
|
|
25
|
-
required?: boolean;
|
|
26
|
-
disabled?: boolean;
|
|
27
|
-
fullWidth?: boolean;
|
|
28
|
-
size?: 'small' | 'medium';
|
|
29
|
-
placeholder?: string;
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Create FormSelect component using the factory pattern
|
|
33
|
+
*/
|
|
34
|
+
export declare const FormSelect: SerializableComponent<FormSelectProps>;
|
|
34
35
|
export default FormSelect;
|
|
35
36
|
//# sourceMappingURL=FormSelect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormSelect.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormSelect.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
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"}
|