@app-studio/web 0.9.57 → 0.9.60

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 (37) hide show
  1. package/dist/components/Background/Background/Background.props.d.ts +15 -8
  2. package/dist/components/Background/Background/Background.style.d.ts +0 -2
  3. package/dist/components/Background/Background/Background.view.d.ts +2 -1
  4. package/dist/components/Background/Background.d.ts +1 -0
  5. package/dist/components/ChatInput/ChatInput/ChatInput.props.d.ts +18 -1
  6. package/dist/components/ColorPicker/ColorPicker/ColorPicker.props.d.ts +1 -1
  7. package/dist/components/DragAndDrop/DragAndDrop/DragAndDrop.props.d.ts +1 -1
  8. package/dist/components/EmojiPicker/EmojiPicker/EmojiPicker.props.d.ts +1 -1
  9. package/dist/components/Formik/Formik.Uploader.d.ts +1 -1
  10. package/dist/components/ProgressBar/ProgressBar/ProgressBar.props.d.ts +36 -2
  11. package/dist/components/ProgressBar/ProgressBar.d.ts +1 -0
  12. package/dist/components/Slider/Slider/Slider.props.d.ts +1 -1
  13. package/dist/components/Title/Title/SlideEffect.d.ts +1 -0
  14. package/dist/components/Title/Title/Title.props.d.ts +0 -5
  15. package/dist/pages/title.page.d.ts +0 -3
  16. package/dist/web.cjs.development.js +238 -223
  17. package/dist/web.cjs.development.js.map +1 -1
  18. package/dist/web.cjs.production.min.js +1 -1
  19. package/dist/web.cjs.production.min.js.map +1 -1
  20. package/dist/web.esm.js +238 -223
  21. package/dist/web.esm.js.map +1 -1
  22. package/dist/web.umd.development.js +242 -226
  23. package/dist/web.umd.development.js.map +1 -1
  24. package/dist/web.umd.production.min.js +1 -1
  25. package/dist/web.umd.production.min.js.map +1 -1
  26. package/docs/app-studio/Animation.md +241 -0
  27. package/docs/app-studio/Components.md +192 -0
  28. package/docs/app-studio/Design.md +121 -0
  29. package/docs/app-studio/Events.md +296 -0
  30. package/docs/app-studio/Hooks.md +469 -0
  31. package/docs/app-studio/Providers.md +186 -0
  32. package/docs/app-studio/README.md +781 -0
  33. package/docs/app-studio/Responsive.md +135 -0
  34. package/docs/app-studio/Theming.md +488 -0
  35. package/docs/components/Background.mdx +2 -2
  36. package/docs/components/ChatInput.mdx +133 -0
  37. package/package.json +3 -2
@@ -40,7 +40,6 @@ require('core-js/modules/es.regexp.constructor.js');
40
40
  require('core-js/modules/es.regexp.exec.js');
41
41
  var formik = require('formik');
42
42
  require('core-js/modules/es.string.replace.js');
43
- var api = require('src/services/api');
44
43
  require('core-js/modules/es.promise.finally.js');
45
44
  require('core-js/modules/es.string.match.js');
46
45
  require('core-js/modules/es.string.search.js');
@@ -9812,7 +9811,7 @@ var TextAreaView = _ref => {
9812
9811
  maxHeight: 'calc(100vh - 100px)',
9813
9812
  height: 'calc(5em)',
9814
9813
  border: 'none',
9815
- resize: 'vertical',
9814
+ // resize property removed to avoid type error, added via style prop
9816
9815
  // Focus state
9817
9816
  on: {
9818
9817
  focus: {
@@ -9889,8 +9888,12 @@ var TextAreaView = _ref => {
9889
9888
  onBlur: handleBlur,
9890
9889
  onFocus: handleFocus,
9891
9890
  multiline: "" + !!isMultiline.toString(),
9892
- onChange: handleChange
9893
- }, fieldStyles, views == null ? void 0 : views.textarea)))));
9891
+ onChange: e => handleChange(e)
9892
+ }, fieldStyles, {
9893
+ style: {
9894
+ resize: 'vertical'
9895
+ }
9896
+ }, views == null ? void 0 : views.textarea)))));
9894
9897
  };
9895
9898
 
9896
9899
  // Defines the TextAreaComponent as a functional component that accepts TextAreaProps for type safety and structure.
@@ -10747,7 +10750,7 @@ var DefaultColorPalette = [
10747
10750
  value: 'transparent'
10748
10751
  }];
10749
10752
 
