@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
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('core-js/modules/es.object.assign.js'), require('react'), require('core-js/modules/es.array.includes.js'), require('core-js/modules/es.array.iterator.js'), require('core-js/modules/es.string.includes.js'), require('core-js/modules/web.dom-collections.iterator.js'), require('core-js/modules/es.regexp.to-string.js'), require('app-studio'), require('core-js/modules/es.symbol.description.js'), require('core-js/modules/es.array-buffer.constructor.js'), require('core-js/modules/es.array-buffer.slice.js'), require('core-js/modules/es.typed-array.uint8-array.js'), require('core-js/modules/es.typed-array.fill.js'), require('core-js/modules/es.typed-array.set.js'), require('core-js/modules/es.typed-array.sort.js'), require('core-js/modules/es.typed-array.to-locale-string.js'), require('core-js/modules/es.string.starts-with.js'), require('core-js/modules/web.url.js'), require('core-js/modules/web.url.to-json.js'), require('core-js/modules/web.url-search-params.js'), require('zustand'), require('core-js/modules/es.parse-int.js'), require('react-router-dom'), require('core-js/modules/es.parse-float.js'), require('core-js/modules/es.string.ends-with.js'), require('contrast'), require('core-js/modules/es.promise.js'), require('core-js/modules/es.array.reduce.js'), require('core-js/modules/es.number.to-fixed.js'), require('date-fns/format'), require('core-js/modules/es.string.trim.js'), require('core-js/modules/es.regexp.constructor.js'), require('core-js/modules/es.regexp.exec.js'), require('formik'), require('core-js/modules/es.string.replace.js'), require('src/services/api'), require('core-js/modules/es.promise.finally.js'), require('core-js/modules/es.string.match.js'), require('core-js/modules/es.string.search.js'), require('core-js/modules/es.array.flat-map.js'), require('core-js/modules/es.array.unscopables.flat-map.js')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'core-js/modules/es.object.assign.js', 'react', 'core-js/modules/es.array.includes.js', 'core-js/modules/es.array.iterator.js', 'core-js/modules/es.string.includes.js', 'core-js/modules/web.dom-collections.iterator.js', 'core-js/modules/es.regexp.to-string.js', 'app-studio', 'core-js/modules/es.symbol.description.js', 'core-js/modules/es.array-buffer.constructor.js', 'core-js/modules/es.array-buffer.slice.js', 'core-js/modules/es.typed-array.uint8-array.js', 'core-js/modules/es.typed-array.fill.js', 'core-js/modules/es.typed-array.set.js', 'core-js/modules/es.typed-array.sort.js', 'core-js/modules/es.typed-array.to-locale-string.js', 'core-js/modules/es.string.starts-with.js', 'core-js/modules/web.url.js', 'core-js/modules/web.url.to-json.js', 'core-js/modules/web.url-search-params.js', 'zustand', 'core-js/modules/es.parse-int.js', 'react-router-dom', 'core-js/modules/es.parse-float.js', 'core-js/modules/es.string.ends-with.js', 'contrast', 'core-js/modules/es.promise.js', 'core-js/modules/es.array.reduce.js', 'core-js/modules/es.number.to-fixed.js', 'date-fns/format', 'core-js/modules/es.string.trim.js', 'core-js/modules/es.regexp.constructor.js', 'core-js/modules/es.regexp.exec.js', 'formik', 'core-js/modules/es.string.replace.js', 'src/services/api', 'core-js/modules/es.promise.finally.js', 'core-js/modules/es.string.match.js', 'core-js/modules/es.string.search.js', 'core-js/modules/es.array.flat-map.js', 'core-js/modules/es.array.unscopables.flat-map.js'], factory) :
4
- (global = global || self, factory(global['@app-studio/web'] = {}, null, global.React, null, null, null, null, null, global.appStudio, null, null, null, null, null, null, null, null, null, null, null, null, global.zustand, null, global.reactRouterDom, null, null, global.contrast, null, null, null, global.format, null, null, null, global.formik, null, global.api));
5
- }(this, (function (exports, es_object_assign_js, React, es_array_includes_js, es_array_iterator_js, es_string_includes_js, web_domCollections_iterator_js, es_regexp_toString_js, appStudio, es_symbol_description_js, es_arrayBuffer_constructor_js, es_arrayBuffer_slice_js, es_typedArray_uint8Array_js, es_typedArray_fill_js, es_typedArray_set_js, es_typedArray_sort_js, es_typedArray_toLocaleString_js, es_string_startsWith_js, web_url_js, web_url_toJson_js, web_urlSearchParams_js, zustand, es_parseInt_js, reactRouterDom, es_parseFloat_js, es_string_endsWith_js, contrast, es_promise_js, es_array_reduce_js, es_number_toFixed_js, format, es_string_trim_js, es_regexp_constructor_js, es_regexp_exec_js, formik, es_string_replace_js, api) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('core-js/modules/es.object.assign.js'), require('react'), require('core-js/modules/es.array.includes.js'), require('core-js/modules/es.array.iterator.js'), require('core-js/modules/es.string.includes.js'), require('core-js/modules/web.dom-collections.iterator.js'), require('core-js/modules/es.regexp.to-string.js'), require('app-studio'), require('core-js/modules/es.symbol.description.js'), require('core-js/modules/es.array-buffer.constructor.js'), require('core-js/modules/es.array-buffer.slice.js'), require('core-js/modules/es.typed-array.uint8-array.js'), require('core-js/modules/es.typed-array.fill.js'), require('core-js/modules/es.typed-array.set.js'), require('core-js/modules/es.typed-array.sort.js'), require('core-js/modules/es.typed-array.to-locale-string.js'), require('core-js/modules/es.string.starts-with.js'), require('core-js/modules/web.url.js'), require('core-js/modules/web.url.to-json.js'), require('core-js/modules/web.url-search-params.js'), require('zustand'), require('core-js/modules/es.parse-int.js'), require('react-router-dom'), require('core-js/modules/es.parse-float.js'), require('core-js/modules/es.string.ends-with.js'), require('contrast'), require('core-js/modules/es.promise.js'), require('core-js/modules/es.array.reduce.js'), require('core-js/modules/es.number.to-fixed.js'), require('date-fns/format'), require('core-js/modules/es.string.trim.js'), require('core-js/modules/es.regexp.constructor.js'), require('core-js/modules/es.regexp.exec.js'), require('formik'), require('core-js/modules/es.string.replace.js'), require('core-js/modules/es.promise.finally.js'), require('core-js/modules/es.string.match.js'), require('core-js/modules/es.string.search.js'), require('core-js/modules/es.array.flat-map.js'), require('core-js/modules/es.array.unscopables.flat-map.js')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'core-js/modules/es.object.assign.js', 'react', 'core-js/modules/es.array.includes.js', 'core-js/modules/es.array.iterator.js', 'core-js/modules/es.string.includes.js', 'core-js/modules/web.dom-collections.iterator.js', 'core-js/modules/es.regexp.to-string.js', 'app-studio', 'core-js/modules/es.symbol.description.js', 'core-js/modules/es.array-buffer.constructor.js', 'core-js/modules/es.array-buffer.slice.js', 'core-js/modules/es.typed-array.uint8-array.js', 'core-js/modules/es.typed-array.fill.js', 'core-js/modules/es.typed-array.set.js', 'core-js/modules/es.typed-array.sort.js', 'core-js/modules/es.typed-array.to-locale-string.js', 'core-js/modules/es.string.starts-with.js', 'core-js/modules/web.url.js', 'core-js/modules/web.url.to-json.js', 'core-js/modules/web.url-search-params.js', 'zustand', 'core-js/modules/es.parse-int.js', 'react-router-dom', 'core-js/modules/es.parse-float.js', 'core-js/modules/es.string.ends-with.js', 'contrast', 'core-js/modules/es.promise.js', 'core-js/modules/es.array.reduce.js', 'core-js/modules/es.number.to-fixed.js', 'date-fns/format', 'core-js/modules/es.string.trim.js', 'core-js/modules/es.regexp.constructor.js', 'core-js/modules/es.regexp.exec.js', 'formik', 'core-js/modules/es.string.replace.js', 'core-js/modules/es.promise.finally.js', 'core-js/modules/es.string.match.js', 'core-js/modules/es.string.search.js', 'core-js/modules/es.array.flat-map.js', 'core-js/modules/es.array.unscopables.flat-map.js'], factory) :
4
+ (global = global || self, factory(global['@app-studio/web'] = {}, null, global.React, null, null, null, null, null, global.appStudio, null, null, null, null, null, null, null, null, null, null, null, null, global.zustand, null, global.reactRouterDom, null, null, global.contrast, null, null, null, global.format, null, null, null, global.formik));
5
+ }(this, (function (exports, es_object_assign_js, React, es_array_includes_js, es_array_iterator_js, es_string_includes_js, web_domCollections_iterator_js, es_regexp_toString_js, appStudio, es_symbol_description_js, es_arrayBuffer_constructor_js, es_arrayBuffer_slice_js, es_typedArray_uint8Array_js, es_typedArray_fill_js, es_typedArray_set_js, es_typedArray_sort_js, es_typedArray_toLocaleString_js, es_string_startsWith_js, web_url_js, web_url_toJson_js, web_urlSearchParams_js, zustand, es_parseInt_js, reactRouterDom, es_parseFloat_js, es_string_endsWith_js, contrast, es_promise_js, es_array_reduce_js, es_number_toFixed_js, format, es_string_trim_js, es_regexp_constructor_js, es_regexp_exec_js, formik) { 'use strict';
6
6
 
7
7
  var React__default = 'default' in React ? React['default'] : React;
8
8
  contrast = contrast && Object.prototype.hasOwnProperty.call(contrast, 'default') ? contrast['default'] : contrast;
@@ -9773,7 +9773,7 @@
9773
9773
  maxHeight: 'calc(100vh - 100px)',
9774
9774
  height: 'calc(5em)',
9775
9775
  border: 'none',
9776
- resize: 'vertical',
9776
+ // resize property removed to avoid type error, added via style prop
9777
9777
  // Focus state
9778
9778
  on: {
9779
9779
  focus: {
@@ -9850,8 +9850,12 @@
9850
9850
  onBlur: handleBlur,
9851
9851
  onFocus: handleFocus,
9852
9852
  multiline: "" + !!isMultiline.toString(),
9853
- onChange: handleChange
9854
- }, fieldStyles, views == null ? void 0 : views.textarea)))));
9853
+ onChange: e => handleChange(e)
9854
+ }, fieldStyles, {
9855
+ style: {
9856
+ resize: 'vertical'
9857
+ }
9858
+ }, views == null ? void 0 : views.textarea)))));
9855
9859
  };
