@qwickapps/react-framework 1.9.0 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Html.d.ts.map +1 -1
- package/dist/components/blocks/HeroSlideshow.d.ts +54 -0
- package/dist/components/blocks/HeroSlideshow.d.ts.map +1 -0
- package/dist/components/blocks/index.d.ts +2 -0
- package/dist/components/blocks/index.d.ts.map +1 -1
- package/dist/components/forms/FormField.d.ts +2 -0
- package/dist/components/forms/FormField.d.ts.map +1 -1
- package/dist/components/forms/FormSelect.d.ts +2 -0
- package/dist/components/forms/FormSelect.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +189 -42
- package/dist/index.js +189 -41
- package/dist/palettes/manifest.json +22 -22
- package/package.json +3 -3
- package/src/components/Scaffold.css +3 -0
- package/dist/palettes/palette-autumn.1.8.1.css +0 -174
- package/dist/palettes/palette-autumn.1.8.1.min.css +0 -1
- package/dist/palettes/palette-boutique.1.8.1.css +0 -176
- package/dist/palettes/palette-boutique.1.8.1.min.css +0 -1
- package/dist/palettes/palette-cosmic.1.8.1.css +0 -174
- package/dist/palettes/palette-cosmic.1.8.1.min.css +0 -1
- package/dist/palettes/palette-default.1.8.1.css +0 -178
- package/dist/palettes/palette-default.1.8.1.min.css +0 -1
- package/dist/palettes/palette-ocean.1.8.1.css +0 -174
- package/dist/palettes/palette-ocean.1.8.1.min.css +0 -1
- package/dist/palettes/palette-spring.1.8.1.css +0 -168
- package/dist/palettes/palette-spring.1.8.1.min.css +0 -1
- package/dist/palettes/palette-winter.1.8.1.css +0 -174
- package/dist/palettes/palette-winter.1.8.1.min.css +0 -1
- /package/dist/palettes/{palette-autumn.1.8.0.css → palette-autumn.1.9.1.css} +0 -0
- /package/dist/palettes/{palette-autumn.1.8.0.min.css → palette-autumn.1.9.1.min.css} +0 -0
- /package/dist/palettes/{palette-boutique.1.8.0.css → palette-boutique.1.9.1.css} +0 -0
- /package/dist/palettes/{palette-boutique.1.8.0.min.css → palette-boutique.1.9.1.min.css} +0 -0
- /package/dist/palettes/{palette-cosmic.1.8.0.css → palette-cosmic.1.9.1.css} +0 -0
- /package/dist/palettes/{palette-cosmic.1.8.0.min.css → palette-cosmic.1.9.1.min.css} +0 -0
- /package/dist/palettes/{palette-default.1.8.0.css → palette-default.1.9.1.css} +0 -0
- /package/dist/palettes/{palette-default.1.8.0.min.css → palette-default.1.9.1.min.css} +0 -0
- /package/dist/palettes/{palette-ocean.1.8.0.css → palette-ocean.1.9.1.css} +0 -0
- /package/dist/palettes/{palette-ocean.1.8.0.min.css → palette-ocean.1.9.1.min.css} +0 -0
- /package/dist/palettes/{palette-spring.1.8.0.css → palette-spring.1.9.1.css} +0 -0
- /package/dist/palettes/{palette-spring.1.8.0.min.css → palette-spring.1.9.1.min.css} +0 -0
- /package/dist/palettes/{palette-winter.1.8.0.css → palette-winter.1.9.1.css} +0 -0
- /package/dist/palettes/{palette-winter.1.8.0.min.css → palette-winter.1.9.1.min.css} +0 -0
package/dist/index.esm.js
CHANGED
|
@@ -5767,7 +5767,7 @@ function LogoView({
|
|
|
5767
5767
|
setCalculatedBadgePosition(badgePos);
|
|
5768
5768
|
setSvgWidth(requiredWidth);
|
|
5769
5769
|
}
|
|
5770
|
-
}, [name, badge, badgeOffset, calculateBadgePosition, fontSize, height, parseNameParts
|
|
5770
|
+
}, [name, badge, badgeOffset, calculateBadgePosition, fontSize, height, parseNameParts]);
|
|
5771
5771
|
// Determine CSS class for variant
|
|
5772
5772
|
let variantClass = '';
|
|
5773
5773
|
if (variant === 'high-contrast' || variant === 'monochrome' || variant === 'on-primary') {
|
|
@@ -15933,7 +15933,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
15933
15933
|
}
|
|
15934
15934
|
|
|
15935
15935
|
let result = '';
|
|
15936
|
-
// Used for hot swapping the result variable with an empty string
|
|
15936
|
+
// Used for hot swapping the result variable with an empty string
|
|
15937
|
+
// in order to "capture" the text written to it.
|
|
15937
15938
|
let tempResult = '';
|
|
15938
15939
|
|
|
15939
15940
|
function Frame(tag, attribs) {
|
|
@@ -15964,7 +15965,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
15964
15965
|
options.parser = Object.assign({}, htmlParserDefaults, options.parser);
|
|
15965
15966
|
|
|
15966
15967
|
const tagAllowed = function (name) {
|
|
15967
|
-
return options.allowedTags === false ||
|
|
15968
|
+
return options.allowedTags === false ||
|
|
15969
|
+
(options.allowedTags || []).indexOf(name) > -1;
|
|
15968
15970
|
};
|
|
15969
15971
|
|
|
15970
15972
|
// vulnerableTags
|
|
@@ -16146,7 +16148,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16146
16148
|
}
|
|
16147
16149
|
|
|
16148
16150
|
const isBeingEscaped = skip && (options.disallowedTagsMode === 'escape' || options.disallowedTagsMode === 'recursiveEscape');
|
|
16149
|
-
const shouldPreserveEscapedAttributes = isBeingEscaped &&
|
|
16151
|
+
const shouldPreserveEscapedAttributes = isBeingEscaped &&
|
|
16152
|
+
options.preserveEscapedAttributes;
|
|
16150
16153
|
|
|
16151
16154
|
if (shouldPreserveEscapedAttributes) {
|
|
16152
16155
|
each(attribs, function(value, a) {
|
|
@@ -16160,8 +16163,10 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16160
16163
|
delete frame.attribs[a];
|
|
16161
16164
|
return;
|
|
16162
16165
|
}
|
|
16163
|
-
// If the value is empty, check if the attribute is
|
|
16164
|
-
//
|
|
16166
|
+
// If the value is empty, check if the attribute is
|
|
16167
|
+
// in the allowedEmptyAttributes array.
|
|
16168
|
+
// If it is not in the allowedEmptyAttributes array,
|
|
16169
|
+
// and it is a known non-boolean attribute, delete it
|
|
16165
16170
|
// List taken from https://html.spec.whatwg.org/multipage/indices.html#attributes-3
|
|
16166
16171
|
if (value === '' && (!options.allowedEmptyAttributes.includes(a)) &&
|
|
16167
16172
|
(options.nonBooleanAttributes.includes(a) || options.nonBooleanAttributes.includes('*'))) {
|
|
@@ -16172,9 +16177,11 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16172
16177
|
// as necessary if there are specific values defined.
|
|
16173
16178
|
let passedAllowedAttributesMapCheck = false;
|
|
16174
16179
|
if (!allowedAttributesMap ||
|
|
16175
|
-
(has(allowedAttributesMap, name) &&
|
|
16180
|
+
(has(allowedAttributesMap, name) &&
|
|
16181
|
+
allowedAttributesMap[name].indexOf(a) !== -1) ||
|
|
16176
16182
|
(allowedAttributesMap['*'] && allowedAttributesMap['*'].indexOf(a) !== -1) ||
|
|
16177
|
-
(has(allowedAttributesGlobMap, name) &&
|
|
16183
|
+
(has(allowedAttributesGlobMap, name) &&
|
|
16184
|
+
allowedAttributesGlobMap[name].test(a)) ||
|
|
16178
16185
|
(allowedAttributesGlobMap['*'] && allowedAttributesGlobMap['*'].test(a))) {
|
|
16179
16186
|
passedAllowedAttributesMapCheck = true;
|
|
16180
16187
|
} else if (allowedAttributesMap && allowedAttributesMap[name]) {
|
|
@@ -16218,12 +16225,14 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16218
16225
|
const parsed = parseUrl(value);
|
|
16219
16226
|
|
|
16220
16227
|
if (options.allowedScriptHostnames || options.allowedScriptDomains) {
|
|
16221
|
-
const allowedHostname = (options.allowedScriptHostnames || [])
|
|
16222
|
-
|
|
16223
|
-
|
|
16224
|
-
|
|
16225
|
-
|
|
16226
|
-
|
|
16228
|
+
const allowedHostname = (options.allowedScriptHostnames || [])
|
|
16229
|
+
.find(function (hostname) {
|
|
16230
|
+
return hostname === parsed.url.hostname;
|
|
16231
|
+
});
|
|
16232
|
+
const allowedDomain = (options.allowedScriptDomains || [])
|
|
16233
|
+
.find(function(domain) {
|
|
16234
|
+
return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);
|
|
16235
|
+
});
|
|
16227
16236
|
allowed = allowedHostname || allowedDomain;
|
|
16228
16237
|
}
|
|
16229
16238
|
} catch (e) {
|
|
@@ -16247,13 +16256,18 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16247
16256
|
allowed = has(options, 'allowIframeRelativeUrls')
|
|
16248
16257
|
? options.allowIframeRelativeUrls
|
|
16249
16258
|
: (!options.allowedIframeHostnames && !options.allowedIframeDomains);
|
|
16250
|
-
} else if (
|
|
16251
|
-
|
|
16252
|
-
|
|
16253
|
-
|
|
16254
|
-
const
|
|
16255
|
-
|
|
16256
|
-
|
|
16259
|
+
} else if (
|
|
16260
|
+
options.allowedIframeHostnames ||
|
|
16261
|
+
options.allowedIframeDomains
|
|
16262
|
+
) {
|
|
16263
|
+
const allowedHostname = (options.allowedIframeHostnames || [])
|
|
16264
|
+
.find(function (hostname) {
|
|
16265
|
+
return hostname === parsed.url.hostname;
|
|
16266
|
+
});
|
|
16267
|
+
const allowedDomain = (options.allowedIframeDomains || [])
|
|
16268
|
+
.find(function(domain) {
|
|
16269
|
+
return parsed.url.hostname === domain || parsed.url.hostname.endsWith(`.${domain}`);
|
|
16270
|
+
});
|
|
16257
16271
|
allowed = allowedHostname || allowedDomain;
|
|
16258
16272
|
}
|
|
16259
16273
|
} catch (e) {
|
|
@@ -16307,9 +16321,17 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16307
16321
|
return t;
|
|
16308
16322
|
});
|
|
16309
16323
|
if (allowedSpecificClasses && allowedWildcardClasses) {
|
|
16310
|
-
value = filterClasses(
|
|
16324
|
+
value = filterClasses(
|
|
16325
|
+
value,
|
|
16326
|
+
deepmerge(allowedSpecificClasses, allowedWildcardClasses),
|
|
16327
|
+
allowedClassesGlobs
|
|
16328
|
+
);
|
|
16311
16329
|
} else {
|
|
16312
|
-
value = filterClasses(
|
|
16330
|
+
value = filterClasses(
|
|
16331
|
+
value,
|
|
16332
|
+
allowedSpecificClasses || allowedWildcardClasses,
|
|
16333
|
+
allowedClassesGlobs
|
|
16334
|
+
);
|
|
16313
16335
|
}
|
|
16314
16336
|
if (!value.length) {
|
|
16315
16337
|
delete frame.attribs[a];
|
|
@@ -16320,7 +16342,10 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16320
16342
|
if (options.parseStyleAttributes) {
|
|
16321
16343
|
try {
|
|
16322
16344
|
const abstractSyntaxTree = postcssParse(name + ' {' + value + '}', { map: false });
|
|
16323
|
-
const filteredAST = filterCss(
|
|
16345
|
+
const filteredAST = filterCss(
|
|
16346
|
+
abstractSyntaxTree,
|
|
16347
|
+
options.allowedStyles
|
|
16348
|
+
);
|
|
16324
16349
|
|
|
16325
16350
|
value = stringifyStyleAttributes(filteredAST);
|
|
16326
16351
|
|
|
@@ -16453,7 +16478,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16453
16478
|
tempResult = '';
|
|
16454
16479
|
}
|
|
16455
16480
|
// remove the opening tag from the result
|
|
16456
|
-
result = result.substring(0, frame.tagPosition) +
|
|
16481
|
+
result = result.substring(0, frame.tagPosition) +
|
|
16482
|
+
result.substring(frame.tagPosition + frame.openingTagLength);
|
|
16457
16483
|
return;
|
|
16458
16484
|
} else if (filterResult) {
|
|
16459
16485
|
result = result.substring(0, frame.tagPosition);
|
|
@@ -16488,6 +16514,16 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16488
16514
|
parser.write(html);
|
|
16489
16515
|
parser.end();
|
|
16490
16516
|
|
|
16517
|
+
if (options.disallowedTagsMode === 'escape' || options.disallowedTagsMode === 'recursiveEscape') {
|
|
16518
|
+
const lastParsedIndex = parser.endIndex;
|
|
16519
|
+
if (lastParsedIndex != null && lastParsedIndex >= 0 && lastParsedIndex < html.length) {
|
|
16520
|
+
const unparsed = html.substring(lastParsedIndex);
|
|
16521
|
+
result += escapeHtml(unparsed);
|
|
16522
|
+
} else if ((lastParsedIndex == null || lastParsedIndex < 0) && html.length > 0 && result === '') {
|
|
16523
|
+
result = escapeHtml(html);
|
|
16524
|
+
}
|
|
16525
|
+
}
|
|
16526
|
+
|
|
16491
16527
|
return result;
|
|
16492
16528
|
|
|
16493
16529
|
function initializeState() {
|
|
@@ -16598,8 +16634,10 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16598
16634
|
* Modifies the abstractSyntaxTree object.
|
|
16599
16635
|
*
|
|
16600
16636
|
* @param {object} abstractSyntaxTree - Object representation of CSS attributes.
|
|
16601
|
-
* @property {array[Declaration]} abstractSyntaxTree.nodes[0] -
|
|
16602
|
-
*
|
|
16637
|
+
* @property {array[Declaration]} abstractSyntaxTree.nodes[0] -
|
|
16638
|
+
* Each object contains prop and value key, i.e { prop: 'color', value: 'red' }.
|
|
16639
|
+
* @param {object} allowedStyles - Keys are properties (i.e color),
|
|
16640
|
+
* value is list of permitted regex rules (i.e /green/i).
|
|
16603
16641
|
* @return {object} - The modified tree.
|
|
16604
16642
|
*/
|
|
16605
16643
|
function filterCss(abstractSyntaxTree, allowedStyles) {
|
|
@@ -16621,7 +16659,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16621
16659
|
}
|
|
16622
16660
|
|
|
16623
16661
|
if (selectedRule) {
|
|
16624
|
-
abstractSyntaxTree.nodes[0].nodes = astRules.nodes
|
|
16662
|
+
abstractSyntaxTree.nodes[0].nodes = astRules.nodes
|
|
16663
|
+
.reduce(filterDeclarations(selectedRule), []);
|
|
16625
16664
|
}
|
|
16626
16665
|
|
|
16627
16666
|
return abstractSyntaxTree;
|
|
@@ -16632,7 +16671,8 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16632
16671
|
* values in the inline style attribute format.
|
|
16633
16672
|
*
|
|
16634
16673
|
* @param {AbstractSyntaxTree} filteredAST
|
|
16635
|
-
* @return {string} - Example:
|
|
16674
|
+
* @return {string} - Example:
|
|
16675
|
+
* "color:yellow;text-align:center !important;font-family:helvetica;"
|
|
16636
16676
|
*/
|
|
16637
16677
|
function stringifyStyleAttributes(filteredAST) {
|
|
16638
16678
|
return filteredAST.nodes[0].nodes
|
|
@@ -16649,21 +16689,25 @@ function sanitizeHtml(html, options, _recursing) {
|
|
|
16649
16689
|
* Filters the existing attributes for the given property. Discards any attributes
|
|
16650
16690
|
* which don't match the allowlist.
|
|
16651
16691
|
*
|
|
16652
|
-
* @param {object} selectedRule
|
|
16653
|
-
* @param {array} allowedDeclarationsList
|
|
16654
|
-
*
|
|
16655
|
-
* @
|
|
16656
|
-
* @property {string} attributeObject.
|
|
16657
|
-
* @property {string} attributeObject.
|
|
16658
|
-
* @
|
|
16692
|
+
* @param {object} selectedRule - Example: { color: red, font-family: helvetica }
|
|
16693
|
+
* @param {array} allowedDeclarationsList - List of declarations
|
|
16694
|
+
* which pass the allowlist.
|
|
16695
|
+
* @param {object} attributeObject - Object representing the current css property.
|
|
16696
|
+
* @property {string} attributeObject.type - Typically 'declaration'.
|
|
16697
|
+
* @property {string} attributeObject.prop - The CSS property, i.e 'color'.
|
|
16698
|
+
* @property {string} attributeObject.value - The corresponding value to
|
|
16699
|
+
* the css property, i.e 'red'.
|
|
16700
|
+
* @return {function} - When used in Array.reduce,
|
|
16701
|
+
* will return an array of Declaration objects
|
|
16659
16702
|
*/
|
|
16660
16703
|
function filterDeclarations(selectedRule) {
|
|
16661
16704
|
return function (allowedDeclarationsList, attributeObject) {
|
|
16662
16705
|
// If this property is allowlisted...
|
|
16663
16706
|
if (has(selectedRule, attributeObject.prop)) {
|
|
16664
|
-
const matchesRegex = selectedRule[attributeObject.prop]
|
|
16665
|
-
|
|
16666
|
-
|
|
16707
|
+
const matchesRegex = selectedRule[attributeObject.prop]
|
|
16708
|
+
.some(function(regularExpression) {
|
|
16709
|
+
return regularExpression.test(attributeObject.value);
|
|
16710
|
+
});
|
|
16667
16711
|
|
|
16668
16712
|
if (matchesRegex) {
|
|
16669
16713
|
allowedDeclarationsList.push(attributeObject);
|
|
@@ -16795,7 +16839,7 @@ sanitizeHtml.simpleTransform = function(newTagName, newAttribs, merge) {
|
|
|
16795
16839
|
|
|
16796
16840
|
return {
|
|
16797
16841
|
tagName: newTagName,
|
|
16798
|
-
attribs
|
|
16842
|
+
attribs
|
|
16799
16843
|
};
|
|
16800
16844
|
};
|
|
16801
16845
|
};
|
|
@@ -18116,7 +18160,9 @@ function HtmlView({
|
|
|
18116
18160
|
},
|
|
18117
18161
|
...styleProps.sx
|
|
18118
18162
|
},
|
|
18119
|
-
children: components
|
|
18163
|
+
children: Array.isArray(components) ? components.map((child, idx) => /*#__PURE__*/React.isValidElement(child) && child.key == null ? /*#__PURE__*/React.cloneElement(child, {
|
|
18164
|
+
key: `html-child-${idx}`
|
|
18165
|
+
}) : child) : components
|
|
18120
18166
|
});
|
|
18121
18167
|
} catch (error) {
|
|
18122
18168
|
console.error('Error transforming HTML content:', error);
|
|
@@ -18951,6 +18997,103 @@ function registerSerializableComponents() {
|
|
|
18951
18997
|
*/
|
|
18952
18998
|
registerSerializableComponents();
|
|
18953
18999
|
|
|
19000
|
+
/**
|
|
19001
|
+
* HeroSlideshow Component
|
|
19002
|
+
*
|
|
19003
|
+
* A slideshow built on top of HeroBlock that cycles through multiple slides
|
|
19004
|
+
* with auto-rotation, fade transitions, and progress dot navigation.
|
|
19005
|
+
*
|
|
19006
|
+
* Usage (props-driven, e.g. qwickdocs):
|
|
19007
|
+
* <HeroSlideshow slides={[{ title: 'Slide 1', ... }, ...]} />
|
|
19008
|
+
*
|
|
19009
|
+
* Usage (CMS-driven, e.g. work-macha):
|
|
19010
|
+
* const slideshow = await payload.findByID({ collection: 'hero-slideshows', id });
|
|
19011
|
+
* <HeroSlideshow slides={slideshow.slides} autoPlayInterval={slideshow.autoPlayInterval} />
|
|
19012
|
+
*
|
|
19013
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
19014
|
+
*/
|
|
19015
|
+
const TRANSITION_DURATION = 300; // ms
|
|
19016
|
+
/**
|
|
19017
|
+
* HeroSlideshow - Cycles through HeroBlock slides with fade transitions
|
|
19018
|
+
*/
|
|
19019
|
+
function HeroSlideshow({
|
|
19020
|
+
slides,
|
|
19021
|
+
autoPlayInterval = 5000,
|
|
19022
|
+
showDots = true,
|
|
19023
|
+
blockHeight = 'large',
|
|
19024
|
+
textAlign = 'center'
|
|
19025
|
+
}) {
|
|
19026
|
+
const [currentIndex, setCurrentIndex] = useState(0);
|
|
19027
|
+
const [isVisible, setIsVisible] = useState(true);
|
|
19028
|
+
const goToSlide = useCallback(index => {
|
|
19029
|
+
if (index === currentIndex) return;
|
|
19030
|
+
setIsVisible(false);
|
|
19031
|
+
setTimeout(() => {
|
|
19032
|
+
setCurrentIndex(index);
|
|
19033
|
+
setIsVisible(true);
|
|
19034
|
+
}, TRANSITION_DURATION);
|
|
19035
|
+
}, [currentIndex]);
|
|
19036
|
+
useEffect(() => {
|
|
19037
|
+
if (slides.length <= 1 || autoPlayInterval <= 0) return;
|
|
19038
|
+
const timer = setTimeout(() => {
|
|
19039
|
+
goToSlide((currentIndex + 1) % slides.length);
|
|
19040
|
+
}, autoPlayInterval);
|
|
19041
|
+
return () => clearTimeout(timer);
|
|
19042
|
+
}, [currentIndex, slides.length, autoPlayInterval, goToSlide]);
|
|
19043
|
+
if (!slides.length) return null;
|
|
19044
|
+
const slide = slides[currentIndex];
|
|
19045
|
+
return jsxs(Box, {
|
|
19046
|
+
sx: {
|
|
19047
|
+
position: 'relative',
|
|
19048
|
+
overflow: 'hidden'
|
|
19049
|
+
},
|
|
19050
|
+
children: [jsx(Box, {
|
|
19051
|
+
sx: {
|
|
19052
|
+
opacity: isVisible ? 1 : 0,
|
|
19053
|
+
transition: `opacity ${TRANSITION_DURATION}ms ease-in-out`
|
|
19054
|
+
},
|
|
19055
|
+
children: jsx(HeroBlock, {
|
|
19056
|
+
title: slide.title,
|
|
19057
|
+
subtitle: slide.subtitle,
|
|
19058
|
+
backgroundImage: slide.backgroundImage,
|
|
19059
|
+
backgroundGradient: slide.backgroundGradient,
|
|
19060
|
+
backgroundColor: slide.backgroundColor,
|
|
19061
|
+
actions: slide.actions,
|
|
19062
|
+
overlayOpacity: slide.overlayOpacity,
|
|
19063
|
+
blockHeight: blockHeight,
|
|
19064
|
+
textAlign: textAlign
|
|
19065
|
+
})
|
|
19066
|
+
}), showDots && slides.length > 1 && jsx(Box, {
|
|
19067
|
+
sx: {
|
|
19068
|
+
position: 'absolute',
|
|
19069
|
+
bottom: 20,
|
|
19070
|
+
left: '50%',
|
|
19071
|
+
transform: 'translateX(-50%)',
|
|
19072
|
+
display: 'flex',
|
|
19073
|
+
gap: 1,
|
|
19074
|
+
zIndex: 10
|
|
19075
|
+
},
|
|
19076
|
+
children: slides.map((_, index) => jsx(Box, {
|
|
19077
|
+
role: "button",
|
|
19078
|
+
"aria-label": `Go to slide ${index + 1}`,
|
|
19079
|
+
onClick: () => goToSlide(index),
|
|
19080
|
+
sx: {
|
|
19081
|
+
width: index === currentIndex ? 28 : 8,
|
|
19082
|
+
height: 8,
|
|
19083
|
+
borderRadius: 4,
|
|
19084
|
+
backgroundColor: 'rgba(255, 255, 255, 0.9)',
|
|
19085
|
+
opacity: index === currentIndex ? 1 : 0.45,
|
|
19086
|
+
cursor: 'pointer',
|
|
19087
|
+
transition: 'all 0.3s ease',
|
|
19088
|
+
'&:hover': {
|
|
19089
|
+
opacity: 0.8
|
|
19090
|
+
}
|
|
19091
|
+
}
|
|
19092
|
+
}, index))
|
|
19093
|
+
})]
|
|
19094
|
+
});
|
|
19095
|
+
}
|
|
19096
|
+
|
|
18954
19097
|
// View component - handles the actual rendering
|
|
18955
19098
|
function ArticleView({
|
|
18956
19099
|
html = '',
|
|
@@ -23225,6 +23368,7 @@ function FormFieldView({
|
|
|
23225
23368
|
startAdornment,
|
|
23226
23369
|
endAdornment,
|
|
23227
23370
|
inputProps,
|
|
23371
|
+
error,
|
|
23228
23372
|
// Exclude ViewProps that conflict with MUI FormControl types
|
|
23229
23373
|
margin: _margin,
|
|
23230
23374
|
marginTop: _marginTop,
|
|
@@ -23279,6 +23423,7 @@ function FormFieldView({
|
|
|
23279
23423
|
};
|
|
23280
23424
|
return jsxs(FormControl, {
|
|
23281
23425
|
fullWidth: fullWidth,
|
|
23426
|
+
error: error,
|
|
23282
23427
|
...restProps,
|
|
23283
23428
|
children: [jsx(InputLabel, {
|
|
23284
23429
|
htmlFor: fieldId,
|
|
@@ -23338,6 +23483,7 @@ function FormSelectView({
|
|
|
23338
23483
|
size = 'small',
|
|
23339
23484
|
placeholder,
|
|
23340
23485
|
name,
|
|
23486
|
+
error,
|
|
23341
23487
|
// Exclude ViewProps that conflict with MUI FormControl types
|
|
23342
23488
|
margin: _margin,
|
|
23343
23489
|
marginTop: _marginTop,
|
|
@@ -23381,6 +23527,7 @@ function FormSelectView({
|
|
|
23381
23527
|
return jsxs(FormControl, {
|
|
23382
23528
|
fullWidth: fullWidth,
|
|
23383
23529
|
size: size,
|
|
23530
|
+
error: error,
|
|
23384
23531
|
...restProps,
|
|
23385
23532
|
children: [label && jsx(InputLabel, {
|
|
23386
23533
|
sx: labelStyles,
|
|
@@ -33719,4 +33866,4 @@ __decorate([Field({
|
|
|
33719
33866
|
}), IsOptional(), __metadata("design:type", Boolean)], PageTemplateSchema.prototype, "indexable", void 0);
|
|
33720
33867
|
PageTemplateSchema = __decorate([Schema('PageTemplate', '1.0.0')], PageTemplateSchema);
|
|
33721
33868
|
|
|
33722
|
-
export { AVAILABLE_PALETTES, AccessibilityProvider, ActionModel, ActionType, AllPalettes, AppConfig, AppConfigBuilder, Article, ArticleModel, Breadcrumbs, Button, Captcha, CaptchaModel, CardListGrid, CardListGridModel, ChoiceInputField, ChoiceInputFieldModel, Code, CodeModel, CollapsibleLayout, CollapsibleLayoutView, ComponentTransformer$1 as ComponentTransformer, Container$8 as Container, Content, ContentModel, CoverImageHeader, CoverImageHeaderModel, DataProvider, DataProxy, DataTable, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, DimensionsProvider, ErrorBoundary, FeatureCard, FeatureCardActionModel, FeatureCardModel, FeatureGrid, FeatureGridModel, FeatureItemModel, Footer, FooterItemModel, FooterModel, FooterSectionModel, FormBlock, FormBlockModel, FormCheckbox, FormCheckboxModel, FormField, FormFieldModel, FormMethod, FormPage, FormSelect, FormSelectModel, GalleryImageModel, GridCell, GridCellModel, GridLayout, GridLayoutModel, HeaderActionModel, HeroBlock, HeroBlockModel, Html, HtmlInputField, HtmlModel, Image, ImageGallery, ImageGalleryModel, ImageModel, Logo, Markdown, MarkdownModel, MetadataItemModel, ModelView, NavigationProvider, OptionSelector, OptionSelectorModel, Page, PageBannerHeader, PageBannerHeaderModel, PageTemplateSchema, PaletteAutumn, PaletteBoutique, PaletteCosmic, PaletteDefault, PaletteOcean, PaletteProvider, PaletteSpring, PaletteSwitcher, PaletteSwitcherModel, PaletteWinter, PrintConfigSchema, PrintModeProvider, ProductCard, ProductCardActionModel, ProductCardModel, ProductLogo, ProductModel, QWICKAPP_COMPONENT, QwickApp, QwickAppsLogo, QwickIcon, ResponsiveMenu, SafeSpan, SafeSpanModel, Scaffold, SchemaFormRenderer, Section, SectionModel, SelectInputField, SelectOptionModel, StatCard, SwitchInputField, T, Text$1 as Text, TextField, TextInputField, TextInputFieldModel, TextModel, ThemeProvider, ThemeSwitcher, ThemeSwitcherModel, ViewSchema, animationConfigs, applyCustomPalette, clearManifestCache, clearPaletteCache, clearUserPalettePreference, clearUserThemePreference, configurePaletteLoader, createAppConfig, createModelViewClass, createPaletteFromCurrentTheme, createSerializableView, defaultCollapsibleLayoutProps, deleteCustomPalette, exportPalette, extractTextFromReactNode, getAvailablePalettes, getCSSVariable, getComputedTheme, getCurrentPalette, getCurrentTheme, getCustomPalettes, getIconComponent, getIconEmoji, getLogger, getPaletteConfig, getPaletteFromManifest, getPaletteName, getRegisteredIcons, getSystemTheme, getThemePerformanceStats, hasIcon, iconMap, importPalette, initializePalette, initializeTheme, isCollapsibleLayoutProps, isPaletteLoaded, loadPalette, loadPaletteManifest, loadUserPalettePreference, loadUserThemePreference, logThemePerformanceStats, loggers, preloadPalettes, registerCustomPalette, registerIcon, resetThemePerformanceStats, resolveDimension, resolveDimensions, resolveSpacing, resolveSpacingProps, saveCustomPalette, savePalettePreference, saveThemePreference, saveUserPalettePreference, saveUserThemePreference, setCSSVariable, setPalette, setTheme, spacingConfigs, t, toCssLength, useAccessibility, useBaseProps, useBreadcrumbs, useCollapsibleState, useData, useDataBinding, useDataContext, useDataProvider, useDimensions, useNavigation, usePageContext, usePalette, usePrintMode$1 as usePrintMode, usePrintMode as usePrintModeHook, useQwickApp, useResolveTemplate, useTemplate, useTheme, withAccessibility, withErrorBoundary };
|
|
33869
|
+
export { AVAILABLE_PALETTES, AccessibilityProvider, ActionModel, ActionType, AllPalettes, AppConfig, AppConfigBuilder, Article, ArticleModel, Breadcrumbs, Button, Captcha, CaptchaModel, CardListGrid, CardListGridModel, ChoiceInputField, ChoiceInputFieldModel, Code, CodeModel, CollapsibleLayout, CollapsibleLayoutView, ComponentTransformer$1 as ComponentTransformer, Container$8 as Container, Content, ContentModel, CoverImageHeader, CoverImageHeaderModel, DataProvider, DataProxy, DataTable, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, DimensionsProvider, ErrorBoundary, FeatureCard, FeatureCardActionModel, FeatureCardModel, FeatureGrid, FeatureGridModel, FeatureItemModel, Footer, FooterItemModel, FooterModel, FooterSectionModel, FormBlock, FormBlockModel, FormCheckbox, FormCheckboxModel, FormField, FormFieldModel, FormMethod, FormPage, FormSelect, FormSelectModel, GalleryImageModel, GridCell, GridCellModel, GridLayout, GridLayoutModel, HeaderActionModel, HeroBlock, HeroBlockModel, HeroSlideshow, Html, HtmlInputField, HtmlModel, Image, ImageGallery, ImageGalleryModel, ImageModel, Logo, Markdown, MarkdownModel, MetadataItemModel, ModelView, NavigationProvider, OptionSelector, OptionSelectorModel, Page, PageBannerHeader, PageBannerHeaderModel, PageTemplateSchema, PaletteAutumn, PaletteBoutique, PaletteCosmic, PaletteDefault, PaletteOcean, PaletteProvider, PaletteSpring, PaletteSwitcher, PaletteSwitcherModel, PaletteWinter, PrintConfigSchema, PrintModeProvider, ProductCard, ProductCardActionModel, ProductCardModel, ProductLogo, ProductModel, QWICKAPP_COMPONENT, QwickApp, QwickAppsLogo, QwickIcon, ResponsiveMenu, SafeSpan, SafeSpanModel, Scaffold, SchemaFormRenderer, Section, SectionModel, SelectInputField, SelectOptionModel, StatCard, SwitchInputField, T, Text$1 as Text, TextField, TextInputField, TextInputFieldModel, TextModel, ThemeProvider, ThemeSwitcher, ThemeSwitcherModel, ViewSchema, animationConfigs, applyCustomPalette, clearManifestCache, clearPaletteCache, clearUserPalettePreference, clearUserThemePreference, configurePaletteLoader, createAppConfig, createModelViewClass, createPaletteFromCurrentTheme, createSerializableView, defaultCollapsibleLayoutProps, deleteCustomPalette, exportPalette, extractTextFromReactNode, getAvailablePalettes, getCSSVariable, getComputedTheme, getCurrentPalette, getCurrentTheme, getCustomPalettes, getIconComponent, getIconEmoji, getLogger, getPaletteConfig, getPaletteFromManifest, getPaletteName, getRegisteredIcons, getSystemTheme, getThemePerformanceStats, hasIcon, iconMap, importPalette, initializePalette, initializeTheme, isCollapsibleLayoutProps, isPaletteLoaded, loadPalette, loadPaletteManifest, loadUserPalettePreference, loadUserThemePreference, logThemePerformanceStats, loggers, preloadPalettes, registerCustomPalette, registerIcon, resetThemePerformanceStats, resolveDimension, resolveDimensions, resolveSpacing, resolveSpacingProps, saveCustomPalette, savePalettePreference, saveThemePreference, saveUserPalettePreference, saveUserThemePreference, setCSSVariable, setPalette, setTheme, spacingConfigs, t, toCssLength, useAccessibility, useBaseProps, useBreadcrumbs, useCollapsibleState, useData, useDataBinding, useDataContext, useDataProvider, useDimensions, useNavigation, usePageContext, usePalette, usePrintMode$1 as usePrintMode, usePrintMode as usePrintModeHook, useQwickApp, useResolveTemplate, useTemplate, useTheme, withAccessibility, withErrorBoundary };
|