10750
- var _excluded$y = ["id", "name", "label", "placeholder", "helperText", "views", "size", "shape", "variant", "shadow", "error", "isDisabled", "isReadOnly", "isFocused", "isHovered", "predefinedColors", "showCustomInput", "showRecentColors", "isOpen", "selectedColor", "recentColors", "customColor", "handleToggle", "handleColorSelect", "handleCustomColorChange", "handleCustomColorSubmit", "setIsFocused", "setIsHovered", "triggerRef", "dropdownRef"];
10753
+ var _excluded$y = ["id", "name", "label", "placeholder", "helperText", "views", "size", "shape", "variant", "shadow", "error", "isDisabled", "isReadOnly", "isFocused", "isHovered", "predefinedColors", "showCustomInput", "showRecentColors", "isOpen", "selectedColor", "recentColors", "customColor", "handleToggle", "handleColorSelect", "handleCustomColorChange", "handleCustomColorSubmit", "setIsFocused", "setIsHovered", "triggerRef", "dropdownRef", "onChange"];
10751
10754
  var ColorInputView = _ref => {
10752
10755
  var {
10753
10756
  // Basic props
@@ -14277,7 +14280,11 @@ var useChatInputState = props => {
14277
14280
  disabled = false,
14278
14281
  isAgentRunning = false,
14279
14282
  onStopAgent,
14280
- sandboxId
14283
+ sandboxId,
14284
+ onUploadProgress,
14285
+ onUploadSuccess,
14286
+ onUploadError,
14287
+ onFileUpload
14281
14288
  } = props;
14282
14289
  // Determine if the component is controlled
14283
14290
  var isControlled = controlledValue !== undefined && controlledOnChange !== undefined;
@@ -14393,28 +14400,6 @@ var useChatInputState = props => {
14393
14400
  e.stopPropagation();
14394
14401
  setIsDraggingOver(false);
14395
14402
  };
14396
- // Upload service hook (single file at a time)
14397
- var uploadFileRequest = api.UploadService.useUploadControllerFileService({
14398
- onProgress: p => setUploadProgress(p || 0),
14399
- onSuccess: () => {
14400
- // Advance the queue
14401
- setUploadQueue(prev => prev.slice(1));
14402
- setIsProcessingQueue(false);
14403
- currentUploadRef.current = null;
14404
- setUploadProgress(0);
14405
- // If queue emptied, stop uploading state
14406
- setIsUploading(prev => uploadQueue.length - 1 > 0 || false);
14407
- },
14408
- onError: _err => {
14409
- // Remove the failed file from queue and continue
14410
- setUploadQueue(prev => prev.slice(1));
14411
- setIsProcessingQueue(false);
14412
- currentUploadRef.current = null;
14413
- setUploadProgress(0);
14414
- // If queue emptied, stop uploading state
14415
- setIsUploading(prev => uploadQueue.length - 1 > 0 || false);
14416
- }
14417
- });
14418
14403
  // Start uploading a batch of files (enqueue and process)
14419
14404
  var startUpload = React.useCallback(files => {
14420
14405
  if (!files || files.length === 0) return;
@@ -14427,25 +14412,33 @@ var useChatInputState = props => {
14427
14412
  }, [setPendingFiles, setUploadedFiles]);
14428
14413
  // Process upload queue sequentially
14429
14414
  var processUploadQueue = React.useCallback(() => {
14430
- if (uploadQueue.length > 0 && !isProcessingQueue && !uploadFileRequest.loading) {
14415
+ if (uploadQueue.length > 0 && !isProcessingQueue && onFileUpload) {
14431
14416
  setIsProcessingQueue(true);
14432
14417
  var nextFile = uploadQueue[0];
14433
14418
  currentUploadRef.current = nextFile;
14434
14419
  setUploadProgress(0);
14435
- // Fire upload
14436
- uploadFileRequest.run({
14437
- file: nextFile
14438
- });
14420
+ // Execute user-provided upload function
14421
+ try {
14422
+ onFileUpload(nextFile);
14423
+ } catch (err) {
14424
+ // Handle synchronous errors
14425
+ setUploadQueue(prev => prev.slice(1));
14426
+ setIsProcessingQueue(false);
14427
+ currentUploadRef.current = null;
14428
+ setUploadProgress(0);
14429
+ setIsUploading(prev => uploadQueue.length - 1 > 0 || false);
14430
+ onUploadError == null || onUploadError(err);
14431
+ }
14439
14432
  } else if (uploadQueue.length === 0 && isUploading) {
14440
14433
  // Nothing left to upload
14441
14434
  setIsUploading(false);
14442
14435
  setUploadProgress(0);
14443
14436
  }
14444
- }, [uploadQueue, isProcessingQueue, uploadFileRequest.loading, uploadFileRequest, isUploading]);
14445
- // Effect: process whenever queue or request/loading changes
14437
+ }, [uploadQueue, isProcessingQueue, onFileUpload, isUploading, onUploadError]);
14438
+ // Effect: process whenever queue changes
14446
14439
  React.useEffect(() => {
14447
14440
  processUploadQueue();
14448
- }, [uploadQueue, isProcessingQueue, uploadFileRequest.loading, processUploadQueue]);
14441
+ }, [uploadQueue, isProcessingQueue, processUploadQueue]);
14449
14442
  // Mock function for subscription status
14450
14443
  var subscriptionStatus = 'active';
14451
14444
  // Mock function to check if user can access a model
@@ -15805,7 +15798,7 @@ var AudioRecorder = _ref => {
15805
15798
  }))));
15806
15799
  };
15807
15800
 