9856
9860
 
9857
9861
  // Defines the TextAreaComponent as a functional component that accepts TextAreaProps for type safety and structure.
@@ -10708,7 +10712,7 @@
10708
10712
  value: 'transparent'
10709
10713
  }];
10710
10714
 
10711
- 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"];
10715
+ 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"];
10712
10716
  var ColorInputView = _ref => {
10713
10717
  var {
10714
10718
  // Basic props
@@ -14238,7 +14242,11 @@
14238
14242
  disabled = false,
14239
14243
  isAgentRunning = false,
14240
14244
  onStopAgent,
14241
- sandboxId
14245
+ sandboxId,
14246
+ onUploadProgress,
14247
+ onUploadSuccess,
14248
+ onUploadError,
14249
+ onFileUpload
14242
14250
  } = props;
14243
14251
  // Determine if the component is controlled
14244
14252
  var isControlled = controlledValue !== undefined && controlledOnChange !== undefined;
@@ -14354,28 +14362,6 @@
14354
14362
  e.stopPropagation();
14355
14363
  setIsDraggingOver(false);
14356
14364
  };
14357
- // Upload service hook (single file at a time)
14358
- var uploadFileRequest = api.UploadService.useUploadControllerFileService({
14359
- onProgress: p => setUploadProgress(p || 0),
14360
- onSuccess: () => {
14361
- // Advance the queue
14362
- setUploadQueue(prev => prev.slice(1));
14363
- setIsProcessingQueue(false);
14364
- currentUploadRef.current = null;
14365
- setUploadProgress(0);
14366
- // If queue emptied, stop uploading state
14367
- setIsUploading(prev => uploadQueue.length - 1 > 0 || false);
14368
- },
14369
- onError: _err => {
14370
- // Remove the failed file from queue and continue
14371
- setUploadQueue(prev => prev.slice(1));
14372
- setIsProcessingQueue(false);
14373
- currentUploadRef.current = null;
14374
- setUploadProgress(0);
14375
- // If queue emptied, stop uploading state
14376
- setIsUploading(prev => uploadQueue.length - 1 > 0 || false);
14377
- }
14378
- });
14379
14365
  // Start uploading a batch of files (enqueue and process)
14380
14366
  var startUpload = React.useCallback(files => {
14381
14367
  if (!files || files.length === 0) return;
@@ -14388,25 +14374,33 @@
14388
14374
  }, [setPendingFiles, setUploadedFiles]);
14389
14375
  // Process upload queue sequentially
14390
14376
  var processUploadQueue = React.useCallback(() => {
14391
- if (uploadQueue.length > 0 && !isProcessingQueue && !uploadFileRequest.loading) {
14377
+ if (uploadQueue.length > 0 && !isProcessingQueue && onFileUpload) {
14392
14378
  setIsProcessingQueue(true);
14393
14379
  var nextFile = uploadQueue[0];
14394
14380
  currentUploadRef.current = nextFile;
14395
14381
  setUploadProgress(0);
14396
- // Fire upload
14397
- uploadFileRequest.run({
14398
- file: nextFile
14399
- });
14382
+ // Execute user-provided upload function
14383
+ try {
14384
+ onFileUpload(nextFile);
14385
+ } catch (err) {
14386
+ // Handle synchronous errors
14387
+ setUploadQueue(prev => prev.slice(1));
14388
+ setIsProcessingQueue(false);
14389
+ currentUploadRef.current = null;
14390
+ setUploadProgress(0);
14391
+ setIsUploading(prev => uploadQueue.length - 1 > 0 || false);
14392
+ onUploadError == null || onUploadError(err);
14393
+ }
14400
14394
  } else if (uploadQueue.length === 0 && isUploading) {
14401
14395
  // Nothing left to upload
14402
14396
  setIsUploading(false);
14403
14397
  setUploadProgress(0);
14404
14398
  }
14405
- }, [uploadQueue, isProcessingQueue, uploadFileRequest.loading, uploadFileRequest, isUploading]);
14406
- // Effect: process whenever queue or request/loading changes
14399
+ }, [uploadQueue, isProcessingQueue, onFileUpload, isUploading, onUploadError]);
14400
+ // Effect: process whenever queue changes
14407
14401
  React.useEffect(() => {
14408
14402
  processUploadQueue();
14409
- }, [uploadQueue, isProcessingQueue, uploadFileRequest.loading, processUploadQueue]);
14403
+ }, [uploadQueue, isProcessingQueue, processUploadQueue]);
14410
14404
  // Mock function for subscription status
14411
14405
  var subscriptionStatus = 'active';
14412
14406
  // Mock function to check if user can access a model
@@ -15766,7 +15760,7 @@
15766
15760
  }))));
15767
15761
  };
15768
15762
 
15769
- 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"];
15763
+ 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"];
15770
15764
  var ChatInputView = _ref => {
15771
15765
  var _value$trim$length;
15772
15766
  var {
@@ -16546,7 +16540,7 @@
16546
16540
  }
16547
16541
  };
16548
16542
 