15808
- var _excluded$M = ["onSubmit", "placeholder", "loading", "disabled", "isAgentRunning", "enableAudioRecording", "leftButtons", "rightButtons", "onStopAgent", "loadingText", "autoFocus", "sandboxId", "hideAttachments", "attachmentText", "promptExamples", "suggestions", "errorMessage", "size", "shape", "variant", "views", "mentionData", "mentionTrigger", "onMentionSelect", "onAudioRecordingStart", "onAudioRecordingStop", "value", "handleChange", "handleSubmit", "editableRef", "fileInputRef", "isUploading", "uploadProgress", "isDraggingOver", "uploadedFiles", "removeUploadedFile", "setPendingFiles", "setUploadedFiles", "setIsUploading", "startUpload", "selectedModel", "handleModelChange", "modelOptions", "subscriptionStatus", "canAccessModel", "isGuideTipShown", "hideGuideTip", "handlePromptExampleSelect", "handleDragOver", "handleDragLeave"];
15801
+ var _excluded$M = ["onSubmit", "placeholder", "loading", "disabled", "isAgentRunning", "enableAudioRecording", "leftButtons", "rightButtons", "onStopAgent", "loadingText", "autoFocus", "sandboxId", "hideAttachments", "attachmentText", "promptExamples", "suggestions", "errorMessage", "size", "shape", "variant", "views", "mentionData", "mentionTrigger", "onMentionSelect", "onAudioRecordingStart", "onAudioRecordingStop", "value", "handleChange", "handleSubmit", "editableRef", "fileInputRef", "isUploading", "uploadProgress", "isDraggingOver", "uploadedFiles", "removeUploadedFile", "setPendingFiles", "setUploadedFiles", "setIsUploading", "startUpload", "selectedModel", "handleModelChange", "modelOptions", "subscriptionStatus", "canAccessModel", "isGuideTipShown", "hideGuideTip", "handlePromptExampleSelect", "handleDragOver", "handleDragLeave", "onChange"];
15809
15802
  var ChatInputView = _ref => {
15810
15803
  var _value$trim$length;
15811
15804
  var {
@@ -16585,7 +16578,7 @@ var OrientationStyles = {
16585
16578
  }
16586
16579
  };
16587
16580
 
16588
- var _excluded$S = ["min", "max", "step", "currentValue", "stepValues", "shape", "size", "variant", "orientation", "isDisabled", "showValue", "showTooltip", "backgroundColor", "label", "helperText", "themeMode", "shadow", "isDragging", "isHovered", "setIsHovered", "trackRef", "thumbRef", "handleThumbMouseDown", "handleTrackMouseDown", "handleKeyDown", "thumbPositionPercent", "ariaLabel", "views"];
16581
+ var _excluded$S = ["min", "max", "step", "currentValue", "stepValues", "shape", "size", "variant", "orientation", "isDisabled", "showValue", "showTooltip", "backgroundColor", "label", "helperText", "themeMode", "shadow", "isDragging", "isHovered", "setIsHovered", "trackRef", "thumbRef", "handleThumbMouseDown", "handleTrackMouseDown", "handleKeyDown", "thumbPositionPercent", "ariaLabel", "views", "onChange", "onDrag"];
16589
16582
  var SliderView = _ref => {
16590
16583
  var _views$tooltip, _views$tooltip2;
16591
16584
  var {
@@ -16952,11 +16945,6 @@ var OTPInputComponent$1 = props => {
16952
16945
  var FormikOTPInput = OTPInputComponent$1;
16953
16946
 
16954
16947
  var _excluded$T = ["name", "uploadFile", "onUploadSuccess", "onUploadError", "transformResponse", "onMultipleFileSelect", "onFileSelect", "multiple"];
16955
- var defaultUploadFile = (file, onProgress) => {
16956
- return api.UploadService.uploadControllerFile({
16957
- file
16958
- }, onProgress);
16959
- };
16960
16948
  var toArrayValue = value => {
16961
16949
  if (Array.isArray(value)) {
16962
16950
  return value;
@@ -16969,7 +16957,7 @@ var toArrayValue = value => {
16969
16957
  var FormikUploader = _ref => {
16970
16958
  var {
16971
16959
  name,
16972
- uploadFile = defaultUploadFile,
16960
+ uploadFile,
16973
16961
  onUploadSuccess,
16974
16962
  onUploadError,
16975
16963
  transformResponse,
@@ -19217,10 +19205,12 @@ var ResponsiveTypography = {
19217
19205
  */
19218
19206
  var HighlightStyles = {
19219
19207
  underline: color => ({
19220
- textDecoration: 'underline',
19221
- textDecorationColor: color,
19222
- textDecorationThickness: '4px',
19223
- textUnderlineOffset: '4px'
19208
+ style: {
19209
+ textDecoration: 'underline',
19210
+ textDecorationColor: color,
19211
+ textDecorationThickness: '4px',
19212
+ textUnderlineOffset: '4px'
19213
+ }
19224
19214
  }),
19225
19215
  background: color => ({
19226
19216
  backgroundColor: color,
@@ -19229,17 +19219,21 @@ var HighlightStyles = {
19229
19219
  borderRadius: '4px'
19230
19220
  }),
19231
19221
  gradient: (color, secondaryColor) => ({
19232
- background: "linear-gradient(135deg, " + color + ", " + (secondaryColor || color) + ")",
19233
- backgroundClip: 'text !important',
19234
- webkitBackgroundClip: 'text !important',
19222
+ style: {
19223
+ background: "linear-gradient(135deg, " + color + ", " + (secondaryColor || color) + ")",
19224
+ backgroundClip: 'text',
19225
+ WebkitBackgroundClip: 'text',
19226
+ WebkitTextFillColor: 'transparent'
19227
+ },
19235
19228
  color: 'transparent',
19236
- webkitTextFillColor: 'transparent',
19237
19229
  display: 'inline-block',
19238
19230
  textShadow: 'none'
19239
19231
  }),
19240
19232
  outline: color => ({
19241
- webkitTextStroke: "1px " + color,
19242
- webkitTextFillColor: 'transparent',
19233
+ style: {
19234
+ WebkitTextStroke: "1px " + color,
19235
+ WebkitTextFillColor: 'transparent'
19236
+ },
19243
19237
  color: 'transparent',
19244
19238
  textShadow: 'none'
19245
19239
  }),
@@ -19509,7 +19503,7 @@ var SlideEffect = _ref => {
19509
19503
  })));
19510
19504
  };
19511
19505
 
19512
- var _excluded$$ = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "responsive", "centered", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration", "highlightSlide", "highlightSlideDuration", "highlightSlideStagger", "highlightSlideSequential"];
19506
+ var _excluded$$ = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "responsive", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration", "highlightSlide", "highlightSlideDuration", "highlightSlideStagger", "highlightSlideSequential"];
19513
19507
  function escapeRegExp(string) {
19514
19508
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
19515
19509
  }
@@ -19522,7 +19516,6 @@ var TitleView = _ref => {
19522
19516
  highlightSecondaryColor,
19523
19517
  size = 'lg',
19524
19518
  responsive = true,
19525
- centered = false,
19526
19519
  views,
19527
19520
  highlightAnimate,
19528
19521
  animate,
@@ -19540,31 +19533,6 @@ var TitleView = _ref => {
19540
19533
  ref,
19541
19534
  inView
19542
19535
  } = appStudio.useInView();
19543
- var {
19544
- getColor,
19545
- themeMode: ctxMode
19546
- } = appStudio.useTheme();
19547
- var themeMode = props.themeMode || ctxMode;
19548
- // Resolve colors, handling both theme colors and direct hex values
19549
- var resolveColorValue = colorValue => {
19550
- // If it's already a hex color, return it directly
19551
- if (colorValue.startsWith('#')) {
19552
- return colorValue;
19553
- }
19554
- // Otherwise, use the theme's getColor function
19555
- return getColor(colorValue, {
19556
- themeMode
19557
- });
19558
- };
19559
- var resolvedColor = resolveColorValue(highlightColor);
19560
- var resolvedSecondary = highlightSecondaryColor ? resolveColorValue(highlightSecondaryColor) : undefined;
19561
- var baseHighlightProps = HighlightStyles[highlightStyle](resolvedColor, resolvedSecondary);
19562
- var highlightViewProps = highlightStyle === 'background' ? Object.assign({}, baseHighlightProps, {
19563
- color: undefined
19564
- }) : baseHighlightProps;
19565
- var highlightBackgroundOverrides = highlightStyle === 'background' ? {
19566
- bgColor: resolvedColor
19567
- } : {};
19568
19536
  var {
19569
19537
  finalDisplayedText,
19570
19538
  activeHighlightTarget,
@@ -19584,12 +19552,13 @@ var TitleView = _ref => {
19584
19552
  highlightSlideStagger,
19585
19553
  highlightSlideSequential
19586
19554
  }, props));
19587
- // Determine if we should use responsive sizing or static sizing
19588
- var useResponsive = responsive && !props.media; // Don't override if media prop is already provided
19555
+ // Common style calculations
19556
+ var useResponsive = responsive && !props.media;
19589
19557
  var fontSize = TitleSizes[size];
19590
- // Get responsive styles if responsive prop is true
19591
19558
  var responsiveStyles = useResponsive ? ResponsiveTypography[size] : null;
19592
- // Helper function to apply loop control to animations
19559
+ // Highlight style props
19560
+ var highlightProps = HighlightStyles[highlightStyle](highlightColor, highlightSecondaryColor);
19561
+ // Apply loop control to animations
19593
19562
  var applyAnimationLoop = (animation, loopControl) => {
19594
19563
  if (!animation) return animation;
19595
19564
  if (Array.isArray(animation)) {
@@ -19601,112 +19570,88 @@ var TitleView = _ref => {
19601
19570
  iterationCount: loopControl.toString()
19602
19571
  });
19603
19572
  };
19604
- // Apply loop control to animations
19605
19573
  var controlledAnimate = applyAnimationLoop(animate, animationLoop);
19606
19574
  var controlledHighlightAnimate = applyAnimationLoop(highlightAnimate, highlightAnimationLoop);
19607
19575
  // Get the text to display
19608
19576
  var text = typeof finalDisplayedText === 'string' ? finalDisplayedText : typeof children === 'string' ? children : '';
19577
+ // Common container props
19578
+ var containerProps = {
19579
+ ref,
19580
+ as: 'h1',
19581
+ fontSize: useResponsive ? undefined : fontSize,
19582
+ fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19583
+ letterSpacing: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.letterSpacing : undefined,
19584
+ marginBottom: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.marginBottom : undefined,
19585
+ animate: inView ? controlledAnimate : undefined,
19586
+ media: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.media : undefined
19587
+ };
19588
+ // Render highlighted text content (typewriter, slide, or plain)
19589
+ var renderHighlightedContent = content => {
19590
+ // If animations are enabled but not in view, render invisible placeholder
19591
+ // This holds layout space and prevents animations (like typewriter) from running off-screen
19592
+ if (!inView && (highlightTypewriter || highlightSlide)) {
19593
+ return /*#__PURE__*/React__default.createElement("span", {
19594
+ style: {
19595
+ opacity: 0
19596
+ }
19597
+ }, content);
19598
+ }
19599
+ if (highlightTypewriter) {
19600
+ return /*#__PURE__*/React__default.createElement(TypewriterEffect, Object.assign({
19601
+ text: content,
19602
+ typingSpeed: Math.max(30, highlightTypewriterDuration / (content.length * 10)),
19603
+ showCursor: true,
19604
+ cursorColor: "currentColor"
19605
+ }, highlightProps));
19606
+ }
19607
+ if (highlightSlide) {
19608
+ return /*#__PURE__*/React__default.createElement(SlideEffect, {
19609
+ text: content,
19610
+ duration: stateHighlightSlideDuration,
19611
+ stagger: stateHighlightSlideStagger,
19612
+ sequential: stateHighlightSlideSequential,
19613
+ direction: "up",
19614
+ fontSize: useResponsive ? undefined : fontSize,
19615
+ fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19616
+ wordProps: highlightProps
19617
+ });
19618
+ }
19619
+ return content;
19620
+ };
19621
+ // Case 1: Has highlight target - render with highlighted parts
19609
19622
  if (typeof text === 'string' && activeHighlightTarget) {
19610
- var pattern = (() => {
19611
- if (Array.isArray(activeHighlightTarget)) {
19612
- var escaped = activeHighlightTarget.map(t => escapeRegExp(String(t)));
19613
- return new RegExp("(" + escaped.join('|') + ")", 'gi');
19614
- }
19615
- return new RegExp("(" + escapeRegExp(String(activeHighlightTarget)) + ")", 'gi');
19616
- })();
19623
+ var pattern = Array.isArray(activeHighlightTarget) ? new RegExp("(" + activeHighlightTarget.map(t => escapeRegExp(String(t))).join('|') + ")", 'gi') : new RegExp("(" + escapeRegExp(String(activeHighlightTarget)) + ")", 'gi');
19617
19624
  var parts = [];
19618
19625
  var lastIndex = 0;
19619
19626
  var match;
19620
19627
  while (match = pattern.exec(text)) {
19621
- if (match.index > lastIndex) {
19622
- parts.push(text.substring(lastIndex, match.index));
19623
- }
19628
+ if (match.index > lastIndex) parts.push(text.substring(lastIndex, match.index));
19624
19629
  parts.push({
19625
19630
  highlight: true,
19626
19631
  text: match[0]
19627
19632
  });
19628
19633
  lastIndex = match.index + match[0].length;
19629
19634
  }
19630
- if (lastIndex < text.length) {
19631
- parts.push(text.substring(lastIndex));
19632
- }
19633
- return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({
19634
- ref: ref,
19635
- as: "h1",
19636
- fontSize: useResponsive ? undefined : fontSize,
19637
- fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19638
- letterSpacing: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.letterSpacing : undefined,
19639
- marginBottom: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.marginBottom : undefined,
19640
- textAlign: centered ? 'center' : 'left',
19641
- animate: inView ? controlledAnimate : undefined,
19642
- media: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.media : undefined
19643
- }, views == null ? void 0 : views.container, props), parts.map((part, idx) => typeof part === 'string' ? part : (/*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
19635
+ if (lastIndex < text.length) parts.push(text.substring(lastIndex));
19636
+ return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({}, containerProps, views == null ? void 0 : views.container, props), parts.map((part, idx) => typeof part === 'string' ? part : (/*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
19644
19637
  key: "highlight-" + idx,
19645
19638
  as: "span",
19646
19639
  display: "inline",
19647
19640
  animate: inView ? controlledHighlightAnimate : undefined,
19648
19641
  fontSize: useResponsive ? undefined : fontSize
19649
- }, !highlightSlide ? highlightViewProps : {}, highlightBackgroundOverrides, views == null ? void 0 : views.highlight), highlightTypewriter ? (/*#__PURE__*/React__default.createElement(TypewriterEffect, {
19650
- text: part.text,
19651
- typingSpeed: Math.max(30, highlightTypewriterDuration / (part.text.length * 10)),
19652
- showCursor: true,
19653
- cursorColor: "currentColor"
19654
- })) : highlightSlide ? (/*#__PURE__*/React__default.createElement(SlideEffect, {
19655
- text: part.text,
19656
- duration: stateHighlightSlideDuration,
19657
- stagger: stateHighlightSlideStagger,
19658
- sequential: stateHighlightSlideSequential,
19659
- direction: "up",
19660
- fontSize: useResponsive ? undefined : fontSize,
19661
- fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19662
- wordProps: highlightViewProps
19663
- })) : part.text))));
19642
+ }, !highlightSlide ? highlightProps : {}, views == null ? void 0 : views.highlight), renderHighlightedContent(part.text)))));
19664
19643
  }
19665
- // If highlightStyle is provided but no highlightText, apply the style to the entire title
19644
+ // Case 2: Has highlight style but no highlight target - apply style to entire title
19666
19645
  if (highlightStyle && !activeHighlightTarget) {
19667
- return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({
19668
- ref: ref,
19669
- as: "h1",
19670
- fontSize: useResponsive ? undefined : fontSize,
19671
- fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19672
- letterSpacing: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.letterSpacing : undefined,
19673
- marginBottom: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.marginBottom : undefined,
19674
- textAlign: centered ? 'center' : 'left',
19675
- animate: inView ? controlledAnimate : undefined,
19676
- media: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.media : undefined
19677
- }, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
19646
+ return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({}, containerProps, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
19678
19647
  as: "span",
19679
19648
  fontSize: fontSize,
19680
19649
  display: "inline",
19681
19650
  animate: inView ? controlledHighlightAnimate : undefined
19682
- }, !highlightSlide ? highlightViewProps : {}, highlightBackgroundOverrides, views == null ? void 0 : views.highlight), highlightTypewriter ? (/*#__PURE__*/React__default.createElement(TypewriterEffect, {
19683
- text: text,
19684
- typingSpeed: Math.max(30, highlightTypewriterDuration / (text.length * 10)),
19685
- showCursor: true,
19686
- cursorColor: "currentColor"
19687
- })) : highlightSlide ? (/*#__PURE__*/React__default.createElement(SlideEffect, {
19688
- text: text,
19689
- duration: stateHighlightSlideDuration,
19690
- stagger: stateHighlightSlideStagger,
19691
- sequential: stateHighlightSlideSequential,
19692
- direction: "up",
19693
- fontSize: fontSize,
19694
- fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19695
- wordProps: highlightViewProps
19696
- })) : text));
19651
+ }, !highlightSlide ? highlightProps : {}, views == null ? void 0 : views.highlight), renderHighlightedContent(text)));
19697
19652
  }