16549
- 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"];
16543
+ 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"];
16550
16544
  var SliderView = _ref => {
16551
16545
  var _views$tooltip, _views$tooltip2;
16552
16546
  var {
@@ -16913,11 +16907,6 @@
16913
16907
  var FormikOTPInput = OTPInputComponent$1;
16914
16908
 
16915
16909
  var _excluded$T = ["name", "uploadFile", "onUploadSuccess", "onUploadError", "transformResponse", "onMultipleFileSelect", "onFileSelect", "multiple"];
16916
- var defaultUploadFile = (file, onProgress) => {
16917
- return api.UploadService.uploadControllerFile({
16918
- file
16919
- }, onProgress);
16920
- };
16921
16910
  var toArrayValue = value => {
16922
16911
  if (Array.isArray(value)) {
16923
16912
  return value;
@@ -16930,7 +16919,7 @@
16930
16919
  var FormikUploader = _ref => {
16931
16920
  var {
16932
16921
  name,
16933
- uploadFile = defaultUploadFile,
16922
+ uploadFile,
16934
16923
  onUploadSuccess,
16935
16924
  onUploadError,
16936
16925
  transformResponse,
@@ -19178,10 +19167,12 @@
19178
19167
  */
19179
19168
  var HighlightStyles = {
19180
19169
  underline: color => ({
19181
- textDecoration: 'underline',
19182
- textDecorationColor: color,
19183
- textDecorationThickness: '4px',
19184
- textUnderlineOffset: '4px'
19170
+ style: {
19171
+ textDecoration: 'underline',
19172
+ textDecorationColor: color,
19173
+ textDecorationThickness: '4px',
19174
+ textUnderlineOffset: '4px'
19175
+ }
19185
19176
  }),
19186
19177
  background: color => ({
19187
19178
  backgroundColor: color,
@@ -19190,17 +19181,21 @@
19190
19181
  borderRadius: '4px'
19191
19182
  }),
19192
19183
  gradient: (color, secondaryColor) => ({
19193
- background: "linear-gradient(135deg, " + color + ", " + (secondaryColor || color) + ")",
19194
- backgroundClip: 'text !important',
19195
- webkitBackgroundClip: 'text !important',
19184
+ style: {
19185
+ background: "linear-gradient(135deg, " + color + ", " + (secondaryColor || color) + ")",
19186
+ backgroundClip: 'text',
19187
+ WebkitBackgroundClip: 'text',
19188
+ WebkitTextFillColor: 'transparent'
19189
+ },
19196
19190
  color: 'transparent',
19197
- webkitTextFillColor: 'transparent',
19198
19191
  display: 'inline-block',
19199
19192
  textShadow: 'none'
19200
19193
  }),
19201
19194
  outline: color => ({
19202
- webkitTextStroke: "1px " + color,
19203
- webkitTextFillColor: 'transparent',
19195
+ style: {
19196
+ WebkitTextStroke: "1px " + color,
19197
+ WebkitTextFillColor: 'transparent'
19198
+ },
19204
19199
  color: 'transparent',
19205
19200
  textShadow: 'none'
19206
19201
  }),
@@ -19470,7 +19465,7 @@
19470
19465
  })));
19471
19466
  };
19472
19467
 
19473
- var _excluded$$ = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "responsive", "centered", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration", "highlightSlide", "highlightSlideDuration", "highlightSlideStagger", "highlightSlideSequential"];
19468
+ var _excluded$$ = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "responsive", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration", "highlightSlide", "highlightSlideDuration", "highlightSlideStagger", "highlightSlideSequential"];
19474
19469
  function escapeRegExp(string) {
19475
19470
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
19476
19471
  }
@@ -19483,7 +19478,6 @@
19483
19478
  highlightSecondaryColor,
19484
19479
  size = 'lg',
19485
19480
  responsive = true,
19486
- centered = false,
19487
19481
  views,
19488
19482
  highlightAnimate,
19489
19483
  animate,
@@ -19501,31 +19495,6 @@
19501
19495
  ref,
19502
19496
  inView
19503
19497
  } = appStudio.useInView();
19504
- var {
19505
- getColor,
19506
- themeMode: ctxMode
19507
- } = appStudio.useTheme();
19508
- var themeMode = props.themeMode || ctxMode;
19509
- // Resolve colors, handling both theme colors and direct hex values
19510
- var resolveColorValue = colorValue => {
19511
- // If it's already a hex color, return it directly
19512
- if (colorValue.startsWith('#')) {
19513
- return colorValue;
19514
- }
19515
- // Otherwise, use the theme's getColor function
19516
- return getColor(colorValue, {
19517
- themeMode
19518
- });
19519
- };
19520
- var resolvedColor = resolveColorValue(highlightColor);
19521
- var resolvedSecondary = highlightSecondaryColor ? resolveColorValue(highlightSecondaryColor) : undefined;
19522
- var baseHighlightProps = HighlightStyles[highlightStyle](resolvedColor, resolvedSecondary);
19523
- var highlightViewProps = highlightStyle === 'background' ? Object.assign({}, baseHighlightProps, {
19524
- color: undefined
19525
- }) : baseHighlightProps;
19526
- var highlightBackgroundOverrides = highlightStyle === 'background' ? {
19527
- bgColor: resolvedColor
19528
- } : {};
19529
19498
  var {
19530
19499
  finalDisplayedText,
19531
19500
  activeHighlightTarget,
@@ -19545,12 +19514,13 @@
19545
19514
  highlightSlideStagger,
19546
19515
  highlightSlideSequential
19547
19516
  }, props));
19548
- // Determine if we should use responsive sizing or static sizing
19549
- var useResponsive = responsive && !props.media; // Don't override if media prop is already provided
19517
+ // Common style calculations
19518
+ var useResponsive = responsive && !props.media;
19550
19519
  var fontSize = TitleSizes[size];
19551
- // Get responsive styles if responsive prop is true
19552
19520
  var responsiveStyles = useResponsive ? ResponsiveTypography[size] : null;
19553
- // Helper function to apply loop control to animations
19521
+ // Highlight style props
19522
+ var highlightProps = HighlightStyles[highlightStyle](highlightColor, highlightSecondaryColor);
19523
+ // Apply loop control to animations
19554
19524
  var applyAnimationLoop = (animation, loopControl) => {
19555
19525
  if (!animation) return animation;
19556
19526
  if (Array.isArray(animation)) {
@@ -19562,112 +19532,88 @@
19562
19532
  iterationCount: loopControl.toString()
19563
19533
  });
19564
19534
  };
19565
- // Apply loop control to animations
19566
19535
  var controlledAnimate = applyAnimationLoop(animate, animationLoop);
19567
19536
  var controlledHighlightAnimate = applyAnimationLoop(highlightAnimate, highlightAnimationLoop);
19568
19537
  // Get the text to display
19569
19538
  var text = typeof finalDisplayedText === 'string' ? finalDisplayedText : typeof children === 'string' ? children : '';