19698
- // Default case - no highlighting
19699
- return /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
19700
- ref: ref,
19701
- as: "h1",
19702
- fontSize: fontSize,
19703
- fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19704
- letterSpacing: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.letterSpacing : undefined,
19705
- marginBottom: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.marginBottom : undefined,
19706
- textAlign: centered ? 'center' : 'left',
19707
- animate: inView ? controlledAnimate : undefined,
19708
- media: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.media : undefined
19709
- }, views == null ? void 0 : views.container, props), text);
19653
+ // Case 3: Default - no highlighting
19654
+ return /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({}, containerProps, views == null ? void 0 : views.container, props), text);
19710
19655
  };
19711
19656
 
19712
19657
  /**
@@ -20973,7 +20918,7 @@ var DefaultColorPalette$1 = [
20973
20918
  category: 'neutral'
20974
20919
  }];
20975
20920
 
20976
- var _excluded$14 = ["id", "name", "label", "placeholder", "helperText", "views", "size", "shape", "variant", "error", "isDisabled", "isReadOnly", "predefinedColors", "showCustomInput", "showRecentColors", "isOpen", "selectedColor", "recentColors", "customColor", "handleToggle", "handleColorSelect", "handleCustomColorChange", "handleCustomColorSubmit", "triggerRef", "dropdownRef"];
20921
+ var _excluded$14 = ["id", "name", "label", "placeholder", "helperText", "views", "size", "shape", "variant", "error", "isDisabled", "isReadOnly", "predefinedColors", "showCustomInput", "showRecentColors", "isOpen", "selectedColor", "recentColors", "customColor", "handleToggle", "handleColorSelect", "handleCustomColorChange", "handleCustomColorSubmit", "triggerRef", "dropdownRef", "onChange"];
20977
20922
  var ColorPickerView = _ref => {
20978
20923
  var {
20979
20924
  // Basic props
@@ -23340,7 +23285,7 @@ var useEmojiPickerState = props => {
23340
23285
  };
23341
23286
  };
23342
23287
 
23343
- var _excluded$15 = ["id", "name", "label", "placeholder", "helperText", "views", "size", "shape", "variant", "error", "isDisabled", "isReadOnly", "showSearch", "showCategories", "showRecentEmojis", "enabledCategories", "isOpen", "selectedEmoji", "recentEmojis", "searchQuery", "activeCategory", "filteredEmojis", "handleToggle", "handleEmojiSelect", "handleSearchChange", "handleCategoryChange", "triggerRef", "dropdownRef"];
23288
+ var _excluded$15 = ["id", "name", "label", "placeholder", "helperText", "views", "size", "shape", "variant", "error", "isDisabled", "isReadOnly", "showSearch", "showCategories", "showRecentEmojis", "enabledCategories", "isOpen", "selectedEmoji", "recentEmojis", "searchQuery", "activeCategory", "filteredEmojis", "handleToggle", "handleEmojiSelect", "handleSearchChange", "handleCategoryChange", "triggerRef", "dropdownRef", "onChange"];
23344
23289
  var EmojiPickerView = _ref => {
23345
23290
  var {
23346
23291
  // Basic props
@@ -24314,15 +24259,22 @@ var PaginationComponent = _ref => {
24314
24259
  };
24315
24260
  var Pagination = PaginationComponent;
24316
24261
 
24317
- var _excluded$1a = ["value", "max", "color", "backgroundColor", "height", "radius", "views", "themeMode"];
24262
+ var _excluded$1a = ["shape", "value", "max", "color", "backgroundColor", "height", "size", "radius", "strokeWidth", "showLabel", "labelColor", "animated", "animationDuration", "views", "themeMode"];
24318
24263
  var ProgressBarView = _ref => {
24319
24264
  var {
24265
+ shape = 'linear',
24320
24266
  value = 0,
24321
24267
  max = 100,
24322
24268
  color = 'theme.primary',
24323
24269
  backgroundColor = 'color.gray.200',
24324
- height = 8,
24270
+ height,
24271
+ size,
24325
24272
  radius = 4,
24273
+ strokeWidth = 10,
24274
+ showLabel = false,
24275
+ labelColor = 'theme.text.primary',
24276
+ animated = true,
24277
+ animationDuration = '0.5s',
24326
24278
  views,
24327
24279
  themeMode: elementMode
24328
24280
  } = _ref,
@@ -24332,20 +24284,78 @@ var ProgressBarView = _ref => {
24332
24284
  themeMode
24333
24285
  } = appStudio.useTheme();
24334
24286
  var currentMode = elementMode ? elementMode : themeMode;
24335
- var percentage = Math.min(100, Math.max(0, value / max * 100));
24287
+ var validValue = Math.min(max, Math.max(0, value));
24288
+ var percentage = validValue / max * 100;
24336
24289
  var trackColor = getColor(backgroundColor, {
24337
24290
  themeMode: currentMode
24338
24291
  });
24339
24292
  var barColor = getColor(color, {
24340
24293
  themeMode: currentMode
24341
24294
  });
24295
+ if (shape === 'circle') {
24296
+ var circleSize = size || (typeof height === 'number' ? height : 100);
24297
+ var radiusCalc = (circleSize - strokeWidth) / 2;
24298
+ var circumference = 2 * Math.PI * radiusCalc;
24299
+ var offset = circumference - percentage / 100 * circumference;
24300
+ return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
24301
+ width: circleSize,
24302
+ height: circleSize,
24303
+ position: "relative",
24304
+ display: "flex",
24305
+ alignItems: "center",
24306
+ justifyContent: "center"
24307
+ }, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement("svg", {
24308
+ width: circleSize,
24309
+ height: circleSize,
24310
+ viewBox: "0 0 " + circleSize + " " + circleSize,
24311
+ style: {
24312
+ transform: 'rotate(-90deg)'
24313
+ }
24314
+ }, /*#__PURE__*/React__default.createElement("circle", Object.assign({
24315
+ cx: circleSize / 2,
24316
+ cy: circleSize / 2,
24317
+ r: radiusCalc,
24318
+ stroke: trackColor,
24319
+ strokeWidth: strokeWidth,
24320
+ fill: "transparent"
24321
+ }, views == null ? void 0 : views.track)), /*#__PURE__*/React__default.createElement("circle", Object.assign({
24322
+ cx: circleSize / 2,
24323
+ cy: circleSize / 2,
24324
+ r: radiusCalc,
24325
+ stroke: barColor,
24326
+ strokeWidth: strokeWidth,
24327
+ strokeDasharray: circumference,
24328
+ strokeDashoffset: offset,
24329
+ strokeLinecap: "round",
24330
+ fill: "transparent",
24331
+ style: {
24332
+ transition: animated ? "stroke-dashoffset " + animationDuration + " ease-in-out" : 'none'
24333
+ }
24334
+ }, views == null ? void 0 : views.indicator))), showLabel && (/*#__PURE__*/React__default.createElement(appStudio.View, {
24335
+ position: "absolute",
24336
+ top: 0,
24337
+ left: 0,
24338
+ right: 0,
24339
+ bottom: 0,
24340
+ display: "flex",
24341
+ alignItems: "center",
24342
+ justifyContent: "center",
24343
+ pointerEvents: "none"
24344
+ }, /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
24345
+ color: labelColor,
24346
+ fontSize: circleSize * 0.2 + "px",
24347
+ fontWeight: "bold"
24348
+ }, views == null ? void 0 : views.text), Math.round(percentage), "%"))));
24349
+ }
24350
+ // Linear Progress Bar
24351
+ var linearHeight = height || 8;
24342
24352
  return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
24343
24353
  role: "progressbar",
24344
24354
  "aria-valuenow": value,
24345
24355
  "aria-valuemin": 0,
24346
24356
  "aria-valuemax": max,
24347
24357
  width: "100%",
24348
- height: height,
24358
+ height: linearHeight,
24349
24359
  backgroundColor: trackColor,
24350
24360
  borderRadius: radius,
24351
24361
  overflow: "hidden"
@@ -24353,12 +24363,16 @@ var ProgressBarView = _ref => {
24353
24363
  width: percentage + "%",
24354
24364
  height: "100%",
24355
24365
  backgroundColor: barColor,
24356
- borderRadius: radius
24366
+ borderRadius: radius,
24367
+ style: {
24368
+ transition: animated ? "width " + animationDuration + " ease-in-out" : 'none'
24369
+ }
24357
24370
  }, views == null ? void 0 : views.bar)));
24358
24371
  };
24359
24372
 
24360
24373
  /**
24361
24374
  * ProgressBar component displays completion status of a task or process.
24375
+ * Supports both linear and circular shapes.
24362
24376
  */
24363
24377
  var ProgressBarComponent = props => (/*#__PURE__*/React__default.createElement(ProgressBarView, Object.assign({}, props)));
24364
24378
  var ProgressBar = ProgressBarComponent;