19539
+ // Common container props
19540
+ var containerProps = {
19541
+ ref,
19542
+ as: 'h1',
19543
+ fontSize: useResponsive ? undefined : fontSize,
19544
+ fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19545
+ letterSpacing: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.letterSpacing : undefined,
19546
+ marginBottom: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.marginBottom : undefined,
19547
+ animate: inView ? controlledAnimate : undefined,
19548
+ media: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.media : undefined
19549
+ };
19550
+ // Render highlighted text content (typewriter, slide, or plain)
19551
+ var renderHighlightedContent = content => {
19552
+ // If animations are enabled but not in view, render invisible placeholder
19553
+ // This holds layout space and prevents animations (like typewriter) from running off-screen
19554
+ if (!inView && (highlightTypewriter || highlightSlide)) {
19555
+ return /*#__PURE__*/React__default.createElement("span", {
19556
+ style: {
19557
+ opacity: 0
19558
+ }
19559
+ }, content);
19560
+ }
19561
+ if (highlightTypewriter) {
19562
+ return /*#__PURE__*/React__default.createElement(TypewriterEffect, Object.assign({
19563
+ text: content,
19564
+ typingSpeed: Math.max(30, highlightTypewriterDuration / (content.length * 10)),
19565
+ showCursor: true,
19566
+ cursorColor: "currentColor"
19567
+ }, highlightProps));
19568
+ }
19569
+ if (highlightSlide) {
19570
+ return /*#__PURE__*/React__default.createElement(SlideEffect, {
19571
+ text: content,
19572
+ duration: stateHighlightSlideDuration,
19573
+ stagger: stateHighlightSlideStagger,
19574
+ sequential: stateHighlightSlideSequential,
19575
+ direction: "up",
19576
+ fontSize: useResponsive ? undefined : fontSize,
19577
+ fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19578
+ wordProps: highlightProps
19579
+ });
19580
+ }
19581
+ return content;
19582
+ };
19583
+ // Case 1: Has highlight target - render with highlighted parts
19570
19584
  if (typeof text === 'string' && activeHighlightTarget) {
19571
- var pattern = (() => {
19572
- if (Array.isArray(activeHighlightTarget)) {
19573
- var escaped = activeHighlightTarget.map(t => escapeRegExp(String(t)));
19574
- return new RegExp("(" + escaped.join('|') + ")", 'gi');
19575
- }
19576
- return new RegExp("(" + escapeRegExp(String(activeHighlightTarget)) + ")", 'gi');
19577
- })();
19585
+ var pattern = Array.isArray(activeHighlightTarget) ? new RegExp("(" + activeHighlightTarget.map(t => escapeRegExp(String(t))).join('|') + ")", 'gi') : new RegExp("(" + escapeRegExp(String(activeHighlightTarget)) + ")", 'gi');
19578
19586
  var parts = [];
19579
19587
  var lastIndex = 0;
19580
19588
  var match;
19581
19589
  while (match = pattern.exec(text)) {
19582
- if (match.index > lastIndex) {
19583
- parts.push(text.substring(lastIndex, match.index));
19584
- }
19590
+ if (match.index > lastIndex) parts.push(text.substring(lastIndex, match.index));
19585
19591
  parts.push({
19586
19592
  highlight: true,
19587
19593
  text: match[0]
19588
19594
  });
19589
19595
  lastIndex = match.index + match[0].length;
19590
19596
  }
19591
- if (lastIndex < text.length) {
19592
- parts.push(text.substring(lastIndex));
19593
- }
19594
- return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({
19595
- ref: ref,
19596
- as: "h1",
19597
- fontSize: useResponsive ? undefined : fontSize,
19598
- fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19599
- letterSpacing: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.letterSpacing : undefined,
19600
- marginBottom: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.marginBottom : undefined,
19601
- textAlign: centered ? 'center' : 'left',
19602
- animate: inView ? controlledAnimate : undefined,
19603
- media: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.media : undefined
19604
- }, views == null ? void 0 : views.container, props), parts.map((part, idx) => typeof part === 'string' ? part : (/*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
19597
+ if (lastIndex < text.length) parts.push(text.substring(lastIndex));
19598
+ 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({
19605
19599
  key: "highlight-" + idx,
19606
19600
  as: "span",
19607
19601
  display: "inline",
19608
19602
  animate: inView ? controlledHighlightAnimate : undefined,
19609
19603
  fontSize: useResponsive ? undefined : fontSize
19610
- }, !highlightSlide ? highlightViewProps : {}, highlightBackgroundOverrides, views == null ? void 0 : views.highlight), highlightTypewriter ? (/*#__PURE__*/React__default.createElement(TypewriterEffect, {
19611
- text: part.text,
19612
- typingSpeed: Math.max(30, highlightTypewriterDuration / (part.text.length * 10)),
19613
- showCursor: true,
19614
- cursorColor: "currentColor"
19615
- })) : highlightSlide ? (/*#__PURE__*/React__default.createElement(SlideEffect, {
19616
- text: part.text,
19617
- duration: stateHighlightSlideDuration,
19618
- stagger: stateHighlightSlideStagger,
19619
- sequential: stateHighlightSlideSequential,
19620
- direction: "up",
19621
- fontSize: useResponsive ? undefined : fontSize,
19622
- fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19623
- wordProps: highlightViewProps
19624
- })) : part.text))));
19604
+ }, !highlightSlide ? highlightProps : {}, views == null ? void 0 : views.highlight), renderHighlightedContent(part.text)))));
19625
19605
  }