@@ -24439,7 +24453,7 @@ var SeparatorView = _ref => {
24439
24453
  var borderWidth = SeparatorThicknesses[thickness];
24440
24454
  // Set appropriate ARIA attributes based on decorative prop
24441
24455
  var ariaProps = decorative ? {
24442
- 'aria-hidden': 'true'
24456
+ 'aria-hidden': true
24443
24457
  } : {
24444
24458
  role: 'separator',
24445
24459
  'aria-orientation': orientation
@@ -27408,16 +27422,10 @@ var BackgroundImageStyles = {
27408
27422
  backgroundRepeat: 'no-repeat',
27409
27423
  backgroundAttachment: 'scroll'
27410
27424
  },
27411
- overlay: {
27412
- position: 'absolute',
27413
- top: 0,
27414
- left: 0,
27415
- width: '100%',
27416
- height: '100%',
27417
- pointerEvents: 'none'
27418
- },
27419
27425
  content: {
27420
27426
  position: 'relative',
27427
+ width: '100%',
27428
+ height: '100%',
27421
27429
  zIndex: 2
27422
27430
  }
27423
27431
  };
@@ -27441,14 +27449,6 @@ var BackgroundVideoStyles = {
27441
27449
  height: '100%',
27442
27450
  objectFit: 'cover'
27443
27451
  },
27444
- overlay: {
27445
- position: 'absolute',
27446
- top: 0,
27447
- left: 0,
27448
- width: '100%',
27449
- height: '100%',
27450
- pointerEvents: 'none'
27451
- },
27452
27452
  content: {
27453
27453
  position: 'relative',
27454
27454
  zIndex: 2
@@ -27717,7 +27717,8 @@ var _excluded$1o = ["children", "showRadialGradient", "views", "themeMode"],
27717
27717
  _excluded7$1 = ["children", "src", "backgroundSize", "backgroundPosition", "backgroundRepeat", "backgroundAttachment", "imageOpacity", "overlay", "blendMode", "views", "themeMode"],
27718
27718
  _excluded8$1 = ["children", "src", "autoPlay", "loop", "muted", "playsInline", "overlay", "blendMode", "views", "themeMode"],
27719
27719
  _excluded9$1 = ["children"],
27720
- _excluded10$1 = ["children", "views"];
27720
+ _excluded10$1 = ["contentPosition"],
27721
+ _excluded11$1 = ["children", "views"];
27721
27722
  // Background Context
27722
27723
  var BackgroundContext = /*#__PURE__*/React.createContext({});
27723
27724
  /**
@@ -28111,15 +28112,11 @@ var BackgroundImage = _ref7 => {
28111
28112
  backgroundRepeat = 'no-repeat',
28112
28113
  backgroundAttachment = 'scroll',
28113
28114
  imageOpacity = 1,
28114
- overlay,
28115
+ overlay = null,
28115
28116
  blendMode = 'normal',
28116
- views,
28117
- themeMode: elementMode
28117
+ views
28118
28118
  } = _ref7,
28119
28119
  props = _objectWithoutPropertiesLoose(_ref7, _excluded7$1);
28120
- var {
28121
- getColor
28122
- } = appStudio.useTheme();
28123
28120
  var imageStyle = Object.assign({}, BackgroundImageStyles.image, {
28124
28121
  backgroundImage: "url(" + src + ")",
28125
28122
  backgroundSize,
@@ -28128,17 +28125,9 @@ var BackgroundImage = _ref7 => {
28128
28125
  backgroundAttachment,
28129
28126
  opacity: imageOpacity
28130
28127
  });
28131
- var overlayStyle = overlay ? Object.assign({}, BackgroundImageStyles.overlay, {
28132
- backgroundColor: getColor(overlay, elementMode ? {
28133
- themeMode: elementMode
28134
- } : undefined),
28135
- mixBlendMode: blendMode
28136
- }) : {};
28137
28128
  return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, BackgroundImageStyles.container, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
28138
28129
  style: imageStyle
28139
- }, views == null ? void 0 : views.image)), overlay && /*#__PURE__*/React__default.createElement(appStudio.View, {
28140
- style: overlayStyle
28141
- }), children && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, BackgroundImageStyles.content, views == null ? void 0 : views.content), children)));
28130
+ }, views == null ? void 0 : views.image)), overlay, children && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, BackgroundImageStyles.content, views == null ? void 0 : views.content), children)));
28142
28131
  };