19626
- // If highlightStyle is provided but no highlightText, apply the style to the entire title
19606
+ // Case 2: Has highlight style but no highlight target - apply style to entire title
19627
19607
  if (highlightStyle && !activeHighlightTarget) {
19628
- return /*#__PURE__*/React__default.createElement(appStudio.Element, Object.assign({
19629
- ref: ref,
19630
- as: "h1",
19631
- fontSize: useResponsive ? undefined : fontSize,
19632
- fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19633
- letterSpacing: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.letterSpacing : undefined,
19634
- marginBottom: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.marginBottom : undefined,
19635
- textAlign: centered ? 'center' : 'left',
19636
- animate: inView ? controlledAnimate : undefined,
19637
- media: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.media : undefined
19638
- }, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
19608
+ 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({
19639
19609
  as: "span",
19640
19610
  fontSize: fontSize,
19641
19611
  display: "inline",
19642
19612
  animate: inView ? controlledHighlightAnimate : undefined
19643
- }, !highlightSlide ? highlightViewProps : {}, highlightBackgroundOverrides, views == null ? void 0 : views.highlight), highlightTypewriter ? (/*#__PURE__*/React__default.createElement(TypewriterEffect, {
19644
- text: text,
19645
- typingSpeed: Math.max(30, highlightTypewriterDuration / (text.length * 10)),
19646
- showCursor: true,
19647
- cursorColor: "currentColor"
19648
- })) : highlightSlide ? (/*#__PURE__*/React__default.createElement(SlideEffect, {
19649
- text: text,
19650
- duration: stateHighlightSlideDuration,
19651
- stagger: stateHighlightSlideStagger,
19652
- sequential: stateHighlightSlideSequential,
19653
- direction: "up",
19654
- fontSize: fontSize,
19655
- fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19656
- wordProps: highlightViewProps
19657
- })) : text));
19613
+ }, !highlightSlide ? highlightProps : {}, views == null ? void 0 : views.highlight), renderHighlightedContent(text)));
19658
19614
  }
19659
- // Default case - no highlighting
19660
- return /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
19661
- ref: ref,
19662
- as: "h1",
19663
- fontSize: fontSize,
19664
- fontWeight: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.fontWeight : 'bold',
19665
- letterSpacing: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.letterSpacing : undefined,
19666
- marginBottom: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.marginBottom : undefined,
19667
- textAlign: centered ? 'center' : 'left',
19668
- animate: inView ? controlledAnimate : undefined,
19669
- media: useResponsive ? responsiveStyles == null ? void 0 : responsiveStyles.media : undefined
19670
- }, views == null ? void 0 : views.container, props), text);
19615
+ // Case 3: Default - no highlighting
19616
+ return /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({}, containerProps, views == null ? void 0 : views.container, props), text);
19671
19617
  };
19672
19618
 
19673
19619
  /**
@@ -20934,7 +20880,7 @@
20934
20880
  category: 'neutral'
20935
20881
  }];
20936
20882
 
20937
- 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"];
20883
+ 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"];
20938
20884
  var ColorPickerView = _ref => {
20939
20885
  var {
20940
20886
  // Basic props
@@ -23301,7 +23247,7 @@
23301
23247
  };
23302
23248
  };
23303
23249
 
23304
- 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"];
23250
+ 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"];
23305
23251
  var EmojiPickerView = _ref => {
23306
23252
  var {
23307
23253
  // Basic props
@@ -24275,15 +24221,22 @@
24275
24221
  };
24276
24222
  var Pagination = PaginationComponent;
24277
24223
 
24278
- var _excluded$1a = ["value", "max", "color", "backgroundColor", "height", "radius", "views", "themeMode"];
24224
+ var _excluded$1a = ["shape", "value", "max", "color", "backgroundColor", "height", "size", "radius", "strokeWidth", "showLabel", "labelColor", "animated", "animationDuration", "views", "themeMode"];
24279
24225
  var ProgressBarView = _ref => {
24280
24226
  var {
24227
+ shape = 'linear',
24281
24228
  value = 0,
24282
24229
  max = 100,
24283
24230
  color = 'theme.primary',
24284
24231
  backgroundColor = 'color.gray.200',
24285
- height = 8,
24232
+ height,
24233
+ size,
24286
24234
  radius = 4,
24235
+ strokeWidth = 10,
24236
+ showLabel = false,
24237
+ labelColor = 'theme.text.primary',
24238
+ animated = true,
24239
+ animationDuration = '0.5s',
24287
24240
  views,
24288
24241
  themeMode: elementMode
24289
24242
  } = _ref,
@@ -24293,20 +24246,78 @@
24293
24246
  themeMode
24294
24247
  } = appStudio.useTheme();
24295
24248
  var currentMode = elementMode ? elementMode : themeMode;
24296
- var percentage = Math.min(100, Math.max(0, value / max * 100));
24249
+ var validValue = Math.min(max, Math.max(0, value));
24250
+ var percentage = validValue / max * 100;
24297
24251
  var trackColor = getColor(backgroundColor, {
24298
24252
  themeMode: currentMode
24299
24253
  });
24300
24254
  var barColor = getColor(color, {
24301
24255
  themeMode: currentMode
24302
24256
  });
24257
+ if (shape === 'circle') {
24258
+ var circleSize = size || (typeof height === 'number' ? height : 100);
24259
+ var radiusCalc = (circleSize - strokeWidth) / 2;
24260
+ var circumference = 2 * Math.PI * radiusCalc;
24261
+ var offset = circumference - percentage / 100 * circumference;
24262
+ return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
24263
+ width: circleSize,
24264
+ height: circleSize,
24265
+ position: "relative",
24266
+ display: "flex",
24267
+ alignItems: "center",
24268
+ justifyContent: "center"
24269
+ }, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement("svg", {
24270
+ width: circleSize,
24271
+ height: circleSize,
24272
+ viewBox: "0 0 " + circleSize + " " + circleSize,
24273
+ style: {
24274
+ transform: 'rotate(-90deg)'
24275
+ }
24276
+ }, /*#__PURE__*/React__default.createElement("circle", Object.assign({
24277
+ cx: circleSize / 2,
24278
+ cy: circleSize / 2,
24279
+ r: radiusCalc,
24280
+ stroke: trackColor,
24281
+ strokeWidth: strokeWidth,
24282
+ fill: "transparent"
24283
+ }, views == null ? void 0 : views.track)), /*#__PURE__*/React__default.createElement("circle", Object.assign({
24284
+ cx: circleSize / 2,
24285
+ cy: circleSize / 2,
24286
+ r: radiusCalc,
24287
+ stroke: barColor,
24288
+ strokeWidth: strokeWidth,
24289
+ strokeDasharray: circumference,
24290
+ strokeDashoffset: offset,
24291
+ strokeLinecap: "round",
24292
+ fill: "transparent",
24293
+ style: {
24294
+ transition: animated ? "stroke-dashoffset " + animationDuration + " ease-in-out" : 'none'
24295
+ }
24296
+ }, views == null ? void 0 : views.indicator))), showLabel && (/*#__PURE__*/React__default.createElement(appStudio.View, {
24297
+ position: "absolute",
24298
+ top: 0,
24299
+ left: 0,
24300
+ right: 0,
24301
+ bottom: 0,
24302
+ display: "flex",
24303
+ alignItems: "center",
24304
+ justifyContent: "center",
24305
+ pointerEvents: "none"
24306
+ }, /*#__PURE__*/React__default.createElement(appStudio.Text, Object.assign({
24307
+ color: labelColor,
24308
+ fontSize: circleSize * 0.2 + "px",
24309
+ fontWeight: "bold"
24310
+ }, views == null ? void 0 : views.text), Math.round(percentage), "%"))));
24311
+ }
24312
+ // Linear Progress Bar
24313
+ var linearHeight = height || 8;
24303
24314
  return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