28143
28132
  /**
28144
28133
  * Background Video Component
@@ -28151,21 +28140,11 @@ var BackgroundVideo = _ref8 => {
28151
28140
  loop = true,
28152
28141
  muted = true,
28153
28142
  playsInline = true,
28154
- overlay,
28143
+ overlay = null,
28155
28144
  blendMode = 'normal',
28156
- views,
28157
- themeMode: elementMode
28145
+ views
28158
28146
  } = _ref8,
28159
28147
  props = _objectWithoutPropertiesLoose(_ref8, _excluded8$1);
28160
- var {
28161
- getColor
28162
- } = appStudio.useTheme();
28163
- var overlayStyle = overlay ? Object.assign({}, BackgroundVideoStyles.overlay, {
28164
- backgroundColor: getColor(overlay, elementMode ? {
28165
- themeMode: elementMode
28166
- } : undefined),
28167
- mixBlendMode: blendMode
28168
- }) : {};
28169
28148
  return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, BackgroundVideoStyles.container, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
28170
28149
  as: "video",
28171
28150
  src: src,
@@ -28174,9 +28153,7 @@ var BackgroundVideo = _ref8 => {
28174
28153
  muted: muted,
28175
28154
  playsInline: playsInline,
28176
28155
  style: BackgroundVideoStyles.video
28177
- }, views == null ? void 0 : views.video)), overlay && /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
28178
- style: overlayStyle
28179
- }, views == null ? void 0 : views.overlay)), children && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, BackgroundVideoStyles.content, views == null ? void 0 : views.content), children)));
28156
+ }, views == null ? void 0 : views.video)), overlay, children && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, BackgroundVideoStyles.content, views == null ? void 0 : views.content), children)));
28180
28157
  };
28181
28158
  /**
28182
28159
  * Background Gradient Component
@@ -28189,12 +28166,48 @@ var BackgroundGradient = _ref9 => {
28189
28166
  gradientProps = _objectWithoutPropertiesLoose(_ref9, _excluded9$1);
28190
28167
  return /*#__PURE__*/React__default.createElement(Gradient, Object.assign({}, gradientProps), children);
28191
28168
  };
28192
- var BackgroundViewBase = _ref10 => {
28169
+ /**
28170
+ * Background Overlay Component
28171
+ */
28172
+ var BackgroundOverlay = _ref10 => {
28193
28173
  var {
28194
- children,
28195
- views
28174
+ contentPosition
28196
28175
  } = _ref10,
28197
28176
  props = _objectWithoutPropertiesLoose(_ref10, _excluded10$1);
28177
+ var getDefaultOverlay = () => {
28178
+ switch (contentPosition) {
28179
+ case 'left':
28180
+ return 'radial-gradient(circle at 70% 50%, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%), linear-gradient(to right, rgba(0,0,0,1) 0%, rgba(0,0,0,0.6) 50%, rgba(0,0,0,0.2) 100%)';
28181
+ case 'right':
28182
+ return 'radial-gradient(circle at 30% 50%, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%), linear-gradient(to left, rgba(0,0,0,1) 0%, rgba(0,0,0,0.6) 50%, rgba(0,0,0,0.2) 100%)';
28183
+ case 'top':
28184
+ return 'radial-gradient(circle at 50% 80%, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%), linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0.6) 50%, rgba(0,0,0,0.1) 100%)';
28185
+ case 'bottom':
28186
+ return 'radial-gradient(circle at 50% 80%, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0.1) 100%), linear-gradient(to top, rgba(0,0,0,1) 0%, rgba(0,0,0,0.6) 50%, rgba(0,0,0,0.1) 100%)';
28187
+ case 'center':
28188
+ return 'radial-gradient(circle at 50% 90%, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0) 100%)';
28189
+ default:
28190
+ return 'rgba(0,0,0,0.5)';
28191
+ }
28192
+ };
28193
+ var background = getDefaultOverlay();
28194
+ return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
28195
+ position: "absolute",
28196
+ top: 0,
28197
+ left: 0,
28198
+ width: "100%",
28199
+ height: "100%",
28200
+ background: background,
28201
+ pointerEvents: "none",
28202
+ zIndex: 1
28203
+ }, props));
28204
+ };
28205
+ var BackgroundViewBase = _ref11 => {
28206
+ var {
28207
+ children,
28208
+ views
28209
+ } = _ref11,
28210
+ props = _objectWithoutPropertiesLoose(_ref11, _excluded11$1);
28198
28211
  return /*#__PURE__*/React__default.createElement(BackgroundContext.Provider, {
28199
28212
  value: {}
28200
28213
  }, /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, DefaultBackgroundStyles.container, views == null ? void 0 : views.container, props), children));
@@ -28211,6 +28224,7 @@ BackgroundView.Ripples = Ripples;
28211
28224
  BackgroundView.Image = BackgroundImage;
28212
28225
  BackgroundView.Video = BackgroundVideo;
28213
28226
  BackgroundView.Gradient = BackgroundGradient;
28227
+ BackgroundView.Overlay = BackgroundOverlay;
28214
28228
 
28215
28229
  /**
28216
28230
  * Background Component with compound pattern
@@ -28272,7 +28286,8 @@ var Background = /*#__PURE__*/Object.assign(BackgroundComponent, {
28272
28286
  Ripples: BackgroundView.Ripples,
28273
28287
  Image: BackgroundView.Image,
28274
28288
  Video: BackgroundView.Video,
28275
- Gradient: BackgroundView.Gradient
28289
+ Gradient: BackgroundView.Gradient,
28290
+ Overlay: BackgroundView.Overlay
28276
28291
  });
28277
28292
  Background.displayName = 'Background';
28278
28293