24304
24315
  role: "progressbar",
24305
24316
  "aria-valuenow": value,
24306
24317
  "aria-valuemin": 0,
24307
24318
  "aria-valuemax": max,
24308
24319
  width: "100%",
24309
- height: height,
24320
+ height: linearHeight,
24310
24321
  backgroundColor: trackColor,
24311
24322
  borderRadius: radius,
24312
24323
  overflow: "hidden"
@@ -24314,12 +24325,16 @@
24314
24325
  width: percentage + "%",
24315
24326
  height: "100%",
24316
24327
  backgroundColor: barColor,
24317
- borderRadius: radius
24328
+ borderRadius: radius,
24329
+ style: {
24330
+ transition: animated ? "width " + animationDuration + " ease-in-out" : 'none'
24331
+ }
24318
24332
  }, views == null ? void 0 : views.bar)));
24319
24333
  };
24320
24334
 
24321
24335
  /**
24322
24336
  * ProgressBar component displays completion status of a task or process.
24337
+ * Supports both linear and circular shapes.
24323
24338
  */
24324
24339
  var ProgressBarComponent = props => (/*#__PURE__*/React__default.createElement(ProgressBarView, Object.assign({}, props)));
24325
24340
  var ProgressBar = ProgressBarComponent;
@@ -24400,7 +24415,7 @@
24400
24415
  var borderWidth = SeparatorThicknesses[thickness];
24401
24416
  // Set appropriate ARIA attributes based on decorative prop
24402
24417
  var ariaProps = decorative ? {
24403
- 'aria-hidden': 'true'
24418
+ 'aria-hidden': true
24404
24419
  } : {
24405
24420
  role: 'separator',
24406
24421
  'aria-orientation': orientation
@@ -27369,16 +27384,10 @@
27369
27384
  backgroundRepeat: 'no-repeat',
27370
27385
  backgroundAttachment: 'scroll'
27371
27386
  },
27372
- overlay: {
27373
- position: 'absolute',
27374
- top: 0,
27375
- left: 0,
27376
- width: '100%',
27377
- height: '100%',
27378
- pointerEvents: 'none'
27379
- },
27380
27387
  content: {
27381
27388
  position: 'relative',
27389
+ width: '100%',
27390
+ height: '100%',
27382
27391
  zIndex: 2
27383
27392
  }
27384
27393
  };
@@ -27402,14 +27411,6 @@
27402
27411
  height: '100%',
27403
27412
  objectFit: 'cover'
27404
27413
  },
27405
- overlay: {
27406
- position: 'absolute',
27407
- top: 0,
27408
- left: 0,
27409
- width: '100%',
27410
- height: '100%',
27411
- pointerEvents: 'none'
27412
- },
27413
27414
  content: {
27414
27415
  position: 'relative',
27415
27416
  zIndex: 2
@@ -27678,7 +27679,8 @@
27678
27679
  _excluded7$1 = ["children", "src", "backgroundSize", "backgroundPosition", "backgroundRepeat", "backgroundAttachment", "imageOpacity", "overlay", "blendMode", "views", "themeMode"],
27679
27680
  _excluded8$1 = ["children", "src", "autoPlay", "loop", "muted", "playsInline", "overlay", "blendMode", "views", "themeMode"],
27680
27681
  _excluded9$1 = ["children"],
27681
- _excluded10$1 = ["children", "views"];
27682
+ _excluded10$1 = ["contentPosition"],
27683
+ _excluded11$1 = ["children", "views"];
27682
27684
  // Background Context
27683
27685
  var BackgroundContext = /*#__PURE__*/React.createContext({});
27684
27686
  /**
@@ -28072,15 +28074,11 @@
28072
28074
  backgroundRepeat = 'no-repeat',
28073
28075
  backgroundAttachment = 'scroll',
28074
28076
  imageOpacity = 1,
28075
- overlay,
28077
+ overlay = null,
28076
28078
  blendMode = 'normal',
28077
- views,
28078
- themeMode: elementMode
28079
+ views
28079
28080
  } = _ref7,
28080
28081
  props = _objectWithoutPropertiesLoose(_ref7, _excluded7$1);
28081
- var {
28082
- getColor
28083
- } = appStudio.useTheme();
28084
28082
  var imageStyle = Object.assign({}, BackgroundImageStyles.image, {
28085
28083
  backgroundImage: "url(" + src + ")",
28086
28084
  backgroundSize,
@@ -28089,17 +28087,9 @@
28089
28087
  backgroundAttachment,
28090
28088
  opacity: imageOpacity
28091
28089
  });
28092
- var overlayStyle = overlay ? Object.assign({}, BackgroundImageStyles.overlay, {
28093
- backgroundColor: getColor(overlay, elementMode ? {
28094
- themeMode: elementMode
28095
- } : undefined),
28096
- mixBlendMode: blendMode
28097
- }) : {};
28098
28090
  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({
28099
28091
  style: imageStyle
28100
- }, views == null ? void 0 : views.image)), overlay && /*#__PURE__*/React__default.createElement(appStudio.View, {
28101
- style: overlayStyle
28102
- }), children && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, BackgroundImageStyles.content, views == null ? void 0 : views.content), children)));
28092
+ }, 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)));
28103
28093
  };
28104
28094
  /**
28105
28095
  * Background Video Component
@@ -28112,21 +28102,11 @@
28112
28102
  loop = true,
28113
28103
  muted = true,
28114
28104
  playsInline = true,
28115
- overlay,
28105
+ overlay = null,
28116
28106
  blendMode = 'normal',
28117
- views,
28118
- themeMode: elementMode
28107
+ views
28119
28108
  } = _ref8,
28120
28109
  props = _objectWithoutPropertiesLoose(_ref8, _excluded8$1);
28121
- var {
28122
- getColor
28123
- } = appStudio.useTheme();
28124
- var overlayStyle = overlay ? Object.assign({}, BackgroundVideoStyles.overlay, {
28125
- backgroundColor: getColor(overlay, elementMode ? {
28126
- themeMode: elementMode
28127
- } : undefined),
28128
- mixBlendMode: blendMode
28129
- }) : {};
28130
28110
  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({
28131
28111
  as: "video",
28132
28112
  src: src,
@@ -28135,9 +28115,7 @@
28135
28115
  muted: muted,
28136
28116
  playsInline: playsInline,
28137
28117
  style: BackgroundVideoStyles.video
28138
- }, views == null ? void 0 : views.video)), overlay && /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
28139
- style: overlayStyle
28140
- }, views == null ? void 0 : views.overlay)), children && (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, BackgroundVideoStyles.content, views == null ? void 0 : views.content), children)));
28118
+ }, 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)));
28141
28119
  };
28142
28120
  /**
28143
28121
  * Background Gradient Component
@@ -28150,12 +28128,48 @@
28150
28128
  gradientProps = _objectWithoutPropertiesLoose(_ref9, _excluded9$1);
28151
28129
  return /*#__PURE__*/React__default.createElement(Gradient, Object.assign({}, gradientProps), children);
28152
28130
  };
28153
- var BackgroundViewBase = _ref10 => {
28131
+ /**
28132
+ * Background Overlay Component
28133
+ */
28134
+ var BackgroundOverlay = _ref10 => {
28154
28135
  var {
28155
- children,
28156
- views
28136
+ contentPosition
28157
28137
  } = _ref10,
28158
28138
  props = _objectWithoutPropertiesLoose(_ref10, _excluded10$1);
28139
+ var getDefaultOverlay = () => {
28140
+ switch (contentPosition) {
28141
+ case 'left':
28142
+ 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%)';
28143
+ case 'right':
28144
+ 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%)';
28145
+ case 'top':
28146
+ 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%)';
28147
+ case 'bottom':
28148
+ 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%)';
28149
+ case 'center':
28150
+ return 'radial-gradient(circle at 50% 90%, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0) 100%)';
28151
+ default:
28152
+ return 'rgba(0,0,0,0.5)';
28153
+ }
28154
+ };
28155
+ var background = getDefaultOverlay();
28156
+ return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
28157
+ position: "absolute",
28158
+ top: 0,
28159
+ left: 0,
28160
+ width: "100%",
28161
+ height: "100%",
28162
+ background: background,
28163
+ pointerEvents: "none",
28164
+ zIndex: 1
28165
+ }, props));
28166
+ };
28167
+ var BackgroundViewBase = _ref11 => {
28168
+ var {
28169
+ children,
28170
+ views
28171
+ } = _ref11,
28172
+ props = _objectWithoutPropertiesLoose(_ref11, _excluded11$1);
28159
28173
  return /*#__PURE__*/React__default.createElement(BackgroundContext.Provider, {
28160
28174
  value: {}
28161
28175
  }, /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, DefaultBackgroundStyles.container, views == null ? void 0 : views.container, props), children));
@@ -28172,6 +28186,7 @@
28172
28186
  BackgroundView.Image = BackgroundImage;
28173
28187
  BackgroundView.Video = BackgroundVideo;
28174
28188
  BackgroundView.Gradient = BackgroundGradient;
28189
+ BackgroundView.Overlay = BackgroundOverlay;
28175
28190
 
28176
28191
  /**
28177
28192
  * Background Component with compound pattern
@@ -28233,7 +28248,8 @@
28233
28248
  Ripples: BackgroundView.Ripples,
28234
28249
  Image: BackgroundView.Image,
28235
28250
  Video: BackgroundView.Video,
28236
- Gradient: BackgroundView.Gradient
28251
+ Gradient: BackgroundView.Gradient,
28252
+ Overlay: BackgroundView.Overlay
28237
28253
  });
28238
28254
  Background.displayName = 'Background';
28239
28255